public void ReadScene(string SceneName) { WaterSize = 0; try { // GeoTools.Log(Application.dataPath); if (!File.Exists(GeoTools.ScenePath + SceneName + ".txt")) { GeoTools.Log("Error! Scene File not exists!"); return; } StreamReader srd = File.OpenText(GeoTools.ScenePath + SceneName + ".txt"); while (srd.Peek() != -1) { string str = srd.ReadLine(); string[] chara = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (chara.Length > 2) { #region Water if (chara[0] == "MWater" || chara[0] == "Mwater") { if (chara[1] == "size") { this.WaterSize = Convert.ToInt32(chara[2]); LoadWater(); } if (chara[1] == "watertemp") { if (Convert.ToInt32(chara[2]) == 0) { gameObject.GetComponent <Prop>().WaterTemp.SetActive(false); } else { gameObject.GetComponent <Prop>().WaterTemp.SetActive(true); } } } else if (chara[0] == "Water") { int i = Convert.ToInt32(chara[1]); if (chara[2] == "mesh") { Mwater[i].GetComponent <MeshFilter>().mesh = GeoTools.MeshFromObj(chara[3]); } else if (chara[2] == "wmesh") { Mwater[i].GetComponent <MeshFilter>().mesh = GeoTools.WMeshFromObj(chara[3]); } else if (chara[2] == "scale") { Mwater[i].transform.localScale = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "location") { Mwater[i].transform.localPosition = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "meshcollider") { Mwater[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.MeshFromObj(chara[3]); Mwater[i].GetComponent <MeshCollider>().convex = true; Mwater[i].GetComponent <MeshCollider>().isTrigger = true; } else if (chara[2] == "wmeshcollider") { Mwater[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.WMeshFromObj(chara[3]); Mwater[i].GetComponent <MeshCollider>().convex = true; Mwater[i].GetComponent <MeshCollider>().isTrigger = true; } } #endregion } } srd.Close(); GeoTools.Log("ReadWater Completed!"); } catch (Exception ex) { GeoTools.Log("Error! ReadWater Failed!"); GeoTools.Log(ex.ToString()); return; } }
public void ReadScene(string SceneName) { try { //GeoTools.Log(Application.dataPath); if (!File.Exists(ScenePath + SceneName + ".txt")) { GeoTools.Log("Error! Scene File not exists!"); return; } StreamReader srd = File.OpenText(ScenePath + SceneName + ".txt"); while (srd.Peek() != -1) { string str = srd.ReadLine(); string[] chara = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (chara.Length > 2) { #region Triggers if (chara[0] == "Triggers") { if (chara[1] == "size") { this.TriggerSize = Convert.ToInt32(chara[2]); this.gameObject.GetComponent <TimeUI>().TriggerSize = TriggerSize; LoadTrigger(); } } else if (chara[0] == "Trigger") { int i = Convert.ToInt32(chara[1]); if (chara[2] == "mesh") { meshtriggers[i].GetComponent <MeshFilter>().mesh = GeoTools.MeshFromObj(chara[3]); } else if (chara[2] == "wmesh") { meshtriggers[i].GetComponent <MeshFilter>().mesh = GeoTools.WMeshFromObj(chara[3]); } else if (chara[2] == "scale") { meshtriggers[i].transform.localScale = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "location") { meshtriggers[i].transform.localPosition = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "rotation") { meshtriggers[i].transform.rotation = new Quaternion( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "eulerangles") { meshtriggers[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.Self); } else if (chara[2] == "euleranglesworld") { meshtriggers[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.World); } else if (chara[2] == "fromtorotation") { meshtriggers[i].transform.rotation = Quaternion.FromToRotation( new Vector3(Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), new Vector3(Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]), Convert.ToSingle(chara[8])) ); } else if (chara[2] == "shader") { meshtriggers[i].GetComponent <MeshRenderer>().material.shader = Shader.Find("chara[3]"); } else if (chara[2] == "texture") { meshtriggers[i].GetComponent <MeshRenderer>().material.mainTexture = GeoTools.LoadTexture(chara[3]); } else if (chara[2] == "stexture") { meshtriggers[i].GetComponent <MeshRenderer>().sharedMaterial.mainTexture = GeoTools.LoadTexture(chara[3]); } else if (chara[2] == "color") { meshtriggers[i].GetComponent <MeshRenderer>().material.color = new Color( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "meshcollider") { meshtriggers[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.MeshFromObj(chara[3]); meshtriggers[i].GetComponent <MeshCollider>().convex = true; meshtriggers[i].GetComponent <MeshCollider>().isTrigger = true; } else if (chara[2] == "wmeshcollider") { meshtriggers[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.WMeshFromObj(chara[3]); meshtriggers[i].GetComponent <MeshCollider>().convex = true; meshtriggers[i].GetComponent <MeshCollider>().isTrigger = true; } /////////////////////////////////////////////// } #endregion } } srd.Close(); GeoTools.Log("ReadMeshTrigger Completed!"); } catch (Exception ex) { GeoTools.Log("Error! ReadMeshTrigger Failed!"); GeoTools.Log(ex.ToString()); return; } }
public void ReadScene(string SceneName) { try { //GeoTools.Log(Application.dataPath); if (!File.Exists(ScenePath + SceneName + ".txt")) { GeoTools.Log("Error! Scene File not exists!"); return; } StreamReader srd = File.OpenText(ScenePath + SceneName + ".txt"); while (srd.Peek() != -1) { string str = srd.ReadLine(); string[] chara = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (chara.Length > 2) { #region Mesheses if (chara[0] == "Meshes") { if (chara[1] == "size" || chara[1] == "Size") { this.MeshSize = Convert.ToInt32(chara[2]); LoadMesh(); } else if (chara[1] == "noshadow" || chara[1] == "noShadow" || chara[1] == "NoShadow") { this.MeshSize = Convert.ToInt32(chara[2]); LoadMeshWithOutCastShadow();//对于带烘焙贴图的和模型过大的这项必须取消 } } #endregion #region Meshseries else if (chara[0] == "Meshseries") { int start = Convert.ToInt32(chara[1]); int end = Convert.ToInt32(chara[2]); if (chara[3] == "largeobj") { int index = 0; // Meshseries,start,end,largeobjcollider,Name,faceCount List <Mesh> _meshes = GeoTools.MeshFromLargeObj(chara[4], Convert.ToInt32(chara[5])); for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshFilter>().mesh = _meshes[index]; index++; } } else if (chara[3] == "largeobjcollider") { int index = 0; List <Mesh> _meshes = GeoTools.MeshFromLargeObj(chara[4], Convert.ToInt32(chara[5])); for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshCollider>().sharedMesh = _meshes[index]; index++; } } else if (chara[3] == "heightmapmesh") { int index = 0; int _width = Convert.ToInt32(chara[4]); int _height = Convert.ToInt32(chara[5]); Vector3 scale = new Vector3( Convert.ToInt32(chara[6]), Convert.ToInt32(chara[7]), Convert.ToInt32(chara[8])); Vector2 texturescale = new Vector3( Convert.ToInt32(chara[9]), Convert.ToInt32(chara[10])); List <Mesh> _meshes = GeoTools.LoadHeightMap(_width, _height, scale, texturescale, chara[11]); for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshFilter>().mesh = _meshes[index]; meshes[i].GetComponent <MeshCollider>().sharedMesh = _meshes[index]; index++; } } else if (chara[3] == "color") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.color = new Color( Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7])); } } else if (chara[3] == "shader") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.shader = Shader.Find(chara[4]); } } else if (chara[3] == "setfloat") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.SetFloat(chara[4], Convert.ToSingle(chara[5])); } } else if (chara[3] == "settexture") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.SetTexture(chara[4], GeoTools.LoadTexture(chara[5])); } } else if (chara[3] == "setcolor") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.SetColor(chara[4], new Color( Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]), Convert.ToSingle(chara[8]))); } } else if (chara[3] == "setvector") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.SetVector(chara[4], new Vector4( Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]), Convert.ToSingle(chara[8]))); } } else if (chara[3] == "texture") { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material.mainTexture = GeoTools.LoadTexture(chara[4]); } } else if (chara[3] == "materialcopy") { try { for (int i = start; i <= end; i++) { meshes[i].GetComponent <MeshRenderer>().material = new Material(GameObject.Find(chara[4]).GetComponent <Renderer>().material); // GeoTools.Log(meshes[i].GetComponent<MeshRenderer>().material.shader.name); } } catch (Exception ex) { GeoTools.Log("Error! MaterialCopy Failed"); GeoTools.Log(ex.ToString()); } } else if (chara[3] == "materialPropcopy") { try { for (int i = start; i <= end; i++) { int index = Convert.ToInt32(chara[4]); meshes[i].GetComponent <MeshRenderer>().material = gameObject.GetComponent <Prop>().MaterialTemp[index].GetComponent <Renderer>().material; // GeoTools.Log(meshes[i].GetComponent<MeshRenderer>().material.shader.name); } } catch (Exception ex) { GeoTools.Log("Error! MaterialPropCopy Failed"); GeoTools.Log(ex.ToString()); } } else if (chara[3] == "castshadow" || chara[2] == "shadow") { for (int i = start; i <= end; i++) { if (Convert.ToInt32(chara[4]) == 0) { meshes[i].GetComponent <Renderer>().shadowCastingMode = ShadowCastingMode.Off; } else { meshes[i].GetComponent <Renderer>().shadowCastingMode = ShadowCastingMode.On; } } } else if (chara[3] == "receiveshadow") { for (int i = start; i <= end; i++) { if (Convert.ToInt32(chara[4]) == 0) { meshes[i].GetComponent <Renderer>().receiveShadows = false; } else { meshes[i].GetComponent <Renderer>().receiveShadows = true; } } } else if (chara[3] == "location") { for (int i = start; i <= end; i++) { meshes[i].transform.localPosition = new Vector3( Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } } else if (chara[3] == "scale") { for (int i = start; i <= end; i++) { meshes[i].transform.localScale = new Vector3( Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } } } #endregion #region Mesh else if (chara[0] == "Mesh") { int i = Convert.ToInt32(chara[1]); if (chara[2] == "mesh") { meshes[i].GetComponent <MeshFilter>().mesh = GeoTools.MeshFromObj(chara[3]); } else if (chara[2] == "wmesh") { meshes[i].GetComponent <MeshFilter>().mesh = GeoTools.WMeshFromObj(chara[3]); } else if (chara[2] == "emesh") { meshes[i].GetComponent <MeshFilter>().mesh = GeoTools.EMeshFromObj(chara[3]); } else if (chara[2] == "heightmapmesh") { Mesh mesh = GeoTools.LoadHeightMap( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToInt32(chara[5]), Convert.ToInt32(chara[6]), Convert.ToInt32(chara[7]), Convert.ToSingle(chara[8]), chara[9]); meshes[i].GetComponent <MeshFilter>().mesh = mesh; meshes[i].GetComponent <MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "plannarmesh") { Mesh mesh = GeoTools.MeshFromPoints( Convert.ToInt32(chara[3]), Convert.ToInt32(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); meshes[i].GetComponent <MeshFilter>().mesh = mesh; meshes[i].GetComponent <MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "plannarmeshcollider") { Mesh mesh = GeoTools.MeshFromPoints( Convert.ToInt32(chara[3]), Convert.ToInt32(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); // meshes[i].GetComponent<MeshFilter>().mesh = mesh; meshes[i].GetComponent <MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "heightmapmeshcollider") { Mesh mesh = GeoTools.LoadHeightMap( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToInt32(chara[5]), Convert.ToInt32(chara[6]), Convert.ToInt32(chara[7]), Convert.ToSingle(chara[8]), chara[9]); // meshes[i].GetComponent<MeshFilter>().mesh = mesh; meshes[i].GetComponent <MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "plannarmeshrenderer") { Mesh mesh = GeoTools.MeshFromPoints( Convert.ToInt32(chara[3]), Convert.ToInt32(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); meshes[i].GetComponent <MeshFilter>().mesh = mesh; // meshes[i].GetComponent<MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "heightmapmeshrenderer") { Mesh mesh = GeoTools.LoadHeightMap( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToInt32(chara[5]), Convert.ToInt32(chara[6]), Convert.ToInt32(chara[7]), Convert.ToSingle(chara[8]), chara[9]); meshes[i].GetComponent <MeshFilter>().mesh = mesh; //meshes[i].GetComponent<MeshCollider>().sharedMesh = mesh; } else if (chara[2] == "color") { meshes[i].GetComponent <MeshRenderer>().material.color = new Color( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "receiveshadow") { if (Convert.ToInt32(chara[3]) == 0) { meshes[i].GetComponent <Renderer>().receiveShadows = false; } else { meshes[i].GetComponent <Renderer>().receiveShadows = true; } } else if (chara[2] == "castshadow" || chara[2] == "shadow") { if (Convert.ToInt32(chara[3]) == 0) { meshes[i].GetComponent <Renderer>().shadowCastingMode = ShadowCastingMode.Off; } else { meshes[i].GetComponent <Renderer>().shadowCastingMode = ShadowCastingMode.On; } } else if (chara[2] == "texture") { meshes[i].GetComponent <MeshRenderer>().material.mainTexture = GeoTools.LoadTexture(chara[3]); //meshes[i].GetComponent<MeshRenderer>().material.shader = Shader.Find("Standard"); //meshes[i].GetComponent<MeshRenderer>().material.SetFloat("_Glossiness", 1);//1是smoothness最高 } else if (chara[2] == "etexture") { meshes[i].GetComponent <MeshRenderer>().material.mainTexture = GeoTools.ELoadTexture(chara[3]); //meshes[i].GetComponent<MeshRenderer>().material.shader = Shader.Find("Standard"); //meshes[i].GetComponent<MeshRenderer>().material.SetFloat("_Glossiness", 1);//1是smoothness最高 } else if (chara[2] == "stexture") { meshes[i].GetComponent <MeshRenderer>().sharedMaterial.mainTexture = GeoTools.LoadTexture(chara[3]); } else if (chara[2] == "materialcopy") { try { meshes[i].GetComponent <MeshRenderer>().material = new Material(GameObject.Find(chara[3]).GetComponent <Renderer>().material); // GeoTools.Log(meshes[i].GetComponent<MeshRenderer>().material.shader.name); } catch (Exception ex) { GeoTools.Log("Error! MaterialCopy Failed"); GeoTools.Log(ex.ToString()); } } else if (chara[2] == "smaterialcopy") { try { meshes[i].GetComponent <MeshRenderer>().sharedMaterial = new Material(GameObject.Find(chara[3]).GetComponent <Renderer>().sharedMaterial); } catch (Exception ex) { GeoTools.Log("Error! MaterialCopy Failed"); GeoTools.Log(ex.ToString()); } } else if (chara[2] == "materialPropcopy") { try { int index = Convert.ToInt32(chara[3]); meshes[i].GetComponent <MeshRenderer>().material = gameObject.GetComponent <Prop>().MaterialTemp[index].GetComponent <Renderer>().material; // GeoTools.Log(meshes[i].GetComponent<MeshRenderer>().material.shader.name); } catch (Exception ex) { GeoTools.Log("Error! MaterialPropCopy Failed"); GeoTools.Log(ex.ToString()); } } else if (chara[2] == "shader") { meshes[i].GetComponent <MeshRenderer>().material.shader = Shader.Find(chara[3]); } else if (chara[2] == "settexture") { meshes[i].GetComponent <MeshRenderer>().material.SetTexture(chara[3], GeoTools.LoadTexture(chara[4])); } else if (chara[2] == "setcolor") { meshes[i].GetComponent <MeshRenderer>().material.SetColor(chara[3], new Color( Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]))); } else if (chara[2] == "setvector") { meshes[i].GetComponent <MeshRenderer>().material.SetVector(chara[3], new Vector4( Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]))); } else if (chara[2] == "setfloat") { meshes[i].GetComponent <MeshRenderer>().material.SetFloat(chara[3], Convert.ToSingle(chara[4])); } else if (chara[2] == "meshcollider") { meshes[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.MeshFromObj(chara[3]); } else if (chara[2] == "wmeshcollider") { meshes[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.WMeshFromObj(chara[3]); } else if (chara[2] == "emeshcollider") { meshes[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.EMeshFromObj(chara[3]); } else if (chara[2] == "dynamicFriction") { float t = Convert.ToSingle(chara[3]); if (t < 0) { t = 0; } if (t > 1) { t = 1; } meshes[i].GetComponent <MeshCollider>().material.dynamicFriction = t; } else if (chara[2] == "staticFriction") { float t = Convert.ToSingle(chara[3]); if (t < 0) { t = 0; } if (t > 1) { t = 1; } meshes[i].GetComponent <MeshCollider>().material.staticFriction = t; } else if (chara[2] == "bounciness") { float t = Convert.ToSingle(chara[3]); if (t < 0) { t = 0; } if (t > 1) { t = 1; } meshes[i].GetComponent <MeshCollider>().material.bounciness = t; } else if (chara[2] == "frictionCombine ") { if (chara[3] == "Average" || chara[3] == "average") { meshes[i].GetComponent <MeshCollider>().material.frictionCombine = PhysicMaterialCombine.Average; } else if (chara[3] == "Multiply" || chara[3] == "multiply") { meshes[i].GetComponent <MeshCollider>().material.frictionCombine = PhysicMaterialCombine.Multiply; } else if (chara[3] == "Minimum" || chara[3] == "minimum") { meshes[i].GetComponent <MeshCollider>().material.frictionCombine = PhysicMaterialCombine.Minimum; } else if (chara[3] == "Maximum" || chara[3] == "maximum") { meshes[i].GetComponent <MeshCollider>().material.frictionCombine = PhysicMaterialCombine.Maximum; } } else if (chara[2] == "bounceCombine ") { if (chara[3] == "Average" || chara[3] == "average") { meshes[i].GetComponent <MeshCollider>().material.bounceCombine = PhysicMaterialCombine.Average; } else if (chara[3] == "Multiply" || chara[3] == "multiply") { meshes[i].GetComponent <MeshCollider>().material.bounceCombine = PhysicMaterialCombine.Multiply; } else if (chara[3] == "Minimum" || chara[3] == "minimum") { meshes[i].GetComponent <MeshCollider>().material.bounceCombine = PhysicMaterialCombine.Minimum; } else if (chara[3] == "Maximum" || chara[3] == "maximum") { meshes[i].GetComponent <MeshCollider>().material.bounceCombine = PhysicMaterialCombine.Maximum; } } else if (chara[2] == "location") { meshes[i].transform.localPosition = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); //GeoTools.Log("meshes" + i.ToString() + ".loaction:" + meshes[i].transform.localPosition.ToString()); } else if (chara[2] == "scale") { meshes[i].transform.localScale = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); //GeoTools.Log("meshes" + i.ToString() + ".scale:" + meshes[i].transform.localScale.ToString()); } else if (chara[2] == "rotation") { meshes[i].transform.rotation = new Quaternion( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "eulerangles") { meshes[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.Self); } else if (chara[2] == "euleranglesworld") { meshes[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.World); } else if (chara[2] == "fromtorotation") { meshes[i].transform.rotation = Quaternion.FromToRotation( new Vector3(Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), new Vector3(Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]), Convert.ToSingle(chara[8])) ); } } #endregion } } srd.Close(); // for (int i = 0; i < this.meshes.Length; i++){GeoTools.MeshFilt(ref this.meshes[i]);} GeoTools.Log("ReadMeshObj Completed!"); } catch (Exception ex) { GeoTools.Log("Error! ReadMeshObj Failed!"); GeoTools.Log(ex.ToString()); return; } }
public void ReadScene(string SceneName) { try { if (!File.Exists(ScenePath + SceneName + ".txt")) { GeoTools.Log("Error! Scene File not exists!"); return; } StreamReader srd = File.OpenText(ScenePath + SceneName + ".txt"); CubeAmount = 0; while (srd.Peek() != -1) { string str = srd.ReadLine(); string[] chara = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (chara.Length > 2) { #region Cube if (chara[0].ToLower() == "cubes") { if (chara[1].ToLower() == "amount") { CubeAmount = Convert.ToInt32(chara[2]); LoadCube(); } } else if (chara[0].ToLower() == "cube") { int i = Convert.ToInt32(chara[1]); if (chara[2] == "mesh") { meshCubes[i].GetComponent <MeshFilter>().mesh = GeoTools.MeshFromObj(chara[3]); } else if (chara[2] == "wmesh") { meshCubes[i].GetComponent <MeshFilter>().mesh = GeoTools.WMeshFromObj(chara[3]); } else if (chara[2] == "scale") { meshCubes[i].transform.localScale = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "rotation") { meshCubes[i].transform.rotation = new Quaternion( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "eulerangles") { meshCubes[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.Self); } else if (chara[2] == "euleranglesworld") { meshCubes[i].transform.Rotate(new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), Space.World); } else if (chara[2] == "fromtorotation") { meshCubes[i].transform.rotation = Quaternion.FromToRotation( new Vector3(Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])), new Vector3(Convert.ToSingle(chara[6]), Convert.ToSingle(chara[7]), Convert.ToSingle(chara[8])) ); } else if (chara[2] == "shader") { meshCubes[i].GetComponent <MeshRenderer>().material.shader = Shader.Find("chara[3]"); } else if (chara[2] == "texture") { meshCubes[i].GetComponent <MeshRenderer>().material.mainTexture = GeoTools.LoadTexture(chara[3]); } else if (chara[2] == "stexture") { meshCubes[i].GetComponent <MeshRenderer>().sharedMaterial.mainTexture = GeoTools.LoadTexture(chara[3]); } else if (chara[2] == "color") { meshCubes[i].GetComponent <MeshRenderer>().material.color = new Color( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5]), Convert.ToSingle(chara[6])); } else if (chara[2] == "meshcollider") { meshCubes[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.MeshFromObj(chara[3]); meshCubes[i].GetComponent <MeshCollider>().convex = true; meshCubes[i].GetComponent <MeshCollider>().isTrigger = true; } else if (chara[2] == "wmeshcollider") { meshCubes[i].GetComponent <MeshCollider>().sharedMesh = GeoTools.WMeshFromObj(chara[3]); meshCubes[i].GetComponent <MeshCollider>().convex = true; meshCubes[i].GetComponent <MeshCollider>().isTrigger = true; } else if (chara[2].ToLower() == "startlocation" || chara[2].ToLower() == "location") { meshCubes[i].GetComponent <CubeScript>().StartLocation = meshCubes[i].transform.localPosition = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2].ToLower() == "movevector") { meshCubes[i].GetComponent <CubeScript>().MoveVector = new Vector3( Convert.ToSingle(chara[3]), Convert.ToSingle(chara[4]), Convert.ToSingle(chara[5])); } else if (chara[2] == "velocity") { meshCubes[i].GetComponent <CubeScript>().Velocity = Convert.ToSingle(chara[3]); } else if (chara[2] == "control") { meshCubes[i].GetComponent <CubeScript>().Key = (KeyCode)Enum.Parse(typeof(KeyCode), chara[3]); } //else if (chara[2].ToLower() == "parent") //{ // meshCubes[i].GetComponent<CubeScript>().ParentName = chara[3]; //} /////////////////////////////////////////////// } #endregion } } if (CubeAmount <= 0) { ClearCube(); } srd.Close(); GeoTools.Log("Read Cube Completed! CubeAmount:" + CubeAmount); } catch (Exception ex) { GeoTools.Log("Error! Read Cube Failed!"); GeoTools.Log(ex.ToString()); return; } }