diff --git a/Engine.cc b/Engine.cc index 90f931b..6181fc2 100644 --- a/Engine.cc +++ b/Engine.cc @@ -33,6 +33,7 @@ Engine::Engine(const string & path) m_autoPhysics = true; m_autoStartFrame = true; m_autoEndFrame = true; + m_autoDrawObjects = true; size_t pos = path.find_last_of("\\/"); m_engine_path = (pos != string::npos) ? string(path, 0, pos) : "."; @@ -285,6 +286,8 @@ void Engine::update() { lua_pop(m_luaState, 1); } + if (m_autoDrawObjects) + drawObjects(); if (m_autoEndFrame) endFrame(); m_drawing = false; diff --git a/Engine.h b/Engine.h index 34e9862..d7e73af 100644 --- a/Engine.h +++ b/Engine.h @@ -60,12 +60,14 @@ class Engine Object * getObject(int id); void doPhysics(); void drawObjects(); - void setAutoPhysics(bool autoPhysics) { m_autoPhysics = autoPhysics; } + void setAutoPhysics(bool val) { m_autoPhysics = val; } bool getAutoPhysics() { return m_autoPhysics; } - void setAutoStartFrame(bool asf) { m_autoStartFrame = asf; } + void setAutoStartFrame(bool val) { m_autoStartFrame = val; } bool getAutoStartFrame() { return m_autoStartFrame; } - void setAutoEndFrame(bool asf) { m_autoEndFrame = asf; } + void setAutoEndFrame(bool val) { m_autoEndFrame = val; } bool getAutoEndFrame() { return m_autoEndFrame; } + void setAutoDrawObjects(bool val) { m_autoDrawObjects = val; } + bool getAutoDrawObjects() { return m_autoDrawObjects; } void startFrame(); void endFrame(); @@ -99,6 +101,7 @@ class Engine bool m_autoPhysics; bool m_autoStartFrame; bool m_autoEndFrame; + bool m_autoDrawObjects; }; extern Engine * g_engine; diff --git a/ag.cc b/ag.cc index b205e26..94da5db 100644 --- a/ag.cc +++ b/ag.cc @@ -35,6 +35,7 @@ namespace ag { "setAutoPhysics", setAutoPhysics }, { "setAutoStartFrame", setAutoStartFrame }, { "setAutoEndFrame", setAutoEndFrame }, + { "setAutoDrawObjects", setAutoDrawObjects }, { NULL, NULL } }; luaL_register(L, "ag", functions); @@ -260,6 +261,14 @@ namespace ag return 0; } + int setAutoDrawObjects(lua_State * L) + { + int argc = lua_gettop(L); + if (argc == 1 && lua_isboolean(L, 1)) + g_engine->setAutoDrawObjects(lua_toboolean(L, 1)); + return 0; + } + namespace object { static Engine::Object * getObject(lua_State * L, int index) diff --git a/ag.h b/ag.h index 333aae2..9fd8d02 100644 --- a/ag.h +++ b/ag.h @@ -21,6 +21,7 @@ namespace ag int setAutoPhysics(lua_State * L); int setAutoStartFrame(lua_State * L); int setAutoEndFrame(lua_State * L); + int setAutoDrawObjects(lua_State * L); namespace object { diff --git a/tests/ballstairs.lua b/tests/ballstairs.lua index 3919938..2014ed5 100755 --- a/tests/ballstairs.lua +++ b/tests/ballstairs.lua @@ -2,7 +2,6 @@ function update() ballx, bally, ballz = ball:getPosition() ag.setCamera(7, -6, 15, ballx, bally, ballz, 0, 0, 1) - ag.drawObjects() end --ag.setCamera(8, -8, 15, -8, 8, 4, 0, 0, 1)