Ogre::MovablePlane Class Reference

Definition of a Plane that may be attached to a node, and the derived details of it retrieved simply. More...

#include <OgreMovablePlane.h>

Inheritance diagram for Ogre::MovablePlane:

Inheritance graph
[legend]

List of all members.

Public Types

enum  Side { NO_SIDE, POSITIVE_SIDE, NEGATIVE_SIDE, BOTH_SIDE }
 The "positive side" of the plane is the half space to which the plane normal points. More...
typedef std::vector
< ShadowRenderable * > 
ShadowRenderableList
typedef
VectorIterator
< ShadowRenderableList
ShadowRenderableListIterator

Public Member Functions

 MovablePlane (const String &name)
 MovablePlane (const Plane &rhs)
 MovablePlane (const Vector3 &rkNormal, Real fConstant)
 Construct a plane through a normal, and a distance to move the plane along the normal.
 MovablePlane (const Vector3 &rkNormal, const Vector3 &rkPoint)
 MovablePlane (const Vector3 &rkPoint0, const Vector3 &rkPoint1, const Vector3 &rkPoint2)
 ~MovablePlane ()
void _notifyCurrentCamera (Camera *)
 Overridden from MovableObject.
const AxisAlignedBoxgetBoundingBox (void) const
 Overridden from MovableObject.
Real getBoundingRadius (void) const
 Overridden from MovableObject.
void _updateRenderQueue (RenderQueue *)
 Overridden from MovableObject.
const StringgetMovableType (void) const
 Overridden from MovableObject.
const Plane_getDerivedPlane (void) const
 Get the derived plane as transformed by its parent node.
void visitRenderables (Renderable::Visitor *visitor, bool debugRenderables=false)
 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.

Parameters:
visitor Pointer to a class implementing the Renderable::Visitor interface which will be called back for each Renderable which will be queued. Bear in mind that the state of the Renderable instances may not be finalised depending on when you call this.
debugRenderables If false, only regular renderables will be visited (those for normal display). If true, debug renderables will be included too.

Side getSide (const Vector3 &rkPoint) const
Side getSide (const AxisAlignedBox &rkBox) const
 returns the side where the aligneBox is.
Side getSide (const Vector3 &centre, const Vector3 &halfSize) const
 Returns which side of the plane that the given box lies on.
Real getDistance (const Vector3 &rkPoint) const
 This is a pseudodistance.
void redefine (const Vector3 &rkPoint0, const Vector3 &rkPoint1, const Vector3 &rkPoint2)
 Redefine this plane based on 3 points.
void redefine (const Vector3 &rkNormal, const Vector3 &rkPoint)
 Redefine this plane based on a normal and a point.
Vector3 projectVector (const Vector3 &v) const
 Project a vector onto the plane.
Real normalise (void)
 Normalises the plane.
bool operator== (const Plane &rhs) const
 Comparison operator.
bool operator!= (const Plane &rhs) const
virtual void _notifyCreator (MovableObjectFactory *fact)
 Notify the object of it's creator (internal use only).
virtual
MovableObjectFactory
_getCreator (void) const
 Get the creator of this object, if any (internal use only).
virtual void _notifyManager (SceneManager *man)
 Notify the object of it's manager (internal use only).
virtual SceneManager_getManager (void) const
 Get the manager of this object, if any (internal use only).
virtual const StringgetName (void) const
 Returns the name of this object.
virtual NodegetParentNode (void) const
 Returns the node to which this object is attached.
virtual SceneNodegetParentSceneNode (void) const
 Returns the scene node to which this object is attached.
virtual void _notifyAttached (Node *parent, bool isTagPoint=false)
 Internal method called to notify the object that it has been attached to a node.
virtual bool isAttached (void) const
 Returns true if this object is attached to a SceneNode or TagPoint.
virtual void detatchFromParent (void)
 Detaches an object from a parent SceneNode or TagPoint, if attached.
virtual bool isInScene (void) const
 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.
virtual void _notifyMoved (void)
 Internal method called to notify the object that it has been moved.
