Explorar el Código

Skeleton for EasyCharacterController

legacy
Benjamin ‘Touky’ Huet touky hace 12 años
padre
commit
4b358e6042
Se han modificado 2 ficheros con 92 adiciones y 31 borrados
  1. +34
    -0
      test/Physics/EasyPhysics.cpp
  2. +58
    -31
      test/Physics/EasyPhysics.h

+ 34
- 0
test/Physics/EasyPhysics.cpp Ver fichero

@@ -197,6 +197,7 @@ void EasyPhysic::AddToSimulation(class Simulation* current_simulation)
}
}

//Remove Physic object to the simulation
void EasyPhysic::RemoveFromSimulation(class Simulation* current_simulation)
{
btDiscreteDynamicsWorld* dynamics_world = current_simulation->GetWorld();
@@ -236,6 +237,39 @@ void EasyPhysic::SetLocalInertia(float mass)
m_local_inertia = btVector3(.0f, .0f, .0f);
}

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

void EasyCharacterController::SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation)
{

}
void EasyCharacterController::SetMass(float mass)
{

}
void EasyCharacterController::InitBodyToRigid(bool ZeroMassIsKinematic)
{

}
void EasyCharacterController::InitBodyToGhost()
{
//btCollisionObject::CF_CHARACTER_OBJECT
}
void EasyCharacterController::AddToSimulation(class Simulation* current_simulation)
{

}
void EasyCharacterController::RemoveFromSimulation(class Simulation* current_simulation)
{

}
mat4 EasyCharacterController::GetTransform()
{
mat4(1.f);
}

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


+ 58
- 31
test/Physics/EasyPhysics.h Ver fichero

@@ -41,24 +41,24 @@ public:
EasyPhysic();
~EasyPhysic();

void SetShapeToBox(lol::vec3& box_size);
void SetShapeToSphere(float radius);
void SetShapeToCone(float radius, float height);
void SetShapeToCylinder(lol::vec3& cyl_size);
void SetShapeToCapsule(float radius, float height);
bool CanChangeCollisionChannel() { return (m_rigid_body == NULL); }
void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f)));
void SetMass(float mass);
void InitBodyToRigid(bool ZeroMassIsKinematic=false);
void InitBodyToGhost();
void AddToSimulation(class Simulation* current_simulation);
void RemoveFromSimulation(class Simulation* current_simulation);
mat4 GetTransform();
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:
void SetLocalInertia(float mass);
void SetShapeTo(btCollisionShape* collision_shape);
virtual void SetLocalInertia(float mass);
virtual void SetShapeTo(btCollisionShape* collision_shape);

btCollisionObject* m_collision_object;

@@ -75,27 +75,27 @@ protected:
public:
EasyPhysic() { }

void SetShapeToBox(lol::vec3& BoxSize) { }
void SetShapeToSphere(float radius) { }
void SetShapeToCone(float radius, float height) { }
void SetShapeToCylinder(lol::vec3& cyl_size) { }
void SetShapeToCapsule(float radius, float height) { }
bool CanChangeCollisionChannel() { return true; }
void SetTransform(const lol::vec3& base_location, const lol::quat& base_rotation=lol::quat(lol::mat4(1.0f))) { }
void SetMass(float mass) { }
void InitBodyToRigid() { }
void InitBodyToGhost() { }
void AddToSimulation(class Simulation* current_simulation) { }
void RemoveFromSimulation(class Simulation* current_simulation) { }
mat4 GetTransform() { return mat4(1.0f); }
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); }

#endif // PHYSIC IMPLEMENTATION

public:
//Sets the collision Group & Mask.
//Mask can change at runtime, not group !
bool SetCollisionChannel(int NewGroup, int NewMask)
virtual bool SetCollisionChannel(int NewGroup, int NewMask)
{
if (CanChangeCollisionChannel())
{
@@ -115,6 +115,33 @@ protected:
int m_collision_mask;
};

class EasyCharacterController : public EasyPhysic
{

#ifdef HAVE_PHYS_USE_BULLET

public:
EasyCharacterController();
~EasyCharacterController();

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:

btPairCachingGhostObject* m_pair_caching_object;

#else // NO PHYSIC IMPLEMENTATION

#endif // PHYSIC IMPLEMENTATION

};

class EasyConstraint
{
#ifdef HAVE_PHYS_USE_BULLET


Cargando…
Cancelar
Guardar