소스 검색

add controller callback to controller desk

mikymod 12 년 전
부모
커밋
10710cb2fe
2개의 변경된 파일9개의 추가작업 그리고 0개의 파일을 삭제
  1. 4 0
      engine/physics/Controller.cpp
  2. 5 0
      engine/physics/Controller.h

+ 4 - 0
engine/physics/Controller.cpp

@@ -30,6 +30,7 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "PhysicsResource.h"
 #include "SceneGraph.h"
 #include "Vector3.h"
+#include "PhysicsCallback.h"
 
 #include "PxCapsuleController.h"
 using physx::PxCapsuleClimbingMode;
@@ -68,6 +69,8 @@ Controller::Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node,
 	desc.position = PxExtendedVec3(0, 0, 0);
 
 	CE_ASSERT(desc.isValid(), "Capsule is not valid");
+	m_callback = CE_NEW(default_allocator(), PhysicsControllerCallback)();
+	desc.callback = m_callback;
 
 	m_controller = manager->createController(*device()->physx(), scene, desc);
 	CE_ASSERT(m_controller, "Failed to create controller");
@@ -76,6 +79,7 @@ Controller::Controller(const PhysicsResource* pr, SceneGraph& sg, int32_t node,
 //-----------------------------------------------------------------------------
 Controller::~Controller()
 {
+	CE_DELETE(default_allocator(), m_callback);
 	m_controller->release();
 }
 

+ 5 - 0
engine/physics/Controller.h

@@ -24,6 +24,8 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 */
 
+#pragma once
+
 #include "PxController.h"
 #include "PxControllerManager.h"
 
@@ -38,6 +40,7 @@ namespace crown
 struct PhysicsResource;
 struct Vector3;
 class SceneGraph;
+class PhysicsControllerCallback;
 
 struct Controller
 {
@@ -63,6 +66,8 @@ private:
 	PxControllerManager*	m_manager;
 	PxController*			m_controller;
 	PxU32					m_flags;
+
+	PhysicsControllerCallback* m_callback;
 };
 
 } // namespace crown