virtual const
AxisAlignedBox
getWorldBoundingBox (bool derive=false) const
 Retrieves the axis-aligned bounding box for this object in world coordinates.
virtual const SpheregetWorldBoundingSphere (bool derive=false) const
 Retrieves the worldspace bounding sphere for this object.
virtual void setVisible (bool visible)
 Tells this object whether to be visible or not, if it has a renderable component.
virtual bool getVisible (void) const
 Gets this object whether to be visible or not, if it has a renderable component.
virtual bool isVisible (void) const
 Returns whether or not this object is supposed to be visible or not.
virtual void setRenderingDistance (Real dist)
 Sets the distance at which the object is no longer rendered.
virtual Real getRenderingDistance (void) const
 Gets the distance at which batches are no longer rendered.
virtual void setUserObject (UserDefinedObject *obj)
 Call this to associate your own custom user object instance with this MovableObject.
virtual
UserDefinedObject
getUserObject (void)
 Retrieves a pointer to a custom application object associated with this movable by an earlier call to setUserObject.
virtual void setUserAny (const Any &anything)
 Sets any kind of user value on this object.
virtual const AnygetUserAny (void) const
 Retrieves the custom user value associated with this object.
virtual void setRenderQueueGroup (uint8 queueID)
 Sets the render queue group this entity will be rendered through.
virtual uint8 getRenderQueueGroup (void) const
 Gets the queue group for this entity, see setRenderQueueGroup for full details.
virtual const Matrix4_getParentNodeFullTransform (void) const
 return the full transformation of the parent sceneNode or the attachingPoint node
virtual void setQueryFlags (uint32 flags)
 Sets the query flags for this object.
virtual void addQueryFlags (uint32 flags)
 As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object.
virtual void removeQueryFlags (unsigned long flags)
 As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object.
virtual uint32 getQueryFlags (void) const
 Returns the query flags relevant for this object.
virtual void setVisibilityFlags (uint32 flags)
 Sets the visiblity flags for this object.
virtual void addVisibilityFlags (uint32 flags)
 As setVisibilityFlags, except the flags passed as parameters are appended to the existing flags on this object.
virtual void removeVisibilityFlags (uint32 flags)
 As setVisibilityFlags, except the flags passed as parameters are removed from the existing flags on this object.
virtual uint32 getVisibilityFlags (void) const
 Returns the visibility flags relevant for this object.
virtual void setListener (Listener *listener)
 Sets a listener for this object.
virtual Listener * getListener (void) const
 Gets the current listener for this object.
virtual const LightListqueryLights (void) const
 Gets a list of lights, ordered relative to how close they are to this movable object.
virtual LightList_getLightList ()
 Returns a pointer to the current list of lights for this object.
EdgeDatagetEdgeList (void)
 Define a default implementation of method from ShadowCaster which implements no shadows.
bool hasEdgeList (void)
 Define a default implementation of method from ShadowCaster which implements no shadows.
ShadowRenderableListIterator getShadowVolumeRenderableIterator (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, bool extrudeVertices, Real extrusionDist, unsigned long flags=0)
 Define a default implementation of method from ShadowCaster which implements no shadows.
const AxisAlignedBoxgetLightCapBounds (void) const
 Overridden member from ShadowCaster.
const AxisAlignedBoxgetDarkCapBounds (const Light &light, Real dirLightExtrusionDist) const
 Overridden member from ShadowCaster.
void setCastShadows (bool enabled)
 Sets whether or not this object will cast shadows.
bool getCastShadows (void) const
 Returns whether shadow casting is enabled for this object.
Real getPointExtrusionDistance (const Light *l) const
 Get the distance to extrude for a point/spot light.
virtual uint32 getTypeFlags (void) const
 Get the 'type flags' for this MovableObject.
virtual void setDebugDisplayEnabled (bool enabled)
 Sets whether or not the debug display of this object is enabled.
virtual bool isDebugDisplayEnabled (void) const
 Gets whether debug display of this object is enabled.
const StringVectorgetAnimableValueNames (void) const
 Gets a list of animable value names for this object.
