Browse Source

BtPhysTest : Splitted Physics files

legacy
Benjamin ‘Touky’ Huet touky 12 years ago
parent
commit
ca94a77974
12 changed files with 388 additions and 244 deletions
  1. +2
    -2
      test/BtPhysTest.cpp
  2. +9
    -7
      test/BtPhysTest.vcxproj
  3. +27
    -9
      test/BtPhysTest.vcxproj.filters
  4. +3
    -1
      test/PhysicObject.h
  5. +82
    -0
      test/Physics/Include/EasyCharacterController.h
  6. +4
    -142
      test/Physics/Include/EasyConstraint.h
  7. +128
    -0
      test/Physics/Include/EasyPhysics.h
  8. +0
    -0
      test/Physics/Include/LolBtPhysicsIntegration.h
  9. +1
    -0
      test/Physics/Include/LolPhysics.h
  10. +92
    -0
      test/Physics/Src/EasyCharacterController.cpp
  11. +38
    -0
      test/Physics/Src/EasyConstraint.cpp
  12. +2
    -83
      test/Physics/Src/EasyPhysics.cpp

+ 2
- 2
test/BtPhysTest.cpp View File

@@ -37,8 +37,8 @@ using namespace lol;
#define HAVE_PHYS_USE_BULLET
#endif /* HAVE_PHYS_USE_BULLET */

#include "Physics/LolPhysics.h"
#include "Physics/EasyPhysics.h"
#include "Physics/Include/LolPhysics.h"
#include "Physics/Include/EasyPhysics.h"
#include "PhysicObject.h"
#include "BtPhysTest.h"



+ 9
- 7
test/BtPhysTest.vcxproj View File

@@ -37,21 +37,23 @@
<ItemGroup>
<ClInclude Include="BtPhysTest.h" />
<ClInclude Include="PhysicObject.h" />
<ClInclude Include="Physics\EasyPhysics.h" />
<ClInclude Include="Physics\LolBtPhysicsIntegration.h" />
<ClInclude Include="Physics\LolPhysics.h" />
<ClInclude Include="Physics\Include\EasyCharacterController.h" />
<ClInclude Include="Physics\Include\EasyConstraint.h" />
<ClInclude Include="Physics\Include\EasyPhysics.h" />
<ClInclude Include="Physics\Include\LolBtPhysicsIntegration.h" />
<ClInclude Include="Physics\Include\LolPhysics.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="BtPhysTest.cpp" />
<ClCompile Include="Physics\EasyPhysics.cpp" />
<ClCompile Include="Physics\Src\EasyCharacterController.cpp" />
<ClCompile Include="Physics\Src\EasyConstraint.cpp" />
<ClCompile Include="Physics\Src\EasyPhysics.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)\..\..\src\lolcore.vcxproj">
<Project>{9e62f2fe-3408-4eae-8238-fd84238ceeda}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{ee203b88-44cf-4859-9d42-7a1f43fecb52}</ProjectGuid>
<ConfigurationType>Application</ConfigurationType>
@@ -72,4 +74,4 @@
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\Lol.Fx.targets" />
</ImportGroup>
</Project>
</Project>

+ 27
- 9
test/BtPhysTest.vcxproj.filters View File

