Added a ton of stuff, including the beginnings of a new UI system
[ne.git] / src / phys / object.h
blob23fcc05befe039402417ed9bc8872963f775e3b0
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 ************************************************************************/
18 #ifndef OBJECT_H_
19 #define OBJECT_H_
21 #include <ode/ode.h>
22 #include <ode/odecpp.h>
23 #include <ode/odecpp_collision.h>
24 #include <string>
26 class Object
28 public:
29 Object();
30 virtual ~Object();
32 void setCollide(int (*func)(Object*,Object*)) { m_colfunc = func; }
33 int collide(Object* o);
35 virtual void update() {}
37 virtual void draw() = 0;
39 dBody *getBody() { return m_body; }
40 dGeom *getGeom() { return m_geom; }
41 float getMass() { return m_mass.mass; }
43 void setPosition(dReal x, dReal y, dReal z);
44 const dReal *getPosition();
46 void setRotation(const dMatrix3 r);
47 const dReal *getRotation();
49 void setQuaternion(const dQuaternion q);
50 const dReal *getQuaternion();
52 bool isStatic() { return m_static; }
53 void setStatic(bool is_static);
55 virtual std::string &serialize();
56 virtual void unserialize(std::string &s);
58 protected:
59 void apply_matrix();
60 void init_geom();
62 dMass m_mass;
63 dBody *m_body;
64 dGeom *m_geom;
66 private:
67 bool m_static;
68 int (*m_colfunc)(Object*,Object*);
71 #endif