virtual AnimableValuePtr createAnimableValue (const String &valueName)
 Create a reference-counted AnimableValuePtr for the named value.
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 * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)
void operator delete (void *ptr)
void operator delete (void *ptr, const char *, int, const char *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, const char *, int, const char *)

Static Public Member Functions

static void setDefaultQueryFlags (uint32 flags)
 Set the default query flags for all future MovableObject instances.
static uint32 getDefaultQueryFlags ()
 Get the default query flags for all future MovableObject instances.
static void setDefaultVisibilityFlags (uint32 flags)
 Set the default visibility flags for all future MovableObject instances.
static uint32 getDefaultVisibilityFlags ()
 Get the default visibility flags for all future MovableObject instances.
static void extrudeVertices (const HardwareVertexBufferSharedPtr &vertexBuffer, size_t originalVertexCount, const Vector4 &lightPos, Real extrudeDist)
 Utility method for extruding vertices based on a light.

Public Attributes

Vector3 normal
Real d

Protected Types

typedef std::map
< String,
StringVector
AnimableDictionaryMap

Protected Member Functions

Real getExtrusionDistance (const Vector3 &objectPos, const Light *light) const
 Helper method for calculating extrusion distance.
virtual void updateEdgeListLightFacing (EdgeData *edgeData, const Vector4 &lightPos)
 Tells the caster to perform the tasks necessary to update the edge data's light listing.
virtual void generateShadowVolume (EdgeData *edgeData, const HardwareIndexBufferSharedPtr &indexBuffer, const Light *light, ShadowRenderableList &shadowRenderables, unsigned long flags)
 Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it.
virtual void extrudeBounds (AxisAlignedBox &box, const Vector4 &lightPos, Real extrudeDist) const
 Utility method for extruding a bounding box.
virtual const StringgetAnimableDictionaryName (void) const
 Get the name of the animable dictionary for this class.
void createAnimableDictionary (void) const
 Internal method for creating a dictionary of animable value names for the class, if it does not already exist.
StringVector_getAnimableValueNames (void)
 Get an updateable reference to animable value list.
virtual void initialiseAnimableDictionary (StringVector &) const
 Internal method for initialising dictionary; should be implemented by subclasses wanting to expose animable parameters.

Protected Attributes

Plane mDerivedPlane
Vector3 mLastTranslate
Quaternion mLastRotate
AxisAlignedBox mNullBB
bool mDirty
String mName
 Name of this object.
MovableObjectFactorymCreator
 Creator of this object (if created by a factory).
SceneManagermManager
 SceneManager holding this object (if applicable).
NodemParentNode
 node to which this object is attached
bool mParentIsTagPoint
bool mVisible
 Is this object visible?
bool mDebugDisplay
 Is debug display enabled?
Real mUpperDistance
 Upper distance to still render.
Real mSquaredUpperDistance
bool mBeyondFarDistance
 Hidden because of distance?
Any mUserAny
 User defined link to another object / value / whatever.
uint8 mRenderQueueID
 The render queue to use when rendering this object.
bool mRenderQueueIDSet
 Flags whether the RenderQueue's default should be used.
uint32 mQueryFlags
 Flags determining whether this object is included / excluded from scene queries.
uint32 mVisibilityFlags
 Flags determining whether this object is visible (compared to SceneManager mask).
AxisAlignedBox mWorldAABB
 Cached world AABB of this object.
Sphere mWorldBoundingSphere
AxisAlignedBox mWorldDarkCapBounds
 World space AABB of this object's dark cap.
bool mCastShadows
 Does this object cast shadows?
bool mRenderingDisabled
 Does rendering this object disabled by listener?
Listener * mListener
 MovableObject listener - only one allowed (no list) for size & performance reasons. */.
LightList mLightList
 List of lights for this object.
ulong mLightListUpdated
 The last frame that this light list was updated in.

Static Protected Attributes

static String msMovableType
static uint32 msDefaultQueryFlags
 Default query flags.
static uint32 msDefaultVisibilityFlags
 Default visibility flags.
static
AnimableDictionaryMap 
msAnimableDictionary
 Static map of class name to list of animable value names.

Friends

_OgreExport friend
std::ostream & 
operator<< (std::ostream &o, const Plane &p)


