public override void Render() { var pts = Bounds.ToArray(); var canPts = new VectorGroup(pts[0], pts[1], pts[4], pts[3], pts[0], pts[4], pts[1], pts[2], pts[3]); View.FillPolygon(new VectorGroup(pts).Move(Position), color, false); View.DrawPolygon(canPts.Move(Position), Color.Black, false, 2); }
public override void Render(IFrame frame, TankState state) { var body = bodyVGroup .Move(Origin) .Rotate(Vector.Zero, state.Rotation) .Move(state.Position); var head = headVGroup .Move(Origin) .Rotate(Vector.Zero, state.GunRotation - 90f) .Move(state.Position); frame.FillPolygon(body, Color.DarkOliveGreen, false); frame.FillPolygon(head, Color.YellowGreen, false); frame.FillCircle(state.Position, 3, Color.Brown); /*foreach (var (points, turnRatio) in wheesMeta) * foreach (var p in points) * { * var wheel = wheelVGroup.Rotate(Vector.Zero, SteerAngle * turnRatio).Move(Origin).Move(p) * .Rotate(Vector.Zero, Rotation).Move(Position); * * if (Abs(overload) > 0.95f) * { * View.MarkSlip(wheel); * } * * View.FillPolygon(wheel, Color.Black, true); * } * * VectorGroup Prepare(VectorGroup vg) => * vg.Move(Origin).Rotate(Vector.Zero, Rotation).Move(Position); * * var headPoints = Prepare(headVGroup); * * var bodyPoints = Prepare(bodyVGroup); * * View.FillPolygon(bodyPoints, Color.White, false); * View.DrawPolygon(bodyPoints, Color.Black, false); * * var fuelRatio = Fuel / MaxFuel; * * View.FillPolygon(headPoints, Color.FromArgb( * (int) (255 - ((255 - headColor.R) * fuelRatio)), * (int) (255 - ((255 - headColor.G) * fuelRatio)), * (int) (255 - ((255 - headColor.B) * fuelRatio))), * true); * * View.DrawPolygon(headPoints, Color.Black, true);*/ }