My Project
Public Types | Public Member Functions | Public Attributes | List of all members
ParaEngine::ParaXModelCanvas Class Reference

A ParaX Model canvas is just a hierarchy of parax Models. More...

#include <ParaXModelCanvas.h>

Inheritance diagram for ParaEngine::ParaXModelCanvas:
ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted

Public Types

enum  _MODEL_LIGHT { LT_AMBIENT, LT_DIRECTIONAL, LT_MODEL_ONLY }
 
- 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
 

Public Member Functions

 ATTRIBUTE_DEFINE_CLASS (ParaXModelCanvas)
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
virtual IAttributeFieldsGetChildAttributeObject (const std::string &sName)
 get attribute by child object. More...
 
virtual int GetChildAttributeObjectCount (int nColumnIndex=0)
 get the number of child objects (row count) in the given column. More...
 
virtual int GetChildAttributeColumnCount ()
 we support multi-dimensional child object. More...
 
virtual IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
bool Animate (SceneState *sceneState, CharacterPose *pPose, int nAnimID=0, IAttributeFields *pAnimInstance=NULL)
 call this to recalculate the bone transform matrices according to the current frame time the caller must set the model's local time through other means previously. More...
 
void Draw (SceneState *sceneState, CParameterBlock *materialParams=NULL)
 draw the canvas with all models on it. More...
 
void BuildShadowVolume (SceneState *sceneState, ShadowVolume *pShadowVolume, LightParams *pLight, Matrix4 *mxWorld)
 build the shadow volume
 
void SetAutoCharacterModel (bool bAutoCharacterModel)
 set this model as automatic character model. More...
 
bool InitBaseModel (ParaXEntity *pModel)
 reset the model canvas, and initialize with a base model without any attachments. More...
 
void MountOnModel (ParaXEntity *model, float fScale=1.0f)
 mount the current model on another model, such as a horse.
 
void UnmountModel ()
 unmount the current model. More...
 
bool IsMounted ()
 the base object is mounted on another model
 
ParaXEntityGetBaseModel ()
 get the base model, where body attachments are attached.Base model is usually the main character model. More...
 
ParaXEntityGetAnimModel ()
 get the animation model. More...
 
CanvasAttachmentaddAttachment (ParaXEntity *model, int id, int slot, float fScale=1.0f)
 add an attachment to the character More...
 
CanvasAttachmentaddAttachment (MeshEntity *model, int id, int slot, float fScale=1.0f)
 
void clearAttachments ()
 delete all attachment to this character. More...
 
void deleteSlot (int slot)
 delete everything on a specified slot of the character More...
 
CanvasAttachmentGetChild (int id, int slot=-1)
 get the first attachment matching the id
 
void deleteAttachment (int nAttachmentID)
 delete all attachments which is attached to the position specified by the attachment ID 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
 
 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...
 

Public Attributes

_MODEL_LIGHT m_lightType
 
ref_ptr< CanvasAttachmentm_root
 root canvas
 
bool m_bIsAutoCharacter: 1
 whether the model is a automatic character model, bone matrix calculation for automatic model is given externally. More...
 

Additional Inherited Members

- 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...
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Detailed Description

A ParaX Model canvas is just a hierarchy of parax Models.

In a model canvas, there is a base model, all other child models may be attached to slots on the base model. Slots are defined internally in the ParaX model file of the base model. In ParaEngine, Model canvas is usually used for displaying a character biped model with different body attachments, where the base model is the base character body model. The attachments for the character model are static models such as armory, hats, etc.

Member Function Documentation

§ addAttachment()

CanvasAttachment * ParaXModelCanvas::addAttachment ( ParaXEntity model,
int  id,
int  slot,
float  fScale = 1.0f 
)

add an attachment to the character

Parameters
modelmodel to be attached
idthis is ATTACHMENT_ID which is defined in ParaXModel.h. one can specified, through this value, the position of the attachment point, such as head, shoulder, left/right hand, etc.
slotan identifier of the object. One can later delete attachment by slot. there can be many objects attached to the same slots. some slots are reserved. see CharSlots enum.
fScalethe scale of attached object. default to 1.0

§ Animate()

bool ParaXModelCanvas::Animate ( SceneState sceneState,
CharacterPose pPose,
int  nAnimID = 0,
IAttributeFields pAnimInstance = NULL 
)

call this to recalculate the bone transform matrices according to the current frame time the caller must set the model's local time through other means previously.

Parameters
pPoseit will override the poses defined in the model.
nAnimIDthe animation id for attached models. By default, it is ANIM_STAND(0).
Returns
true if bones are animated

§ clearAttachments()

void ParaXModelCanvas::clearAttachments ( )

delete all attachment to this character.

§ deleteAttachment()

void ParaXModelCanvas::deleteAttachment ( int  nAttachmentID)

delete all attachments which is attached to the position specified by the attachment ID

Parameters
nAttachmentIDthis is ATTACHMENT_ID which is defined in ParaXModel.h. one can specified, through this value, the position of the attachment point, such as head, shoulder, left/right hand, etc.

§ deleteSlot()

void ParaXModelCanvas::deleteSlot ( int  slot)

delete everything on a specified slot of the character

Parameters
slotan identifier of the object. One can later delete attachment by slot. there can be many objects attached to the same slots. some slots are reserved. see CharSlots enum.

§ Draw()

void ParaXModelCanvas::Draw ( SceneState sceneState,
CParameterBlock materialParams = NULL 
)

draw the canvas with all models on it.

Be sure to call animate() before calling the draw method.

§ GetAnimModel()

ParaXEntity * ParaXModelCanvas::GetAnimModel ( )

get the animation model.

this is the base model if it is not mounted; otherwise it is the mount model. When animating a model, such as walking, attacking, etc, only animated model are animated.

§ GetBaseModel()

ParaXEntity * ParaXModelCanvas::GetBaseModel ( )

get the base model, where body attachments are attached.Base model is usually the main character model.

§ GetChildAttributeColumnCount()

int ParaEngine::ParaXModelCanvas::GetChildAttributeColumnCount ( )
virtual

we support multi-dimensional child object.

by default objects have only one column.

Reimplemented from ParaEngine::IAttributeFields.

§ GetChildAttributeObject()

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

get attribute by child object.

used to iterate across the attribute field hierarchy.

Reimplemented from ParaEngine::IAttributeFields.

§ GetChildAttributeObjectCount()

int ParaEngine::ParaXModelCanvas::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.

§ InitBaseModel()

bool ParaXModelCanvas::InitBaseModel ( ParaXEntity pModel)

reset the model canvas, and initialize with a base model without any attachments.

Parameters
pModelthe model asset for the base model.
Returns
: true if success.

§ InstallFields()

int ParaEngine::ParaXModelCanvas::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 from ParaEngine::IAttributeFields.

§ SetAutoCharacterModel()

void ParaXModelCanvas::SetAutoCharacterModel ( bool  bAutoCharacterModel)

set this model as automatic character model.

Automatic character model will generate some of its own bone matrix, such as the upper body turning angle.

§ UnmountModel()

void ParaXModelCanvas::UnmountModel ( )

unmount the current model.

Member Data Documentation

§ m_bIsAutoCharacter

bool ParaEngine::ParaXModelCanvas::m_bIsAutoCharacter

whether the model is a automatic character model, bone matrix calculation for automatic model is given externally.

Such as the upper bottom turning angle. The default value is false.


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