Clase que modela un cuerpo colisionable, compuesto de varias Shape.
Más...
#include <body.h>
Lista de todos los miembros.
Métodos públicos |
| Body (GameObject *gameObject, const std::vector< Shape * > &shapes, const Ogre::Vector3 &position=Ogre::Vector3::ZERO, const Ogre::Vector3 &scale=Ogre::Vector3::UNIT_SCALE, const Ogre::Quaternion &orientation=Ogre::Quaternion::IDENTITY, int type=0) |
| Body (GameObject *gameObject=0, const Ogre::Vector3 &position=Ogre::Vector3::ZERO, const Ogre::Vector3 &scale=Ogre::Vector3::UNIT_SCALE, const Ogre::Quaternion &orientation=Ogre::Quaternion::IDENTITY, int type=0) |
| ~Body () |
GameObject * | getGameObject () |
void | setGameObject (GameObject *gameObject) |
const std::vector< Shape * > | getShapes () const |
const std::vector< Shape * > | getWorldSpaceShapes () const |
void | addShape (Shape *shape) |
bool | removeShape (Shape *shape) |
bool | removeShape (const Ogre::String &name) |
Ogre::Matrix4 | getTransform () const |
void | setTransform (const Ogre::Matrix4 &transform) |
const Ogre::Vector3 & | getPosition () const |
void | setPosition (const Ogre::Vector3 &position) |
const Ogre::Vector3 & | getScale () const |
void | setScale (const Ogre::Vector3 &scale) |
const Ogre::Quaternion & | getOrientation () const |
void | setOrientation (const Ogre::Quaternion &orientation) |
int | getType () const |
void | setType (int type) |
Métodos públicos estáticos |
static bool | getCollision (Body *bodyA, Body *bodyB) |
Descripción detallada
Clase que modela un cuerpo colisionable, compuesto de varias Shape.
- Autor:
- David Saltares Márquez
- Fecha:
- 1-02-2011
Representa un cuerpo colisionable del juego. Está compuesto de un vector de punteros a Shape y una transformación (posición, escala y orientación). Las formas que componen el cuerpo están en "parent space". Para obtener las formas que componen un cuerpos en "world space" es necesario aplicarles la transformación del cuerpo.
Proporciona un método estático para hacer un test de colisión entre dos cuerpos independientemente de las formas que los compongan.
Ejemplo:
Shape* sphereA = new Sphere("sphereA", Ogre::Vector3(0, 0, 0), 5.0);
Shape* aabbA = new AxisAlignedBox("aabbA", Ogre::Vector3(5, 5, 5), Ogre::Vector3(6, 6, 6));
Shape* sphereB = new Sphere("sphereB", Ogre::Vector3(5, 5, 5), 5.0);
Shape* aabbB = new AxisAlignedBox("aabbB", Ogre::Vector3(10, 10, 10), Ogre::Vector3(11, 11, 11));
Body bodyA;
bodyA.addShape(sphereA);
bodyA.addShape(aabbA);
Body bodyB;
bodyB.addShape(sphereB);
bodyA.addShape(aabbB);
bodyB.setPosition(Ogre::Vector3(4, 4, 4);
bodyB.setScale(Ogre::Vector3(1, 4, 1));
if (Body::getCollision(bodyA, bodyB))
cout << "Hay colisión entre bodyA y bodyB" << endl;
Documentación del constructor y destructor
Body::Body |
( |
GameObject * |
gameObject, |
|
|
const std::vector< Shape * > & |
shapes, |
|
|
const Ogre::Vector3 & |
position = Ogre::Vector3::ZERO , |
|
|
const Ogre::Vector3 & |
scale = Ogre::Vector3::UNIT_SCALE , |
|
|
const Ogre::Quaternion & |
orientation = Ogre::Quaternion::IDENTITY , |
|
|
int |
type = 0 | |
|
) |
| | |
Constructor
- Parámetros:
-
| gameObject | objeto de juego al que pertenece el body |
| shapes | vector de punteros a formas que compondrán el cuerpo |
| position | posición del cuerpo |
| scale | escala del cuerpo |
| orientation | orientación del cuerpo |
Body::Body |
( |
GameObject * |
gameObject = 0 , |
|
|
const Ogre::Vector3 & |
position = Ogre::Vector3::ZERO , |
|
|
const Ogre::Vector3 & |
scale = Ogre::Vector3::UNIT_SCALE , |
|
|
const Ogre::Quaternion & |
orientation = Ogre::Quaternion::IDENTITY , |
|
|
int |
type = 0 | |
|
) |
| | |
Constructor
- Parámetros:
-
| gameObject | objeto de juego al que pertenece el body |
| position | posición del cuerpo |
| scale | escala del cuerpo |
| orientation | orientación del cuerpo |
Destructor.
No destruye las formas que lo componen, debe hacerse de forma manual.
Documentación de las funciones miembro
void Body::addShape |
( |
Shape * |
shape |
) |
|
- Parámetros:
-
Añade la forma al vector de punteros a formas que componen el cuerpo. No hace comprobaciones de duplicidad,
bool Body::getCollision |
( |
Body * |
bodyA, |
|
|
Body * |
bodyB | |
|
) |
| | [static] |
- Parámetros:
-
| bodyA | primer cuerpo del test de colisión |
| bodyB | segundo cuerpo del test de colisión |
- Devuelve:
- true si los dos cuerpos colisionan, false en caso contrario
El método se encarga de aplicar las transformaciones a las formas que componen a los dos cuerpos.
- Devuelve:
- objeto de juego al que pertenece el body
const Ogre::Quaternion & Body::getOrientation |
( |
|
) |
const |
- Devuelve:
- orientación del cuerpo en "world space"
const Ogre::Vector3 & Body::getPosition |
( |
|
) |
const |
- Devuelve:
- posición del cuerpo en "world space"
const Ogre::Vector3 & Body::getScale |
( |
|
) |
const |
- Devuelve:
- escala del cuerpo
const std::vector< Shape * > Body::getShapes |
( |
|
) |
const |
- Devuelve:
- vector de punteros a formas que componen el cuerpo
Ogre::Matrix4 Body::getTransform |
( |
|
) |
const |
- Devuelve:
- matrix de transformación del cuerpo
int Body::getType |
( |
|
) |
const |
- Devuelve:
- tipo de cuerpo, utilizado en el filtrado de colisiones
const std::vector< Shape * > Body::getWorldSpaceShapes |
( |
|
) |
const |
- Devuelve:
- vector de punteros a formas que componen el cuerpo en world space
bool Body::removeShape |
( |
Shape * |
shape |
) |
|
- Parámetros:
-
- Devuelve:
- true si se elimina la forma, false si no formaba parte del cuerpo
Elimina la forma de la lista que compone el cuerpo si existe. No destruye la forma.
bool Body::removeShape |
( |
const Ogre::String & |
name |
) |
|
- Parámetros:
-
| name | nombre de la forma a eliminar |
- Devuelve:
- true si se elimina la forma, false en caso de que no formase parte del cuerpo
Elimina la forma del vector de formas que componen el cuerpo, no destruye la forma.
void Body::setGameObject |
( |
GameObject * |
gameObject |
) |
|
- Parámetros:
-
| gameObject | nuevo gameObject al que pertenece el body |
void Body::setOrientation |
( |
const Ogre::Quaternion & |
orientation |
) |
|
- Parámetros:
-
| orientation | nueva orientación del cuerpo en "world space" |
void Body::setPosition |
( |
const Ogre::Vector3 & |
position |
) |
|
- Parámetros:
-
| position | nueva posición del cuerpo en "world space" |
void Body::setScale |
( |
const Ogre::Vector3 & |
scale |
) |
|
- Parámetros:
-
| scale | nueva escala del cuerpo |
void Body::setTransform |
( |
const Ogre::Matrix4 & |
transform |
) |
|
- Parámetros:
-
| nueva | matriz de transformación del cuerpo |
void Body::setType |
( |
int |
type |
) |
|
- Parámetros:
-
| type | nuevo tipo de cuerpo, utilizado en el filtrado de colisiones |
La documentación para esta clase fue generada a partir de los siguientes ficheros:
- /home/david/programacion/iberogre-siontower/siontower/siontower-collisions-v0.2/include/body.h
- /home/david/programacion/iberogre-siontower/siontower/siontower-collisions-v0.2/src/body.cpp