Métodos públicos | Métodos públicos estáticos

Referencia de la Clase Body

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, 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 ()
GameObjectgetGameObject ()
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:

  // Creamos las formas del cuerpo A
  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));

  // Creamos las formas del cuerpo B
  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));
  
  // Creamos el cuerpo A
  Body bodyA;
  bodyA.addShape(sphereA);
  bodyA.addShape(aabbA);

  // Creamos el cuerpo B 
  Body bodyB;
  bodyB.addShape(sphereB);
  bodyA.addShape(aabbB);

  // Transformamos el cuerpo B
  bodyB.setPosition(Ogre::Vector3(4, 4, 4);
  bodyB.setScale(Ogre::Vector3(1, 4, 1));

  // Hacemos un test de colisi&oacute;n
  if (Body::getCollision(bodyA, bodyB))
      cout << "Hay colisi&oacute;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,
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
Body::~Body (  ) 

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:
shape nueva forma

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.

GameObject * Body::getGameObject (  ) 
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 ( 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.

bool Body::removeShape ( Shape shape  ) 
Parámetros:
shape forma a eliminar
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.

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: