My Project
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | List of all members
ParaEngine::CSelectionManager Class Reference

A pool of currently selected objects. More...

#include <SelectionManager.h>

Inheritance diagram for ParaEngine::CSelectionManager:
ParaEngine::IRefObject ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted

Public Member Functions

 ATTRIBUTE_DEFINE_CLASS (CSelectionManager)
 
virtual int GetChildAttributeObjectCount (int nColumnIndex=0)
 get the number of child objects (row count) in the given column. More...
 
virtual IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
virtual void OnRefDeleted (IRefObject *rm)
 This is called after another object deleted this object from its reference list. More...
 
void RemoveObject (CBaseObject *pObject)
 remove a given object in all selections. More...
 
void RemoveObject (CGUIBase *pObject)
 
int GetObjectCount (CBaseObject *pObject)
 get the number occurrences of a given object.
 
void AddObject (CBaseObject *pObject, int nGroupID=0)
 Add a new object to a given group. More...
 
void AddObject (CGUIBase *pObject, int nGroupID=0)
 
bool GetObject (int nGroupID, int nItemIndex, SelectedItem *pOut)
 get the nItemIndex object in the nGroupID group. More...
 
int GetItemNumInGroup (int nGroupID)
 get the total number item in the given group. More...
 
void SelectGroup (int nGroupID, bool bSelect)
 select the entire group. More...
 
void ClearGroup (int nGroupID)
 Clear a given group so that there are no objects in it. More...
 
void SetMaxItemNumberInGroup (int nGroupID, int nMaxItemsNumber)
 set the maximum number of objects in the group. More...
 
int GetMaxItemNumberInGroup (int nGroupID)
 set the maximum number of objects in the group. More...
 
CSelectionGroupGetGroup (int nGroupID)
 return the given group if it is non-empty. More...
 
CSelectionGroupCreateGroup (int nGroupID)
 create a new group if it is not created before More...
 
int GetGroupCount ()
 get the group count. More...
 
- Public Member Functions inherited from ParaEngine::IRefObject
virtual const std::string & GetIdentifier ()
 get the name or identifier. More...
 
virtual void SetIdentifier (const std::string &sID)
 
int GetNameW (std::u16string &out)
 gets the unicode name
 
const std::string & GetName ()
 alias name for GetIdentifier
 
IRefObjectGetRefObjectByName (const char *sName)
 
RefListItemGetRefObjectByTag (int nTag)
 get the first reference object by its tag
 
bool HasReferences ()
 
RefResult AddReference (IRefObject *maker, int nTag=0)
 add a new reference. More...
 
RefResult DeleteReference (IRefObject *ref)
 delete a reference. More...
 
RefResult DeleteAllRefs ()
 Deletes all references of this object. More...
 
int DeleteAllRefsByTag (int nTag=0)
 Deletes all references whose tag is nTag of this object. More...
 
RefListGetRefList ()
 get the ref list
 
int GetRefObjNum ()
 get the total number of references
 
RefListItemGetRefObject (int nIndex)
 get the referenced object at the given index. More...
 
virtual void OnRefAdded (IRefObject *rm, int nTag=0)
 This is called after another object added this object to its reference list. More...
 
- Public Member Functions inherited from ParaEngine::IAttributeFields
virtual int GetAttributeClassID ()
 attribute class ID should be identical, unless one knows how overriding rules work. More...
 
virtual const char * GetAttributeClassName ()
 a static string, describing the attribute class object's name
 
virtual const char * GetAttributeClassDescription ()
 a static string, describing the attribute class object
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
virtual int GetChildAttributeColumnCount ()
 we support multi-dimensional child object. More...
 
virtual IAttributeFieldsGetChildAttributeObject (const std::string &sName)
 get attribute by child object. More...
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetName_s, const char **)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetName_s, const char *)
 
 ATTRIBUTE_METHOD (IAttributeFields, PrintObject_s)
 
 ATTRIBUTE_METHOD (IAttributeFields, AddRef_s)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetRefCount_s, int *)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetTime_s, int)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetTime_s, int *)
 
 ATTRIBUTE_METHOD (IAttributeFields, Release_s)
 
virtual bool IsModified ()
 whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary. More...
 