@@ -2,21 +2,33 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="BtPhysTest.h" />
<ClInclude Include="Physics\EasyPhysics.h">
<Filter>Physics</Filter>
<ClInclude Include="PhysicObject.h" />
<ClInclude Include="Physics\Include\EasyCharacterController.h">
<Filter>Physics\Include</Filter>
</ClInclude>
<ClInclude Include="Physics\LolPhysics.h">
<Filter>Physics</Filter>
<ClInclude Include="Physics\Include\LolPhysics.h">
<Filter>Physics\Include</Filter>
</ClInclude>
<ClInclude Include="Physics\LolBtPhysicsIntegration.h">
<Filter>Physics</Filter>
<ClInclude Include="Physics\Include\EasyConstraint.h">
<Filter>Physics\Include</Filter>
</ClInclude>
<ClInclude Include="Physics\Include\EasyPhysics.h">
<Filter>Physics\Include</Filter>
</ClInclude>
<ClInclude Include="Physics\Include\LolBtPhysicsIntegration.h">
<Filter>Physics\Include</Filter>
</ClInclude>
<ClInclude Include="PhysicObject.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="BtPhysTest.cpp" />
<ClCompile Include="Physics\EasyPhysics.cpp">
<Filter>Physics</Filter>
<ClCompile Include="Physics\Src\EasyCharacterController.cpp">
<Filter>Physics\Src</Filter>
</ClCompile>
<ClCompile Include="Physics\Src\EasyConstraint.cpp">
<Filter>Physics\Src</Filter>
</ClCompile>
<ClCompile Include="Physics\Src\EasyPhysics.cpp">
<Filter>Physics\Src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
@@ -26,5 +38,11 @@
<Filter Include="Physics">
<UniqueIdentifier>{ccecd634-9321-4c49-9471-e9da50dda6d3}</UniqueIdentifier>
</Filter>
<Filter Include="Physics\Include">
<UniqueIdentifier>{ef37a177-b550-435b-bfb1-a09ca8059137}</UniqueIdentifier>
</Filter>
<Filter Include="Physics\Src">
<UniqueIdentifier>{7e5d19e0-b2be-46cc-8fa4-f582ecb4318d}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

+ 3
- 1
test/PhysicObject.h View File

@@ -13,7 +13,9 @@

#include "core.h"
#include "easymesh/easymesh.h"
#include "Physics/EasyPhysics.h"
#include "Physics/Include/EasyPhysics.h"
#include "Physics/Include/EasyCharacterController.h"
#include "Physics/Include/EasyConstraint.h"

using namespace lol;
using namespace lol::phys;


+ 82
- 0
test/Physics/Include/EasyCharacterController.h View File

@@ -0,0 +1,82 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
// (c) 2009-2012 Benjamin Huet <huet.benjamin@gmail.com>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/projects/COPYING.WTFPL for more details.
//

//
// The EasyPhysic class
// ------------------
//

#if !defined __EASYCHARACTERCONTROLLER_EASYCHARACTERCONTROLLER_H__
#define __EASYCHARACTERCONTROLLER_EASYCHARACTERCONTROLLER_H__

#ifdef HAVE_PHYS_USE_BULLET
#include "core.h"
#include "EasyPhysics.h"
#include <BulletDynamics/Character/btKinematicCharacterController.h>
#endif

namespace lol
{

namespace phys
{

class EasyCharacterController : public EasyPhysic
{

#ifdef HAVE_PHYS_USE_BULLET

public:
EasyCharacterController() :
EasyPhysic(),
m_character(NULL)
{
m_up_axis = 1;
}
~EasyCharacterController()
{
delete m_character;
}

virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
virtual void InitBodyToGhost();
virtual void AddToSimulation(class Simulation* current_simulation);
virtual void RemoveFromSimulation(class Simulation* current_simulation);
virtual void SetMovementForFrame(vec3 const &MoveQuantity);

protected:

virtual btGhostObject* GetGhostObject();

btPairCachingGhostObject* m_pair_caching_object;
btKinematicCharacterController* m_character;

float m_step_height;
int m_up_axis;

#else // NO PHYSIC IMPLEMENTATION

virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false) { }
virtual void InitBodyToGhost() { }
virtual void AddToSimulation(class Simulation* current_simulation) { }
virtual void RemoveFromSimulation(class Simulation* current_simulation) { }
virtual void SetMovementForFrame(vec3 const &MoveQuantity) { }

#endif // PHYSIC IMPLEMENTATION

};

} /* namespace phys */

} /* namespace lol */

#endif /* __EASYCHARACTERCONTROLLER_EASYCHARACTERCONTROLLER_H__ */


