Browse Source

Clear per-frame lua objects

Daniele Bartolini 12 years ago
parent
commit
4bbfef0cc1
3 changed files with 14 additions and 0 deletions
  1. 3 0
      engine/Device.cpp
  2. 9 0
      engine/lua/LuaStack.cpp
  3. 2 0
      engine/lua/LuaStack.h

+ 3 - 0
engine/Device.cpp

@@ -55,6 +55,7 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "RPCServer.h"
 #include "SoundRenderer.h"
 #include "World.h"
+#include "LuaStack.h"
 
 #if defined(LINUX) || defined(WINDOWS)
 	#include "BundleCompiler.h"
@@ -417,6 +418,8 @@ void Device::frame()
 
 	m_rpc->execute_callbacks();
 
+	clear_lua_temporaries();
+
 	m_frame_count++;
 }
 

+ 9 - 0
engine/lua/LuaStack.cpp

@@ -82,6 +82,15 @@ static Quaternion* next_quat(const Quaternion& q)
 	return &(g_quat_buffer[g_quat_used++] = q);
 }
 
+//-----------------------------------------------------------------------------
+void clear_lua_temporaries()
+{
+	g_vec2_used = 0;
+	g_vec3_used = 0;
+	g_mat4_used = 0;
+	g_quat_used = 0;
+}
+
 //-----------------------------------------------------------------------------
 Vector2& LuaStack::get_vector2(int32_t index)
 {

+ 2 - 0
engine/lua/LuaStack.h

@@ -41,6 +41,8 @@ class Camera;
 class World;
 class Mesh;
 
+void clear_lua_temporaries();
+
 class LuaStack
 {
 public: