Jelajahi Sumber

Add update_scene()

Daniele Bartolini 11 tahun lalu
induk
melakukan
8fb1d1ade4
3 mengubah file dengan 20 tambahan dan 4 penghapusan
  1. 9 0
      engine/lua/lua_world.cpp
  2. 8 4
      engine/world/world.cpp
  3. 3 0
      engine/world/world.h

+ 9 - 0
engine/lua/lua_world.cpp

@@ -105,6 +105,14 @@ static int world_update_animations(lua_State* L)
 	return 0;
 }
 
+//-----------------------------------------------------------------------------
+static int world_update_scene(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.get_world(1)->update_scene(stack.get_float(2));
+	return 0;
+}
+
 //-----------------------------------------------------------------------------
 static int world_update(lua_State* L)
 {
@@ -307,6 +315,7 @@ void load_world(LuaEnvironment& env)
 	env.load_module_function("World", "units",              world_units);
 
 	env.load_module_function("World", "update_animations",  world_update_animations);
+	env.load_module_function("World", "update_scene",       world_update_scene);
 	env.load_module_function("World", "update",             world_update);
 
 	env.load_module_function("World", "play_sound",			world_play_sound);

+ 8 - 4
engine/world/world.cpp

@@ -164,12 +164,9 @@ void World::update_animations(float dt)
 }
 
 //-----------------------------------------------------------------------------
-void World::update(float dt)
+void World::update_scene(float dt)
 {
-	update_animations(dt);
-
 	m_physics_world.update(dt);
-
 	m_scenegraph_manager.update();
 
 	for (uint32_t i = 0; i < id_array::size(m_units); i++)
@@ -182,6 +179,13 @@ void World::update(float dt)
 	process_physics_events();
 }
 
+//-----------------------------------------------------------------------------
+void World::update(float dt)
+{
+	update_animations(dt);
+	update_scene(dt);
+}
+
 //-----------------------------------------------------------------------------
 void World::render(Camera* camera)
 {

+ 3 - 0
engine/world/world.h

@@ -94,6 +94,9 @@ public:
 	/// Update all animations with @a dt.
 	void update_animations(float dt);
 
+	/// Update scene with @a dt.
+	void update_scene(float dt);
+
 	/// Updates all units and sub-systems with the given @a dt delta time.
 	void update(float dt);