My Project
|
A common interface for all classes implementing IAttributeFields By implementing this class's virtual functions, it enables a class to easily expose attributes to the NPL scripting interface. More...
#include <IAttributeFields.h>
Public Types | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
Public Types inherited from ParaEngine::IObject | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_type |
Public Member Functions | |
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 int | GetChildAttributeObjectCount (int nColumnIndex=0) |
get the number of child objects (row count) in the given column. More... | |
virtual IAttributeFields * | GetChildAttributeObject (int nRowIndex, int nColumnIndex=0) |
virtual IAttributeFields * | GetChildAttributeObject (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 const std::string & | GetIdentifier () |
virtual void | SetIdentifier (const std::string &sID) |
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 CDynamicAttributeField * | GetDynamicField (const std::string &sName) |
Get a dynamic field with a given name. More... | |
virtual CDynamicAttributeField * | GetDynamicField (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... | |
CAttributeClass * | GetAttributeClass () |
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 IObject * | Clone () 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 IType * | GetType () const |
virtual std::string | ToString () const |
WeakPtr_type & | GetWeakReference () |
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 () |
CRefCounted * | AddToAutoReleasePool () |
addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More... | |
Static Public Member Functions | |
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... | |
Protected Member Functions | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
Additional Inherited Members | |
Protected Attributes inherited from ParaEngine::IObject | |
WeakPtr_type | m_weak_reference |
Protected Attributes inherited from ParaEngine::CRefCounted | |
int | m_refcount |
A common interface for all classes implementing IAttributeFields By implementing this class's virtual functions, it enables a class to easily expose attributes to the NPL scripting interface.
All standard attribute types are supported by the external editors, which makes displaying and editing object attributes an automatic process.
This class has only one data member, hence there are little space penalties for implementing this class. The attribute information for each class is kept centrally in a global table by CAttributeClass. An example of using this class can be found at AttributesManager.h and CAttributesManager::PrintManual() most objects in ParaEngine implement this class, such as CBaseObject, etc. The following virtual functions must be implemented: GetAttributeClassID(), GetAttributeClassName(), InstallFields()
Use following macros to define new class or adding new attributes: ATTRIBUTE_DEFINE_CLASS(XXXX_classname) Class destructor should be a virtual function
|
virtual |
add child object.
Reimplemented in ParaEngine::CBaseObject.
CAttributeClass * IAttributeFields::GetAttributeClass | ( | ) |
get the main attribute class object.
|
virtual |
attribute class ID should be identical, unless one knows how overriding rules work.
Reimplemented in ParaTerrain::Terrain, ParaEngine::CBaseObject, ParaEngine::COceanManager, ParaEngine::CBipedObject, ParaEngine::CSceneObject, ParaEngine::CGUIIMEEditBox, ParaEngine::CMeshObject, NPL::CNPLRuntime, ParaEngine::CRpgCharacter, ParaEngine::CRpgCharacter, ParaEngine::CBaseCamera, ParaEngine::CGUIBase, ParaEngine::CAutoCamera, ParaEngine::CGUIRoot, ParaEngine::CParaXModel, ParaEngine::ParaEngineSettings, ParaTerrain::CGlobalTerrain, ParaEngine::CMeshPhysicsObject, ParaEngine::CPortalNode, ParaEngine::CBlockWorld, ParaEngine::CZoneNode, ParaEngine::CMiniSceneGraph, ParaEngine::CGUIWebBrowser, ParaEngine::CMoviePlatform, ParaEngine::CAttributesManager, ParaEngine::CSunLight, ParaEngine::CSkyMesh, ParaEngine::CParaXStaticModel, ParaEngine::IGameObject, ParaEngine::CViewport, ParaEngine::CParaXStaticMesh, ParaEngine::CGUIEditBox, ParaEngine::CSphereObject, ParaEngine::CDnDCharacterAttribute, ParaEngine::CDnDCharacterAttribute, ParaEngine::CGUIButton, ParaEngine::BlockWorldClient, and ParaEngine::CTerrainTileRoot.
|
virtual |
we support multi-dimensional child object.
by default objects have only one column.
Reimplemented in ParaEngine::CBaseObject, ParaEngine::CanvasAttachment, ParaEngine::CBipedObject, ParaEngine::CSceneObject, ParaEngine::CGUIBase, ParaTerrain::TerrainLattice, ParaEngine::ParaEngineSettings, ParaEngine::CParaXModel, ParaTerrain::CGlobalTerrain, ParaEngine::CParaWorldAsset, ParaEngine::CBlockWorld, ParaEngine::AssetManager< IDTYPE, ClassImpType, ETYPE >, ParaEngine::AssetManager< CEffectFile >, ParaEngine::AssetManager< CBufferPicking >, ParaEngine::AssetManager< DLLPlugInEntity >, ParaEngine::AssetManager< SequenceEntity >, ParaEngine::AssetManager< VoxelTerrainEntity >, ParaEngine::AssetManager< ParaVertexBufferPool, ParaVertexBufferPool, ParaVertexBufferPool >, ParaEngine::CharModelInstance, ParaEngine::CTerrainTile, ParaEngine::CBufferPicking, ParaEngine::ParaXModelCanvas, ParaEngine::BlockWorldClient, ParaEngine::CParaXAnimInstance, ParaEngine::BMaxObject, ParaEngine::COverlayObject, and ParaEngine::CTerrainTileRoot.
|
virtual |
get attribute by child object.
used to iterate across the attribute field hierarchy.
Reimplemented in ParaEngine::CBaseObject, ParaEngine::CanvasAttachment, ParaEngine::CBipedObject, ParaEngine::CSceneObject, ParaEngine::CGUIBase, ParaTerrain::TerrainLattice, ParaEngine::CParaXModel, ParaEngine::ParaEngineSettings, ParaTerrain::CGlobalTerrain, ParaEngine::CParaWorldAsset, ParaEngine::CBlockWorld, ParaEngine::CFileManager, ParaEngine::AssetManager< IDTYPE, ClassImpType, ETYPE >, ParaEngine::AssetManager< CEffectFile >, ParaEngine::AssetManager< CBufferPicking >, ParaEngine::AssetManager< DLLPlugInEntity >, ParaEngine::AssetManager< SequenceEntity >, ParaEngine::AssetManager< VoxelTerrainEntity >, ParaEngine::AssetManager< ParaVertexBufferPool, ParaVertexBufferPool, ParaVertexBufferPool >, ParaEngine::CharModelInstance, ParaEngine::CTerrainTile, ParaEngine::CViewportManager, ParaEngine::CBufferPicking, ParaEngine::ParaXModelCanvas, ParaEngine::BlockWorldClient, ParaEngine::CParaXAnimInstance, ParaEngine::COverlayObject, and ParaEngine::CTerrainTileRoot.
|
virtual |
get the number of child objects (row count) in the given column.
please note different columns can have different row count.
Reimplemented in ParaEngine::CBaseObject, ParaEngine::CanvasAttachment, ParaEngine::CBipedObject, ParaEngine::CSceneObject, ParaEngine::CSelectionManager, NPL::CNPLRuntime, ParaEngine::CGUIBase, ParaTerrain::TerrainLattice, ParaEngine::CSelectionGroup, ParaEngine::CParaXModel, ParaEngine::ParaEngineSettings, ParaTerrain::CGlobalTerrain, ParaEngine::CParaWorldAsset, ParaEngine::CBlockWorld, ParaEngine::CFileManager, ParaEngine::AssetManager< IDTYPE, ClassImpType, ETYPE >, ParaEngine::AssetManager< CEffectFile >, ParaEngine::AssetManager< CBufferPicking >, ParaEngine::AssetManager< DLLPlugInEntity >, ParaEngine::AssetManager< SequenceEntity >, ParaEngine::AssetManager< VoxelTerrainEntity >, ParaEngine::AssetManager< ParaVertexBufferPool, ParaVertexBufferPool, ParaVertexBufferPool >, ParaEngine::CViewportManager, ParaEngine::CharModelInstance, ParaEngine::CTerrainTile, ParaEngine::CBufferPicking, ParaEngine::ParaXModelCanvas, ParaEngine::BlockWorldClient, ParaEngine::CArrayAttributeProxy< T >, ParaEngine::CParaXAnimInstance, ParaEngine::BMaxObject, ParaEngine::COverlayObject, ParaEngine::CTerrainTileRoot, and ParaEngine::ParaXEntity.
|
virtual |
Get a dynamic field with a given name.
sName | name of the field to set |
|
virtual |
Get a dynamic field with a given index.
sName | name of the field to set |
|
virtual |
how many dynamic field this object currently have.
|
virtual |
get the current local time in case it is animated in milli seconds frames.
Reimplemented in ParaEngine::CBipedObject, ParaEngine::BMaxObject, and ParaEngine::CParaXAnimInstance.
|
virtual |
this class should be implemented if one wants to add new attribute.
This function is always called internally.
Reimplemented in ParaTerrain::Terrain, ParaEngine::CBaseObject, ParaEngine::SceneState, ParaEngine::CZipArchive, ParaEngine::CanvasAttachment, ParaEngine::COceanManager, ParaEngine::CBipedObject, ParaEngine::CSceneObject, ParaEngine::CMeshObject, NPL::CNPLRuntime, ParaEngine::CRpgCharacter, ParaEngine::CRpgCharacter, ParaEngine::CBaseCamera, ParaEngine::CAsyncLoader, ParaEngine::CAnimInstanceBase, ParaEngine::CGUIBase, ParaEngine::CAutoCamera, ParaEngine::CBlockLightGridBase, ParaEngine::CGUIRoot, ParaEngine::CParaWorldAsset, ParaEngine::CParaXModel, ParaEngine::ParaEngineSettings, NPL::CNPLRuntimeState, ParaTerrain::CGlobalTerrain, ParaEngine::CMeshPhysicsObject, ParaEngine::CPortalNode, ParaEngine::CBlockWorld, ParaEngine::CZoneNode, ParaEngine::CPainter, ParaEngine::CMiniSceneGraph, ParaEngine::CGUIWebBrowser, ParaEngine::CMoviePlatform, ParaEngine::CAttributesManager, ParaEngine::CBlockPieceParticle, ParaEngine::CParaXStaticBase, ParaEngine::CSunLight, ParaEngine::CFileManager, ParaEngine::CSkyMesh, ParaEngine::IGameObject, ParaEngine::CViewport, ParaEngine::AssetEntity, ParaEngine::BlockRegion, ParaEngine::CGUIEditBox, ParaEngine::CSphereObject, ParaEngine::CMultiFrameBlockWorldRenderer, ParaEngine::CDnDCharacterAttribute, ParaEngine::CDnDCharacterAttribute, ParaEngine::CharModelInstance, ParaEngine::CLightObject, ParaEngine::CRenderTarget, ParaEngine::CViewportManager, ParaEngine::CGUIButton, ParaEngine::CBufferPicking, ParaEngine::ParaXModelCanvas, ParaEngine::BlockWorldClient, ParaEngine::CWeatherEffect, ParaEngine::WeatherParticleSpawner, ParaEngine::BMaxObject, ParaEngine::Bone, ParaEngine::CParaXAnimInstance, ParaEngine::ChunkVertexBuilderManager, ParaEngine::CBlockDynamicObject, ParaEngine::CContainerObject, ParaEngine::ParaVertexBufferPool, and ParaEngine::ParaXEntity.
|
inlinevirtual |
Invoke an (external) editor for a given field.
This is usually for NPL script field
nFieldID | : field ID |
sParameters | : the parameter passed to the editor |
|
inlinevirtual |
whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary.
Reimplemented in ParaTerrain::Terrain, ParaTerrain::CGlobalTerrain, ParaTerrain::TerrainLattice, ParaEngine::CSceneObject, ParaEngine::IGameObject, and ParaEngine::BlockRegion.
|
virtual |
load only text dynamic fields from string
|
static |
Open a given file with the default registered editor in the game engine.
sFileName | file name to be opened by the default editor. |
bWaitOnReturn | if false, the function returns immediately; otherwise it will wait for the editor to return. |
void IAttributeFields::PrintObject | ( | ) |
print the content of this object to a text file at temp/doc/[ClassName].txt.
This is usually used for dumping and testing object attributes.
|
virtual |
convert to object of a given type.
nObjectType | such as values in ATTRIBUTE_CLASSID_TABLE, In most cases, we query ATTRIBUTE_CLASSID_CBaseObject |
Reimplemented in ParaEngine::CBaseObject, and ParaEngine::CGUIBase.
|
virtual |
|
inlinevirtual |
Reset the field to its initial or default value.
nFieldID | : field ID |
Reimplemented in ParaEngine::IGameObject.
|
virtual |
save only text dynamic fields to fieldname = value text strings.
one on each line. line separator is
.
|
virtual |
set a dynamic field with a given name.
sName | name of the field to set : the value to add. if NULL, field will be removed. |
|
inlinevirtual |
set whether any field has been modified.
Reimplemented in ParaTerrain::Terrain, ParaEngine::CSceneObject, ParaEngine::IGameObject, and ParaEngine::BlockRegion.
|
inlinevirtual |
validate all fields and return true if validation passed.