28 #ifndef __InstanceBatch_H__
29 #define __InstanceBatch_H__
143 virtual void setupVertices(
const SubMesh* baseSubMesh ) = 0;
144 virtual void setupIndices(
const SubMesh* baseSubMesh ) = 0;
145 virtual void createAllInstancedEntities(
void);
146 virtual void deleteAllInstancedEntities(
void);
147 virtual void deleteUnusedInstancedEntities(
void);
155 void makeMatrixCameraRelative3x4(
float *mat3x4,
size_t numFloats );
158 virtual bool checkSubMeshCompatibility(
const SubMesh* baseSubMesh );
160 void updateVisibility(
void);
175 const String &batchName );
182 void _setInstancesPerBatch(
size_t instancesPerBatch );
195 void _updateBounds(
void);
207 virtual size_t calculateMaxNumInstances(
const SubMesh *baseSubMesh,
uint16 flags )
const = 0;
247 bool isBatchUnused(
void)
const {
return mUnusedEntities.size() == mInstancedEntities.size(); }
252 void getInstancedEntitiesInUse( InstancedEntityVec &outEntities, CustomParamsVec &outParams );
267 void _defragmentBatch(
bool optimizeCulling, InstancedEntityVec &usedEntities,
268 CustomParamsVec &usedParams );
275 void _defragmentBatchDiscard(
void);
280 virtual void _boundsDirty(
void);
338 Real getSquaredViewDepth(
const Camera* cam )
const;
340 const LightList& getLights(
void )
const;
345 const String& getMovableType(
void)
const;
347 void _notifyCurrentCamera(
Camera* cam );
351 Real getBoundingRadius(
void)
const;
353 virtual void _updateRenderQueue(
RenderQueue* queue);
364 #endif // __InstanceBatch_H__