#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); }