예제 #1
0
 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;
     }
 }
예제 #2
0
 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;
     }
 }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
            }
        }