Beispiel #1
0
        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();
        }
Beispiel #2
0
        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;
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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;
        }