test/Physics/EasyPhysics.h → test/Physics/Include/EasyConstraint.h View File

@@ -14,15 +14,12 @@
// ------------------
//

#if !defined __EASYPHYSICS_EASYPHYSICS_H__
#define __EASYPHYSICS_EASYPHYSICS_H__
#if !defined __EASYCONSTRAINT_EASYCONSTRAINT_H__
#define __EASYCONSTRAINT_EASYCONSTRAINT_H__

#ifdef HAVE_PHYS_USE_BULLET
#include "core.h"
#include <bullet/btBulletDynamicsCommon.h>
#include <bullet/btBulletCollisionCommon.h>
#include <bullet/BulletCollision/CollisionDispatch/btGhostObject.h>
#include <BulletDynamics/Character/btKinematicCharacterController.h>
#include "EasyPhysics.h"
#endif

namespace lol
@@ -31,141 +28,6 @@ namespace lol
namespace phys
{

class EasyPhysic
{

friend class EasyConstraint;

#ifdef HAVE_PHYS_USE_BULLET

public:
EasyPhysic();
~EasyPhysic();

virtual void SetShapeToBox(lol::vec3& box_size);
virtual void SetShapeToSphere(float radius);
virtual void SetShapeToCone(float radius, float height);
virtual void SetShapeToCylinder(lol::vec3& cyl_size);
virtual void SetShapeToCapsule(float radius, float height);

virtual bool CanChangeCollisionChannel() { return (m_rigid_body == NULL); }
virtual void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f)));
virtual void SetMass(float mass);
virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
virtual void InitBodyToGhost();
virtual void AddToSimulation(class Simulation* current_simulation);
virtual void RemoveFromSimulation(class Simulation* current_simulation);
virtual mat4 GetTransform();

protected:
virtual void SetLocalInertia(float mass);
virtual void SetShapeTo(btCollisionShape* collision_shape);

virtual btGhostObject* GetGhostObject();

btCollisionObject* m_collision_object;

btGhostObject* m_ghost_object;

btRigidBody* m_rigid_body;
btVector3 m_local_inertia;

btCollisionShape* m_collision_shape;
btConvexShape* m_convex_shape;
btMotionState* m_motion_state;

#else // NO PHYSIC IMPLEMENTATION

public:
EasyPhysic() { }

virtual void SetShapeToBox(lol::vec3& BoxSize) { }
virtual void SetShapeToSphere(float radius) { }
virtual void SetShapeToCone(float radius, float height) { }
virtual void SetShapeToCylinder(lol::vec3& cyl_size) { }
virtual void SetShapeToCapsule(float radius, float height) { }

virtual bool CanChangeCollisionChannel() { return true; }
virtual void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f))) { }
virtual void SetMass(float mass) { }
virtual void InitBodyToRigid() { }
virtual void InitBodyToGhost() { }
virtual void AddToSimulation(class Simulation* current_simulation) { }
virtual void RemoveFromSimulation(class Simulation* current_simulation) { }
virtual mat4 GetTransform() { return mat4(1.0f); }

virtual void InitBodyToGhost() { }

#endif // PHYSIC IMPLEMENTATION

public:
//Sets the collision Group & Mask.
//Mask can change at runtime, not group !
virtual bool SetCollisionChannel(int NewGroup, int NewMask)
{
if (CanChangeCollisionChannel())
{
m_collision_group = (1<<NewGroup);
m_collision_mask = NewMask;
return true;
}
return false;
}
int GetCollisionGroup() { return m_collision_group; }
int GetCollisionMask() { return m_collision_mask; }

protected:
lol::mat4 m_local_to_world;
float m_mass;
int m_collision_group;
int m_collision_mask;
};

