protected OgreMesh processEntity(XmlElement XMLNode) { // Process attributes String name = XML.GetAttrib(XMLNode, "name"); String userDataID = XML.GetAttrib(XMLNode, "id"); String meshFile = XML.GetAttrib(XMLNode, "meshFile") + ".xml"; bool bstatic = XML.GetAttribBool(XMLNode, "static", false); if (bstatic) { StaticObjects.Add(name); } else { DynamicObjects.Add(name); } bool bvisible = XML.GetAttribBool(XMLNode, "visible", true); bool bcastshadows = XML.GetAttribBool(XMLNode, "castShadows", true); float brenderingDistance = XML.GetAttribFloat(XMLNode, "renderingDistance", 0); meshFile = Settings.ModelDir + dir + meshFile; OgreMesh mesh; try { mesh = new OgreMesh(name, meshFile); if (name.StartsWith("Path_")) { return(null); // pathia ei lisätä sceneen } mesh.Visible = bvisible; mesh.CastShadow = bcastshadows; mesh.UserDataID = userDataID; XmlElement pElement; // Process subentities pElement = (XmlElement)XMLNode.SelectSingleNode("subentities"); if (pElement != null) { pElement = (XmlElement)pElement.FirstChild; while (pElement != null) { mesh.MaterialName = XML.GetAttrib(pElement, "materialName"); mesh.Material = Material.GetMaterial(mesh.MaterialName); pElement = (XmlElement)pElement.NextSibling; } } return(mesh); } catch (Exception e) { Log.Error("Error loading " + meshFile + "\n" + e.Message); } return(null); }
void processSubmesh(XmlElement XMLNode, Node pParent, bool path) { XmlElement pElement; if (path == false) { if (MaterialName == "") { MaterialName = XML.GetAttrib(XMLNode, "material"); Material = Material.GetMaterial(MaterialName); } pElement = (XmlElement)XMLNode.SelectSingleNode("faces"); if (pElement != null) { processFaces(pElement); } } pElement = (XmlElement)XMLNode.SelectSingleNode("geometry"); if (pElement != null) { processGeometry(pElement, path); } }
/// <summary> /// lataa skybox (ei cubemap). skyName on nimen alkuosa eli esim plainsky_ jos tiedostot on plainsky_front.jpg, plainsky_back.jpg jne /// ext on tiedoston pääte eli esim jpg, dds /// </summary> public static Sky Load(string skyName, string ext) { Sky sky = new Sky(); string[] sideStr = { "top", "bottom", "left", "right", "front", "back" }; Node skyNode = new Node(); DotScene ds = DotScene.Load("sky/sky.scene", skyNode); int side = 0; TextureLoaderParameters.WrapModeS = TextureWrapMode.ClampToEdge; TextureLoaderParameters.WrapModeT = TextureWrapMode.ClampToEdge; TextureLoaderParameters.FlipImages = false; skyNode.GetList(true); for (int q = 0; q < ObjList.Count; q++) { OgreMesh m = ObjList[q] as OgreMesh; if (m != null) { sky.skyboxSides[side] = m; m.Boundings = null; m.CastShadow = false; string fileName = skyName + sideStr[side] + "." + ext; m.MaterialName = fileName; m.Material = Material.GetMaterial(fileName + "_material"); m.Material.Textures[Settings.COLOR_TEXUNIT].Tex = Texture.Load(m.MaterialName); side++; } } TextureLoaderParameters.FlipImages = true; TextureLoaderParameters.WrapModeS = TextureWrapMode.Repeat; TextureLoaderParameters.WrapModeT = TextureWrapMode.Repeat; return(sky); }