My Project
Public Member Functions | Public Attributes | Friends | List of all members
ParaEngine::MeshEntity Struct Reference

MeshEntity distinguish one template from other. More...

#include <MeshEntity.h>

Inheritance diagram for ParaEngine::MeshEntity:
ParaEngine::AssetEntity ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted

Public Member Functions

virtual AssetEntity::AssetType GetType ()
 
void Refresh (const char *sFilename=NULL, bool bLazyLoad=false)
 refresh this texture surface with a local file. More...
 
virtual bool IsLoaded ()
 most assets are loaded asynchronously. More...
 
const string & GetFileName ()
 get the mesh file name of the lowest level mesh. More...
 
void SetPrimaryTechniqueHandle (int nHandle)
 
int GetPrimaryTechniqueHandle ()
 
virtual CParameterBlockGetParamBlock (bool bCreateIfNotExist=false)
 get effect parameter block with this object. More...
 
void CreateMeshLODLevel (float fromDepth, const string &sFilename)
 Adds a new level-of-detail entry to this Mesh. More...
 
void UpdateManualLodLevel (int index, const string &sFilename)
 Changes the alternate mesh to use as a manual LOD at the given index. More...
 
int GetLodIndex (float depth) const
 Retrieves the level of detail index for the given depth value.
 
int GetLodIndexSquaredDepth (float squaredDepth) const
 Retrieves the level of detail index for the given squared depth value. More...
 
void RemoveLodLevels (void)
 Removes all LOD data from this Mesh. More...
 
HRESULT CreateMeshFromFile_Serial (RenderDevicePtr pDev=NULL, const char *sFileName=NULL)
 this function is mostly used internally. More...
 
HRESULT CreateMeshFromFile_Async (void *pContext, RenderDevicePtr pDev=NULL, const char *sFileName=NULL)
 this function is mostly used internally. More...
 
 MeshEntity (const AssetKey &key)
 
virtual HRESULT InitDeviceObjects ()
 
virtual HRESULT RestoreDeviceObjects ()
 
virtual HRESULT InvalidateDeviceObjects ()
 
virtual HRESULT DeleteDeviceObjects ()
 
virtual void Cleanup ()
 Clean up additional resources. More...
 
virtual IAttributeFieldsGetAttributeObject ()
 get the attribute object of this asset. More...
 
CParaXStaticBaseGetMesh (int nLODIndex=0)
 get the highest level mesh if LOD is enabled. More...
 
ref_ptr< CParaXStaticBaseCreateMesh (const char *sFilename)
 
void Init (const char *sFilename=NULL)
 init the asset entity object. More...
 
void SetAABB (const Vector3 *vMin, const Vector3 *vMax)
 set AABB
 
const Vector3GetAABBMin ()
 
const Vector3GetAABBMax ()
 
virtual bool GetBoundingBox (Vector3 *pMin, Vector3 *pMax)
 Get AABB bounding box of the asset object. More...
 
- Public Member Functions inherited from ParaEngine::AssetEntity
 AssetEntity (const AssetKey &key)
 
 ATTRIBUTE_DEFINE_CLASS (AssetEntity)
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetLocalFileName_s, const char **)
 
 ATTRIBUTE_METHOD1 (AssetEntity, SetLocalFileName_s, const char *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetRemoteAssetURL_s, const char **)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsValid_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsLoaded_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsLocked_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsInitialized_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetState_s, int *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, SetState_s, int)
 
virtual const std::string & GetIdentifier ()
 
virtual bool AutoSync (bool bForceSync=false, bool bLazyLoading=true)
 call this function to automatically sync with the remote server according to current asset state More...
 
virtual const string & GetLocalFileName ()
 the actual local file name. More...
 
virtual void SetLocalFileName (const char *sFileName)
 
virtual string GetRemoteAssetURL ()
 get the remote server url of this asset. More...
 
bool IsValid ()
 whether this is a valid resource object. More...
 
bool IsInitialized ()
 whether initialized. More...
 
virtual int Release ()
 call this function to safely release this asset. More...
 
AssetKeyGetKey ()
 return the key object. More...
 
AssetState GetState ()
 return the asset state. More...
 
void SetState (AssetState state)
 set the asset state. More...
 
virtual HRESULT RendererRecreated ()
 callback of listening the event that renderer was recreated on Android/WP8 all opengl related id has already become invalid at this time, no need to release them, just recreate them all in this function.
 
void LoadAsset ()
 load asset. More...
 
void UnloadAsset ()
 unload asset. More...
 
void GarbageCollectMe ()
 if its reference count is zero, unload this asset object. More...
 
bool IsLocked ()
 whether this is a locked resource resource. More...
 
virtual bool Lock (int nMethod=0)
 Lock the object. More...
 
virtual void UnLock ()
 UnLock the object.
 
- 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 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
 
CRefCountedAddToAutoReleasePool ()
 addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More...
 

Public Attributes

Vector3 m_vMin
 
Vector3 m_vMax
 
- Public Attributes inherited from ParaEngine::AssetEntity
AssetKey m_key
 this is the unique key object. More...
 
bool m_bIsInitialized
 whether this entity is initialized;Entity is by default lazily initialized
 
bool m_bIsValid
 whether this is a valid resource object. More...
 

Friends

class CMeshProcessor
 

Additional Inherited Members

- Public Types inherited from ParaEngine::AssetEntity
enum  AssetState {
  ASSET_STATE_NORMAL, ASSET_STATE_LOCAL, ASSET_STATE_REMOTE, ASSET_STATE_CACHE,
  ASSET_STATE_SYNC_START, ASSET_STATE_SYNC_SUCCEED, ASSET_STATE_SYNC_FAIL, ASSET_STATE_FAILED_TO_LOAD
}
 the asset state. More...
 