class EasyCharacterController : public EasyPhysic
{

#ifdef HAVE_PHYS_USE_BULLET

public:
EasyCharacterController() :
EasyPhysic(),
m_character(NULL)
{
m_up_axis = 1;
}
~EasyCharacterController()
{
delete m_character;
}

virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
virtual void InitBodyToGhost();
virtual void AddToSimulation(class Simulation* current_simulation);
virtual void RemoveFromSimulation(class Simulation* current_simulation);
virtual void SetMovementForFrame(vec3 const &MoveQuantity);

protected:

virtual btGhostObject* GetGhostObject();

btPairCachingGhostObject* m_pair_caching_object;
btKinematicCharacterController* m_character;

float m_step_height;
int m_up_axis;

#else // NO PHYSIC IMPLEMENTATION

virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false) { }
virtual void InitBodyToGhost() { }
virtual void AddToSimulation(class Simulation* current_simulation) { }
virtual void RemoveFromSimulation(class Simulation* current_simulation) { }
virtual void SetMovementForFrame(vec3 const &MoveQuantity) { }

#endif // PHYSIC IMPLEMENTATION

};

class EasyConstraint
{
#ifdef HAVE_PHYS_USE_BULLET
@@ -344,5 +206,5 @@ private:

} /* namespace lol */

#endif /* __EASYPHYSICS_EASYPHYSICS_H__ */
#endif /* __EASYCONSTRAINT_EASYCONSTRAINT_H__ */


+ 128
- 0
test/Physics/Include/EasyPhysics.h View File

@@ -0,0 +1,128 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
// (c) 2009-2012 Benjamin Huet <huet.benjamin@gmail.com>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/projects/COPYING.WTFPL for more details.
//

//
// The EasyPhysic class
// ------------------
//

#if !defined __EASYPHYSICS_EASYPHYSICS_H__
#define __EASYPHYSICS_EASYPHYSICS_H__

#ifdef HAVE_PHYS_USE_BULLET
#include "core.h"
#include <bullet/btBulletDynamicsCommon.h>
#include <bullet/btBulletCollisionCommon.h>
#include <bullet/BulletCollision/CollisionDispatch/btGhostObject.h>
#endif

namespace lol
{

namespace phys
{

class EasyPhysic
{

friend class EasyConstraint;

#ifdef HAVE_PHYS_USE_BULLET

public:
EasyPhysic();
~EasyPhysic();

virtual void SetShapeToBox(lol::vec3& box_size);
virtual void SetShapeToSphere(float radius);
virtual void SetShapeToCone(float radius, float height);
virtual void SetShapeToCylinder(lol::vec3& cyl_size);
virtual void SetShapeToCapsule(float radius, float height);

virtual bool CanChangeCollisionChannel() { return (m_rigid_body == NULL); }
virtual void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f)));
virtual void SetMass(float mass);
virtual void InitBodyToRigid(bool ZeroMassIsKinematic=false);
virtual void InitBodyToGhost();
virtual void AddToSimulation(class Simulation* current_simulation);
virtual void RemoveFromSimulation(class Simulation* current_simulation);
virtual mat4 GetTransform();

protected:
virtual void SetLocalInertia(float mass);
virtual void SetShapeTo(btCollisionShape* collision_shape);

virtual btGhostObject* GetGhostObject();

btCollisionObject* m_collision_object;

btGhostObject* m_ghost_object;

btRigidBody* m_rigid_body;
btVector3 m_local_inertia;

btCollisionShape* m_collision_shape;
btConvexShape* m_convex_shape;
btMotionState* m_motion_state;

#else // NO PHYSIC IMPLEMENTATION

public:
EasyPhysic() { }

virtual void SetShapeToBox(lol::vec3& BoxSize) { }
virtual void SetShapeToSphere(float radius) { }
virtual void SetShapeToCone(float radius, float height) { }
virtual void SetShapeToCylinder(lol::vec3& cyl_size) { }
virtual void SetShapeToCapsule(float radius, float height) { }

