|
| InstanceManager (IdString customName, SceneManager *sceneManager, const String &meshName, const String &groupName, InstancingTechnique instancingTechnique, uint16 instancingFlags, size_t instancesPerBatch, unsigned short subMeshIdx, bool useBoneMatrixLookup=false) |
|
virtual | ~InstanceManager () |
|
void | _addDirtyStaticBatch (InstanceBatch *dirtyBatch) |
| Called by an InstanceBatch when it requests their bounds to be updated for proper culling.
|
|
void | _addToDynamicBatchList (InstanceBatch *dynamicBatch) |
| Kees the batch in the dynamic batch list so that it gets updated every frame.
|
|
void | _removeFromDynamicBatchList (InstanceBatch *batch) |
| Called when a previously dynamic InstanceBatch went static (.
|
|
void | _updateDirtyBatches (void) |
| Called by SceneManager every frame.
|
|
void | _updateDirtyBatchesThread (size_t threadIdx) |
| Called by SceneManager every frame from multiple threads.
|
|
void | cleanupEmptyBatches (void) |
| This function can be useful to improve CPU speed after having too many instances created, which where now removed, thus freeing many batches with zero used Instanced Entities However the batches aren't automatically removed from memory until the InstanceManager is destroyed, or this function is called.
|
|
InstancedEntity * | createInstancedEntity (const String &materialName, SceneMemoryMgrTypes sceneType=SCENE_DYNAMIC) |
| Creates an InstancedEntity based on an existing InstanceManager (.
|
|
void | defragmentBatches (bool optimizeCulling) |
| After creating many entities (which turns in many batches) and then removing entities that are in the middle of these batches, there might be many batches with many free entities.
|
|
InstanceBatchIterator | getInstanceBatchIterator (const String &materialName, SceneMemoryMgrTypes sceneType) const |
| Get non-updateable iterator over instance batches for given material.
|
|
InstanceBatchMapIterator | getInstanceBatchMapIterator (void) const |
| Get non-updateable iterator over instance batches per material.
|
|
InstancingTechnique | getInstancingTechnique () const |
|
size_t | getMaxOrBestNumInstancesPerBatch (const String &materialName, size_t suggestedSize, uint16 flags) |
| Calculates the maximum (or the best amount, depending on flags) of instances per batch given the suggested size for the technique this manager was created for.
|
|
const IdString | getName () const |
|
unsigned char | getNumCustomParams () const |
|
SceneManager * | getSceneManager () const |
|
bool | getSetting (BatchSettingId id, IdString materialName) const |
| If settings for the given material didn't exist, default value is returned.
|
|
bool | hasSettings (IdString materialName) const |
| Returns true if settings were already created for the given material name.
|
|
void | operator delete (void *ptr) |
|
void | operator delete (void *ptr, const char *, int, const char *) |
|
void | operator delete (void *ptr, void *) |
|
void | operator delete[] (void *ptr) |
|
void | operator delete[] (void *ptr, const char *, int, const char *) |
|
void * | operator new (size_t sz) |
|
void * | operator new (size_t sz, const char *file, int line, const char *func) |
| operator new, with debug line info
|
|
void * | operator new (size_t sz, void *ptr) |
| placement operator new
|
|
void * | operator new[] (size_t sz) |
|
void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
| array operator new, with debug line info
|
|
void | setBatchesAsStatic (bool bStatic) |
| Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.
|
|
void | setInstancesPerBatch (size_t instancesPerBatch) |
| Raises an exception if trying to change it after creating the first InstancedEntity.
|
|
void | setMaxLookupTableInstances (size_t maxLookupTableInstances) |
| Sets the size of the lookup table for techniques supporting bone lookup table.
|
|
void | setNumCustomParams (unsigned char numCustomParams) |
| Sets the number of custom parameters per instance.
|
|
void | setSetting (BatchSettingId id, bool enabled, IdString materialName=IdString()) |
| Applies a setting for all batches using the same material_ existing ones and those that will be created in the future.
|
|
This is the main starting point for the new instancing system.
Each InstanceManager can control one technique and one mesh, but it can manage multiple materials at the same time.
- See also
- SceneManager::createInstanceManager, which creates this InstanceManager. Each one must have a unique name. It's wasteless to create two InstanceManagers with the same mesh reference, instancing technique and instances per batch count. This class takes care of managing batches automatically, so that more are created when needed, and reuse existing ones as much as possible; thus the user doesn't have to worry of managing all those low level issues.
-
InstanceBatch &
-
InstanceEntity for more information.
- Author
- Matias N. Goldberg ("dark_sylinc")
- Version
- 1.0