Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

# irr::scene::ISceneNodeAnimatorCollisionResponse Class Reference

Special scene node animator for doing automatic collision detection and response. More...

`#include <ISceneNodeAnimatorCollisionResponse.h>`

Inheritance diagram for irr::scene::ISceneNodeAnimatorCollisionResponse:

List of all members.

## Public Member Functions
virtual bool | collisionOccurred () const =0
| Returns true if a collision occurred during the last animateNode().
virtual bool | getAnimateTarget () const =0
virtual const ISceneNode * | getCollisionNode (void) const =0
| Returns the node that was collided with.
virtual const core::vector3df & | getCollisionPoint () const =0
| Returns the last point of collision.
virtual const core::vector3df & | getCollisionResultPosition (void) const =0
| Returns the position that the target node will be moved to, unless the collision is consumed in a callback).
virtual const core::triangle3df & | getCollisionTriangle () const =0
| Returns the last triangle that caused a collision.
virtual core::vector3df | getEllipsoidRadius () const =0
| Returns the radius of the ellipsoid for collision detection and response.
virtual core::vector3df | getEllipsoidTranslation () const =0
| Get the translation of the ellipsoid for collision detection.
*virtual core::vector3df | getGravity () const =0
virtual ISceneNode * | getTargetNode (void) const =0
| Gets the single node that this animator is acting on.
virtual ITriangleSelector * | getWorld () const =0
| Get the current triangle selector containing all triangles for collision detection.
virtual bool | isFalling () const =0
| Check if the attached scene node is falling.
virtual void | jump (f32 jumpSpeed)=0
| 'Jump' the animator, by adding a jump speed opposite to its gravity
virtual void | setAnimateTarget (bool enable)=0
| Should the Target react on collision ( default = true ).
virtual void | setCollisionCallback (ICollisionCallback *callback)=0
| Sets a callback interface which will be called if a collision occurs.
virtual void | setEllipsoidRadius (const core::vector3df &radius)=0
| Sets the radius of the ellipsoid for collision detection and response.
virtual void | setEllipsoidTranslation (const core::vector3df &translation)=0
| Set translation of the collision ellipsoid.
virtual void | setGravity (const core::vector3df &gravity)=0
| Sets the gravity of the environment.
virtual void | setTargetNode (ISceneNode *node)=0
| Set the single node that this animator will act on.
virtual void | setWorld (ITriangleSelector *newWorld)=0
| Sets a triangle selector holding all triangles of the world with which the scene node may collide.
virtual | ~ISceneNodeAnimatorCollisionResponse ()
| Destructor.

## Detailed Description

Special scene node animator for doing automatic collision detection and response.

This scene node animator can be attached to any single scene node and will then prevent it from moving through specified collision geometry (e.g. walls and floors of the) world, as well as having it fall under gravity. This animator provides a simple implementation of first person shooter cameras. Attach it to a camera, and the camera will behave as the player control in a first person shooter game: The camera stops and slides at walls, walks up stairs, falls down if there is no floor under it, and so on.

The animator will treat any change in the position of its target scene node as movement, including a setPosition(), as movement. If you want to teleport the target scene node manually to a location without it being effected by collision geometry, then call setTargetNode(node) after calling node->setPosition().

Definition at line 53 of file ISceneNodeAnimatorCollisionResponse.h.

## Constructor & Destructor Documentation

virtual irr::scene::ISceneNodeAnimatorCollisionResponse::~ISceneNodeAnimatorCollisionResponse | ( |  | ) | `[inline, virtual]`

Destructor.

Definition at line 58 of file ISceneNodeAnimatorCollisionResponse.h.

## Member Function Documentation

virtual bool irr::scene::ISceneNodeAnimatorCollisionResponse::collisionOccurred | ( |  | ) | const`[pure virtual]`

Returns true if a collision occurred during the last animateNode().

virtual bool irr::scene::ISceneNodeAnimatorCollisionResponse::getAnimateTarget | ( |  | ) | const`[pure virtual]`

virtual const ISceneNode* irr::scene::ISceneNodeAnimatorCollisionResponse::getCollisionNode | ( | void |  | ) | const`[pure virtual]`

Returns the node that was collided with.

virtual const core::vector3df& irr::scene::ISceneNodeAnimatorCollisionResponse::getCollisionPoint | ( |  | ) | const`[pure virtual]`

Returns the last point of collision.

virtual const core::vector3df& irr::scene::ISceneNodeAnimatorCollisionResponse::getCollisionResultPosition | ( | void |  | ) | const`[pure virtual]`

Returns the position that the target node will be moved to, unless the collision is consumed in a callback).

If you have a collision callback registered, and it consumes the collision, then the node will ignore the collision and will not stop at this position. Instead, it will move fully to the position that caused the collision to occur.

virtual const core::triangle3df& irr::scene::ISceneNodeAnimatorCollisionResponse::getCollisionTriangle | ( |  | ) | const`[pure virtual]`

Returns the last triangle that caused a collision.

virtual core::vector3df irr::scene::ISceneNodeAnimatorCollisionResponse::getEllipsoidRadius | ( |  | ) | const`[pure virtual]`

Returns the radius of the ellipsoid for collision detection and response.

Returns:
  Radius of the ellipsoid.

virtual core::vector3df irr::scene::ISceneNodeAnimatorCollisionResponse::getEllipsoidTranslation | ( |  | ) | const`[pure virtual]`

Get the translation of the ellipsoid for collision detection.

See ISceneNodeAnimatorCollisionResponse::setEllipsoidTranslation() for more details.

Returns:
  Translation of the ellipsoid relative to the position of the scene node.

* virtual core::vector3df irr::scene::ISceneNodeAnimatorCollisionResponse::getGravity | ( |  | ) | const`[pure virtual]`

Get current vector of gravity.

Returns:
  Gravity vector.

virtual ISceneNode* irr::scene::ISceneNodeAnimatorCollisionResponse::getTargetNode | ( | void |  | ) | const`[pure virtual]`

Gets the single node that this animator is acting on.

Returns:
  The node that this animator is acting on.

virtual ITriangleSelector* irr::scene::ISceneNodeAnimatorCollisionResponse::getWorld | ( |  | ) | const`[pure virtual]`

Get the current triangle selector containing all triangles for collision detection.

virtual bool irr::scene::ISceneNodeAnimatorCollisionResponse::isFalling | ( |  | ) | const`[pure virtual]`

Check if the attached scene node is falling.

Falling means that there is no blocking wall from the scene node in the direction of the gravity. The implementation of this method is very fast, no collision detection is done when invoking it.

Returns:
  True if the scene node is falling, false if not.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::jump | ( | f32 | jumpSpeed | ) | `[pure virtual]`

'Jump' the animator, by adding a jump speed opposite to its gravity

Parameters:

  | jumpSpeed | The initial speed of the jump; the velocity will be opposite to this animator's gravity vector.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setAnimateTarget | ( | bool | enable | ) | `[pure virtual]`

Should the Target react on collision ( default = true ).

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setCollisionCallback | ( | ICollisionCallback * | callback | ) | `[pure virtual]`

Sets a callback interface which will be called if a collision occurs.

Parameters:

  | callback,: | collision callback handler that will be called when a collision occurs. Set this to 0 to disable the callback.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setEllipsoidRadius | ( | const core::vector3df & | radius | ) | `[pure virtual]`

Sets the radius of the ellipsoid for collision detection and response.

If you have a scene node, and you are unsure about how big the radius should be, you could use the following code to determine it:

                    core::aabbox<f32> box = yourSceneNode->getBoundingBox();
                    core::vector3df radius = box.MaxEdge - box.getCenter();

Parameters:

  | radius,: | New radius of the ellipsoid.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setEllipsoidTranslation | ( | const core::vector3df & | translation | ) | `[pure virtual]`

Set translation of the collision ellipsoid.

By default, the ellipsoid for collision detection is created around the center of the scene node, which means that the ellipsoid surrounds it completely. If this is not what you want, you may specify a translation for the ellipsoid.

Parameters:

  | translation,: | Translation of the ellipsoid relative to the position of the scene node.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setGravity | ( | const core::vector3df & | gravity | ) | `[pure virtual]`

Sets the gravity of the environment.

A good example value would be core::vector3df(0,-100.0f,0) for letting gravity affect all object to fall down. For bigger gravity, make increase the length of the vector. You can disable gravity by setting it to core::vector3df(0,0,0);

Parameters:

  | gravity,: | New gravity vector.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setTargetNode | ( | ISceneNode * | node | ) | `[pure virtual]`

Set the single node that this animator will act on.

Parameters:

  | node | The new target node. Setting this will force the animator to update its last target position for the node, allowing setPosition() to teleport the node through collision geometry.

virtual void irr::scene::ISceneNodeAnimatorCollisionResponse::setWorld | ( | ITriangleSelector * | newWorld | ) | `[pure virtual]`

Sets a triangle selector holding all triangles of the world with which the scene node may collide.

Parameters:

  | newWorld,: | New triangle selector containing triangles to let the scene node collide with.

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

- ISceneNodeAnimatorCollisionResponse.h

| The Irrlicht Engine Documentation © 2003-2009 by Nikolaus Gebhardt. Generated on Sun Jan 10 09:24:16 2010 by Doxygen (1.5.6)