virtual bool CanChangeCollisionChannel() { return true; }
virtual void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f))) { }
virtual void SetMass(float mass) { }
virtual void InitBodyToRigid() { }
virtual void InitBodyToGhost() { }
virtual void AddToSimulation(class Simulation* current_simulation) { }
virtual void RemoveFromSimulation(class Simulation* current_simulation) { }
virtual mat4 GetTransform() { return mat4(1.0f); }

virtual void InitBodyToGhost() { }

#endif // PHYSIC IMPLEMENTATION

public:
//Sets the collision Group & Mask.
//Mask can change at runtime, not group !
virtual bool SetCollisionChannel(int NewGroup, int NewMask)
{
if (CanChangeCollisionChannel())
{
m_collision_group = (1<<NewGroup);
m_collision_mask = NewMask;
return true;
}
return false;
}
int GetCollisionGroup() { return m_collision_group; }
int GetCollisionMask() { return m_collision_mask; }

protected:
lol::mat4 m_local_to_world;
float m_mass;
int m_collision_group;
int m_collision_mask;
};

} /* namespace phys */

} /* namespace lol */

#endif /* __EASYPHYSICS_EASYPHYSICS_H__ */


test/Physics/LolBtPhysicsIntegration.h → test/Physics/Include/LolBtPhysicsIntegration.h View File


test/Physics/LolPhysics.h → test/Physics/Include/LolPhysics.h View File

@@ -13,6 +13,7 @@
#include <bullet/btBulletCollisionCommon.h>
#include "LolBtPhysicsIntegration.h"
#include "EasyPhysics.h"
#include "EasyConstraint.h"
#endif

namespace lol

+ 92
- 0
test/Physics/Src/EasyCharacterController.cpp View File

@@ -0,0 +1,92 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2012 Sam Hocevar <sam@hocevar.net>
// (c) 2009-2012 Cédric Lecacheur <jordx@free.fr>
// (c) 2009-2012 Benjamin Huet <huet.benjamin@gmail.com>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/projects/COPYING.WTFPL for more details.
//

#if defined HAVE_CONFIG_H
# include "config.h"
#endif

#include "../Include/LolBtPhysicsIntegration.h"
#include "../Include/LolPhysics.h"
#include "../Include/EasyCharacterController.h"

namespace lol
{

namespace phys
{

#ifdef HAVE_PHYS_USE_BULLET

//-------------------------------------------------------------------------
//EASY_CHARACTER_CONTROLLER
//--

//Deactivated for Character controller
void EasyCharacterController::InitBodyToRigid(bool ZeroMassIsKinematic)
{
}

//Return correct Ghost Object
btGhostObject* EasyCharacterController::GetGhostObject()
{
return new btPairCachingGhostObject();
}

//Init to Pair caching ghost object, since Character uses that one.
void EasyCharacterController::InitBodyToGhost()
{
EasyPhysic::InitBodyToGhost();

m_pair_caching_object = (btPairCachingGhostObject*)m_ghost_object;
m_ghost_object->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT | m_ghost_object->getCollisionFlags());
}

//Add Physic object to the simulation
void EasyCharacterController::AddToSimulation(class Simulation* current_simulation)
{
EasyPhysic::AddToSimulation(current_simulation);

btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world)
{
if (m_character)
delete m_character;

m_character = new btKinematicCharacterController(m_pair_caching_object, m_convex_shape, m_step_height, m_up_axis);
dynamics_world->addAction(m_character);
}
}

//Remove Physic object to the simulation
void EasyCharacterController::RemoveFromSimulation(class Simulation* current_simulation)
{
EasyPhysic::RemoveFromSimulation(current_simulation);

btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world)
{
if (m_character)
dynamics_world->removeAction(m_character);
}
}

//Set movement for this frame
void EasyCharacterController::SetMovementForFrame(vec3 const &MoveQuantity)
{
m_character->setWalkDirection(LOL2BT_VEC3(MoveQuantity));
}

