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()); } }
public static GLObject CreateFromPolygons(IEnumerable <GLPolygon> polygons) { var obj = new GLObject(); foreach (var pol in polygons) { obj.Polygons.Add(pol); } return(obj); }
public static GLObject CreateFromPolygon(GLPolygon pol, string name) { var res = new GLObject() { Name = name }; res.Polygons.Add(pol); return(res); }
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); } } }
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); } }