2009-02-04 14:43:33 +00:00
/****************************************************************************
* Copyright ( C ) 2009 Daniel Chappuis *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This file is part of ReactPhysics3D . *
* *
* ReactPhysics3D is free software : you can redistribute it and / or modify *
2009-06-05 14:22:40 +00:00
* it under the terms of the GNU Lesser General Public License as published *
* by the Free Software Foundation , either version 3 of the License , or *
2009-02-04 14:43:33 +00:00
* ( at your option ) any later version . *
* *
* ReactPhysics3D is distributed in the hope that it will be useful , *
* but WITHOUT ANY WARRANTY ; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the *
2009-06-05 14:22:40 +00:00
* GNU Lesser General Public License for more details . *
2009-02-04 14:43:33 +00:00
* *
2009-06-05 14:22:40 +00:00
* You should have received a copy of the GNU Lesser General Public License *
2009-02-04 14:43:33 +00:00
* along with ReactPhysics3D . If not , see < http : //www.gnu.org/licenses/>. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2010-07-19 19:42:47 +00:00
# ifndef OBJECTS_H
# define OBJECTS_H
2009-02-04 14:43:33 +00:00
// Libraries
# include "../reactphysics3d/reactphysics3d.h"
// Namespaces
using namespace reactphysics3d ;
2010-07-19 19:42:47 +00:00
/*
Here we define all the objects that can appear in the simulation like cube , sphere , plane , . . .
*/
// ----- Class Object (abstract) ----- //
// Represent an object of the simulation
2009-02-13 11:26:51 +00:00
class Object {
protected :
RigidBody * rigidBody ; // Rigid Body that represents the object
2010-07-19 19:42:47 +00:00
public :
2010-09-09 20:49:18 +00:00
Object ( const Vector3D & position , const Quaternion & orientation , double mass , const Matrix3x3 & inertiaTensor , OBB * obb ) ; // Constructor of the class Object
2010-07-19 19:42:47 +00:00
virtual ~ Object ( ) ; // Destructor of the class Object
2009-02-13 11:26:51 +00:00
2009-07-21 20:28:27 +00:00
virtual void draw ( ) const = 0 ; // pure virtual method to draw the object
2010-07-19 19:42:47 +00:00
RigidBody * getRigidBody ( ) ; // Return the pointer to the rigid body
} ;
// ----- Class Cube ----- //
// Represente a Box in the simulation
class Cube : public Object {
private :
float size ; // Size of a side in the box
static const Matrix3x3 inertiaTensor ; // Inertia tensor of a box
public :
2010-09-09 20:49:18 +00:00
Cube ( const Vector3D & position , const Quaternion & orientation , float size , double mass ) ; // Constructor of the class cube
2010-07-19 19:42:47 +00:00
virtual ~ Cube ( ) ; // Destructor of the class cube
virtual void draw ( ) const ; // Method to draw the cube
} ;
// ----- Class Plane ---- //
// Represent a plane in the simulation
class Plane : public Object {
private :
float width ; // Width of the plane
float height ; // Height of the plane
Vector3D d1 ; // Unit vector in the plane
Vector3D d2 ; // Unit vector in the plane
2009-07-21 20:28:27 +00:00
Vector3D normalVector ; // Unit normal vector of the plane
2009-02-13 11:26:51 +00:00
2010-07-19 19:42:47 +00:00
public :
2010-09-09 20:49:18 +00:00
Plane ( const Vector3D & position , const Quaternion & orientation , float width , float height , const Vector3D & d1 , const Vector3D & d2 , double mass ) ; // Constructor of the class Plane
2010-07-19 19:42:47 +00:00
virtual ~ Plane ( ) ; // Destructor of the class Plane
virtual void draw ( ) const ; // Method to draw the plane
} ;
# endif