2 #include "AttributeClassIDTable.h" 3 #include "AttributeField.h" 4 #include "AttributeClass.h" 7 #define Member_Offset(x, cls) (int)&(((cls *)0)->x) 9 #define ATTRIBUTE_DEFINE_CLASS(clsName) \ 10 virtual int GetAttributeClassID(){return IAttributeFields::GetAttributeClassID();}\ 11 virtual const char* GetAttributeClassName(){ static const char name[] = #clsName; return name; } 16 #define PROPERTY_FIELD(name, cls, member, datatype) \ 17 static void Set##name(cls* c, datatype v) {c->member = v;};\ 18 static datatype Get##name(cls* c) {return c->member;}; 20 #define ATTRIBUTE_METHOD(clsName, name) static HRESULT name(clsName* cls) 21 #define ATTRIBUTE_METHOD1(clsName, name, dataType) static HRESULT name(clsName* cls, dataType p1) 22 #define ATTRIBUTE_METHOD2(clsName, name, dataType) static HRESULT name(clsName* cls, dataType p1,dataType p2) 23 #define ATTRIBUTE_METHOD3(clsName, name, dataType) static HRESULT name(clsName* cls, dataType p1,dataType p2,dataType p3) 24 #define ATTRIBUTE_METHOD4(clsName, name, dataType) static HRESULT name(clsName* cls, dataType p1,dataType p2,dataType p3,dataType p4) 29 #define ATTRIBUTE_SUPPORT_CREATE_FACTORY(classname) \ 30 virtual CAttributeClass* CreateAttributeClass(){ \ 31 return new CAttributeClassImp<classname>(GetAttributeClassID(), GetAttributeClassName(), GetAttributeClassDescription()); \ 33 static classname * Create() { \ 34 classname * pObj = new classname(); \ 35 pObj->AddToAutoReleasePool();\ 41 class CDynamicAttributesSet;
42 class CDynamicAttributeField;
84 virtual IAttributeFields* GetChildAttributeObject(
int nRowIndex,
int nColumnIndex = 0);
88 ATTRIBUTE_METHOD1(
IAttributeFields, GetName_s,
const char**) { *p1 = cls->GetIdentifier().c_str();
return S_OK; }
89 ATTRIBUTE_METHOD1(
IAttributeFields, SetName_s,
const char*) { cls->SetIdentifier(p1);
return S_OK; }
90 ATTRIBUTE_METHOD(
IAttributeFields, PrintObject_s){ cls->PrintObject();
return S_OK; }
92 ATTRIBUTE_METHOD1(
IAttributeFields, GetRefCount_s,
int*) { *p1 = cls->GetRefCount();
return S_OK; }
94 ATTRIBUTE_METHOD1(
IAttributeFields, SetTime_s,
int) { cls->SetTime(p1);
return S_OK; }
95 ATTRIBUTE_METHOD1(
IAttributeFields, GetTime_s,
int*) { *p1 = cls->GetTime();
return S_OK; }
97 ATTRIBUTE_METHOD(
IAttributeFields, Release_s){ cls->Release();
return S_OK; }
105 virtual const std::string& GetIdentifier();
106 virtual void SetIdentifier(
const std::string& sID);
131 virtual bool InvokeEditor(
int nFieldID,
const std::string& sParameters){
return false; };
148 virtual void SetTime(
int nTime);
virtual void RemoveAllDynamicFields()
remove all dynamic fields
Definition: IAttributeFields.cpp:221
virtual bool ResetField(int nFieldID)
Reset the field to its initial or default value.
Definition: IAttributeFields.h:123
virtual int AddDynamicField(const std::string &sName, ATTRIBUTE_FIELDTYPE dwType)
add dynamic field and return field index
Definition: IAttributeFields.cpp:211
virtual bool ValidateFields()
validate all fields and return true if validation passed.
Definition: IAttributeFields.h:114
an attribute class is a collection of attribute fields.
Definition: AttributeClass.h:10
virtual int LoadDynamicFieldsFromString(const std::string &input)
load only text dynamic fields from string
Definition: IAttributeFields.cpp:87
virtual CAttributeClass * CreateAttributeClass()
initialize fields
Definition: IAttributeFields.cpp:130
virtual int GetChildAttributeObjectCount(int nColumnIndex=0)
get the number of child objects (row count) in the given column.
Definition: IAttributeFields.cpp:245
virtual void * QueryObjectByName(const std::string &sObjectType)
convert to object of a given type.
Definition: IAttributeFields.cpp:279
different physics engine has different winding order.
Definition: EventBinding.h:32
represent any kind of static or animated variable, such as: string, double, float, int, bool, Vector3, Quaternion, or animated data with multiple time, value keys.
Definition: Variable.h:75
virtual void SetModified(bool bModified)
set whether any field has been modified.
Definition: IAttributeFields.h:111
virtual const char * GetDynamicFieldNameByIndex(int nIndex)
get field name by index
Definition: IAttributeFields.cpp:189
virtual bool InvokeEditor(int nFieldID, const std::string &sParameters)
Invoke an (external) editor for a given field.
Definition: IAttributeFields.h:131
base class for object, such as CBaseObject, IAttributeObject, GUI object.
Definition: PERef.h:287
virtual int SetDynamicField(const std::string &sName, const CVariable &value)
set a dynamic field with a given name.
Definition: IAttributeFields.cpp:201
virtual void * QueryObject(int nObjectType)
convert to object of a given type.
Definition: IAttributeFields.cpp:287
static bool OpenWithDefaultEditor(const char *sFilename, bool bWaitOnReturn=false)
Open a given file with the default registered editor in the game engine.
Definition: IAttributeFields.cpp:168
virtual string GetValidationMessage()
get the recent validation message due to the most recent call to ValidateFields() ...
Definition: IAttributeFields.h:116
virtual int GetChildAttributeColumnCount()
we support multi-dimensional child object.
Definition: IAttributeFields.cpp:260
virtual const char * GetAttributeClassDescription()
a static string, describing the attribute class object
Definition: IAttributeFields.h:75
Definition: enum_maker.hpp:46
A common interface for all classes implementing IAttributeFields By implementing this class's virtual...
Definition: IAttributeFields.h:59
virtual int GetTime()
get the current local time in case it is animated in milli seconds frames.
Definition: IAttributeFields.cpp:295
virtual int InstallFields(CAttributeClass *pClass, bool bOverride)
this class should be implemented if one wants to add new attribute.
Definition: IAttributeFields.cpp:304
void PrintObject()
print the content of this object to a text file at temp/doc/[ClassName].txt.
Definition: IAttributeFields.cpp:115
a group of dynamic attributes
Definition: DynamicAttributesSet.h:7
CAttributeClass * GetAttributeClass()
get the main attribute class object.
Definition: IAttributeFields.cpp:147
for a dynamic attribute field.
Definition: DynamicAttributeField.h:11
virtual const char * GetAttributeClassName()
a static string, describing the attribute class object's name
Definition: IAttributeFields.h:73
virtual int SaveDynamicFieldsToString(std::string &output)
save only text dynamic fields to fieldname = value text strings.
Definition: IAttributeFields.cpp:55
virtual int GetAttributeClassID()
attribute class ID should be identical, unless one knows how overriding rules work.
Definition: IAttributeFields.cpp:228
virtual bool AddChildAttributeObject(IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0)
add child object.
Definition: IAttributeFields.cpp:274
virtual int GetDynamicFieldCount()
how many dynamic field this object currently have.
Definition: IAttributeFields.cpp:195
ATTRIBUTE_FIELDTYPE
a list of all attribute type this is also used for all variable type supported.
Definition: Variable.h:10
virtual bool IsModified()
whether some of the fields are modified.It is up to the implementation class to provide this function...
Definition: IAttributeFields.h:109
virtual CDynamicAttributeField * GetDynamicField(const std::string &sName)
Get a dynamic field with a given name.
Definition: IAttributeFields.cpp:177