Esempio n. 1
0
 public void LoadFromjObject(GLObject obj)
 {
     Position = obj.Position.Clone();
     Rotation = Rotation.Clone();
     Polygons = new List <GLPolygon>();
     foreach (var polygon in obj.Polygons)
     {
         Polygons.Add(polygon.Clone());
     }
 }
Esempio n. 2
0
        public static GLObject CreateFromPolygons(IEnumerable <GLPolygon> polygons)
        {
            var obj = new GLObject();

            foreach (var pol in polygons)
            {
                obj.Polygons.Add(pol);
            }

            return(obj);
        }
Esempio n. 3
0
        public static GLObject CreateFromPolygon(GLPolygon pol, string name)
        {
            var res = new GLObject()
            {
                Name = name
            };

            res.Polygons.Add(pol);

            return(res);
        }
Esempio n. 4
0
        public void LoadFromXmlDocument(Context context, XmlDocument xmlDoc)
        {
            var sceneNode = xmlDoc.SelectSingleNode("//scene");

            if (sceneNode != null)
            {
                var objs = sceneNode.SelectNodes("./obj");
                foreach (XmlElement objElement in objs)
                {
                    if ((objElement.HasAttribute("name")) && (objElement.GetAttribute("name") == "Observer"))
                    {
                        Observer.LoadFromXmlElement(context, objElement);
                    }
                    else
                    {
                        var obj = new GLObject();
                        obj.LoadFromXmlElement(context, objElement);

                        Objects.Add(obj);
                    }
                }

                var planets = sceneNode.SelectNodes("./planet");
                foreach (XmlElement planetNode in planets)
                {
                    var planet = new GLPlanet();
                    planet.LoadFromXmlElement(context, planetNode);

                    Objects.Add(planet);
                }

                var spaceShips = sceneNode.SelectNodes("./spaceShip");
                foreach (XmlElement spaceShipNode in spaceShips)
                {
                    var spaceShip = new GLSpaceShip();
                    spaceShip.LoadFromXmlElement(context, spaceShipNode);

                    Objects.Add(spaceShip);
                }

                var cubeNodes = sceneNode.SelectNodes("./cube");
                foreach (XmlElement cubeNode in cubeNodes)
                {
                    var cube = new GLCube();
                    cube.LoadFromXmlElement(context, cubeNode);

                    Objects.Add(cube);
                }
            }
        }
Esempio n. 5
0
        public void GenerateRingPolygon()
        {
            Ring = new GLObject();

            GLTexture ringTexture = null;

            if (RingTextureName != null)
            {
                ringTexture = GLTextureAdmin.GetTextureByName(RingTextureName);
            }

            var angleStep = 360.0 / (double)Slices;

            var c = new GLPoint(0, 0, 0);

            for (double i = 0; i <= 360; i += angleStep)
            {
                double ax = (Radius + 1) * Math.Cos(i * Math.PI / 180.0) + c.X;
                double az = (Radius + 1) * Math.Sin(i * Math.PI / 180.0) + c.Z;

                double bx = (Radius + 1 + RingSize) * Math.Cos(i * Math.PI / 180.0) + c.X;
                double bz = (Radius + 1 + RingSize) * Math.Sin(i * Math.PI / 180.0) + c.Z;

                double cx = (Radius + 1 + RingSize) * Math.Cos((i + angleStep) * Math.PI / 180.0) + c.X;
                double cz = (Radius + 1 + RingSize) * Math.Sin((i + angleStep) * Math.PI / 180.0) + c.Z;

                double dx = (Radius + 1) * Math.Cos((i + angleStep) * Math.PI / 180.0) + c.X;
                double dz = (Radius + 1) * Math.Sin((i + angleStep) * Math.PI / 180.0) + c.Z;

                var polygon = new GLPolygon();
                polygon.FillColor = RingFillColor;
                polygon.Texture   = ringTexture;

                polygon.Points.Add(new GLPoint(ax, c.Y, az));
                polygon.Points.Add(new GLPoint(bx, c.Y, bz));
                polygon.Points.Add(new GLPoint(cx, c.Y, cz));
                polygon.Points.Add(new GLPoint(dx, c.Y, dz));

                Ring.Polygons.Add(polygon);
            }
        }