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

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>

Inheritance diagram for ParaEngine::IAttributeFields:
ParaEngine::IObject ParaEngine::CRefCounted ParaEngine::AssetManager< CBufferPicking > ParaEngine::AssetManager< CEffectFile > ParaEngine::AssetManager< DLLPlugInEntity > ParaEngine::AssetManager< ParaVertexBufferPool, ParaVertexBufferPool, ParaVertexBufferPool > ParaEngine::AssetManager< SequenceEntity > ParaEngine::AssetManager< VoxelTerrainEntity > NPL::CNPLRuntime NPL::CNPLRuntimeState ParaEngine::AssetEntity ParaEngine::AssetManager< IDTYPE, ClassImpType, ETYPE > ParaEngine::BlockRegion ParaEngine::Bone ParaEngine::CAnimInstanceBase ParaEngine::CanvasAttachment ParaEngine::CArchive ParaEngine::CArrayAttributeProxy< T > ParaEngine::CAsyncLoader ParaEngine::CAttributesManager ParaEngine::CBlockLightGridBase ParaEngine::CBlockWorld ParaEngine::CDnDCharacterAttribute ParaEngine::CDnDCharacterAttribute ParaEngine::CGUIBase ParaEngine::CharModelInstance ParaEngine::ChunkVertexBuilderManager ParaEngine::CMapAttributeProxy< T > ParaEngine::CMirrorSurface ParaEngine::CMoviePlatform ParaEngine::CMultiFrameBlockWorldRenderer ParaEngine::COceanManager ParaEngine::CPainter ParaEngine::CParaWorldAsset ParaEngine::CParaXModel ParaEngine::CParaXStaticBase ParaEngine::CPhysicsWorld ParaEngine::CSelectionGroup ParaEngine::CSunLight ParaEngine::CTerrainTile ParaEngine::CViewport ParaEngine::CViewportManager ParaEngine::CZipWriter ParaEngine::IRefObject ParaEngine::ISearchPathManager ParaEngine::ParaEngineSettings ParaEngine::ParaXModelCanvas ParaEngine::SceneState ParaTerrain::CGlobalTerrain ParaTerrain::Terrain ParaTerrain::TerrainLattice

Public Types

typedef ParaEngine::weak_ptr< IObject, IAttributeFieldsWeakPtr_type
 
- Public Types inherited from ParaEngine::IObject
typedef ParaEngine::weak_ptr< IObjectWeakPtr_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 IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
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 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 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 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 CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (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
 

Detailed Description

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

Member Function Documentation

§ AddChildAttributeObject()

bool ParaEngine::IAttributeFields::AddChildAttributeObject ( IAttributeFields pChild,
int  nRowIndex = -1,
int  nColumnIndex = 0 
)
virtual

add child object.

Reimplemented in ParaEngine::CBaseObject.

§ GetAttributeClass()

CAttributeClass * IAttributeFields::GetAttributeClass ( )

get the main attribute class object.

§ GetAttributeClassID()

int ParaEngine::IAttributeFields::GetAttributeClassID ( )
virtual

§ GetChildAttributeColumnCount()

int ParaEngine::IAttributeFields::GetChildAttributeColumnCount ( )
virtual

§ GetChildAttributeObject()

IAttributeFields * ParaEngine::IAttributeFields::GetChildAttributeObject ( const std::string &  sName)
virtual

§ GetChildAttributeObjectCount()

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

§ GetDynamicField() [1/2]

CDynamicAttributeField * ParaEngine::IAttributeFields::GetDynamicField ( const std::string &  sName)
virtual

Get a dynamic field with a given name.

Parameters
sNamename of the field to set
Returns
: return the field or NULL if does not exist

§ GetDynamicField() [2/2]

CDynamicAttributeField * ParaEngine::IAttributeFields::GetDynamicField ( int  nIndex)
virtual

Get a dynamic field with a given index.

Parameters
sNamename of the field to set
Returns
: return the field or NULL if does not exist

§ GetDynamicFieldCount()

int ParaEngine::IAttributeFields::GetDynamicFieldCount ( )
virtual

how many dynamic field this object currently have.

§ GetTime()

int ParaEngine::IAttributeFields::GetTime ( )
virtual

get the current local time in case it is animated in milli seconds frames.

Reimplemented in ParaEngine::CBipedObject, ParaEngine::BMaxObject, and ParaEngine::CParaXAnimInstance.

§ InstallFields()

int IAttributeFields::InstallFields ( CAttributeClass pClass,
bool  bOverride 
)
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.

§ InvokeEditor()

virtual bool ParaEngine::IAttributeFields::InvokeEditor ( int  nFieldID,
const std::string &  sParameters 
)
inlinevirtual

Invoke an (external) editor for a given field.

This is usually for NPL script field

Parameters
nFieldID: field ID
sParameters: the parameter passed to the editor
Returns
true if editor is invoked, false if failed or field has no editor.

§ IsModified()

virtual bool ParaEngine::IAttributeFields::IsModified ( )
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.

§ LoadDynamicFieldsFromString()

int IAttributeFields::LoadDynamicFieldsFromString ( const std::string &  input)
virtual

load only text dynamic fields from string

Returns
the number of fields loaded.

§ OpenWithDefaultEditor()

bool IAttributeFields::OpenWithDefaultEditor ( const char *  sFilename,
bool  bWaitOnReturn = false 
)
static

Open a given file with the default registered editor in the game engine.

Parameters
sFileNamefile name to be opened by the default editor.
bWaitOnReturnif false, the function returns immediately; otherwise it will wait for the editor to return.
Returns
true if opened.

§ PrintObject()

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.

§ QueryObject()

void * ParaEngine::IAttributeFields::QueryObject ( int  nObjectType)
virtual

convert to object of a given type.

Parameters
nObjectTypesuch as values in ATTRIBUTE_CLASSID_TABLE, In most cases, we query ATTRIBUTE_CLASSID_CBaseObject

Reimplemented in ParaEngine::CBaseObject, and ParaEngine::CGUIBase.

§ QueryObjectByName()

void * ParaEngine::IAttributeFields::QueryObjectByName ( const std::string &  sObjectType)
virtual

convert to object of a given type.

Parameters
sObjectType

Reimplemented in ParaEngine::CBaseObject.

§ ResetField()

virtual bool ParaEngine::IAttributeFields::ResetField ( int  nFieldID)
inlinevirtual

Reset the field to its initial or default value.

Parameters
nFieldID: field ID
Returns
true if value is set; false if value not set.

Reimplemented in ParaEngine::IGameObject.

§ SaveDynamicFieldsToString()

int IAttributeFields::SaveDynamicFieldsToString ( std::string &  output)
virtual

save only text dynamic fields to fieldname = value text strings.

one on each line. line separator is
.

Returns
the number of fields saved. or -1 if failed.

§ SetDynamicField()

int ParaEngine::IAttributeFields::SetDynamicField ( const std::string &  sName,
const CVariable value 
)
virtual

set a dynamic field with a given name.

Parameters
sNamename of the field to set : the value to add. if NULL, field will be removed.
Returns
: -1 failed, if 0 means modified, if 1 means a new key is added, if 2 means a key is removed.

§ SetModified()

virtual void ParaEngine::IAttributeFields::SetModified ( bool  bModified)
inlinevirtual

set whether any field has been modified.

Reimplemented in ParaTerrain::Terrain, ParaEngine::CSceneObject, ParaEngine::IGameObject, and ParaEngine::BlockRegion.

§ ValidateFields()

virtual bool ParaEngine::IAttributeFields::ValidateFields ( )
inlinevirtual

validate all fields and return true if validation passed.


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