My Project
|
A ParaX Model canvas is just a hierarchy of parax Models. More...
#include <ParaXModelCanvas.h>
Public Types | |
enum | _MODEL_LIGHT { LT_AMBIENT, LT_DIRECTIONAL, LT_MODEL_ONLY } |
![]() | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
![]() | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_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 IAttributeFields * | GetChildAttributeObject (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 IAttributeFields * | GetChildAttributeObject (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 | |
ParaXEntity * | GetBaseModel () |
get the base model, where body attachments are attached.Base model is usually the main character model. More... | |
ParaXEntity * | GetAnimModel () |
get the animation model. More... | |
CanvasAttachment * | addAttachment (ParaXEntity *model, int id, int slot, float fScale=1.0f) |
add an attachment to the character More... | |
CanvasAttachment * | addAttachment (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... | |
CanvasAttachment * | GetChild (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... | |
![]() | |
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 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... | |
![]() | |
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... | |
![]() | |
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... | |
Public Attributes | |
_MODEL_LIGHT | m_lightType |
ref_ptr< CanvasAttachment > | m_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 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... | |
![]() | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
![]() | |
WeakPtr_type | m_weak_reference |
![]() | |
int | m_refcount |
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.
CanvasAttachment * ParaXModelCanvas::addAttachment | ( | ParaXEntity * | model, |
int | id, | ||
int | slot, | ||
float | fScale = 1.0f |
||
) |
add an attachment to the character
model | model to be attached |
id | this 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. |
slot | an 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. |
fScale | the scale of attached object. default to 1.0 |
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.
pPose | it will override the poses defined in the model. |
nAnimID | the animation id for attached models. By default, it is ANIM_STAND(0). |
void ParaXModelCanvas::clearAttachments | ( | ) |
delete all attachment to this character.
void ParaXModelCanvas::deleteAttachment | ( | int | nAttachmentID | ) |
delete all attachments which is attached to the position specified by the attachment ID
nAttachmentID | this 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. |
void ParaXModelCanvas::deleteSlot | ( | int | slot | ) |
delete everything on a specified slot of the character
slot | an 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. |
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.
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.
ParaXEntity * ParaXModelCanvas::GetBaseModel | ( | ) |
get the base model, where body attachments are attached.Base model is usually the main character model.
|
virtual |
we support multi-dimensional child object.
by default objects have only one column.
Reimplemented from ParaEngine::IAttributeFields.
|
virtual |
get attribute by child object.
used to iterate across the attribute field hierarchy.
Reimplemented from ParaEngine::IAttributeFields.
|
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.
bool ParaXModelCanvas::InitBaseModel | ( | ParaXEntity * | pModel | ) |
reset the model canvas, and initialize with a base model without any attachments.
pModel | the model asset for the base model. |
|
virtual |
this class should be implemented if one wants to add new attribute.
This function is always called internally.
Reimplemented from ParaEngine::IAttributeFields.
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.
void ParaXModelCanvas::UnmountModel | ( | ) |
unmount the current model.
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.