29 #ifndef __MovableObject_H__
30 #define __MovableObject_H__
47 class MovableObjectFactory;
300 mUpperDistance = dist;
301 mSquaredUpperDistance = mUpperDistance * mUpperDistance;
313 mMinPixelSize = pixelSize;
319 return mMinPixelSize;
501 bool extrudeVertices,
Real extrusionDist,
unsigned long flags = 0);
553 bool debugRenderables =
false) = 0;
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Defines an interface to classes which have one or more AnimableValue instances to expose.
Variant type that can hold Any other type.
A 3D box aligned with the x/y/z axes.
A viewpoint from which the scene will be rendered.
This class contains the information required to describe the edge connectivity of a given set of vert...
Shared pointer implementation used to share index buffers.
Representation of a dynamic light source in the scene.
Class encapsulating a standard 4x4 homogeneous matrix.
Interface definition for a factory class which produces a certain kind of MovableObject,...
virtual const String & getType(void) const =0
Get the type of the object to be created.
virtual ~MovableObjectFactory()
virtual MovableObject * createInstance(const String &name, SceneManager *manager, const NameValuePairList *params=0)
Create a new instance of the object.
virtual bool requestTypeFlags(void) const
Does this factory require the allocation of a 'type flag', used to selectively include / exclude this...
uint32 getTypeFlags(void) const
Gets the type flag for this factory.
uint32 mTypeFlag
Type flag, allocated if requested.
void _notifyTypeFlags(uint32 flag)
Notify this factory of the type mask to apply.
virtual void destroyInstance(MovableObject *obj)=0
Destroy an instance of the object.
virtual MovableObject * createInstanceImpl(const String &name, const NameValuePairList *params=0)=0
Internal implementation of create method - must be overridden.
Listener which gets called back on MovableObject events.
virtual void objectDestroyed(MovableObject *)
MovableObject is being destroyed.
virtual bool objectRendering(const MovableObject *, const Camera *)
Called when the movable object of the camera to be used for rendering.
virtual void objectAttached(MovableObject *)
MovableObject has been attached to a node.
virtual void objectMoved(MovableObject *)
MovableObject has been moved.
virtual void objectDetached(MovableObject *)
MovableObject has been detached from a node.
virtual const LightList * objectQueryLights(const MovableObject *)
Called when the movable object needs to query a light list.
Abstract class defining a movable object in a scene.
AxisAlignedBox mWorldDarkCapBounds
World space AABB of this object's dark cap.
bool getCastShadows(void) const
Returns whether shadow casting is enabled for this object.
static uint32 getDefaultQueryFlags()
Get the default query flags for all future MovableObject instances.
virtual void _notifyCreator(MovableObjectFactory *fact)
Notify the object of it's creator (internal use only)
virtual bool isVisible(void) const
Returns whether or not this object is supposed to be visible or not.
Listener * mListener
MovableObject listener - only one allowed (no list) for size & performance reasons....
virtual bool isInScene(void) const
Returns true if this object is attached to a SceneNode or TagPoint, and this SceneNode / TagPoint is ...
virtual void setLightMask(uint32 lightMask)
Set a bitwise mask which will filter the lights affecting this object.
virtual Real getRenderingDistance(void) const
Gets the distance at which batches are no longer rendered.
Real mUpperDistance
Upper distance to still render.
virtual ~MovableObject()
Virtual destructor - read Scott Meyers if you don't know why this is needed.
virtual void addQueryFlags(uint32 flags)
As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this ob...
MovableObject()
Constructor.
bool mBeyondFarDistance
Hidden because of distance?
bool mRenderQueueIDSet
Flags whether the RenderQueue's default should be used.
virtual Real getRenderingMinPixelSize() const
Returns the minimum pixel size an object needs to be in both screen axes in order to be rendered.
static uint32 msDefaultVisibilityFlags
Default visibility flags.
LightList mLightList
List of lights for this object.
Real mSquaredUpperDistance
Sphere mWorldBoundingSphere
virtual void setDebugDisplayEnabled(bool enabled)
Sets whether or not the debug display of this object is enabled.
virtual uint32 getTypeFlags(void) const
Get the 'type flags' for this MovableObject.
virtual const Matrix4 & _getParentNodeFullTransform(void) const
return the full transformation of the parent sceneNode or the attachingPoint node
static uint32 getDefaultVisibilityFlags()
Get the default visibility flags for all future MovableObject instances.
virtual const LightList & queryLights(void) const
Gets a list of lights, ordered relative to how close they are to this movable object.
virtual bool isAttached(void) const
Returns true if this object is attached to a SceneNode or TagPoint.
virtual void setRenderingDistance(Real dist)
Sets the distance at which the object is no longer rendered.
virtual void setRenderQueueGroupAndPriority(uint8 queueID, ushort priority)
Sets the render queue group and group priority this entity will be rendered through.
uint32 mLightMask
the light mask defined for this movable. This will be taken into consideration when deciding which li...
String mName
Name of this object.
MovableObject(const String &name)
Named constructor.
virtual MovableObjectFactory * _getCreator(void) const
Get the creator of this object, if any (internal use only)
virtual const AxisAlignedBox & getBoundingBox(void) const =0
Retrieves the local axis-aligned bounding box for this object.
virtual void visitRenderables(Renderable::Visitor *visitor, bool debugRenderables=false)=0
Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject ...
SceneManager * mManager
SceneManager holding this object (if applicable)
EdgeData * getEdgeList(void)
Define a default implementation of method from ShadowCaster which implements no shadows.
virtual uint32 getVisibilityFlags(void) const
Returns the visibility flags relevant for this object.
const UserObjectBindings & getUserObjectBindings() const
Return an instance of user objects binding associated with this class.
AxisAlignedBox mWorldAABB
Cached world AABB of this object.
virtual SceneManager * _getManager(void) const
Get the manager of this object, if any (internal use only)
uint32 mVisibilityFlags
Flags determining whether this object is visible (compared to SceneManager mask)
virtual SceneNode * getParentSceneNode(void) const
Returns the scene node to which this object is attached.
virtual const String & getMovableType(void) const =0
Returns the type name of this object.
virtual Listener * getListener(void) const
Gets the current listener for this object.
virtual uint32 getLightMask() const
Get a bitwise mask which will filter the lights affecting this object.
Real getPointExtrusionDistance(const Light *l) const
Get the distance to extrude for a point/spot light.
MovableObjectFactory * mCreator
Creator of this object (if created by a factory)
virtual void setVisible(bool visible)
Tells this object whether to be visible or not, if it has a renderable component.
virtual uint8 getRenderQueueGroup(void) const
Gets the queue group for this entity, see setRenderQueueGroup for full details.
virtual void removeQueryFlags(uint32 flags)
As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this o...
bool mVisible
Is this object visible?
bool getReceivesShadows()
Returns whether the Material of any Renderable that this MovableObject will add to the render queue w...
virtual uint32 getQueryFlags(void) const
Returns the query flags relevant for this object.
virtual void setVisibilityFlags(uint32 flags)
Sets the visibility flags for this object.
Node * mParentNode
node to which this object is attached
virtual void setRenderingMinPixelSize(Real pixelSize)
Sets the minimum pixel size an object needs to be in both screen axes in order to be rendered.
virtual void setListener(Listener *listener)
Sets a listener for this object.
virtual void setQueryFlags(uint32 flags)
Sets the query flags for this object.
ushort mRenderQueuePriority
The render queue group to use when rendering this object.
uint8 mRenderQueueID
The render queue to use when rendering this object.
virtual void _notifyCurrentCamera(Camera *cam)
Internal method to notify the object of the camera to be used for the next rendering operation.
UserObjectBindings & getUserObjectBindings()
Return an instance of user objects binding associated with this class.
virtual void detachFromParent(void)
Detaches an object from a parent SceneNode or TagPoint, if attached.
virtual bool getVisible(void) const
Gets this object whether to be visible or not, if it has a renderable component.
ShadowRenderableListIterator getShadowVolumeRenderableIterator(ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, size_t *indexBufferUsedSize, bool extrudeVertices, Real extrusionDist, unsigned long flags=0)
Define a default implementation of method from ShadowCaster which implements no shadows.
virtual void removeVisibilityFlags(uint32 flags)
As setVisibilityFlags, except the flags passed as parameters are removed from the existing flags on t...
bool hasEdgeList(void)
Define a default implementation of method from ShadowCaster which implements no shadows.
virtual Node * getParentNode(void) const
Returns the node to which this object is attached.
static void setDefaultVisibilityFlags(uint32 flags)
Set the default visibility flags for all future MovableObject instances.
bool mDebugDisplay
Is debug display enabled?
virtual void setRenderQueueGroup(uint8 queueID)
Sets the render queue group this entity will be rendered through.
virtual void _updateRenderQueue(RenderQueue *queue)=0
Internal method by which the movable object must add Renderable subclass instances to the rendering q...
bool mRenderQueuePrioritySet
Flags whether the RenderQueue's default should be used.
void setCastShadows(bool enabled)
Sets whether or not this object will cast shadows.
virtual const Sphere & getWorldBoundingSphere(bool derive=false) const
Retrieves the worldspace bounding sphere for this object.
bool mRenderingDisabled
Does rendering this object disabled by listener?
bool mCastShadows
Does this object cast shadows?
virtual const String & getName(void) const
Returns the name of this object.
virtual OGRE_DEPRECATED const Any & getUserAny(void) const
static void setDefaultQueryFlags(uint32 flags)
Set the default query flags for all future MovableObject instances.
virtual bool isParentTagPoint() const
Gets whether the parent node is a TagPoint (or a SceneNode)
static uint32 msDefaultQueryFlags
Default query flags.
uint32 mQueryFlags
Flags determining whether this object is included / excluded from scene queries.
virtual LightList * _getLightList()
Returns a pointer to the current list of lights for this object.
const AxisAlignedBox & getLightCapBounds(void) const
Overridden member from ShadowCaster.
virtual void addVisibilityFlags(uint32 flags)
As setVisibilityFlags, except the flags passed as parameters are appended to the existing flags on th...
virtual const AxisAlignedBox & getWorldBoundingBox(bool derive=false) const
Retrieves the axis-aligned bounding box for this object in world coordinates.
virtual void _notifyMoved(void)
Internal method called to notify the object that it has been moved.
virtual OGRE_DEPRECATED void setUserAny(const Any &anything)
const AxisAlignedBox & getDarkCapBounds(const Light &light, Real dirLightExtrusionDist) const
Overridden member from ShadowCaster.
virtual void _notifyAttached(Node *parent, bool isTagPoint=false)
Internal method called to notify the object that it has been attached to a node.
virtual Real getBoundingRadius(void) const =0
Retrieves the radius of the origin-centered bounding sphere for this object.
UserObjectBindings mUserObjectBindings
User objects binding.
ulong mLightListUpdated
The last frame that this light list was updated in.
virtual void _notifyManager(SceneManager *man)
Notify the object of it's manager (internal use only)
virtual bool isDebugDisplayEnabled(void) const
Gets whether debug display of this object is enabled.
Class representing a general-purpose node an articulated scene graph.
Class to manage the scene object rendering queue.
Visitor object that can be used to iterate over a collection of Renderable instances abstractly.
Manages the organisation and rendering of a 'scene' i.e.
Class representing a node in the scene graph.
This class defines the interface that must be implemented by shadow casters.
A sphere primitive, mostly used for bounds checking.
Class that provides convenient interface to establish a linkage between custom user application objec...
Concrete IteratorWrapper for nonconst access to the underlying container.
ShadowTechnique
An enumeration of broad shadow techniques.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
float Real
Software floating point type.