public Robot(float px, float py, float scale, float power) { // legs legLA = new Leg(px, py, -1, scale, 2, unchecked((int) 0xFF444444), unchecked((int) 0xFF222222)); legRA = new Leg(px, py, 1, scale, 2, 0x444444, 0x222222); legLB = new Leg(px, py, -1, scale, 2, 0x666666, 0x444444); legRB = new Leg(px, py, 1, scale, 2, 0x666666, 0x444444); legLC = new Leg(px, py, -1, scale, 2, 0x888888, 0x666666); legRC = new Leg(px, py, 1, scale, 2, 0x888888, 0x666666); // body body = new Body(legLA.Fix, legRA.Fix, (int) (30 * scale), 2, 0x336699); // motor motor = new Motor(body.Center, 8 * scale, 0x336699); // connect the body to the legs SpringConstraint connLA = new SpringConstraint(body.Left, legLA.Fix, 1); SpringConstraint connRA = new SpringConstraint(body.Right, legRA.Fix, 1); SpringConstraint connLB = new SpringConstraint(body.Left, legLB.Fix, 1); SpringConstraint connRB = new SpringConstraint(body.Right, legRB.Fix, 1); SpringConstraint connLC = new SpringConstraint(body.Left, legLC.Fix, 1); SpringConstraint connRC = new SpringConstraint(body.Right, legRC.Fix, 1); // connect the legs to the motor legLA.Cam.Position = motor.RimA.Position; legRA.Cam.Position = motor.RimA.Position; SpringConstraint connLAA = new SpringConstraint(legLA.Cam, motor.RimA, 1); SpringConstraint connRAA = new SpringConstraint(legRA.Cam, motor.RimA, 1); legLB.Cam.Position = motor.RimB.Position; legRB.Cam.Position = motor.RimB.Position; SpringConstraint connLBB = new SpringConstraint(legLB.Cam, motor.RimB, 1); SpringConstraint connRBB = new SpringConstraint(legRB.Cam, motor.RimB, 1); legLC.Cam.Position = motor.RimC.Position; legRC.Cam.Position = motor.RimC.Position; SpringConstraint connLCC = new SpringConstraint(legLC.Cam, motor.RimC, 1); SpringConstraint connRCC = new SpringConstraint(legRC.Cam, motor.RimC, 1); connLAA.SetLine(2, 0x999999); connRAA.SetLine(2, 0x999999); connLBB.SetLine(2, 0x999999); connRBB.SetLine(2, 0x999999); connLCC.SetLine(2, 0x999999); connRCC.SetLine(2, 0x999999); // add to the engine this.Composites.Add(legLA); this.Composites.Add(legRA); this.Composites.Add(legLB); this.Composites.Add(legRB); this.Composites.Add(legLC); this.Composites.Add(legRC); this.Composites.Add(body); this.Composites.Add(motor); this.Constraints.Add(connLA); this.Constraints.Add(connRA); this.Constraints.Add(connLB); this.Constraints.Add(connRB); this.Constraints.Add(connLC); this.Constraints.Add(connRC); this.Constraints.Add(connLAA); this.Constraints.Add(connRAA); this.Constraints.Add(connLBB); this.Constraints.Add(connRBB); this.Constraints.Add(connLCC); this.Constraints.Add(connRCC); direction = -1; powerLevel = power; powered = true; legsVisible = true; }
public Body( AbstractParticle left, AbstractParticle right, int height, float lineWeight, int lineColor) { float cpx = (right.PX + left.PX) / 2; float cpy = right.PY; rgt = new CircleParticle(right.PX, right.PY, 1); rgt.SetStyle(3, lineColor, lineColor); lft = new CircleParticle(left.PX, left.PY, 1); lft.SetStyle(3, lineColor, lineColor); ctr = new CircleParticle(cpx, cpy, 1); ctr.Visible = false; top = new CircleParticle(cpx, cpy - height / 2, 1); top.Visible = false; bot = new CircleParticle(cpx, cpy + height / 2, 1); bot.Visible = false; // outer constraints SpringConstraint tr = new SpringConstraint(top, rgt, 1); tr.Visible = false; SpringConstraint rb = new SpringConstraint(rgt, bot, 1); rb.Visible = false; SpringConstraint bl = new SpringConstraint(bot, lft, 1); bl.Visible = false; SpringConstraint lt = new SpringConstraint(lft, top, 1); lt.Visible = false; // inner constrainst SpringConstraint ct = new SpringConstraint(top, this.Center, 1); ct.Visible = false; SpringConstraint cr = new SpringConstraint(rgt, this.Center, 1); cr.SetLine(lineWeight, lineColor); SpringConstraint cb = new SpringConstraint(bot, this.Center, 1); cb.Visible = false; SpringConstraint cl = new SpringConstraint(lft, this.Center, 1); cl.SetLine(lineWeight, lineColor); ctr.Collidable = false; top.Collidable = false; rgt.Collidable = false; bot.Collidable = false; lft.Collidable = false; this.Particles.Add(ctr); this.Particles.Add(top); this.Particles.Add(rgt); this.Particles.Add(bot); this.Particles.Add(lft); this.Constraints.Add(tr); this.Constraints.Add(rb); this.Constraints.Add(bl); this.Constraints.Add(lt); this.Constraints.Add(ct); this.Constraints.Add(cr); this.Constraints.Add(cb); this.Constraints.Add(cl); }