Added Box2D
This commit is contained in:
187
external/Box2D-2.3.1/Contributions/Tests/Biped.cpp
vendored
Normal file
187
external/Box2D-2.3.1/Contributions/Tests/Biped.cpp
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
#include "Biped.h"
|
||||
#include "BipedDef.h"
|
||||
|
||||
Biped::Biped(b2World* w, const b2Vec2& position)
|
||||
{
|
||||
m_world = w;
|
||||
|
||||
BipedDef def;
|
||||
b2BodyDef bd;
|
||||
|
||||
// create body parts
|
||||
bd = def.LFootDef;
|
||||
bd.position += position;
|
||||
LFoot = w->CreateBody(&bd);
|
||||
LFoot->CreateFixture(&def.LFootPoly);
|
||||
LFoot->SetMassFromShapes();
|
||||
|
||||
bd = def.RFootDef;
|
||||
bd.position += position;
|
||||
RFoot = w->CreateBody(&bd);
|
||||
RFoot->CreateFixture(&def.RFootPoly);
|
||||
RFoot->SetMassFromShapes();
|
||||
|
||||
bd = def.LCalfDef;
|
||||
bd.position += position;
|
||||
LCalf = w->CreateBody(&bd);
|
||||
LCalf->CreateFixture(&def.LCalfPoly);
|
||||
LCalf->SetMassFromShapes();
|
||||
|
||||
bd = def.RCalfDef;
|
||||
bd.position += position;
|
||||
RCalf = w->CreateBody(&bd);
|
||||
RCalf->CreateFixture(&def.RCalfPoly);
|
||||
RCalf->SetMassFromShapes();
|
||||
|
||||
bd = def.LThighDef;
|
||||
bd.position += position;
|
||||
LThigh = w->CreateBody(&bd);
|
||||
LThigh->CreateFixture(&def.LThighPoly);
|
||||
LThigh->SetMassFromShapes();
|
||||
|
||||
bd = def.RThighDef;
|
||||
bd.position += position;
|
||||
RThigh = w->CreateBody(&bd);
|
||||
RThigh->CreateFixture(&def.RThighPoly);
|
||||
RThigh->SetMassFromShapes();
|
||||
|
||||
bd = def.PelvisDef;
|
||||
bd.position += position;
|
||||
Pelvis = w->CreateBody(&bd);
|
||||
Pelvis->CreateFixture(&def.PelvisPoly);
|
||||
Pelvis->SetMassFromShapes();
|
||||
|
||||
bd = def.StomachDef;
|
||||
bd.position += position;
|
||||
Stomach = w->CreateBody(&bd);
|
||||
Stomach->CreateFixture(&def.StomachPoly);
|
||||
Stomach->SetMassFromShapes();
|
||||
|
||||
bd = def.ChestDef;
|
||||
bd.position += position;
|
||||
Chest = w->CreateBody(&bd);
|
||||
Chest->CreateFixture(&def.ChestPoly);
|
||||
Chest->SetMassFromShapes();
|
||||
|
||||
bd = def.NeckDef;
|
||||
bd.position += position;
|
||||
Neck = w->CreateBody(&bd);
|
||||
Neck->CreateFixture(&def.NeckPoly);
|
||||
Neck->SetMassFromShapes();
|
||||
|
||||
bd = def.HeadDef;
|
||||
bd.position += position;
|
||||
Head = w->CreateBody(&bd);
|
||||
Head->CreateFixture(&def.HeadCirc);
|
||||
Head->SetMassFromShapes();
|
||||
|
||||
bd = def.LUpperArmDef;
|
||||
bd.position += position;
|
||||
LUpperArm = w->CreateBody(&bd);
|
||||
LUpperArm->CreateFixture(&def.LUpperArmPoly);
|
||||
LUpperArm->SetMassFromShapes();
|
||||
|
||||
bd = def.RUpperArmDef;
|
||||
bd.position += position;
|
||||
RUpperArm = w->CreateBody(&bd);
|
||||
RUpperArm->CreateFixture(&def.RUpperArmPoly);
|
||||
RUpperArm->SetMassFromShapes();
|
||||
|
||||
bd = def.LForearmDef;
|
||||
bd.position += position;
|
||||
LForearm = w->CreateBody(&bd);
|
||||
LForearm->CreateFixture(&def.LForearmPoly);
|
||||
LForearm->SetMassFromShapes();
|
||||
|
||||
bd = def.RForearmDef;
|
||||
bd.position += position;
|
||||
RForearm = w->CreateBody(&bd);
|
||||
RForearm->CreateFixture(&def.RForearmPoly);
|
||||
RForearm->SetMassFromShapes();
|
||||
|
||||
bd = def.LHandDef;
|
||||
bd.position += position;
|
||||
LHand = w->CreateBody(&bd);
|
||||
LHand->CreateFixture(&def.LHandPoly);
|
||||
LHand->SetMassFromShapes();
|
||||
|
||||
bd = def.RHandDef;
|
||||
bd.position += position;
|
||||
RHand = w->CreateBody(&bd);
|
||||
RHand->CreateFixture(&def.RHandPoly);
|
||||
RHand->SetMassFromShapes();
|
||||
|
||||
// link body parts
|
||||
def.LAnkleDef.body1 = LFoot;
|
||||
def.LAnkleDef.body2 = LCalf;
|
||||
def.RAnkleDef.body1 = RFoot;
|
||||
def.RAnkleDef.body2 = RCalf;
|
||||
def.LKneeDef.body1 = LCalf;
|
||||
def.LKneeDef.body2 = LThigh;
|
||||
def.RKneeDef.body1 = RCalf;
|
||||
def.RKneeDef.body2 = RThigh;
|
||||
def.LHipDef.body1 = LThigh;
|
||||
def.LHipDef.body2 = Pelvis;
|
||||
def.RHipDef.body1 = RThigh;
|
||||
def.RHipDef.body2 = Pelvis;
|
||||
def.LowerAbsDef.body1 = Pelvis;
|
||||
def.LowerAbsDef.body2 = Stomach;
|
||||
def.UpperAbsDef.body1 = Stomach;
|
||||
def.UpperAbsDef.body2 = Chest;
|
||||
def.LowerNeckDef.body1 = Chest;
|
||||
def.LowerNeckDef.body2 = Neck;
|
||||
def.UpperNeckDef.body1 = Chest;
|
||||
def.UpperNeckDef.body2 = Head;
|
||||
def.LShoulderDef.body1 = Chest;
|
||||
def.LShoulderDef.body2 = LUpperArm;
|
||||
def.RShoulderDef.body1 = Chest;
|
||||
def.RShoulderDef.body2 = RUpperArm;
|
||||
def.LElbowDef.body1 = LForearm;
|
||||
def.LElbowDef.body2 = LUpperArm;
|
||||
def.RElbowDef.body1 = RForearm;
|
||||
def.RElbowDef.body2 = RUpperArm;
|
||||
def.LWristDef.body1 = LHand;
|
||||
def.LWristDef.body2 = LForearm;
|
||||
def.RWristDef.body1 = RHand;
|
||||
def.RWristDef.body2 = RForearm;
|
||||
|
||||
// create joints
|
||||
LAnkle = (b2RevoluteJoint*)w->CreateJoint(&def.LAnkleDef);
|
||||
RAnkle = (b2RevoluteJoint*)w->CreateJoint(&def.RAnkleDef);
|
||||
LKnee = (b2RevoluteJoint*)w->CreateJoint(&def.LKneeDef);
|
||||
RKnee = (b2RevoluteJoint*)w->CreateJoint(&def.RKneeDef);
|
||||
LHip = (b2RevoluteJoint*)w->CreateJoint(&def.LHipDef);
|
||||
RHip = (b2RevoluteJoint*)w->CreateJoint(&def.RHipDef);
|
||||
LowerAbs = (b2RevoluteJoint*)w->CreateJoint(&def.LowerAbsDef);
|
||||
UpperAbs = (b2RevoluteJoint*)w->CreateJoint(&def.UpperAbsDef);
|
||||
LowerNeck = (b2RevoluteJoint*)w->CreateJoint(&def.LowerNeckDef);
|
||||
UpperNeck = (b2RevoluteJoint*)w->CreateJoint(&def.UpperNeckDef);
|
||||
LShoulder = (b2RevoluteJoint*)w->CreateJoint(&def.LShoulderDef);
|
||||
RShoulder = (b2RevoluteJoint*)w->CreateJoint(&def.RShoulderDef);
|
||||
LElbow = (b2RevoluteJoint*)w->CreateJoint(&def.LElbowDef);
|
||||
RElbow = (b2RevoluteJoint*)w->CreateJoint(&def.RElbowDef);
|
||||
LWrist = (b2RevoluteJoint*)w->CreateJoint(&def.LWristDef);
|
||||
RWrist = (b2RevoluteJoint*)w->CreateJoint(&def.RWristDef);
|
||||
}
|
||||
|
||||
|
||||
Biped::~Biped(void)
|
||||
{
|
||||
m_world->DestroyBody(LFoot);
|
||||
m_world->DestroyBody(RFoot);
|
||||
m_world->DestroyBody(LCalf);
|
||||
m_world->DestroyBody(RCalf);
|
||||
m_world->DestroyBody(LThigh);
|
||||
m_world->DestroyBody(RThigh);
|
||||
m_world->DestroyBody(Pelvis);
|
||||
m_world->DestroyBody(Stomach);
|
||||
m_world->DestroyBody(Chest);
|
||||
m_world->DestroyBody(Neck);
|
||||
m_world->DestroyBody(Head);
|
||||
m_world->DestroyBody(LUpperArm);
|
||||
m_world->DestroyBody(RUpperArm);
|
||||
m_world->DestroyBody(LForearm);
|
||||
m_world->DestroyBody(RForearm);
|
||||
m_world->DestroyBody(LHand);
|
||||
m_world->DestroyBody(RHand);
|
||||
}
|
||||
Reference in New Issue
Block a user