enum  AssetType {
  base =0, texture, mesh, multianimation,
  spritevertex, font, sound, mdx,
  parax, database, effectfile, dllplugin,
  datagrid, cadMesh, image
}
 each asset type has a unique asset type number
 
- 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
 
- Static Public Member Functions inherited from ParaEngine::AssetEntity
static const string & GetAssetServerUrl ()
 get the asset server url. More...
 
static void SetAssetServerUrl (const char *pStr)
 set the asset server url. More...
 
- 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

MeshEntity distinguish one template from other.

Member Function Documentation

§ Cleanup()

void MeshEntity::Cleanup ( )
virtual

Clean up additional resources.

this function will only be called before the destructor function.

Reimplemented from ParaEngine::AssetEntity.

§ CreateMeshFromFile_Async()

HRESULT MeshEntity::CreateMeshFromFile_Async ( void *  pContext,
RenderDevicePtr  pDev = NULL,
const char *  sFileName = NULL 
)

this function is mostly used internally.

this function will return immediately. It will append the texture request to AsyncLoaders's IO queue.

Parameters
pContextthis should be a pointer to CAsyncLoader
pDevif NULL, the default render device is used
sFileNameif NULL, m_asset->GetLocalFileName() is used.

§ CreateMeshFromFile_Serial()

HRESULT MeshEntity::CreateMeshFromFile_Serial ( RenderDevicePtr  pDev = NULL,
const char *  sFileName = NULL 
)

this function is mostly used internally.

It will load the mesh from disk, unpack it and init the entity. when this function returns, the texture will be already loaded to device pool.

Parameters
pDevif NULL, the default render device is used
sFileNameif NULL, m_asset->GetLocalFileName() is used.

§ CreateMeshLODLevel()

void MeshEntity::CreateMeshLODLevel ( float  fromDepth,
const string &  sFilename 
)

Adds a new level-of-detail entry to this Mesh.

Remarks
As an alternative to generating lower level of detail versions of a mesh, you can use your own manually modeled meshes as lower level versions. This lets you have complete control over the LOD, and in addition lets you scale down other aspects of the model which cannot be done using the generated method; for example, you could use less detailed materials and / or use less bones in the skeleton if this is an animated mesh. Therefore for complex models you are likely to be better off modeling your LODs yourself and using this method, whilst for models with fairly simple materials and no animation you can just use the generateLodLevels method.
Parameters
fromDepthThe z value from which this Lod will apply.
meshNameThe name of the mesh which will be the lower level detail version.

§ GetAttributeObject()

IAttributeFields * MeshEntity::GetAttributeObject ( )
virtual

get the attribute object of this asset.

Reimplemented from ParaEngine::AssetEntity.

§ GetBoundingBox()

bool ParaEngine::MeshEntity::GetBoundingBox ( Vector3 pMin,
Vector3 pMax 
)
virtual

Get AABB bounding box of the asset object.

if the asset contains an OOB, it will return true.

Reimplemented from ParaEngine::AssetEntity.

§ GetFileName()

const string & MeshEntity::GetFileName ( )

get the mesh file name of the lowest level mesh.

§ GetLodIndexSquaredDepth()

int MeshEntity::GetLodIndexSquaredDepth ( float  squaredDepth) const

Retrieves the level of detail index for the given squared depth value.

Remarks
Internally, the LODs are stored at squared depths to avoid having to perform square roots when determining the lod. This method allows you to provide a squared length depth value to avoid having to do your own square roots.

§ GetMesh()

CParaXStaticBase * MeshEntity::GetMesh ( int  nLODIndex = 0)

get the highest level mesh if LOD is enabled.

Parameters
nLODIndexdefault to 0, where the lowest LOD level mesh is returned.

§ GetParamBlock()

CParameterBlock * MeshEntity::GetParamBlock ( bool  bCreateIfNotExist = false)
virtual

get effect parameter block with this object.

Parameters
bCreateIfNotExist

Reimplemented from ParaEngine::AssetEntity.

§ Init()

void MeshEntity::Init ( const char *  sFilename = NULL)

init the asset entity object.

Parameters
sFilenameif NULL, the key string name is used.

§ IsLoaded()

bool MeshEntity::IsLoaded ( )
virtual

most assets are loaded asynchronously.

This allows us to check if an asset is loaded. For example, we can LoadAsset() for a number of assets that need preloading. and then use a timer to check if they are initialized and remove from the uninialized list.

Reimplemented from ParaEngine::AssetEntity.

§ Refresh()

void MeshEntity::Refresh ( const char *  sFilename = NULL,
bool  bLazyLoad = false 
)
virtual

refresh this texture surface with a local file.

Parameters
sFilenameif NULL or empty the old texture file(sTextureFileName) will be used.
bLazyLoadif true it will be lazy loaded.

Reimplemented from ParaEngine::AssetEntity.

§ RemoveLodLevels()

void MeshEntity::RemoveLodLevels ( void  )

Removes all LOD data from this Mesh.

only the lowest level remains

§ UpdateManualLodLevel()

void MeshEntity::UpdateManualLodLevel ( int  index,
const string &  sFilename 
)

Changes the alternate mesh to use as a manual LOD at the given index.

Remarks
Note that the index of a LOD may change if you insert other LODs. If in doubt, use getLodIndex().
Parameters
indexThe index of the level to be changed
sFilenameThe name of the mesh which will be the lower level detail version.

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