Detailed Description

Definition of a Plane that may be attached to a node, and the derived details of it retrieved simply.

Remarks:
This plane is not here for rendering purposes, it's to allow you to attach planes to the scene in order to have them move and follow nodes on their own, which is useful if you're using the plane for some kind of calculation, e.g. reflection.

Definition at line 53 of file OgreMovablePlane.h.


Member Typedef Documentation

typedef std::vector<ShadowRenderable*> Ogre::ShadowCaster::ShadowRenderableList [inherited]

Definition at line 123 of file OgreShadowCaster.h.

typedef VectorIterator<ShadowRenderableList> Ogre::ShadowCaster::ShadowRenderableListIterator [inherited]

Definition at line 124 of file OgreShadowCaster.h.

typedef std::map<String, StringVector> Ogre::AnimableObject::AnimableDictionaryMap [protected, inherited]

Definition at line 234 of file OgreAnimable.h.


Member Enumeration Documentation

enum Ogre::Plane::Side [inherited]

The "positive side" of the plane is the half space to which the plane normal points.

The "negative side" is the other half space. The flag "no side" indicates the plane itself.

Enumerator:
NO_SIDE 
POSITIVE_SIDE 
NEGATIVE_SIDE 
BOTH_SIDE 

Definition at line 72 of file OgrePlane.h.


Constructor & Destructor Documentation

Ogre::MovablePlane::MovablePlane ( const String name  ) 

Ogre::MovablePlane::MovablePlane ( const Plane rhs  ) 

Ogre::MovablePlane::MovablePlane ( const Vector3 rkNormal,
Real  fConstant 
)

Construct a plane through a normal, and a distance to move the plane along the normal.

Ogre::MovablePlane::MovablePlane ( const Vector3 rkNormal,
const Vector3 rkPoint 
)

Ogre::MovablePlane::MovablePlane ( const Vector3 rkPoint0,
const Vector3 rkPoint1,
const Vector3 rkPoint2 
)

Ogre::MovablePlane::~MovablePlane (  ) 

Definition at line 71 of file OgreMovablePlane.h.


Member Function Documentation

void Ogre::MovablePlane::_notifyCurrentCamera ( Camera  )  [virtual]

Overridden from MovableObject.

Reimplemented from Ogre::MovableObject.

Definition at line 73 of file OgreMovablePlane.h.

const AxisAlignedBox& Ogre::MovablePlane::getBoundingBox ( void   )  const [virtual]

Overridden from MovableObject.

Implements Ogre::MovableObject.

Definition at line 75 of file OgreMovablePlane.h.

Real Ogre::MovablePlane::getBoundingRadius ( void   )  const [virtual]

Overridden from MovableObject.

Implements Ogre::MovableObject.

Definition at line 77 of file OgreMovablePlane.h.

References Ogre::Math::POS_INFINITY.

void Ogre::MovablePlane::_updateRenderQueue ( RenderQueue  )  [virtual]

Overridden from MovableObject.

Implements Ogre::MovableObject.

Definition at line 79 of file OgreMovablePlane.h.

const String& Ogre::MovablePlane::getMovableType ( void   )  const [virtual]

Overridden from MovableObject.

Implements Ogre::MovableObject.

const Plane& Ogre::MovablePlane::_getDerivedPlane ( void   )  const

Get the derived plane as transformed by its parent node.

void Ogre::MovablePlane::visitRenderables ( Renderable::Visitor visitor,
bool  debugRenderables = false 
) [virtual]

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.

Parameters:
visitor Pointer to a class implementing the Renderable::Visitor interface which will be called back for each Renderable which will be queued. Bear in mind that the state of the Renderable instances may not be finalised depending on when you call this.
debugRenderables If false, only regular renderables will be visited (those for normal display). If true, debug renderables will be included too.

Implements Ogre::MovableObject.

Definition at line 85 of file OgreMovablePlane.h.

Side Ogre::Plane::getSide ( const Vector3 rkPoint  )  const [inherited]

Referenced by Ogre::PlaneBoundedVolume::intersects().

