1 /************************************************************************
2 This file is part of NE.
4 NE is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
9 NE is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with NE. If not, see <http://www.gnu.org/licenses/>.
16 ************************************************************************/
22 #include <ode/odecpp.h>
23 #include <ode/odecpp_collision.h>
33 void setCollide(int (*func
)(Object
*,Object
*)) { m_colfunc
= func
; }
34 virtual int collide(Object
* o
);
36 virtual void update() {}
38 virtual void draw() = 0;
40 dBody
*getBody() { return m_body
; }
41 dGeom
*getGeom() { return m_geom
; }
42 float getMass() { return m_mass
.mass
; }
44 inline const Vec3f
getUp()
46 const dReal
*r
= getRotation();
48 return Vec3f(r
[1], r
[5], r
[9]);
51 inline const Vec3f
getForward()
53 const dReal
*r
= getRotation();
55 return Vec3f(r
[2], r
[6], r
[10]);
58 void setPosition(dReal x
, dReal y
, dReal z
);
59 const dReal
*getPosition();
60 inline const Vec3f
getPositionV()
62 const dReal
*v
= getPosition();
63 return Vec3f(v
[0], v
[1], v
[2]);
66 void setRotation(const dMatrix3 r
);
67 const dReal
*getRotation();
69 void setQuaternion(const dQuaternion q
);
70 const dReal
*getQuaternion();
72 bool isStatic() { return m_static
; }
73 void setStatic(bool is_static
);
75 virtual std::string
&serialize();
76 virtual void unserialize(std::string
&s
);
78 // returns true when the gravity applied is the strongest
79 virtual bool applyGravity(const Vec3f
&force
);
81 inline void clearGravity()
90 long int m_framestamp
;
100 int (*m_colfunc
)(Object
*,Object
*);
102 float m_spring
, m_damp
;