/************************************************* {filename:CK_FILE_WRITEMODE} Summary: Specify the way files are saved to disk (compression) Remarks : + File write mode controls the format of a Virtools file when saved. More specifically it controls whether compression is enabled and also if the Virtools Dev Interface specific data should be stored in the file (if CKFILE_FORVIEWER flag is set , no interface data is saved) See also: CKContext::SetFileWriteMode,CKContext::GetFileWriteMode,CKContext::SetCompressionLevel,CKContext::SetGlobalImagesSaveOptions,CKContext::SetGlobalSoundsSaveOptions *************************************************/ typedef enum CK_FILE_WRITEMODE { CKFILE_UNCOMPRESSED =0, // Save data uncompressed CKFILE_CHUNKCOMPRESSED_OLD =1, // Obsolete CKFILE_EXTERNALTEXTURES_OLD=2, // Obsolete : use CKContext::SetGlobalImagesSaveOptions instead. CKFILE_FORVIEWER =4, // Don't save Interface Data within the file, the level won't be editable anymore in the interface CKFILE_WHOLECOMPRESSED =8, // Compress the whole file } CK_FILE_WRITEMODE; /************************************************* {filename:CK_LOAD_FLAGS} Summary: Load Options. Remarks: + This options apply when loading a Virtools file or a importing a 3D Model file. + They defines whether object geometry,only animations or only behaviors should be loaded. + One can specify (using the CK_LOAD_AS_DYNAMIC_OBJECT) if created CKObjects should be created as dynamic (See also Dynamic Objects) See also : CKContext::Load,CKContext::CKSave *************************************************/ typedef enum CK_LOAD_FLAGS { CK_LOAD_ANIMATION =1<<0, // Load animations CK_LOAD_GEOMETRY =1<<1, // Load geometry. CK_LOAD_DEFAULT =CK_LOAD_GEOMETRY|CK_LOAD_ANIMATION, // Load animations & geometry CK_LOAD_ASCHARACTER =1<<2, // Load all the objects and create a character that contains them all . CK_LOAD_DODIALOG =1<<3, // Check object name unicity and warns the user with a dialog box when duplicate names are found. CK_LOAD_AS_DYNAMIC_OBJECT =1<<4, // Objects loaded from this file may be deleted at run-time or are temporary CK_LOAD_AUTOMATICMODE =1<<5, // Check object name unicity and automatically rename or replace according to the options specified in CKContext::SetAutomaticLoadMode CK_LOAD_CHECKDUPLICATES =1<<6, // Check object name unicity (The list of duplicates is stored in the CKFile class after a OpenFile call CK_LOAD_CHECKDEPENDENCIES =1<<7, // Check if every plugins needed are availables CK_LOAD_ONLYBEHAVIORS =1<<8, // } CK_LOAD_FLAGS; // Options that will be used to create this object... enum CK_FO_OPTIONS { CK_FO_DEFAULT = 0, // Default behavior : a new object will be created with the name stored in CKFileObject CK_FO_RENAMEOBJECT, // Renaming : a new object will be created with the name stored in CKFileObject + a integer value XXX to ensure its uniqueness CK_FO_REPLACEOBJECT, // Do not create a new object, instead use an existing one which CK_ID is given by CreatedObject // to load the chunk on CK_FO_DONTLOADOBJECT, // Object chunk will not be read either because it is a reference // or because the loaded object already exist in the current level // and the user choose to keep the existing one. }; /************************************************* {filename:CK_PLUGIN_TYPE} Summary: Type identifier for a Virtools plugin. Remarks: + Each plugin must be given a type. + This enumeration is used to identify a specific catagory of plugin when using the CKPluginManager. See also: CKPluginManager,Creating New Plugins *************************************************/ typedef enum CK_PLUGIN_TYPE { CKPLUGIN_BITMAP_READER = 0, // The plugin is bitmap (textures,sprites) loader CKPLUGIN_SOUND_READER = 1, // Sound Reader Plugin CKPLUGIN_MODEL_READER = 2, // 3D Model Reader CKPLUGIN_MANAGER_DLL = 3, // The plugin implements a Manager CKPLUGIN_BEHAVIOR_DLL = 4, // The plugin implements one or more behaviors CKPLUGIN_RENDERENGINE_DLL = 5, // Render Engine plugin CKPLUGIN_MOVIE_READER = 6, // Movie (AVI,Mpeg) reader CKPLUGIN_EXTENSION_DLL = 7, // Generic extension (definition of new parameter types or operations for ex.) } CK_PLUGIN_TYPE; enum CK_STATECHUNK_DATAVERSION { CHUNKDATA_OLDVERSION= 0, // Before any version was saved CHUNKDATA_BASEVERSION= 1, // First version CHUNK_WAVESOUND_VERSION2= 2, // Changes in wavesound format CHUNK_WAVESOUND_VERSION3= 3, // Changes in wavesound format CHUNK_MATERIAL_VERSION_ZTEST= 4, // Change in material save format CHUNK_MAJORCHANGE_VERSION= 5, // Optimisations on many save functions CHUNK_MACCHANGE_VERSION= 6, // Misc new Statechunk functions for macintosh (Big-Endian <-> Little Endian conversion ) CHUNK_WAVESOUND_VERSION4= 7, // Changes in wavesound format (Added sound length) CHUNK_SCENECHANGE_VERSION= 8, // Changes in sceneObjectDesc format (Remove lasttimevalue) CHUNK_MESHCHANGE_VERSION= 9, // Changes in Mesh save format (primitives) CHUNK_DEV_2_1= 10, // Changes in wavesound reading of inside, outside angles CHUNKDATA_CURRENTVERSION= CHUNK_DEV_2_1 , }; enum CK_STATECHUNK_CHUNKVERSION { CHUNK_VERSIONBASE= 0, CHUNK_VERSION1= 4, // equal to file version : WriteObjectID => table CHUNK_VERSION2= 5, // add Manager Data CHUNK_VERSION3= 6, // New ConvertToBuffer / ReadFromBuffer (file system changed to reflect this ) CHUNK_VERSION4= 7, // New WriteObjectID when saving to a file }; enum CK_STATECHUNK_CHUNKOPTIONS { CHNK_OPTION_IDS = 0x01, // IDS are stored inside chunk CHNK_OPTION_MAN = 0x02, // Managers ints are store inside chunk CHNK_OPTION_CHN = 0x04, // Sub chunk are stored inside chunk CHNK_OPTION_FILE = 0x08, // Chunk was written with indices relative to a file.... CHNK_OPTION_ALLOWDYN = 0x10, // Dynamic object can be written in the chunk CHNK_OPTION_LISTBIG = 0x20, // List are store in big Endian ? CHNK_DONTDELETE_PTR = 0x40, // Data buffer stored in m_Buffer is not owned by CKStateChunk , it must not be deleted... CHNK_DONTDELETE_PARSER = 0x80, // m_Parser Ptr is not owned by CKStateChunk , it must not be deleted... }; /*************************************************** {filename:CK_OBJECT_FLAGS} Summary: CKObject Flags Remarks: + Flags specifying special settings for basic objects. + Some of this flags are shared with sub-classes such as CKParameterIn,CKParameterOut and CKBehaviorIO. + You rarely need to modify directly this flags through CKObject::SetFlags or CKObject::ModifyObjectFlags instead you should always use the specific acces function (given between ()) which may need to perform additionnal operations. See also: CKObject,CKObject::GetObjectFlags,CKObject::ModifyObjectFlags *************************************************/ typedef enum CK_OBJECT_FLAGS { CK_OBJECT_INTERFACEOBJ = 0x00000001, // Reserved for Inteface Use CK_OBJECT_PRIVATE = 0x00000002, // The object must not be displayed in interface (Lists,Level view,etc...),nor should it be saved. (CKObject::IsPrivate() CK_OBJECT_INTERFACEMARK = 0x00000004, CK_OBJECT_FREEID = 0x00000008, // ID of this object can be released safely and is free to be reused by future CKobjects. CK_OBJECT_TOBEDELETED = 0x00000010, // This object is being deleted CK_OBJECT_NOTTOBESAVED = 0x00000020, // This object must not be saved CK_OBJECT_VISIBLE = 0x00000040, // This object is visible (CKObject::Show) CK_OBJECT_NAMESHARED = 0x00000080, // This object has its name from another entity CK_OBJECT_DYNAMIC = 0x00000108, // This object may be created or deleted at run-time, it also contails CK_OBJECT_FREEID. (CKObject::IsDynamic,CKContext::CreateObject) CK_OBJECT_HIERACHICALHIDE = 0x00000200, // This object hides all its hierarchy (CKObject::Show) CK_OBJECT_UPTODATE = 0x00000400, // (Camera,etc..) CK_OBJECT_TEMPMARKER = 0x00000800, CK_OBJECT_ONLYFORFILEREFERENCE = 0x00001000, CK_OBJECT_NOTTOBEDELETED = 0x00002000, // This object must not be deleted in a clear all CK_OBJECT_APPDATA = 0x00004000, // This object has app data CK_OBJECT_SINGLEACTIVITY = 0x00008000, // this object has an information of single activity CK_OBJECT_LOADSKIPBEOBJECT = 0x00010000, // When loading this object the CKBeObject part should be skipped CK_OBJECT_NOTTOBELISTEDANDSAVED = 0x00000023, // Combination of Private and Not To Be Saved // The following flags are specific to parameters (they are stored here for object's size purposes ) CK_PARAMETEROUT_SETTINGS = 0x00400000, CK_PARAMETEROUT_PARAMOP = 0x00800000, // This parameter is the output of a CKParameterOperation (Automatically set by Engine) CK_PARAMETERIN_DISABLED = 0x01000000, // Parameter In or Out is disabled (CKBehavior::EnableInputParameter,CKBehavior::DisableInputParameter) CK_PARAMETERIN_THIS = 0x02000000, // Special parameter type : its value and type are always equal to its owner (CKParameter::SetAsMyselfParameter) CK_PARAMETERIN_SHARED = 0x04000000, CK_PARAMETEROUT_DELETEAFTERUSE = 0x08000000, // When adding parameters to CKMessage, they can be automatically deleted when message is released (CKMessage::AddParameter) CK_OBJECT_PARAMMASK = 0x0FC00000, // Mask for options specific to parameters // The Following flags are specific for Behavior ios (CKBehaviorIO) CK_BEHAVIORIO_IN = 0x10000000, // This BehaviorIO is a behavior input (CKBehaviorIO::SetType} CK_BEHAVIORIO_OUT = 0x20000000, // This BehaviorIO is a behavior output (CKBehaviorIO::SetType) CK_BEHAVIORIO_ACTIVE = 0x40000000, // This BehaviorIO is a currently active (CKBehaviorIO::Activate} CK_OBJECT_IOTYPEMASK = 0x30000000, CK_OBJECT_IOMASK = 0xF0000000, // The Following flags are specific for Behavior ios (CKBehaviorIO) CKBEHAVIORLINK_RESERVED = 0x10000000, // This BehaviorIO is a behavior input (CKBehaviorIO::SetType} CKBEHAVIORLINK_ACTIVATEDLASTFRAME = 0x20000000, // This link had been activated last frame CK_OBJECT_BEHAVIORLINKMASK = 0x30000000, } CK_OBJECT_FLAGS;