My Project
|
Desc: Class for loading and rendering file-based meshes. More...
#include <ParaXStaticModel.h>
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 | GetPolyCount () |
get polycount of this mesh object | |
virtual int | GetPhysicsCount () |
get physics polycount of this mesh object | |
virtual const char * | DumpTextureUsage () |
get texture usage such as the number of textures and their sizes. More... | |
virtual int | GetNextPhysicsGroupID (int nPhysicsGroup=-1) |
return the physics group id that is closest to nPhysicsGroup. More... | |
virtual TextureEntity * | GetDefaultReplaceableTexture (int ReplaceableTextureID) |
get the default replaceable texture by its ID. More... | |
virtual HRESULT | Create (RenderDevicePtr pd3dDevice, void *buffer, DWORD nFileSize, bool bCheckSecondUV=false) |
virtual HRESULT | Create (RenderDevicePtr pd3dDevice, XFile::Scene *pFileData) |
virtual HRESULT | Destroy () |
virtual HRESULT | InitDeviceObjects () |
virtual HRESULT | DeleteDeviceObjects () |
virtual FLOAT | ComputeBoundingSphere (Vector3 *vObjectCenter, FLOAT *fObjectRadius) |
virtual HRESULT | ComputeBoundingBox (Vector3 *pMin, Vector3 *pMax) |
virtual HRESULT | ClonePhysicsMesh (DWORD *pNumVertices, Vector3 **ppVerts, DWORD *pNumTriangles, WORD **ppIndices, int *pnMeshPhysicsGroup=nullptr, int *pnTotalMeshGroupCount=nullptr) |
Get the physics mesh in terms of vertices and indices. More... | |
virtual MeshHeader & | GetMeshHeader (XFileParser *pFileParser=nullptr) |
get the mesh header. More... | |
virtual bool | GetMeshHeaderFromFile (CParaFile &myFile, XFileParser *pFileParser) |
virtual HRESULT | Render (SceneState *pSceneState, RenderDevicePtr pd3dDevice, bool bDrawOpaqueSubsets=true, bool bDrawAlphaSubsets=true, float fAlphaFactor=1.0f) |
virtual HRESULT | Render (SceneState *pSceneState, CEffectFile *pEffect, bool bDrawOpaqueSubsets=true, bool bDrawAlphaSubsets=true, float fAlphaFactor=1.0f, CParameterBlock *materialParams=nullptr) |
CParaXStaticModel (const char *strName=nullptr, XFileParser *pXFileParser=nullptr) | |
![]() | |
CParaXStaticBase (const char *strName=nullptr) | |
virtual int | InstallFields (CAttributeClass *pClass, bool bOverride) |
this class should be implemented if one wants to add new attribute. More... | |
ATTRIBUTE_METHOD1 (CParaXStaticBase, DumpTextureUsage_s, const char **) | |
ATTRIBUTE_METHOD1 (CParaXStaticBase, GetPolyCount_s, int *) | |
ATTRIBUTE_METHOD1 (CParaXStaticBase, GetPhysicsCount_s, int *) | |
TextureEntity * | GetReplaceableTexture (int ReplaceableTextureID) |
get the current replaceable texture by its ID. More... | |
virtual bool | SetReplaceableTexture (int ReplaceableTextureID, TextureEntity *pTextureEntity) |
set the replaceable texture at the given index with a new texture. More... | |
virtual TextureEntity * | LoadTextureByPath (const string &sFilePath, DWORD TextureType) |
build the texture entity. More... | |
HRESULT | Create (RenderDevicePtr pd3dDevice, const char *strFilename, bool bCheckSecondUV=false) |
int | GetNumReplaceableTextures () |
get the total number of replaceable textures, which is the largest replaceable texture ID. More... | |
void | SetMeshFileData (void *pData, int nSize) |
set the mesh file data. More... | |
void | DeleteMeshFileData () |
int | GetXRefObjectsCount () |
get the XRef Object in this model. More... | |
const ParaXRefObject * | GetXRefObjectsByIndex (int nIndex) |
Get XRef Objects By Index. More... | |
void | UseMeshMaterials (bool bFlag) |
![]() | |
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... | |
![]() | |
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... | |
Protected Member Functions | |
HRESULT | LoadToSystemBuffer (XFile::Scene *pFileData) |
void | BuildRenderBuffer () |
void | DrawRenderPass (int i) |
![]() | |
void | ClearFaceGroups () |
clear all face groups. More... | |
![]() | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
Protected Attributes | |
std::vector< ParaXStaticModelRenderPass > | m_passes |
std::vector< mesh_vertex_normal > | m_vertices |
std::vector< int16 > | m_indices |
ParaVertexBuffer | m_vertexBuffer |
ParaIndexBuffer | m_indexBuffer |
![]() | |
string | m_strName |
MeshHeader | m_header |
char * | m_pFileData |
the file data from which to load the mesh | |
int | m_pFileDataSize |
the file data size in bytes from which to load the mesh | |
vector< ParaXRefObject > | m_XRefObjects |
get a list of XRef objects | |
vector< CFaceGroup * > | m_faceGroups |
a list of face group | |
DWORD | m_dwNumMaterials |
bool | m_bUseMaterials |
vector< ref_ptr< TextureEntity > > | m_ReplaceableTextures |
![]() | |
WeakPtr_type | m_weak_reference |
![]() | |
int | m_refcount |
Additional Inherited Members | |
![]() | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
![]() | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_type |
![]() | |
static XModelFileType | GetFileTypeByFilename (const std::string &sFilename) |
![]() | |
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... | |
Desc: Class for loading and rendering file-based meshes.
ParaEngine::CParaXStaticModel::CParaXStaticModel | ( | const char * | strName = nullptr , |
XFileParser * | pXFileParser = nullptr |
||
) |
strName | the file name |
pDXFileParser | the x file template parser to use. if NULL, the default one is used. |
|
virtual |
Get the physics mesh in terms of vertices and indices.
pNumVertices | [out] number of vertices |
ppVerts | [out] buffer contains all vertices. The caller needs to release the buffer using delete [] buffer. |
pNumTriangles | [out] number of triangles, each triangle has three indices. Please note that if the mesh contains no physics faces, the pNumTriangles is 0. However pNumVertices might be positive. |
ppIndices | [out] buffer contains all indices. The caller needs to release the buffer using delete [] buffer. |
nMeshPhysicsGroup | [in|out]: the mesh physics group to get. On return it will be assigned with the next mesh group. |
Implements ParaEngine::CParaXStaticBase.
|
virtual |
bCheckSecondUV | whether to check the second UV set. if there exist a second UV set, it will be created. 2008.1.25 by LXZ: this is a tricky workaround of D3DXLoadMeshFromXOf can only load a simple mesh from data node. If the mesh contains frames or second UV sets, the function will not work. So in such cases, I fall back to use the original D3DXLoadMeshFromXInMemory, which can handle frames and second UV sets. |
Implements ParaEngine::CParaXStaticBase.
|
virtual |
get texture usage such as the number of textures and their sizes.
Implements ParaEngine::CParaXStaticBase.
|
inlinevirtual |
attribute class ID should be identical, unless one knows how overriding rules work.
Reimplemented from ParaEngine::IAttributeFields.
|
virtual |
get the default replaceable texture by its ID.
The default replaceable texture is the main texture exported from the 3dsmax exporter.
ReplaceableTextureID | usually [0-32) generally speaking, replaceable ID 0 is used for general purpose replaceable texture, ID 1 is for user defined. ID 2 is for custom skins. |
Implements ParaEngine::CParaXStaticBase.
|
virtual |
get the mesh header.
and compute if not valid. one needs to check MeshHeader.m_bIsValid before using it. because if async loading is used, the mesh itself may not be ready when this function is called.
Implements ParaEngine::CParaXStaticBase.
|
virtual |
return the physics group id that is closest to nPhysicsGroup.
or -1 if there is none.
Implements ParaEngine::CParaXStaticBase.
|
virtual |
turn on or off z write: z mask means disable z write
set blending and alpha testing
if either blending or alpha testing is enabled, we will disable back face culling.
turn on and off blending.
turn on and off alpha testing.
turn on or off z write: z mask means disable z write
Implements ParaEngine::CParaXStaticBase.