Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp')
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index 687fc116234..486411d7e35 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -37,6 +37,7 @@ subject to the following restrictions:
#include "PHY_IMotionState.h"
+#include "PHY_ICharacter.h"
#include "KX_GameObject.h"
#include "RAS_MeshObject.h"
#include "RAS_Polygon.h"
@@ -266,6 +267,36 @@ public:
};
#endif //NEW_BULLET_VEHICLE_SUPPORT
+class CharacterWrapper : public PHY_ICharacter
+{
+private:
+ btKinematicCharacterController* m_controller;
+
+public:
+ CharacterWrapper(btKinematicCharacterController* cont)
+ : m_controller(cont)
+ {}
+
+ virtual void Jump()
+ {
+ m_controller->jump();
+ }
+
+ virtual bool OnGround()
+ {
+ return m_controller->onGround();
+ }
+
+ virtual float GetGravity()
+ {
+ return m_controller->getGravity();
+ }
+ virtual void SetGravity(float gravity)
+ {
+ m_controller->setGravity(gravity);
+ }
+};
+
class CcdOverlapFilterCallBack : public btOverlapFilterCallback
{
private:
@@ -2285,6 +2316,15 @@ PHY_IVehicle* CcdPhysicsEnvironment::getVehicleConstraint(int constraintId)
#endif //NEW_BULLET_VEHICLE_SUPPORT
+PHY_ICharacter* CcdPhysicsEnvironment::getCharacterController(KX_GameObject *ob)
+{
+ CcdPhysicsController* controller = (CcdPhysicsController*)ob->GetPhysicsController()->GetUserData();
+ if (controller->GetCharacterController())
+ return new CharacterWrapper(controller->GetCharacterController());
+
+ return NULL;
+}
+
int currentController = 0;
int numController = 0;