Exemple #1
0
        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;
        }
Exemple #2
0
        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);
        }