1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 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->CreateShape(&def.LFootPoly);
LFoot->SetMassFromShapes();
bd = def.RFootDef;
bd.position += position;
RFoot = w->CreateBody(&bd);
RFoot->CreateShape(&def.RFootPoly);
RFoot->SetMassFromShapes();
bd = def.LCalfDef;
bd.position += position;
LCalf = w->CreateBody(&bd);
LCalf->CreateShape(&def.LCalfPoly);
LCalf->SetMassFromShapes();
bd = def.RCalfDef;
bd.position += position;
RCalf = w->CreateBody(&bd);
RCalf->CreateShape(&def.RCalfPoly);
RCalf->SetMassFromShapes();
bd = def.LThighDef;
bd.position += position;
LThigh = w->CreateBody(&bd);
LThigh->CreateShape(&def.LThighPoly);
LThigh->SetMassFromShapes();
bd = def.RThighDef;
bd.position += position;
RThigh = w->CreateBody(&bd);
RThigh->CreateShape(&def.RThighPoly);
RThigh->SetMassFromShapes();
bd = def.PelvisDef;
bd.position += position;
Pelvis = w->CreateBody(&bd);
Pelvis->CreateShape(&def.PelvisPoly);
Pelvis->SetMassFromShapes();
bd = def.PelvisDef;
bd.position += position;
Stomach = w->CreateBody(&bd);
Stomach->CreateShape(&def.StomachPoly);
Stomach->SetMassFromShapes();
bd = def.ChestDef;
bd.position += position;
Chest = w->CreateBody(&bd);
Chest->CreateShape(&def.ChestPoly);
Chest->SetMassFromShapes();
bd = def.NeckDef;
bd.position += position;
Neck = w->CreateBody(&bd);
Neck->CreateShape(&def.NeckPoly);
Neck->SetMassFromShapes();
bd = def.HeadDef;
bd.position += position;
Head = w->CreateBody(&bd);
Head->CreateShape(&def.HeadCirc);
Head->SetMassFromShapes();
bd = def.LUpperArmDef;
bd.position += position;
LUpperArm = w->CreateBody(&bd);
LUpperArm->CreateShape(&def.LUpperArmPoly);
LUpperArm->SetMassFromShapes();
bd = def.RUpperArmDef;
bd.position += position;
RUpperArm = w->CreateBody(&bd);
RUpperArm->CreateShape(&def.RUpperArmPoly);
RUpperArm->SetMassFromShapes();
bd = def.LForearmDef;
bd.position += position;
LForearm = w->CreateBody(&bd);
LForearm->CreateShape(&def.LForearmPoly);
LForearm->SetMassFromShapes();
bd = def.RForearmDef;
bd.position += position;
RForearm = w->CreateBody(&bd);
RForearm->CreateShape(&def.RForearmPoly);
RForearm->SetMassFromShapes();
bd = def.LHandDef;
bd.position += position;
LHand = w->CreateBody(&bd);
LHand->CreateShape(&def.LHandPoly);
LHand->SetMassFromShapes();
bd = def.RHandDef;
bd.position += position;
RHand = w->CreateBody(&bd);
RHand->CreateShape(&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);
}
|