Sion Tower (demo técnica) 0.1
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=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 ()
GameObjectgetGameObject ()
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:

  // 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:
gameObjectobjeto de juego al que pertenece el body
shapesvector de punteros a formas que compondrán el cuerpo
positionposición del cuerpo
scaleescala del cuerpo
orientationorientació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:
gameObjectobjeto de juego al que pertenece el body
positionposición del cuerpo
scaleescala del cuerpo
orientationorientació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:
shapenueva 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:
bodyAprimer cuerpo del test de colisión
bodyBsegundo 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 ( Shape shape)
Parámetros:
shapeforma 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.

bool Body::removeShape ( const Ogre::String &  name)
Parámetros:
namenombre 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:
gameObjectnuevo gameObject al que pertenece el body
void Body::setOrientation ( const Ogre::Quaternion &  orientation)
Parámetros:
orientationnueva orientación del cuerpo en "world space"
void Body::setPosition ( const Ogre::Vector3 &  position)
Parámetros:
positionnueva posición del cuerpo en "world space"
void Body::setScale ( const Ogre::Vector3 &  scale)
Parámetros:
scalenueva escala del cuerpo
void Body::setTransform ( const Ogre::Matrix4 &  transform)
Parámetros:
nuevamatriz de transformación del cuerpo
void Body::setType ( int  type)
Parámetros:
typenuevo tipo de cuerpo, utilizado en el filtrado de colisiones

La documentación para esta clase fue generada a partir de los siguientes ficheros:
 Todo Clases Archivos Funciones 'typedefs' Enumeraciones