anaglym/anaglym.h
Josh Holtrop 05858c0c22 filled in Engine::Object::{get,set}Position()
git-svn-id: svn://anubis/anaglym/trunk@44 99a6e188-d820-4881-8870-2d33a10e2619
2009-10-01 03:38:39 +00:00

68 lines
1.7 KiB
C++

#ifndef ANAGLYM_H
#define ANAGLYM_H
#include <string>
#include <lua.hpp>
#include <map>
#include "Video.h"
#include "OdeWorld/OdeWorld.h"
#include "wfobj/WFObj.hh"
#define FILENAME_SAFE_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-"
class Engine
{
public:
class Object
{
public:
Object() { body = 0; }
WFObj * wfobj;
GLuint display_list;
std::vector<dGeomID> geoms;
dBodyID body;
void draw() { glCallList(display_list); }
void loadPhy(const std::string & path,
bool static_data = false);
void setPosition(double x, double y, double z);
void getPosition(double * x, double * y, double * z);
};
Engine();
~Engine();
std::string locateResource(const std::string & shortname);
Video * getVideo() { return m_video; }
bool load(const char * program);
void run();
void reportErrors(int status);
OdeWorld & getWorld() { return m_world; }
int addObject(WFObj * obj);
Object * getObject(int id);
/* lua services */
int startFrame(lua_State * L);
int endFrame(lua_State * L);
int setCamera(lua_State * L);
protected:
void registerLibraries();
bool fileExists(const std::string & path);
lua_State * m_luaState;
Video * m_video;
std::string m_program_path;
OdeWorld m_world;
std::map<int, Object *> m_objects;
int m_next_object_index;
GLdouble m_eye[3];
GLdouble m_center[3];
GLdouble m_up[3];
};
extern Engine * g_engine;
#endif