OGRE  14.2
Object-Oriented Graphics Rendering Engine
Ogre::InstancedEntity Class Reference

#include <OgreInstancedEntity.h>

+ Inheritance diagram for Ogre::InstancedEntity:

Public Member Functions

 InstancedEntity (InstanceBatch *batchOwner, uint32 instanceID, InstancedEntity *sharedTransformEntity=NULL)
 
virtual ~InstancedEntity ()
 
const Vector3_getDerivedPosition () const
 Returns the derived position of the instanced entity including local transform. More...
 
InstanceBatch_getOwner () const
 
const Affine3_getParentNodeFullTransform (void) const override
 Returns the world transform of the instanced entity including local transform. More...
 
void _notifyAttached (Node *parent, bool isTagPoint=false) override
 Internal method called to notify the object that it has been attached to a node. More...
 
void _notifyMoved (void) override
 Overridden so we can tell the InstanceBatch it needs to update it's bounds. More...
 
virtual bool _updateAnimation (void)
 Called by InstanceBatch in his _updateRenderQueue to tell us we need to calculate our bone matrices. More...
 
void _updateRenderQueue (RenderQueue *queue) override
 Do nothing, InstanceBatch takes care of this. More...
 
AnimationStateSetgetAllAnimationStates (void) const
 
AnimationStategetAnimationState (const String &name) const
 
const AxisAlignedBoxgetBoundingBox (void) const override
 Retrieves the local axis-aligned bounding box for this object. More...
 
Real getBoundingRadius (void) const override
 Retrieves the radius of the origin-centered bounding sphere for this object. More...
 
const Vector4fgetCustomParam (unsigned char idx)
 
Real getMaxScaleCoef () const
 Returns the maximum derived scale coefficient among the xyz values. More...
 
const StringgetMovableType (void) const override
 Returns the type name of this object. More...
 
const QuaterniongetOrientation () const
 Retrieve the orientation. More...
 
const Vector3getPosition () const
 Retrieve the position. More...
 
const Vector3getScale () const
 Retrieve the local scale. More...
 
SkeletonInstancegetSkeleton (void) const
 
Real getSquaredViewDepth (const Camera *cam) const
 This is used by our batch owner to get the closest entity's depth, returns infinity when not attached to a scene node. More...
 
bool hasSkeleton (void) const
 
bool isInScene (void) const override
 Returns true if this object is attached to a SceneNode or TagPoint, and this SceneNode / TagPoint is currently in an active part of the scene graph. More...
 
bool isInUse () const
 Tells if the entity is in use. More...
 
void setCustomParam (unsigned char idx, const Vector4f &newParam)
 Sets the custom parameter for this instance. More...
 
void setInUse (bool used)
 Sets whether the entity is in use. More...
 
void setOrientation (const Quaternion &orientation, bool doUpdate=true)
 Set the orientation or the offset from the parent node if a parent node exists. More...
 
void setPosition (const Vector3 &position, bool doUpdate=true)
 Set the position or the offset from the parent node if a parent node exists. More...
 
void setScale (const Vector3 &scale, bool doUpdate=true)
 Set the scale or the offset from the parent node if a parent node exists
More...
 
void setTransformLookupNumber (uint16 num)
 Sets the transformation look up number. More...
 
bool shareTransformWith (InstancedEntity *slave)
 Shares the entire transformation with another InstancedEntity. More...
 
void stopSharingTransform ()
 
void updateTransforms ()
 Update the world transform and derived values. More...
 
void visitRenderables (Renderable::Visitor *visitor, bool debugRenderables=false) override
 Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any. More...
 
- Public Member Functions inherited from Ogre::MovableObject
 MovableObject ()
 Constructor. More...
 
 MovableObject (const String &name)
 Named constructor. More...
 
virtual ~MovableObject ()
 Virtual destructor - read Scott Meyers if you don't know why this is needed. More...
 
MovableObjectFactory_getCreator (void) const
 Get the creator of this object, if any (internal use only) More...
 
LightList_getLightList ()
 Returns a pointer to the current list of lights for this object. More...
 
SceneManager_getManager (void) const
 Get the manager of this object, if any (internal use only) More...
 
virtual void _notifyCreator (MovableObjectFactory *fact)
 Notify the object of it's creator (internal use only) More...
 
virtual void _notifyCurrentCamera (Camera *cam)
 Internal method to notify the object of the camera to be used for the next rendering operation. More...
 
