128 lines
4.0 KiB
C++
128 lines
4.0 KiB
C++
/*************************************************************************/
|
|
/* File : CKGroup.h */
|
|
/* Author : Romain Sididris */
|
|
/* */
|
|
/* Virtools SDK */
|
|
/* Copyright (c) Virtools 2000, All Rights Reserved. */
|
|
/*************************************************************************/
|
|
#ifndef CKGROUP_H
|
|
|
|
#define CKGROUP_H "$Id:$"
|
|
|
|
|
|
#include "CKBeObject.h"
|
|
|
|
/**************************************************************************
|
|
{filename:CKGroup}
|
|
Summary: Management of group of objects
|
|
|
|
Remarks:
|
|
+ Behavioral Objects can be grouped together because they share common attributes
|
|
or for better understanding of a level. A group is simply a list of objects that
|
|
can be removed or added.
|
|
|
|
+ The class id of CKGroup is CKCID_GROUP.
|
|
See also: CKBeObject
|
|
**************************************************************************/
|
|
class CKGroup:public CKBeObject {
|
|
friend class CKBeObject;
|
|
public :
|
|
//---------------------------------------
|
|
// Insertion Removal
|
|
CKERROR AddObject(CKBeObject *o);
|
|
CKERROR AddObjectFront(CKBeObject *o);
|
|
CKERROR InsertObjectAt(CKBeObject *o,int pos);
|
|
|
|
CKBeObject* RemoveObject(int pos);
|
|
void RemoveObject(CKBeObject *obj);
|
|
void Clear();
|
|
|
|
//---------------------------------------
|
|
// Order
|
|
void MoveObjectUp(CKBeObject *o);
|
|
void MoveObjectDown(CKBeObject *o);
|
|
|
|
//---------------------------------------
|
|
// Object Access
|
|
CKBeObject *GetObject(int pos);
|
|
int GetObjectCount();
|
|
|
|
CK_CLASSID GetCommonClassID();
|
|
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
// Internal functions
|
|
//-------------------------------------------------------------------
|
|
//-------------------------------------------------------------------
|
|
|
|
//--------------------------------------------------------
|
|
//// Private Part
|
|
#ifdef DOCJETDUMMY // Docjet secret macro
|
|
#else
|
|
|
|
virtual int CanBeHide();
|
|
|
|
//----------------------------------------------------------
|
|
// Object Visibility
|
|
void Show(CK_OBJECT_SHOWOPTION Show=CKSHOW);
|
|
|
|
//-------------------------------------------------
|
|
// Internal functions {secret}
|
|
CKGroup(CKContext *Context,CKSTRING Name=NULL);
|
|
virtual ~CKGroup();
|
|
virtual CK_CLASSID GetClassID();
|
|
|
|
virtual void AddToScene(CKScene *scene,CKBOOL dependencies);
|
|
virtual void RemoveFromScene(CKScene *scene,CKBOOL dependencies);
|
|
|
|
virtual void PreSave(CKFile *file,CKDWORD flags);
|
|
virtual CKStateChunk *Save(CKFile *file,CKDWORD flags);
|
|
virtual CKERROR Load(CKStateChunk *chunk,CKFile* file);
|
|
virtual void PostLoad();
|
|
|
|
virtual void PreDelete();
|
|
virtual void CheckPreDeletion();
|
|
|
|
virtual int GetMemoryOccupation();
|
|
virtual int IsObjectUsed(CKObject* o,CK_CLASSID cid);
|
|
|
|
//--------------------------------------------
|
|
// Dependencies Functions {secret}
|
|
virtual CKERROR PrepareDependencies(CKDependenciesContext& context, CKBOOL iCaller = TRUE);
|
|
virtual CKERROR RemapDependencies(CKDependenciesContext& context);
|
|
virtual CKERROR Copy(CKObject& o,CKDependenciesContext& context);
|
|
|
|
//--------------------------------------------
|
|
// Class Registering {secret}
|
|
static CKSTRING GetClassName();
|
|
static int GetDependenciesCount(int mode);
|
|
static CKSTRING GetDependencies(int i,int mode);
|
|
static void Register();
|
|
static CKGroup* CreateInstance(CKContext *Context);
|
|
static void ReleaseInstance(CKContext* iContext,CKGroup*);
|
|
static CK_ID m_ClassID;
|
|
|
|
// Dynamic Cast method (returns NULL if the object can't be casted)
|
|
static CKGroup* Cast(CKObject* iO)
|
|
{
|
|
return CKIsChildClassOf(iO,CKCID_GROUP)?(CKGroup*)iO:NULL;
|
|
}
|
|
|
|
void ComputeClassID();
|
|
|
|
protected :
|
|
|
|
XObjectPointerArray m_ObjectArray;
|
|
|
|
CK_CLASSID m_CommonClassId;
|
|
|
|
CKBOOL m_ClassIdUpated;
|
|
|
|
DWORD m_GroupIndex;
|
|
|
|
#endif // Docjet secret macro
|
|
};
|
|
|
|
#endif
|
|
|