Side Ogre::Plane::getSide ( const AxisAlignedBox rkBox  )  const [inherited]

returns the side where the aligneBox is.

the flag BOTH_SIDE indicates an intersecting box. one corner ON the plane is sufficient to consider the box and the plane intersecting.

Side Ogre::Plane::getSide ( const Vector3 centre,
const Vector3 halfSize 
) const [inherited]

Returns which side of the plane that the given box lies on.

The box is defined as centre/half-size pairs for effectively.

Parameters:
centre The centre of the box.
halfSize The half-size of the box.
Returns:
POSITIVE_SIDE if the box complete lies on the "positive side" of the plane, NEGATIVE_SIDE if the box complete lies on the "negative side" of the plane, and BOTH_SIDE if the box intersects the plane.

Real Ogre::Plane::getDistance ( const Vector3 rkPoint  )  const [inherited]

This is a pseudodistance.

The sign of the return value is positive if the point is on the positive side of the plane, negative if the point is on the negative side, and zero if the point is on the plane.

The absolute value of the return value is the true distance only when the plane normal is a unit length vector.

Referenced by Ogre::PlaneBoundedVolume::intersects().

void Ogre::Plane::redefine ( const Vector3 rkPoint0,
const Vector3 rkPoint1,
const Vector3 rkPoint2 
) [inherited]

Redefine this plane based on 3 points.

void Ogre::Plane::redefine ( const Vector3 rkNormal,
const Vector3 rkPoint 
) [inherited]

Redefine this plane based on a normal and a point.

Vector3 Ogre::Plane::projectVector ( const Vector3 v  )  const [inherited]

Project a vector onto the plane.

Remarks:
This gives you the element of the input vector that is perpendicular to the normal of the plane. You can get the element which is parallel to the normal of the plane by subtracting the result of this method from the original vector, since parallel + perpendicular = original.
Parameters:
v The input vector

Real Ogre::Plane::normalise ( void   )  [inherited]

Normalises the plane.

Remarks:
This method normalises the plane's normal and the length scale of d is as well.
Note:
This function will not crash for zero-sized vectors, but there will be no changes made to their components.
Returns:
The previous length of the plane's normal.

bool Ogre::Plane::operator== ( const Plane rhs  )  const [inherited]

Comparison operator.

Definition at line 140 of file OgrePlane.h.

References Ogre::Plane::d, and Ogre::Plane::normal.

bool Ogre::Plane::operator!= ( const Plane rhs  )  const [inherited]

Definition at line 144 of file OgrePlane.h.

References Ogre::Plane::d, and Ogre::Plane::normal.

virtual void Ogre::MovableObject::_notifyCreator ( MovableObjectFactory fact  )  [virtual, inherited]

Notify the object of it's creator (internal use only).

Definition at line 169 of file OgreMovableObject.h.

virtual MovableObjectFactory* Ogre::MovableObject::_getCreator ( void   )  const [virtual, inherited]

Get the creator of this object, if any (internal use only).

Definition at line 171 of file OgreMovableObject.h.

virtual void Ogre::MovableObject::_notifyManager ( SceneManager man  )  [virtual, inherited]

Notify the object of it's manager (internal use only).

Definition at line 173 of file OgreMovableObject.h.

virtual SceneManager* Ogre::MovableObject::_getManager ( void   )  const [virtual, inherited]

Get the manager of this object, if any (internal use only).

Definition at line 175 of file OgreMovableObject.h.

virtual const String& Ogre::MovableObject::getName ( void   )  const [virtual, inherited]

Returns the name of this object.

Reimplemented in Ogre::Camera.

Definition at line 178 of file OgreMovableObject.h.

virtual Node* Ogre::MovableObject::getParentNode ( void   )  const [virtual, inherited]

Returns the node to which this object is attached.

Remarks:
A MovableObject may be attached to either a SceneNode or to a TagPoint, the latter case if it's attached to a bone on an animated entity. Both are Node subclasses so this method will return either.

virtual SceneNode* Ogre::MovableObject::getParentSceneNode ( void   )  const [virtual, inherited]

Returns the scene node to which this object is attached.

