deargui-vpl/ref/virtools/Includes/CKObjectDeclaration.h

178 lines
5.9 KiB
C++

/*************************************************************************/
/* File : CKObjectDeclaration.h */
/* Author : Nicolas Galinotti */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2000, All Rights Reserved. */
/*************************************************************************/
#ifndef CKOBJECTDECLARATION_H
#define CKOBJECTDECLARATION_H "$Id:$"
#include "CKObject.h"
/*****************************************************************************
Summary: External object declaration
Remarks:
+A CKObjectDeclaration is used by Virtools engine to store a list of available extensions objects.
+Only declarations of CKBehaviorPrototype are supported in this version. The CKObjectDeclaration contains
a short description about the behavior prototype and its author and also contains a pointer to the function
that will be used to create the behavior prototype when needed.
+A CKObjectDeclaration is created with CreateCKObjectDeclaration.
Example:
// The following sample creates an object declaration for the "Rotate" behavior.
// This object declaration is given :
// - The type of object declaration (Must Be CKDLL_BEHAVIORPROTOTYPE)
// - A short description of what the behavior is supposed to do.
// - The category in which this behavior will appear in the Virtools interface.
// - A unique CKGUID
// - Author and Version info
// - The class identifier of objects to which the behavior can be applied to.
// - The function that will create the CKBehaviorPrototype for this behavior.
CKObjectDeclaration *FillBehaviorRotateDecl()
{
CKObjectDeclaration *od = CreateCKObjectDeclaration("Rotate");
od->SetType(CKDLL_BEHAVIORPROTOTYPE);
od->SetDescription("Rotates the 3D Entity.");
od->SetCategory("3D Transformations/Basic");
od->SetGuid(CKGUID(0xffffffee, 0xeeffffff));
od->SetAuthorGuid(VIRTOOLS_GUID);
od->SetAuthorName("Virtools");
od->SetVersion(0x00010000);
od->SetCompatibleClassId(CKCID_3DENTITY);
od->SetCreationFunction(CreateRotateProto);
return od;
}
See also: CKBehaviorPrototype,
********************************************************************************/
class CKObjectDeclaration {
public :
//////////////////////////////////////////////////
//// CKObjectDeclaration Member Functions ///
//////////////////////////////////////////////////
//-----------------------------------------------------
// Description
void SetDescription(CKSTRING Description);
CKSTRING GetDescription();
//-----------------------------------------------------
// Behavior GUID
void SetGuid(CKGUID guid);
CKGUID GetGuid();
void SetType(int type);
int GetType();
//-----------------------------------------------------
// Dependencie on Managers
void NeedManager(CKGUID Manager);
//-----------------------------------------------------
// Creation function (function that will create the prototype )
void SetCreationFunction(CKDLL_CREATEPROTOFUNCTION f);
CKDLL_CREATEPROTOFUNCTION GetCreationFunction();
//-----------------------------------------------------
// Author information
void SetAuthorGuid(CKGUID guid);
CKGUID GetAuthorGuid();
void SetAuthorName(CKSTRING Name);
CKSTRING GetAuthorName();
//-----------------------------------------------------
// Version information
void SetVersion(CKDWORD verion);
CKDWORD GetVersion();
//-----------------------------------------------------
// Class Id of object to which the declared behavior can apply
void SetCompatibleClassId(CK_CLASSID id);
CK_CLASSID GetCompatibleClassId();
//-----------------------------------------------------
// Category in which the behavior will be presented
void SetCategory(CKSTRING cat);
CKSTRING GetCategory();
/*************************************************
Summary: Gets the name of behavior Prototype.
Return Value:
A pointer to Behavious Prototype name.
Remarks:
+ The object declaration name is always the same
than the behavior prototype.
********************************************/
CKSTRING GetName() { return m_Name.Str(); }
/**************************************************
Summary:Returns the index of the DLL that has declared this object.
Return Value:
Index of the plugin that registered this object in the plugin manager.
Remarks:
+ The return value is the index of the plugin in the behavior
category of the plugin manager.
+ To retrieve information about the plugin use :
{html:<table width="90%" border="1" align="center" bordercolorlight="#FFFFFF" bordercolordark="#FFFFFF" bgcolor="#FFFFFF" bordercolor="#FFFFFF"><tr bgcolor="#E6E6E6" bordercolor="#000000"><td>}
CKPluginManager::GetPluginDllInfo(CKPLUGIN_BEHAVIOR_DLL,Index);
{html:</td></tr></table>}
See Also:CKPluginManager
****************************************************/
int GetPluginIndex() { return m_PluginIndex; }
#ifdef DOCJETDUMMY // Docjet secret macro
#else
//-------------------------------------------------------------------
//-------------------------------------------------------------------
// Internal functions
//-------------------------------------------------------------------
//-------------------------------------------------------------------
CKBehaviorPrototype* GetProto() { return m_Proto; }
void SetProto(CKBehaviorPrototype* proto) { m_Proto=proto; }
CKObjectDeclaration(CKSTRING Name);
virtual ~CKObjectDeclaration();
void SetPluginIndex(int Index)
{ m_PluginIndex=Index; }
int GetManagerNeededCount() { return m_ManagersGuid.Size(); }
CKGUID GetManagerNeeded(int Index) { return m_ManagersGuid[Index]; }
CKGUID m_Guid;
CK_CLASSID m_CompatibleClassID;
CKDLL_CREATEPROTOFUNCTION m_CreationFunction;
CKDWORD m_Version;
CKSTRING m_Description;
CKBehaviorPrototype* m_Proto;
int m_Type;
CKGUID m_AuthorGuid;
CKSTRING m_AuthorName;
CKSTRING m_Category;
XString m_Name;
int m_PluginIndex;
XArray<CKGUID> m_ManagersGuid;
#endif
};
#endif