My Project
|
for filling chunk vertex in a different thread. More...
#include <ChunkVertexBuilderManager.h>
Public Member Functions | |
ATTRIBUTE_DEFINE_CLASS (ChunkVertexBuilderManager) | |
virtual int | InstallFields (CAttributeClass *pClass, bool bOverride) |
this class should be implemented if one wants to add new attribute. More... | |
ATTRIBUTE_METHOD1 (ChunkVertexBuilderManager, GetMaxChunksToUploadPerTick_s, int *) | |
ATTRIBUTE_METHOD1 (ChunkVertexBuilderManager, SetMaxChunksToUploadPerTick_s, int) | |
ATTRIBUTE_METHOD1 (ChunkVertexBuilderManager, GetMaxBytesToUploadPerTick_s, int *) | |
ATTRIBUTE_METHOD1 (ChunkVertexBuilderManager, SetMaxBytesToUploadPerTick_s, int) | |
ATTRIBUTE_METHOD1 (ChunkVertexBuilderManager, GetPendingChunksCount_s, int *) | |
bool | AddChunk (RenderableChunk *pChunk) |
only return true, if chunk is added. More... | |
void | RemovePendingChunks (std::set< RenderableChunk *> *pExcludeList) |
remove all pending chunks except for those in exclude list. More... | |
int | ProcessOneChunk (Scoped_ReadLock< BlockReadWriteLock > &ReadWriteLock_) |
call this function in worker thread every tick to process some chunks. More... | |
void | UploadPendingChunksToDevice () |
this function should be called from the render thread to upload all pending chunks. More... | |
void | Cleanup () |
int | GetPendingChunksCount () |
void | StartChunkBuildThread (CBlockWorld *pBlockWorld) |
int | GetMaxChunksToUploadPerTick () const |
void | SetMaxChunksToUploadPerTick (int val) |
int | GetMaxBytesToUploadPerTick () const |
void | SetMaxBytesToUploadPerTick (int val) |
![]() | |
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 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... | |
Static Public Member Functions | |
static ChunkVertexBuilderManager & | GetInstance () |
![]() | |
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 | ChunkBuildThreadProc () |
![]() | |
virtual CAttributeClass * | CreateAttributeClass () |
initialize fields | |
virtual CDynamicAttributesSet * | GetDynamicAttributes (bool bCreateIfNotExist=false) |
Protected Attributes | |
std::vector< RenderableChunk * > | m_pendingChunks |
std::vector< RenderableChunk * > | m_pendingUploadChunks |
std::mutex | m_mutex |
std::mutex | m_queueMutex |
std::thread | m_chunk_build_thread |
std::condition_variable | m_chunk_request_signal |
bool | m_bChunkThreadStarted |
CBlockWorld * | m_pBlockWorld |
int | m_nMaxPendingChunks |
int | m_nMaxUploadingChunks |
int | m_nMaxChunksToUploadPerTick |
int | m_nMaxBytesToUploadPerTick |
![]() | |
WeakPtr_type | m_weak_reference |
![]() | |
int | m_refcount |
Friends | |
class | CBlockWorld |
class | BlockWorldClient |
Additional Inherited Members | |
![]() | |
typedef ParaEngine::weak_ptr< IObject, IAttributeFields > | WeakPtr_type |
![]() | |
typedef ParaEngine::weak_ptr< IObject > | WeakPtr_type |
for filling chunk vertex in a different thread.
this is usually the lighting thread.
bool ParaEngine::ChunkVertexBuilderManager::AddChunk | ( | RenderableChunk * | pChunk | ) |
only return true, if chunk is added.
it will return false, if max pending chunk is reached.
|
virtual |
this class should be implemented if one wants to add new attribute.
This function is always called internally.
Reimplemented from ParaEngine::IAttributeFields.
int ParaEngine::ChunkVertexBuilderManager::ProcessOneChunk | ( | Scoped_ReadLock< BlockReadWriteLock > & | ReadWriteLock_ | ) |
call this function in worker thread every tick to process some chunks.
void ParaEngine::ChunkVertexBuilderManager::RemovePendingChunks | ( | std::set< RenderableChunk *> * | pExcludeList | ) |
remove all pending chunks except for those in exclude list.
usually called form the main render thread.
void ParaEngine::ChunkVertexBuilderManager::UploadPendingChunksToDevice | ( | ) |
this function should be called from the render thread to upload all pending chunks.