瀏覽代碼

Do not draw when physics simulation is being updated. This triggers all sort of random behaviours when trying to switch form a world to another

Daniele Bartolini 11 年之前
父節點
當前提交
e48846ab75
共有 3 個文件被更改,包括 10 次插入0 次删除
  1. 4 0
      engine/physics/PhysicsWorld.cpp
  2. 4 0
      engine/physics/PhysicsWorld.h
  3. 2 0
      engine/world/World.cpp

+ 4 - 0
engine/physics/PhysicsWorld.cpp

@@ -464,7 +464,11 @@ void PhysicsWorld::update(float dt)
 	{
 		m_controllers[i]->update();
 	}
+}
 
+//-----------------------------------------------------------------------------
+void PhysicsWorld::draw_debug()
+{
 	#if defined(CROWN_DEBUG) || defined(CROWN_DEVELOPMENT)
 		if (g_physics_debug)
 			physics_system::draw_debug_lines(m_scene, *m_debug_line);

+ 4 - 0
engine/physics/PhysicsWorld.h

@@ -107,8 +107,12 @@ public:
 	void overlap_test(CollisionType::Enum filter, ShapeType::Enum type,
 						const Vector3& pos, const Quaternion& rot, const Vector3& size, Array<Actor*>& actors);
 
+	/// Updates the physics simulation.
 	void update(float dt);
 
+	/// Draws debug lines.
+	void draw_debug();
+
 	Actor* lookup_actor(ActorId id);
 	Controller* lookup_controller(ControllerId id);
 	Raycast* lookup_raycast(RaycastId id);

+ 2 - 0
engine/world/World.cpp

@@ -183,6 +183,8 @@ void World::render(Camera* camera)
 {
 	m_render_world.update(camera->world_pose(), camera->m_projection, camera->m_view_x, camera->m_view_y,
 							camera->m_view_width, camera->m_view_height, device()->last_delta_time());
+
+	m_physics_world.draw_debug();
 }
 
 //-----------------------------------------------------------------------------