virtual void _notifyManager (SceneManager *man)
 Notify the object of it's manager (internal use only) More...
 
virtual void _releaseManualHardwareResources ()
 Notifies the movable object that hardware resources were lost. More...
 
virtual void _restoreManualHardwareResources ()
 Notifies the movable object that hardware resources should be restored. More...
 
void addQueryFlags (uint32 flags)
 As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object. More...
 
void addVisibilityFlags (uint32 flags)
 As setVisibilityFlags, except the flags passed as parameters are appended to the existing flags on this object. More...
 
void detachFromParent (void)
 Detaches an object from a parent SceneNode or TagPoint, if attached. More...
 
Real getBoundingRadiusScaled () const
 as getBoundingRadius, but with scaling applied More...
 
bool getCastShadows (void) const override
 Returns whether shadow casting is enabled for this object. More...
 
const AxisAlignedBoxgetDarkCapBounds (const Light &light, Real dirLightExtrusionDist) const override
 Gets the world space bounding box of the dark cap, as extruded using the light provided. More...
 
EdgeDatagetEdgeList (void) override
 Returns details of the edges which might be used to determine a silhouette. More...
 
const AxisAlignedBoxgetLightCapBounds (void) const override
 Gets the world space bounding box of the light cap. More...
 
uint32 getLightMask () const
 Get a bitwise mask which will filter the lights affecting this object. More...
 
ListenergetListener (void) const
 Gets the current listener for this object. More...
 
const StringgetName (void) const
 Returns the name of this object. More...
 
NodegetParentNode (void) const
 Returns the node to which this object is attached. More...
 
SceneNodegetParentSceneNode (void) const
 Returns the scene node to which this object is attached. More...
 
Real getPointExtrusionDistance (const Light *l) const override
 Get the distance to extrude for a point/spot light. More...
 
virtual uint32 getQueryFlags (void) const
 Returns the query flags relevant for this object. More...
 
bool getReceivesShadows ()
 Returns whether the Material of any Renderable that this MovableObject will add to the render queue will receive shadows. More...
 
Real getRenderingDistance (void) const
 Gets the distance at which batches are no longer rendered. More...
 
Real getRenderingMinPixelSize () const
 Returns the minimum pixel size an object needs to be in both screen axes in order to be rendered. More...
 
uint8 getRenderQueueGroup (void) const
 Gets the queue group for this entity. More...
 
const ShadowRenderableListgetShadowVolumeRenderableList (const Light *light, const HardwareIndexBufferPtr &indexBuffer, size_t &indexBufferUsedSize, float extrusionDist, int flags=0) override
 Define a default implementation of method from ShadowCaster which implements no shadows. More...
 
virtual uint32 getTypeFlags (void) const
 Get the 'type flags' for this MovableObject. More...
 
const AnygetUserAny (void) const
 
UserObjectBindingsgetUserObjectBindings ()
 Class that provides convenient interface to establish a linkage between custom user application objects and Ogre core classes. More...
 
const UserObjectBindingsgetUserObjectBindings () const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
virtual uint32 getVisibilityFlags (void) const
 Returns the visibility flags relevant for this object. More...
 
bool getVisible (void) const
 Gets this object whether to be visible or not, if it has a renderable component. More...
 
const AxisAlignedBoxgetWorldBoundingBox (bool derive=false) const override
 Retrieves the axis-aligned bounding box for this object in world coordinates. More...
 
virtual const SpheregetWorldBoundingSphere (bool derive=false) const
 Retrieves the worldspace bounding sphere for this object. More...
 
bool isAttached (void) const
 Returns true if this object is attached to a SceneNode or TagPoint. More...
 
bool isDebugDisplayEnabled (void) const
 Gets whether debug display of this object is enabled. More...
 
bool isParentTagPoint () const
 Gets whether the parent node is a TagPoint (or a SceneNode) More...
 
virtual bool isVisible (void) const
 Returns whether or not this object is supposed to be visible or not. More...
 
const LightListqueryLights (void) const
 Gets a list of lights, ordered relative to how close they are to this movable object. More...
 
void removeQueryFlags (uint32 flags)
 As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object. More...
 
void removeVisibilityFlags (uint32 flags)
 As setVisibilityFlags, except the flags passed as parameters are removed from the existing flags on this object. More...
 
void setCastShadows (bool enabled)
 Sets whether or not this object will cast shadows. More...
 
void setDebugDisplayEnabled (bool enabled)
 Sets whether or not the debug display of this object is enabled. More...
 
void setLightMask (uint32 lightMask)
 Set a bitwise mask which will filter the lights affecting this object. More...
 
void setListener (Listener *listener)
 Sets a listener for this object. More...
 
void setQueryFlags (uint32 flags)
 Sets the query flags for this object. More...
 
void setRenderingDistance (Real dist)
 Sets the distance at which the object is no longer rendered. More...
 
void setRenderingMinPixelSize (Real pixelSize)
 Sets the minimum pixel size an object needs to be in both screen axes in order to be rendered. More...
 
virtual void setRenderQueueGroup (uint8 queueID)
 Sets the render queue group this entity will be rendered through. More...
 
virtual void setRenderQueueGroupAndPriority (uint8 queueID, ushort priority)
 Sets the render queue group and group priority this entity will be rendered through. More...
 
void setUserAny (const Any &anything)
 
void setVisibilityFlags (uint32 flags)
 Sets the visibility flags for this object. More...
 
void setVisible (bool visible)
 Tells this object whether to be visible or not, if it has a renderable component. More...
 
- Public Member Functions inherited from Ogre::ShadowCaster
virtual ~ShadowCaster ()
 
bool hasEdgeList ()
 Returns whether the object has a valid edge list. More...
 
- Public Member Functions inherited from Ogre::AnimableObject
 AnimableObject ()
 
virtual ~AnimableObject ()
 
virtual AnimableValuePtr createAnimableValue (const String &valueName)
 Create a reference-counted AnimableValuePtr for the named value. More...
 
virtual const StringVectorgetAnimableValueNames (void) const
 Gets a list of animable value names for this object. More...
 

Additional Inherited Members

- Public Types inherited from Ogre::ShadowCaster
typedef Ogre::ShadowRenderableList ShadowRenderableList
 
typedef VectorIterator< ShadowRenderableListShadowRenderableListIterator
 
- Static Public Member Functions inherited from Ogre::MovableObject
static uint32 getDefaultQueryFlags ()
 Get the default query flags for all future MovableObject instances. More...
 
static uint32 getDefaultVisibilityFlags ()
 Get the default visibility flags for all future MovableObject instances. More...
 
static void setDefaultQueryFlags (uint32 flags)
 Set the default query flags for all future MovableObject instances. More...
 
static void setDefaultVisibilityFlags (uint32 flags)
 Set the default visibility flags for all future MovableObject instances. More...
 
- Static Public Member Functions inherited from Ogre::ShadowCaster
static void clearShadowRenderableList (ShadowRenderableList &shadowRenderables)
 Common implementation of releasing shadow renderables. More...
 
static void extrudeVertices (const HardwareVertexBufferSharedPtr &vertexBuffer, size_t originalVertexCount, const Vector4 &lightPos, Real extrudeDist)
 Utility method for extruding vertices based on a light. More...
 

Detailed Description

See also
InstanceBatch to understand how instancing works.

Instanced entities work in a very similar way as how an Entity works, as this interface tries to mimic it as most as possible to make the transition between Entity and InstancedEntity as straightforward and simple as possible. There are a couple inherent limitations, for example setRenderQueueGroup only works on the InstanceBatch level, not the individual instance. This limits Z sorting for alpha blending quite significantly An InstancedEntity won't appear in scene until a SceneNode is attached to them. Once the InstancedEntity is no longer needed, call InstanceBatch::removeInstancedEntity to put them back into a queue so the batch can return it back again when a new instance is requested.

Internally, instanced entities that are not visible (i.e. by setting setVisible(false) or when they don't have a SceneNode attached to them) a Zero world matrix is sent to the vertex shader which in turn causes a zero area triangle. This obviously means no Vertex shader benefit, but saves a bit of pixel shader processing power. Also this means this object won't be considered when sizing the InstanceBatch's bounding box.
Each instance has an instance ID unique within the batch, which matches the ID sent to the vertex shader by some techniques (like InstanceBatchShader).
Differences between Entity and InstancedEntity: Setting RenderQueueGroup and other Renderable stuff works at InstanceBatch level, not InstancedEntity. This is obviously a limitation from instancing in general, not this particular implementation
Design discussion webpage
Author
Matias N. Goldberg ("dark_sylinc")
Version
1.0

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