virtual void SetModified (bool bModified)
 set whether any field has been modified. More...
 
virtual bool ValidateFields ()
 validate all fields and return true if validation passed. More...
 
virtual string GetValidationMessage ()
 get the recent validation message due to the most recent call to ValidateFields()
 
virtual bool ResetField (int nFieldID)
 Reset the field to its initial or default value. More...
 
virtual bool InvokeEditor (int nFieldID, const std::string &sParameters)
 Invoke an (external) editor for a given field. More...
 
virtual bool AddChildAttributeObject (IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0)
 add child object. More...
 
virtual void * QueryObjectByName (const std::string &sObjectType)
 convert to object of a given type. More...
 
virtual void * QueryObject (int nObjectType)
 convert to object of a given type. More...
 
virtual int GetTime ()
 get the current local time in case it is animated in milli seconds frames. More...
 
virtual void SetTime (int nTime)
 
virtual CDynamicAttributeFieldGetDynamicField (const std::string &sName)
 Get a dynamic field with a given name. More...
 
virtual CDynamicAttributeFieldGetDynamicField (int nIndex)
 Get a dynamic field with a given index. More...
 
virtual const char * GetDynamicFieldNameByIndex (int nIndex)
 get field name by index
 
virtual int GetDynamicFieldCount ()
 how many dynamic field this object currently have. More...
 
virtual int SetDynamicField (const std::string &sName, const CVariable &value)
 set a dynamic field with a given name. More...
 
virtual int AddDynamicField (const std::string &sName, ATTRIBUTE_FIELDTYPE dwType)
 add dynamic field and return field index
 
virtual void RemoveAllDynamicFields ()
 remove all dynamic fields
 
virtual int SaveDynamicFieldsToString (std::string &output)
 save only text dynamic fields to fieldname = value text strings. More...
 
virtual int LoadDynamicFieldsFromString (const std::string &input)
 load only text dynamic fields from string More...
 
CAttributeClassGetAttributeClass ()
 get the main attribute class object. More...
 
void PrintObject ()
 print the content of this object to a text file at temp/doc/[ClassName].txt. More...
 
- Public Member Functions inherited from ParaEngine::IObject
virtual void Clone (IObject *obj) const
 Clone the object's contains to a pointer. More...
 
virtual IObjectClone () const
 Clone the object's contains and return a pointer to the newly created object. More...
 
virtual bool Equals (const IObject *obj) const
 Compare the object with another object. More...
 
virtual const ITypeGetType () const
 
virtual std::string ToString () const
 
WeakPtr_typeGetWeakReference ()
 get weak reference object. More...
 
virtual int ProcessObjectEvent (const ObjectEvent &event)
 this function is only used to backward compatibility of ParaObject:AddEvent() function. More...
 
- Public Member Functions inherited from ParaEngine::CRefCounted
void addref () const
 add reference count of the object. More...
 
bool delref () const
 decrease reference count of the object. More...
 
int GetRefCount () const
 get the reference count
 
virtual int Release ()
 
CRefCountedAddToAutoReleasePool ()
 addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More...
 

Static Public Member Functions

static CSelectionManagerGetSingleton ()
 get the singleton instance of this class More...
 
- Static Public Member Functions inherited from ParaEngine::IAttributeFields
static HRESULT GetAttributeClassID_s (IAttributeFields *cls, int *p1)
 
static HRESULT GetAttributeClassName_s (IAttributeFields *cls, const char **p1)
 
static bool OpenWithDefaultEditor (const char *sFilename, bool bWaitOnReturn=false)
 Open a given file with the default registered editor in the game engine. More...
 

Public Attributes

vector< ref_ptr< CSelectionGroup > > m_groups
 

Protected Member Functions

void UpdateGroup (int nGroupID)
 it will delete object when there are more objects than its capacity. More...
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 

Additional Inherited Members

- Public Types inherited from ParaEngine::IAttributeFields
typedef ParaEngine::weak_ptr< IObject, IAttributeFieldsWeakPtr_type
 
- Public Types inherited from ParaEngine::IObject
typedef ParaEngine::weak_ptr< IObjectWeakPtr_type
 
- Protected Attributes inherited from ParaEngine::IRefObject
RefList m_references
 This is the list of active references that refer to us.
 