Remarks:
A MovableObject may be attached to either a SceneNode or to a TagPoint, the latter case if it's attached to a bone on an animated entity. This method will return the scene node of the parent entity if the latter is true.

virtual void Ogre::MovableObject::_notifyAttached ( Node parent,
bool  isTagPoint = false 
) [virtual, inherited]

Internal method called to notify the object that it has been attached to a node.

Reimplemented in Ogre::Entity, Ogre::Light, and Ogre::ParticleSystem.

virtual bool Ogre::MovableObject::isAttached ( void   )  const [virtual, inherited]

Returns true if this object is attached to a SceneNode or TagPoint.

virtual void Ogre::MovableObject::detatchFromParent ( void   )  [virtual, inherited]

Detaches an object from a parent SceneNode or TagPoint, if attached.

virtual bool Ogre::MovableObject::isInScene ( void   )  const [virtual, inherited]

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.

virtual void Ogre::MovableObject::_notifyMoved ( void   )  [virtual, inherited]

Internal method called to notify the object that it has been moved.

Reimplemented in Ogre::Light.

virtual const AxisAlignedBox& Ogre::MovableObject::getWorldBoundingBox ( bool  derive = false  )  const [virtual, inherited]

Retrieves the axis-aligned bounding box for this object in world coordinates.

Implements Ogre::ShadowCaster.

Reimplemented in Ogre::Entity.

virtual const Sphere& Ogre::MovableObject::getWorldBoundingSphere ( bool  derive = false  )  const [virtual, inherited]

Retrieves the worldspace bounding sphere for this object.

Reimplemented in Ogre::Entity.

virtual void Ogre::MovableObject::setVisible ( bool  visible  )  [virtual, inherited]

Tells this object whether to be visible or not, if it has a renderable component.

Note:
An alternative approach of making an object invisible is to detach it from it's SceneNode, or to remove the SceneNode entirely. Detaching a node means that structurally the scene graph changes. Once this change has taken place, the objects / nodes that have been removed have less overhead to the visibility detection pass than simply making the object invisible, so if you do this and leave the objects out of the tree for a long time, it's faster. However, the act of detaching / reattaching nodes is in itself more expensive than setting an object visibility flag, since in the latter case structural changes are not made. Therefore, small or frequent visibility changes are best done using this method; large or more longer term changes are best done by detaching.

Reimplemented in Ogre::Light.

virtual bool Ogre::MovableObject::getVisible ( void   )  const [virtual, inherited]

Gets this object whether to be visible or not, if it has a renderable component.

Remarks:
Returns the value set by MovableObject::setVisible only.

virtual bool Ogre::MovableObject::isVisible ( void   )  const [virtual, inherited]

Returns whether or not this object is supposed to be visible or not.

Remarks:
Takes into account both upper rendering distance and visible flag.

Reimplemented in Ogre::InstancedGeometry::BatchInstance, and Ogre::StaticGeometry::Region.

virtual void Ogre::MovableObject::setRenderingDistance ( Real  dist  )  [virtual, inherited]

Sets the distance at which the object is no longer rendered.

Parameters:
dist Distance beyond which the object will not be rendered (the default is 0, which means objects are always rendered).

Definition at line 280 of file OgreMovableObject.h.

virtual Real Ogre::MovableObject::getRenderingDistance ( void   )  const [virtual, inherited]

Gets the distance at which batches are no longer rendered.

Definition at line 286 of file OgreMovableObject.h.

virtual void Ogre::MovableObject::setUserObject ( UserDefinedObject obj  )  [virtual, inherited]

Call this to associate your own custom user object instance with this MovableObject.

Remarks:
By simply making your game / application object a subclass of UserDefinedObject, you can establish a link between an OGRE instance of MovableObject and your own application classes. Call this method to establish the link.

Definition at line 294 of file OgreMovableObject.h.

virtual UserDefinedObject* Ogre::MovableObject::getUserObject ( void   )  [virtual, inherited]

Retrieves a pointer to a custom application object associated with this movable by an earlier call to setUserObject.

Definition at line 298 of file OgreMovableObject.h.

References