public Circle(UnitCircle type, Color color, float radius, Vector2 position) { // Properties this.radius = radius; this.pos = position; if (type == UnitCircle.Point16) { lines = new VertexPositionColor[17]; vertices = new VertexPositionColor[16]; triangles = 14; preCalc = PreCalc.Point16UnitCircle; } else { lines = new VertexPositionColor[9]; vertices = new VertexPositionColor[8]; triangles = 6; preCalc = PreCalc.Point8UnitCircle; } // Give each vertex a color for (int i = 0; i < vertices.Length; i++) { vertices[i].Color = color; } // Give each line vertex the color black for (int i = 0; i < lines.Length; i++) { lines[i].Color = Color.Black; } // Positionate each vertex UpdateVertices(); }
public Paddle(PhysicalScene scene, Texture2D texture) : base(scene) { this.Texture = texture; origin = new Vector2(Texture.Width / 2, Texture.Height / 2); DrawColor = Color.MidnightBlue; var unitCircle = new UnitCircle(); //Body = BodyFactory.CreateRoundedRectangle(scene.World, // ConvertUnits.ToSimUnits(texture.Width) * physicalScale.X, 0.35f, // ConvertUnits.ToSimUnits(texture.Height) * physicalScale.Y, 0.15f, // 10, 1f); Body = BodyFactory.CreateSolidArc(scene.World, 2f, (float)Math.PI / 2.6f, 24, 1.8f, Vector2.UnitY * 1.6f, (float)Math.PI); Body.BodyType = BodyType.Kinematic; Body.Restitution = 1f; Body.Friction = 0f; scene.Input.OnKeyHoldDown += new KeyboardEvent(onKeyHoldDown); Body.UserData = this; }
public Metroid(PhysicalScene scene, Texture2D texture) : base(scene, ConvertUnits.ToSimUnits(texture.Width / 2)) { this.Texture = texture; origin = new Vector2(Texture.Width / 2, Texture.Height / 2); unitCircle = new UnitCircle(); Body.IgnoreGravity = true; Body.BodyType = BodyType.Dynamic; Body.Mass = 1f; Body.Friction = 0.25f; Body.Restitution = 0.75f; Body.AngularDamping = 0.075f; scene.Input.OnKeyDown += new KeyboardEvent(onKeyDown); scene.Input.OnMiddleClickDown += new MouseEvent(onMiddleClickDown); Body.UserData = this; }
public static List<Metroid> MetroidColumn(PhysicalScene scene, int numberOfMetroids, Vector2 startingPosition, int pixelsApart) { var spawnPositions = VectorStructures.Column(numberOfMetroids, startingPosition, pixelsApart); var metroidList = new List<Metroid>((int)numberOfMetroids); var unitCircle = new UnitCircle(); int radiusIndex = 2; foreach (Vector2 spawnPosition in spawnPositions) { var m = ItemFactory.CreateMetroid(scene, spawnPosition); m.MotionRadius.X = (float)unitCircle.RadiansList.Values[radiusIndex]; metroidList.Add(m); radiusIndex += 2; } return metroidList; }