/*************************************************************************/ /* 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:
} CKPluginManager::GetPluginDllInfo(CKPLUGIN_BEHAVIOR_DLL,Index); {html:
} 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 m_ManagersGuid; #endif }; #endif