#endif // HAVE_PHYS_USE_BULLET

} /* namespace phys */

} /* namespace lol */

+ 38
- 0
test/Physics/Src/EasyConstraint.cpp View File

@@ -0,0 +1,38 @@
#include "../Include/LolBtPhysicsIntegration.h"
#include "../Include/LolPhysics.h"
#include "../Include/EasyConstraint.h"

namespace lol
{

namespace phys
{

#ifdef HAVE_PHYS_USE_BULLET

//-------------------------------------------------------------------------
//EASY_CONSTRAINT
//--

void EasyConstraint::AddToSimulation(class Simulation* current_simulation)
{
btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world && m_typed_constraint)
{
dynamics_world->addConstraint(m_typed_constraint, m_disable_a2b_collision);
current_simulation->AddToConstraint(this);
}
}

void EasyConstraint::RemoveFromSimulation(class Simulation* current_simulation)
{
btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world, m_typed_constraint)
dynamics_world->removeConstraint(m_typed_constraint);
}

#endif // HAVE_PHYS_USE_BULLET

} /* namespace phys */

} /* namespace lol */

test/Physics/EasyPhysics.cpp → test/Physics/Src/EasyPhysics.cpp View File

@@ -14,8 +14,8 @@
# include "config.h"
#endif

#include "LolBtPhysicsIntegration.h"
#include "LolPhysics.h"
#include "../Include/LolBtPhysicsIntegration.h"
#include "../Include/LolPhysics.h"

namespace lol
{
@@ -254,87 +254,6 @@ void EasyPhysic::SetLocalInertia(float mass)
m_local_inertia = btVector3(.0f, .0f, .0f);
}

//-------------------------------------------------------------------------
//EASY_CHARACTER_CONTROLLER
//--

//Deactivated for Character controller
void EasyCharacterController::InitBodyToRigid(bool ZeroMassIsKinematic)
{
}

//Return correct Ghost Object
btGhostObject* EasyCharacterController::GetGhostObject()
{
return new btPairCachingGhostObject();
}

//Init to Pair caching ghost object, since Character uses that one.
void EasyCharacterController::InitBodyToGhost()
{
EasyPhysic::InitBodyToGhost();

m_pair_caching_object = (btPairCachingGhostObject*)m_ghost_object;
m_ghost_object->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT | m_ghost_object->getCollisionFlags());
}

//Add Physic object to the simulation
void EasyCharacterController::AddToSimulation(class Simulation* current_simulation)
{
EasyPhysic::AddToSimulation(current_simulation);

btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world)
{
if (m_character)
delete m_character;

m_character = new btKinematicCharacterController(m_pair_caching_object, m_convex_shape, m_step_height, m_up_axis);
dynamics_world->addAction(m_character);
}
}

//Remove Physic object to the simulation
void EasyCharacterController::RemoveFromSimulation(class Simulation* current_simulation)
{
EasyPhysic::RemoveFromSimulation(current_simulation);

btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world)
{
if (m_character)
dynamics_world->removeAction(m_character);
}
}

//Set movement for this frame
void EasyCharacterController::SetMovementForFrame(vec3 const &MoveQuantity)
{
m_character->setWalkDirection(LOL2BT_VEC3(MoveQuantity));
}


//-------------------------------------------------------------------------
//EASY_CONSTRAINT
//--

void EasyConstraint::AddToSimulation(class Simulation* current_simulation)
{
btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world && m_typed_constraint)
{
dynamics_world->addConstraint(m_typed_constraint, m_disable_a2b_collision);
current_simulation->AddToConstraint(this);
}
}

void EasyConstraint::RemoveFromSimulation(class Simulation* current_simulation)
{
btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
if (dynamics_world, m_typed_constraint)
dynamics_world->removeConstraint(m_typed_constraint);
}

#endif // HAVE_PHYS_USE_BULLET

} /* namespace phys */

Loading…
Cancel
Save