source: 2011/23/sijoseha/SpaceWorld/SpaceWorld/SpaceWorld/WorldPoint.cs @ 2044

Revision 2044, 2.2 KB checked in by sijoseha, 9 years ago (diff)

asfd

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8namespace SpaceWorld
9{
10    public class WorldPoint
11    {
12        public Rectangle CollisionBoundaries { get; set; }
13        public Vector2 Position { get; set; }
14
15        private int radius = 1;
16        private int numberOfPoints = 24;
17
18        private VertexPositionColor[] vertices;
19        private int[] indices;
20
21        public WorldPoint(Vector2 position)
22        {
23            Position = position;
24            CollisionBoundaries = new Rectangle((int)Position.X - 5, (int)Position.Y - 5, radius*2, radius*2);
25            MakeVertices();
26            MakeIndices();
27        }
28
29        private void MakeVertices()
30        {
31            double radii = 2 * Math.PI / numberOfPoints;
32            vertices = new VertexPositionColor[numberOfPoints+1];
33
34            vertices[0].Position = new Vector3(Position.X, Position.Y, 0);
35            vertices[0].Color = Color.White;
36
37            for (int i = 1; i < vertices.Length; i++)
38            {
39                vertices[i].Position = new Vector3(radius * (float)Math.Sin(radii * i)+Position.X, radius * (float)Math.Cos(radii * i)+Position.Y, 0);
40                vertices[i].Color = Color.White;
41            }
42        }
43
44        private void MakeIndices()
45        {
46            //double radii = 2 * Math.PI / numberOfPoints;
47            indices = new int[(numberOfPoints+1) * 3];
48            int counter = 0;
49            for (int i = 0; i < numberOfPoints+1; i++)
50            {
51                int center = 0;
52                int first = i;
53                int second = i + 1;
54                if (second >= numberOfPoints+1)
55                    second = 1;
56
57                indices[counter++] = center;
58                indices[counter++] = first;
59                indices[counter++] = second;
60            }
61        }
62
63        public void Draw(GraphicsDevice device)
64        {
65            device.DrawUserIndexedPrimitives(PrimitiveType.TriangleList, vertices, 0, vertices.Length, indices, 0, vertices.Length);
66            //device.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, numberOfPoints/3);
67        }
68    }
69}
Note: See TracBrowser for help on using the repository browser.