void setupWorld(XmlElement gameobject) { worldmgr = new WorldManager(); worldmgr.parentScene = this; worldmgr.name = gameobject.GetAttribute("wname"); foreach (XmlElement child in gameobject.ChildNodes) { if (child.GetAttribute("name") == "Terrain") { worldmgr.terrainName = child.SelectSingleNode("name").InnerText; string[] ssize = child.SelectSingleNode("size").InnerText.Split(new char[] { ' ' }); worldmgr.size.x = float.Parse(ssize[0]); worldmgr.size.y = float.Parse(ssize[1]); worldmgr.size.z = float.Parse(ssize[2]); worldmgr.chunkSplit = int.Parse(child.SelectSingleNode("splitSize").InnerText); worldmgr.chunkSize = worldmgr.size.x / worldmgr.chunkSplit; Common.DEBUG_MSG("name:" + worldmgr.name + ", worldsize:" + worldmgr.size + ", splitChunks:" + worldmgr.chunkSplit + ", chunkSize:" + (worldmgr.size.x / worldmgr.chunkSplit)); foreach (XmlElement tchild in child.SelectSingleNode("splatprotos").ChildNodes) { KeyValuePair <string, string> p = new KeyValuePair <string, string>(tchild.GetAttribute("texture"), tchild.GetAttribute("normalMap")); worldmgr.load_splatPrototypes.Add(p); KeyValuePair <Vector2, Vector2> p1 = new KeyValuePair <Vector2, Vector2>( new Vector2( float.Parse(tchild.GetAttribute("tileSizeX")), float.Parse(tchild.GetAttribute("tileSizeY"))), new Vector2( float.Parse(tchild.GetAttribute("tileOffsetX")), float.Parse(tchild.GetAttribute("tileOffsetY"))) ); worldmgr.splatPrototypes_titlesizeoffset.Add(p1); Common.DEBUG_MSG("set load splatPrototype:" + tchild.GetAttribute("texture")); } foreach (XmlElement tchild in child.SelectSingleNode("treePrototypes").ChildNodes) { worldmgr.load_treePrototypes.Add(tchild.GetAttribute("prefab")); Common.DEBUG_MSG("set load treePrototype:" + tchild.GetAttribute("prefab")); } foreach (XmlElement tchild in child.SelectSingleNode("detailPrototypes").ChildNodes) { worldmgr.load_detailPrototypes.Add(tchild.GetAttribute("prefab")); Common.DEBUG_MSG("set load detailPrototype:" + tchild.GetAttribute("prefab")); } worldmgr.createWorldObjs(); } else { WorldSceneObject obj = new WorldSceneObject(); Asset newasset = findAsset(child.GetAttribute("asset"), true, child.GetAttribute("layer")); Vector3 pos = Vector3.zero; Vector3 rot = Vector3.zero; Vector3 sca = Vector3.zero; XmlNode gameobjectpos = child.SelectSingleNode("transform").SelectSingleNode("position"); XmlNode gameobjectrot = child.SelectSingleNode("transform").SelectSingleNode("rotation"); XmlNode gameobjectsca = child.SelectSingleNode("transform").SelectSingleNode("scale"); pos.x = float.Parse(gameobjectpos.SelectSingleNode("x").InnerText); pos.y = float.Parse(gameobjectpos.SelectSingleNode("y").InnerText); pos.z = float.Parse(gameobjectpos.SelectSingleNode("z").InnerText); rot.x = float.Parse(gameobjectrot.SelectSingleNode("x").InnerText); rot.y = float.Parse(gameobjectrot.SelectSingleNode("y").InnerText); rot.z = float.Parse(gameobjectrot.SelectSingleNode("z").InnerText); sca.x = float.Parse(gameobjectsca.SelectSingleNode("x").InnerText); sca.y = float.Parse(gameobjectsca.SelectSingleNode("y").InnerText); sca.z = float.Parse(gameobjectsca.SelectSingleNode("z").InnerText); obj.name = child.GetAttribute("name"); obj.position = pos; obj.eulerAngles = rot; obj.scale = sca; obj.idkey = child.GetAttribute("id"); obj.asset = newasset; newasset.loading = false; newasset.type = Asset.TYPE.WORLD_OBJ; newasset.loadLevel = Asset.LOAD_LEVEL.LEVEL_SCRIPT_DYNAMIC; // newasset.refs.Add(obj.idkey); WorldManager.ChunkPos chunkpos = WorldManager.calcAtChunk(pos.x, pos.z, worldmgr.chunkSplit, worldmgr.chunkSize); worldmgr.worldObjs[chunkpos.x, chunkpos.y, 0].Add(obj); } } worldmgr.load(); }
void setupWorld(XmlElement gameobject) { worldmgr = new WorldManager(); worldmgr.parentScene = this; worldmgr.name = gameobject.GetAttribute("wname"); foreach(XmlElement child in gameobject.ChildNodes) { if(child.GetAttribute("name") == "Terrain") { worldmgr.terrainName = child.SelectSingleNode("name").InnerText; string[] ssize = child.SelectSingleNode("size").InnerText.Split(new char[]{' '}); worldmgr.size.x = float.Parse(ssize[0]); worldmgr.size.y = float.Parse(ssize[1]); worldmgr.size.z = float.Parse(ssize[2]); worldmgr.chunkSplit = int.Parse(child.SelectSingleNode("splitSize").InnerText); worldmgr.chunkSize = worldmgr.size.x / worldmgr.chunkSplit; Common.DEBUG_MSG("name:" + worldmgr.name + ", worldsize:" + worldmgr.size + ", splitChunks:" + worldmgr.chunkSplit + ", chunkSize:" + (worldmgr.size.x / worldmgr.chunkSplit)); foreach(XmlElement tchild in child.SelectSingleNode("splatprotos").ChildNodes) { KeyValuePair<string, string> p = new KeyValuePair<string, string>(tchild.GetAttribute("texture"), tchild.GetAttribute("normalMap")); worldmgr.load_splatPrototypes.Add(p); KeyValuePair<Vector2, Vector2> p1 = new KeyValuePair<Vector2, Vector2>( new Vector2( float.Parse(tchild.GetAttribute("tileSizeX")), float.Parse(tchild.GetAttribute("tileSizeY"))), new Vector2( float.Parse(tchild.GetAttribute("tileOffsetX")), float.Parse(tchild.GetAttribute("tileOffsetY"))) ); worldmgr.splatPrototypes_titlesizeoffset.Add(p1); Common.DEBUG_MSG("set load splatPrototype:" + tchild.GetAttribute("texture")); } foreach(XmlElement tchild in child.SelectSingleNode("treePrototypes").ChildNodes) { worldmgr.load_treePrototypes.Add(tchild.GetAttribute("prefab")); Common.DEBUG_MSG("set load treePrototype:" + tchild.GetAttribute("prefab")); } foreach(XmlElement tchild in child.SelectSingleNode("detailPrototypes").ChildNodes) { worldmgr.load_detailPrototypes.Add(tchild.GetAttribute("prefab")); Common.DEBUG_MSG("set load detailPrototype:" + tchild.GetAttribute("prefab")); } worldmgr.createWorldObjs(); } else { WorldSceneObject obj = new WorldSceneObject(); Asset newasset = findAsset(child.GetAttribute("asset"), true, child.GetAttribute("layer")); Vector3 pos = Vector3.zero; Vector3 rot = Vector3.zero; Vector3 sca = Vector3.zero; XmlNode gameobjectpos = child.SelectSingleNode("transform").SelectSingleNode("position"); XmlNode gameobjectrot = child.SelectSingleNode("transform").SelectSingleNode("rotation"); XmlNode gameobjectsca = child.SelectSingleNode("transform").SelectSingleNode("scale"); pos.x = float.Parse(gameobjectpos.SelectSingleNode("x").InnerText); pos.y = float.Parse(gameobjectpos.SelectSingleNode("y").InnerText); pos.z = float.Parse(gameobjectpos.SelectSingleNode("z").InnerText); rot.x = float.Parse(gameobjectrot.SelectSingleNode("x").InnerText); rot.y = float.Parse(gameobjectrot.SelectSingleNode("y").InnerText); rot.z = float.Parse(gameobjectrot.SelectSingleNode("z").InnerText); sca.x = float.Parse(gameobjectsca.SelectSingleNode("x").InnerText); sca.y = float.Parse(gameobjectsca.SelectSingleNode("y").InnerText); sca.z = float.Parse(gameobjectsca.SelectSingleNode("z").InnerText); obj.name = child.GetAttribute("name"); obj.position = pos; obj.eulerAngles = rot; obj.scale = sca; obj.idkey = child.GetAttribute("id"); obj.asset = newasset; newasset.loading = false; newasset.type = Asset.TYPE.WORLD_OBJ; newasset.loadLevel = Asset.LOAD_LEVEL.LEVEL_SCRIPT_DYNAMIC; // newasset.refs.Add(obj.idkey); WorldManager.ChunkPos chunkpos = WorldManager.calcAtChunk(pos.x, pos.z, worldmgr.chunkSplit, worldmgr.chunkSize); worldmgr.worldObjs[chunkpos.x, chunkpos.y, 0].Add(obj); } } worldmgr.load(); }