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