My Project
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ParaEngine::CParaXStaticBase Class Referenceabstract
Inheritance diagram for ParaEngine::CParaXStaticBase:
ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted ParaEngine::CParaXStaticMesh ParaEngine::CParaXStaticModel

Public Member Functions

 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 *)
 
virtual int GetPolyCount ()=0
 get polycount of this mesh object
 
virtual int GetPhysicsCount ()=0
 get physics polycount of this mesh object
 
virtual const char * DumpTextureUsage ()=0
 get texture usage such as the number of textures and their sizes. More...
 
virtual TextureEntityGetDefaultReplaceableTexture (int ReplaceableTextureID)=0
 get the default replaceable texture by its ID. More...
 
TextureEntityGetReplaceableTexture (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 int GetNextPhysicsGroupID (int nPhysicsGroup=-1)=0
 return the physics group id that is closest to nPhysicsGroup. More...
 
virtual TextureEntityLoadTextureByPath (const string &sFilePath, DWORD TextureType)
 build the texture entity. More...
 
HRESULT Create (RenderDevicePtr pd3dDevice, const char *strFilename, bool bCheckSecondUV=false)
 
virtual HRESULT Create (RenderDevicePtr pd3dDevice, void *buffer, DWORD nFileSize, bool bCheckSecondUV=false)=0
 
virtual HRESULT Create (RenderDevicePtr pd3dDevice, XFile::Scene *pFileData)=0
 
virtual HRESULT Destroy ()
 
virtual HRESULT InitDeviceObjects ()=0
 
virtual HRESULT DeleteDeviceObjects ()=0
 
virtual FLOAT ComputeBoundingSphere (Vector3 *vObjectCenter, FLOAT *fObjectRadius)=0
 
virtual HRESULT ComputeBoundingBox (Vector3 *pMin, Vector3 *pMax)=0
 
virtual HRESULT ClonePhysicsMesh (DWORD *pNumVertices, Vector3 **ppVerts, DWORD *pNumTriangles, WORD **ppIndices, int *pnMeshPhysicsGroup=nullptr, int *pnTotalMeshGroupCount=nullptr)=0
 Get the physics mesh in terms of vertices and indices. More...
 
virtual MeshHeaderGetMeshHeader (XFileParser *pFileParser=nullptr)=0
 get the mesh header. More...
 
virtual bool GetMeshHeaderFromFile (CParaFile &myFile, XFileParser *pFileParser)=0
 
virtual HRESULT Render (SceneState *pSceneState, RenderDevicePtr pd3dDevice, bool bDrawOpaqueSubsets=true, bool bDrawAlphaSubsets=true, float fAlphaFactor=1.0f)=0
 
virtual HRESULT Render (SceneState *pSceneState, CEffectFile *pEffect, bool bDrawOpaqueSubsets=true, bool bDrawAlphaSubsets=true, float fAlphaFactor=1.0f, CParameterBlock *materialParams=nullptr)=0
 
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 ParaXRefObjectGetXRefObjectsByIndex (int nIndex)
 Get XRef Objects By Index. More...
 
void UseMeshMaterials (bool bFlag)
 
- 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
 
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 XModelFileType GetFileTypeByFilename (const std::string &sFilename)
 
- 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

void ClearFaceGroups ()
 clear all face groups. More...
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 

Protected Attributes

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< ParaXRefObjectm_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
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Additional Inherited Members

- 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
 

Member Function Documentation

§ ClearFaceGroups()

void ParaEngine::CParaXStaticBase::ClearFaceGroups ( )
protected

clear all face groups.

§ ClonePhysicsMesh()

virtual HRESULT ParaEngine::CParaXStaticBase::ClonePhysicsMesh ( DWORD *  pNumVertices,
Vector3 **  ppVerts,
DWORD *  pNumTriangles,
WORD **  ppIndices,
int *  pnMeshPhysicsGroup = nullptr,
int *  pnTotalMeshGroupCount = nullptr 
)
pure virtual

Get the physics mesh in terms of vertices and indices.

Parameters
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.
Returns
S_OK, if succeed.

Implemented in ParaEngine::CParaXStaticModel, and ParaEngine::CParaXStaticMesh.

§ Create()

HRESULT ParaEngine::CParaXStaticBase::Create ( RenderDevicePtr  pd3dDevice,
const char *  strFilename,
bool  bCheckSecondUV = false 
)
Parameters
bCheckSecondUVwhether 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.

§ DumpTextureUsage()

virtual const char* ParaEngine::CParaXStaticBase::DumpTextureUsage ( )
pure virtual

get texture usage such as the number of textures and their sizes.

Implemented in ParaEngine::CParaXStaticModel, and ParaEngine::CParaXStaticMesh.

§ GetDefaultReplaceableTexture()

virtual TextureEntity* ParaEngine::CParaXStaticBase::GetDefaultReplaceableTexture ( int  ReplaceableTextureID)
pure virtual

get the default replaceable texture by its ID.

The default replaceable texture is the main texture exported from the 3dsmax exporter.

Parameters
ReplaceableTextureIDusually [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.
Returns
this may return NULL, if replaceable texture is not set before or ID is invalid.

Implemented in ParaEngine::CParaXStaticModel, and ParaEngine::CParaXStaticMesh.

§ GetMeshHeader()

virtual MeshHeader& ParaEngine::CParaXStaticBase::GetMeshHeader ( XFileParser pFileParser = nullptr)
pure 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.

Implemented in ParaEngine::CParaXStaticModel, and ParaEngine::CParaXStaticMesh.

§ GetNextPhysicsGroupID()

virtual int ParaEngine::CParaXStaticBase::GetNextPhysicsGroupID ( int  nPhysicsGroup = -1)
pure virtual

return the physics group id that is closest to nPhysicsGroup.

or -1 if there is none.

Implemented in ParaEngine::CParaXStaticModel, and ParaEngine::CParaXStaticMesh.

§ GetNumReplaceableTextures()

int ParaEngine::CParaXStaticBase::GetNumReplaceableTextures ( )

get the total number of replaceable textures, which is the largest replaceable texture ID.

but it does not mean that all ID contains valid replaceable textures. This function can be used to quickly decide whether the model contains replaceable textures. Generally we allow 32 replaceable textures per model.

Returns
0 may be returned if no replaceable texture is used by the model.

§ GetReplaceableTexture()

TextureEntity * ParaEngine::CParaXStaticBase::GetReplaceableTexture ( int  ReplaceableTextureID)

get the current replaceable texture by its ID.

Parameters
ReplaceableTextureIDusually [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.
Returns
this may return NULL, if replaceable texture is not set before or ID is invalid.

§ GetXRefObjectsByIndex()

const ParaXRefObject * ParaEngine::CParaXStaticBase::GetXRefObjectsByIndex ( int  nIndex)

Get XRef Objects By Index.

§ GetXRefObjectsCount()

int ParaEngine::CParaXStaticBase::GetXRefObjectsCount ( )
inline

get the XRef Object in this model.

§ InstallFields()

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

§ LoadTextureByPath()

TextureEntity * ParaEngine::CParaXStaticBase::LoadTextureByPath ( const string &  sFilePath,
DWORD  TextureType 
)
virtual

build the texture entity.

It will return NULL if the texture is not valid. if the texture contains no directory information. the mesh directory will be used to locate the texture. it will search for the current directory of the mesh file(m_strName)

Parameters
sFilePathtexture file path.
TextureTypesee TextureEntity::_SurfaceType

§ SetMeshFileData()

void ParaEngine::CParaXStaticBase::SetMeshFileData ( void *  pData,
int  nSize 
)

set the mesh file data.

if this is set we will load the mesh from the memory data instead of open the mesh file. once the mesh has finished with the data, it will delete them using delete [] operator.

§ SetReplaceableTexture()

bool ParaEngine::CParaXStaticBase::SetReplaceableTexture ( int  ReplaceableTextureID,
TextureEntity pTextureEntity 
)
virtual

set the replaceable texture at the given index with a new texture.

This function is called frequently before an instace of the mesh object draws itself. because default instance of the mesh may use different replaceable texture set.

Parameters
ReplaceableTextureIDusually [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.
pTextureEntityThe reference account of the texture entity will be automatically increased by one.
Returns
true if succeed. if ReplaceableTextureID exceed the total number of replaceable textures, this function will return false.

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