std::string m_sIdentifer
 unit name used in the scripting language
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Detailed Description

A pool of currently selected objects.

This is a singleton class. Object may be selected into different groups. Although, there are no limit to group number, better keep it smaller than 16 groups. Selected objects may be displayed or highlighted differently. When objects are deleted from the scene. It will be deleted from the selection manager automatically.

Member Function Documentation

§ AddObject()

void CSelectionManager::AddObject ( CBaseObject pObject,
int  nGroupID = 0 
)

Add a new object to a given group.

An object may belong to multiple groups.

Parameters
pObjectpointer to the object to add
nGroupIDwhich group the should be added to. be default it is added to group 0. group ID must be smaller than 32.

§ ClearGroup()

void CSelectionManager::ClearGroup ( int  nGroupID)

Clear a given group so that there are no objects in it.

Parameters
nGroupIDID of the group. If ID is -1, all groups will be deleted.

§ CreateGroup()

CSelectionGroup * CSelectionManager::CreateGroup ( int  nGroupID)

create a new group if it is not created before

Parameters
nGroupID
Returns
the new group or existing group is returned.

§ GetChildAttributeObjectCount()

int ParaEngine::CSelectionManager::GetChildAttributeObjectCount ( int  nColumnIndex = 0)
virtual

get the number of child objects (row count) in the given column.

please note different columns can have different row count.

Reimplemented from ParaEngine::IAttributeFields.

§ GetGroup()

CSelectionGroup * CSelectionManager::GetGroup ( int  nGroupID)

return the given group if it is non-empty.

Parameters
nGroupIDgroup to get
Returns
NULL if the group is empty.

§ GetGroupCount()

int ParaEngine::CSelectionManager::GetGroupCount ( )
inline

get the group count.

Please note, this is only the max group index plus 1. So GetGroup() may return NULL if empty for index smaller than GroupCount.

§ GetItemNumInGroup()

int CSelectionManager::GetItemNumInGroup ( int  nGroupID)

get the total number item in the given group.

This function can be used with GetObject() to iterate through all objects in any group.

Parameters
nGroupIDgroup ID.
Returns

§ GetMaxItemNumberInGroup()

int CSelectionManager::GetMaxItemNumberInGroup ( int  nGroupID)

set the maximum number of objects in the group.

Parameters
nGroupIDgroup ID,which ID must be smaller than 32.
Returns
the maximum number in the given group

§ GetObject()

bool CSelectionManager::GetObject ( int  nGroupID,
int  nItemIndex,
SelectedItem pOut 
)

get the nItemIndex object in the nGroupID group.

Parameters
nGroupIDfrom which group the object is get
nItemIndexthe index of the item to be retrieved.
pOut[out] selected item is returned.
Returns
true if there is a object at that slot.

§ GetSingleton()

CSelectionManager * CSelectionManager::GetSingleton ( )
static

get the singleton instance of this class

Returns
this always returns valid pointer.

§ OnRefDeleted()

void CSelectionManager::OnRefDeleted ( IRefObject rm)
virtual

This is called after another object deleted this object from its reference list.

If this object needs to know, it can override it.

Parameters
rm
Remarks
: one can call DeleteReference in the OnRefDeleted, to delete bi-directional reference. By default, a bi-directional reference is deleted in this function

Reimplemented from ParaEngine::IRefObject.

§ RemoveObject()

void CSelectionManager::RemoveObject ( CBaseObject pObject)

remove a given object in all selections.

Parameters
pObjectpointer to the object to delete

§ SelectGroup()

void CSelectionManager::SelectGroup ( int  nGroupID,
bool  bSelect 
)

select the entire group.

Parameters
nGroupID
bSelecttrue to select, false to de-select.

§ SetMaxItemNumberInGroup()

void CSelectionManager::SetMaxItemNumberInGroup ( int  nGroupID,
int  nMaxItemsNumber 
)

set the maximum number of objects in the group.

Parameters
nGroupIDgroup ID group ID must be smaller than 32.
nMaxItemsNumberthe number to set. default value is 1

§ UpdateGroup()

void CSelectionManager::UpdateGroup ( int  nGroupID)
protected

it will delete object when there are more objects than its capacity.

Parameters
nGroupID

The documentation for this class was generated from the following files: