Explorar o código

Update Controller according to latest PhysX changes

Daniele Bartolini %!s(int64=12) %!d(string=hai) anos
pai
achega
95f51f730f
Modificáronse 2 ficheiros con 14 adicións e 11 borrados
  1. 10 8
      engine/physics/Controller.cpp
  2. 4 3
      engine/physics/Controller.h

+ 10 - 8
engine/physics/Controller.cpp

@@ -46,11 +46,10 @@ namespace crown
 {
 {
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-Controller::Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node, PxPhysics* physics, PxScene* scene, PxControllerManager* manager)
+Controller::Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node, PxPhysics* physics, PxControllerManager* manager)
 	: m_resource(pr)
 	: m_resource(pr)
 	, m_scene_graph(sg)
 	, m_scene_graph(sg)
 	, m_node(node)
 	, m_node(node)
-	, m_scene(scene)
 	, m_manager(manager)
 	, m_manager(manager)
 	, m_controller(NULL)
 	, m_controller(NULL)
 {
 {
@@ -67,29 +66,32 @@ Controller::Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node,
 	desc.upDirection = PxVec3(0.0, 1.0, 0.0);
 	desc.upDirection = PxVec3(0.0, 1.0, 0.0);
 	desc.material = physics->createMaterial(0.5f, 0.5f, 0.5f);
 	desc.material = physics->createMaterial(0.5f, 0.5f, 0.5f);
 	desc.position = PxExtendedVec3(0, 0, 0);
 	desc.position = PxExtendedVec3(0, 0, 0);
-
+	desc.reportCallback = &m_callback;
 	CE_ASSERT(desc.isValid(), "Capsule is not valid");
 	CE_ASSERT(desc.isValid(), "Capsule is not valid");
-	m_callback = CE_NEW(default_allocator(), PhysicsControllerCallback)();
-	desc.callback = m_callback;
 
 
-	m_controller = manager->createController(*physics, scene, desc);
+	m_controller = manager->createController(desc);
 	CE_ASSERT(m_controller, "Failed to create controller");
 	CE_ASSERT(m_controller, "Failed to create controller");
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 Controller::~Controller()
 Controller::~Controller()
 {
 {
-	CE_DELETE(default_allocator(), m_callback);
 	m_controller->release();
 	m_controller->release();
 }
 }
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 void Controller::move(const Vector3& pos)
 void Controller::move(const Vector3& pos)
 {
 {
-	PxVec3 disp(pos.x, pos.y, pos.z);
+	const PxVec3 disp(pos.x, pos.y, pos.z);
 	m_flags = m_controller->move(disp, 0.001, 1.0 / 60.0, PxControllerFilters());
 	m_flags = m_controller->move(disp, 0.001, 1.0 / 60.0, PxControllerFilters());
 }
 }
 
 
+//-----------------------------------------------------------------------------
+void Controller::set_height(float height)
+{
+	m_controller->resize(height);
+}
+
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 Vector3 Controller::position() const
 Vector3 Controller::position() const
 {
 {

+ 4 - 3
engine/physics/Controller.h

@@ -28,6 +28,7 @@ OTHER DEALINGS IN THE SOFTWARE.
 
 
 #include "PxController.h"
 #include "PxController.h"
 #include "PxControllerManager.h"
 #include "PxControllerManager.h"
+#include "PhysicsCallback.h"
 
 
 using physx::PxController;
 using physx::PxController;
 using physx::PxControllerManager;
 using physx::PxControllerManager;
@@ -45,10 +46,11 @@ class PhysicsControllerCallback;
 
 
 struct Controller
 struct Controller
 {
 {
-							Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node, PxPhysics* physics, PxScene* scene, PxControllerManager* manager);
+							Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node, PxPhysics* physics, PxControllerManager* manager);
 							~Controller();
 							~Controller();
 
 
 	void					move(const Vector3& pos);
 	void					move(const Vector3& pos);
+	void					set_height(float height);
 
 
 	bool					collides_up() const;
 	bool					collides_up() const;
 	bool					collides_down() const;
 	bool					collides_down() const;
@@ -63,12 +65,11 @@ private:
 
 
 	SceneGraph&				m_scene_graph;
 	SceneGraph&				m_scene_graph;
 	int32_t					m_node;
 	int32_t					m_node;
-	PxScene*				m_scene;
 	PxControllerManager*	m_manager;
 	PxControllerManager*	m_manager;
 	PxController*			m_controller;
 	PxController*			m_controller;
 	PxU32					m_flags;
 	PxU32					m_flags;
 
 
-	PhysicsControllerCallback* m_callback;
+	PhysicsControllerCallback m_callback;
 };
 };
 
 
 } // namespace crown
 } // namespace crown