Ejemplo n.º 1
0
 public void LoadWater()
 {
     try
     {
         if (WaterSize <= 0)
         {
             return;
         }
         if (this.gameObject.GetComponent <Prop>().TileTemp == null)
         {
             return;
         }
         Mwater = new GameObject[WaterSize];
         for (int i = 0; i < Mwater.Length; i++)
         {
             Mwater[i]      = Instantiate(gameObject.GetComponent <Prop>().TileTemp);
             Mwater[i].name = "water" + i.ToString();
             Mwater[i].SetActive(true);
             Mwater[i].transform.localScale    = new Vector3(1, 1, 1);
             Mwater[i].transform.localPosition = new Vector3(0, 0, 0);
         }
     }
     catch (Exception ex)
     {
         GeoTools.Log("LoadWater Failed");
         GeoTools.Log(ex.ToString());
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 加载地图包
        /// </summary>
        /// <param name="ScenePack">地图包列表序号</param>
        public void LoadScenePack(int index)
        {
#if DEBUG
            GeoTools.Log("load scene pack");
#endif
            if (BesiegeNetworkManager.Instance == null)
            {
#if DEBUG
                GeoTools.Log("load scene pack not in multiplayers");
#endif
                StartCoroutine(ILoadScenePack(ScenePacks[index]));
                return;
            }


            if (BesiegeNetworkManager.Instance.isActiveAndEnabled && BesiegeNetworkManager.Instance.isConnected)
            {
#if DEBUG
                GeoTools.Log("load scene pack in multiplayers");
#endif
                StartCoroutine(ILoadScenePack_Multiplayer(ScenePacks[index]));
                return;
            }

            //StartCoroutine(ILoadScenePack(ScenePacks[index]));
        }
Ejemplo n.º 3
0
 void Start()
 {
     new CommandRegistration("VP_CloudSize", (string[] args) =>
     {
         if (args.Length < 1)
         {
             GeoTools.Log("ERROR!");
         }
         try
         {
             int cloudSize = int.Parse(args[0]);
             if (cloudSize < 0 || cloudSize > 3000)
             {
                 GeoTools.Log("Your cloud amount is not available. ");
             }
             else
             {
                 CloudSize = cloudSize;
                 LoadCloud();
             }
         }
         catch
         {
             GeoTools.Log("Could not parse " + args[0] + "to cloud amount");
         }
         GeoTools.Log("There will be " + CloudSize.ToString() + " clouds" + "\n");
     }, "Set CloudSize.No bigger than 80 and no less than 10.");
 }
Ejemplo n.º 4
0
 public void LoadSnow()
 {
     try
     {
         if (SnowSize <= 0)
         {
             return;
         }
         if (this.gameObject.GetComponent <Prop>().SnowTemp == null)
         {
             return;
         }
         MSnow = new GameObject[SnowSize];
         for (int i = 0; i < MSnow.Length; i++)
         {
             MSnow[i]      = (GameObject)Instantiate(gameObject.GetComponent <Prop>().SnowTemp);
             MSnow[i].name = "snow" + i.ToString();
             MSnow[i].SetActive(true);
             MSnow[i].transform.SetParent(transform);
             MSnow[i].transform.localScale    = new Vector3(1, 1, 1);
             MSnow[i].transform.localPosition = new Vector3(0, 0, 0);
         }
     }
     catch (Exception ex)
     {
         GeoTools.Log("Error! LoadSnow Failed");
         GeoTools.Log(ex.ToString());
         ClearSnow();
     }
 }
Ejemplo n.º 5
0
        public void ClearWater()
        {
            ClearFloater();
            if (Mwater == null)
            {
                return;
            }
            if (Mwater.Length <= 0)
            {
                return;
            }
            if (WaterSize > 0)
            {
                GeoTools.Log("ClearWater");
            }
            gameObject.GetComponent <Prop>().WaterTemp.SetActive(false);
            try
            {
                Destroy(GameObject.Find("WaterTempReflectionMain Camera"));
            }
            catch { }
            for (int i = 0; i < Mwater.Length; i++)
            {
                Destroy(Mwater[i]);
            }

            Mwater    = null;
            WaterSize = 0;
        }
Ejemplo n.º 6
0
 public void LoadTrigger()
 {
     try
     {
         ClearTrigger();
         if (TriggerSize <= 0)
         {
             return;
         }
         if (TriggerSize > 100)
         {
             TriggerSize = 100;
         }
         if (TriggerSize > 0)
         {
             meshtriggers = new GameObject[TriggerSize];
             for (int i = 0; i < meshtriggers.Length; i++)
             {
                 meshtriggers[i] = GameObject.CreatePrimitive(PrimitiveType.Plane);
                 meshtriggers[i].GetComponent <MeshCollider>().sharedMesh.Clear();
                 meshtriggers[i].GetComponent <MeshFilter>().mesh.Clear();
                 meshtriggers[i].AddComponent <MTrigger>();
                 meshtriggers[i].GetComponent <MTrigger>().Index = i;
                 meshtriggers[i].transform.localScale            = new Vector3(1, 1, 1);
                 meshtriggers[i].transform.localPosition         = new Vector3(0, 0, 0);
                 meshtriggers[i].name = "_meshtrigger" + i.ToString();
             }
         }
     }
     catch (System.Exception ex)
     {
         GeoTools.Log("Error! LoadTrigger Failed!");
         GeoTools.Log(ex.ToString());
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 隐藏雾
        /// </summary>
        public void HideFog()
        {
            FogEnable = !FogEnable;

            //try
            //{
            //    GameObject mainCamera = GameObject.Find("Main Camera");
            //    mainCamera.GetComponent<ColorfulFog>().enabled = FogEnable;
            //}
            //catch
            //{ }

            try
            {
                GameObject fogSPHERE = GameObject.Find("FOG SPHERE");
                fogSPHERE.GetComponent <MeshRenderer>().enabled = FogEnable;
            }
            catch
            { }

            try
            {
                GameObject.Find("Fog Volume").GetComponent <MeshRenderer>().enabled = FogEnable;
            }
            catch (Exception e)
            {
                GeoTools.Log(e.Message);
            }
        }
            public LanguageFile(string path)
            {
                string filePath = path;

                dic_Translation = new Dictionary <int, string>();

                try
                {
                    if (!File.Exists(filePath))
                    {
                        GeoTools.Log("Error! Language File not exists!");
                        return;
                    }

                    FileStream fs = new FileStream(filePath, FileMode.Open);
                    //打开数据文件
                    StreamReader srd = new StreamReader(fs, Encoding.Default);

                    while (srd.Peek() != -1)
                    {
                        string str = srd.ReadLine();

                        if (str.Contains(" = ") && str.Length > 2)
                        {
                            //BesiegeConsoleController.ShowMessage(str);

                            string id = str.Substring(0, str.IndexOf(" = "));
                            //BesiegeConsoleController.ShowMessage(id);

                            if (Regex.IsMatch(id, @"^[0-9]*$") && !string.IsNullOrEmpty(id))
                            {
                                int    index = str.IndexOf(" = ") + 3;
                                string value = str.Substring(index, str.Length - index).Replace("\"", string.Empty);

                                dic_Translation[int.Parse(id)] = value;
                                //BesiegeConsoleController.ShowMessage(value);
                            }
                        }
                    }

                    srd.Close();

                    //foreach (var v in dic_Translation)
                    //{
                    //    BesiegeConsoleController.ShowMessage(v.Key + "|" + v.Value);
                    //}

                    GeoTools.Log("Read Language File Completed!");
                }
                catch (Exception ex)
                {
                    GeoTools.Log("Read Language File Failed!");
                    GeoTools.Log(ex.ToString());
                    return;
                }
            }
Ejemplo n.º 9
0
 public void LoadCloud()
 {
     try
     {
         ClearCloud();
         if (this.gameObject.GetComponent <Prop>().CloudTemp == null)
         {
             return;
         }
         if (CloudSize < 0)
         {
             CloudSize = 0;
         }
         if (CloudSize > 1000)
         {
             CloudSize = 1000;
         }
         if (CloudSize == 0)
         {
             return;
         }
         else
         {
             clouds = new GameObject[CloudSize];
             axis   = new Vector3[CloudSize];
             for (int i = 0; i < clouds.Length; i++)
             {
                 clouds[i] = (GameObject)Instantiate(this.gameObject.GetComponent <Prop>().CloudTemp, new Vector3(
                                                         UnityEngine.Random.Range(-cloudScale.x + transform.localPosition.x, cloudScale.x + transform.localPosition.x),
                                                         UnityEngine.Random.Range(transform.localPosition.y, cloudScale.y + transform.localPosition.y),
                                                         UnityEngine.Random.Range(-cloudScale.z + transform.localPosition.z, cloudScale.z + transform.localPosition.z)),
                                                     new Quaternion(0, 0, 0, 0));
                 clouds[i].transform.SetParent(this.transform);
                 clouds[i].transform.localScale = new Vector3(100, 100, 100);
                 clouds[i].SetActive(true);
                 ParticleSystem ps = clouds[i].GetComponent <ParticleSystem>();
                 ps.startColor = CloudsColor;
                 axis[i]       = new Vector3(UnityEngine.Random.Range(-0.1f, 0.1f), 1f, UnityEngine.Random.Range(-0.1f, 0.1f));
             }
             // GeoTools.Log("LoadCloud Successfully");
         }
     }
     catch (Exception ex)
     {
         GeoTools.Log("Error! LoadCloud Failed");
         GeoTools.Log(ex.ToString());
         ClearCloud();
     }
 }
Ejemplo n.º 10
0
        public void ReadScene(CustomSceneMod.ScenePack scenePack)
        {
            //skyBoxTexturePath = scenePack.TexturesPath + "/SkyBoxTexture.jpg";
            //skyBoxMeshPath = scenePack.MeshsPath + "/Skydome.obj";


            try
            {
                if (!File.Exists(scenePack.SettingFilePath))
                {
                    GeoTools.Log("Error! Scene File not exists!");
                    return;
                }

                FileStream fs = new FileStream(scenePack.SettingFilePath, FileMode.Open);

                //打开数据文件
                StreamReader srd = new StreamReader(fs, Encoding.Default);

                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] == "Sky")
                        {
                            skyBoxTexturePath = scenePack.TexturesPath + "/" + chara[1];
                            create();
                        }
                        #endregion
                    }
                }
                srd.Close();
                //   for (int i = 0; i < this.meshes.Length; i++){GeoTools.MeshFilt(ref this.meshes[i]);}
                GeoTools.Log("Read Sky Completed!");
            }
            catch (Exception ex)
            {
                GeoTools.Log("Error! Read Sky Failed!");
                GeoTools.Log(ex.ToString());
                return;
            }
        }
Ejemplo n.º 11
0
 public GameObject GetObjectInScene(string ObjectName)
 {
     try
     {
         GameObject ObjectTemp = (GameObject)Instantiate(GameObject.Find(ObjectName));
         ObjectTemp.name = ObjectName + "Temp";
         UnityEngine.Object.DontDestroyOnLoad(ObjectTemp);
         GeoTools.Log("Get " + ObjectName + "Temp Successfully");
         ObjectTemp.SetActive(false);
         return(ObjectTemp);
     }
     catch (Exception ex)
     {
         GeoTools.Log("Error! Get " + ObjectName + "Temp Failed");
         GeoTools.Log(ex.ToString());
         return(null);
     }
 }
Ejemplo n.º 12
0
        void create()
        {
            try
            {
                getMesh();

                getTexture();

                CreateSkyMaterialBall();

                skySphere.AddComponent <CameraFollower>();
            }
            catch (Exception e)
            {
                GeoTools.Log("create filed");
                GeoTools.Log(e.Message);
            }
        }
Ejemplo n.º 13
0
 public void LoadFloater()
 {
     try
     {
         MyBlockInfo[] infoArray = UnityEngine.Object.FindObjectsOfType <MyBlockInfo>();
         foreach (MyBlockInfo info in infoArray)
         {
             if (info.gameObject.GetComponent <Floater>() == null)
             {
                 info.gameObject.AddComponent <Floater>();
             }
         }
     }
     catch
     {
         GeoTools.Log("Error! LoadFloater Failed");
     }
 }
Ejemplo n.º 14
0
 public void ClearMeshes()
 {
     if (meshes == null)
     {
         return;
     }
     if (meshes.Length <= 0)
     {
         return;
     }
     if (MeshSize > 0)
     {
         GeoTools.Log("ClearMeshes");
     }
     for (int i = 0; i < meshes.Length; i++)
     {
         UnityEngine.Object.Destroy(meshes[i]);
     }
 }
Ejemplo n.º 15
0
        /// <summary>
        /// 隐藏空气墙
        /// </summary>
        public void HideWorldBoundaries()
        {
            try
            {
                //单人模式下
                GameObject WorldBoundaries_Large = GameObject.Find("WORLD BOUNDARIES_LARGE");

                Set_WorldBoundaries(WorldBoundaries_Large);
            }
            catch (Exception e)
            {
                GeoTools.Log(e.Message);
                WorldBoundariesEnable = !WorldBoundariesEnable;
            }

            try
            {
                //多人模式下
                GameObject WorldBoundaries = GameObject.Find("WORLD BOUNDARIES");

                Set_WorldBoundaries(WorldBoundaries);
            }
            catch (Exception e)
            {
                GeoTools.Log(e.Message);
                WorldBoundariesEnable = !WorldBoundariesEnable;
            }

            void Set_WorldBoundaries(GameObject WorldBoundaries)
            {
                WorldBoundariesEnable = !WorldBoundariesEnable;

                foreach (BoxCollider BC in WorldBoundaries.GetComponentsInChildren <BoxCollider>())
                {
                    BC.isTrigger = !WorldBoundariesEnable;
                }

                foreach (Renderer MR in WorldBoundaries.GetComponentsInChildren <Renderer>())
                {
                    MR.enabled = WorldBoundariesEnable;
                }
            }
        }
Ejemplo n.º 16
0
        public void LoadCube()
        {
            try
            {
                if (CubeAmount <= 0)
                {
                    return;
                }
                if (CubeAmount > 100)
                {
                    CubeAmount = 100;
                }
                if (CubeAmount > 0)
                {
                    meshCubes = new GameObject[CubeAmount];
                    for (int i = 0; i < CubeAmount; i++)
                    {
                        //meshCubes[i] = GameObject.CreatePrimitive( PrimitiveType.Cube);
                        meshCubes[i] = GameObject.CreatePrimitive(PrimitiveType.Plane);
                        Shader diffuse = Shader.Find("Legacy Shaders/Diffuse");
                        if (diffuse != null)
                        {
                            meshCubes[i].GetComponent <Renderer>().material.shader = diffuse;
                        }
                        meshCubes[i].GetComponent <MeshCollider>().sharedMesh.Clear();
                        meshCubes[i].GetComponent <MeshFilter>().mesh.Clear();
                        meshCubes[i].AddComponent <CubeScript>();
                        meshCubes[i].transform.localScale    = Vector3.one;
                        meshCubes[i].transform.localPosition = Vector3.zero;
                        meshCubes[i].name = "_meshCube" + i.ToString();
                    }
                }
            }
            catch (System.Exception ex)
            {
                GeoTools.Log("Error! Load Cube Failed!");
                GeoTools.Log(ex.ToString());
            }

#if DEBUG
            GeoTools.Log("加载方块");
#endif
        }
Ejemplo n.º 17
0
 public void ClearTrigger()
 {
     if (meshtriggers == null)
     {
         return;
     }
     if (meshtriggers.Length <= 0)
     {
         return;
     }
     if (TriggerSize > 0)
     {
         GeoTools.Log("ClearTriggers");
     }
     for (int i = 0; i < meshtriggers.Length; i++)
     {
         Destroy(meshtriggers[i]);
     }
 }
Ejemplo n.º 18
0
 public void ClearSnow()
 {
     if (MSnow == null)
     {
         return;
     }
     if (MSnow.Length <= 0)
     {
         return;
     }
     if (SnowSize > 0)
     {
         GeoTools.Log("ClearSnow");
     }
     for (int i = 0; i < MSnow.Length; i++)
     {
         Destroy(MSnow[i]);
     }
 }
Ejemplo n.º 19
0
 public void ClearCloud()
 {
     // step = 0;
     if (clouds == null)
     {
         return;
     }
     if (clouds.Length <= 0)
     {
         return;
     }
     if (CloudSize > 0)
     {
         GeoTools.Log("ClearCloud");
     }
     for (int i = 0; i < clouds.Length; i++)
     {
         Destroy(clouds[i]);
     }
 }
Ejemplo n.º 20
0
        public void ClearCube()
        {
            if (meshCubes == null)
            {
                return;
            }

            if (meshCubes.Length <= 0)
            {
                return;
            }
#if DEBUG
            GeoTools.Log("ClearCubes Amount: " + meshCubes.Length);
#endif
            for (int i = 0; i < meshCubes.Length; i++)
            {
                Destroy(meshCubes[i]);
            }

            meshCubes  = null;
            CubeAmount = 0;
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 读取指定路径下所有地图包
        /// </summary>
        /// <param name="scenesPackPath">地图包路径</param>
        /// <returns></returns>
        public List <ScenePack> ReadScenePacks(string scenesPackPath)
        {
            List <ScenePack> SPs = new List <ScenePack>()
            {
            };

            if (!Directory.Exists(scenesPackPath))
            {
                GeoTools.Log("Error! Scenes Path Directory not exists!");
                return(SPs);
            }

            DirectoryInfo TheFolder = new DirectoryInfo(scenesPackPath);

            //遍历文件夹
            foreach (DirectoryInfo NextFolder in TheFolder.GetDirectories())
            {
                SPs.Add(new ScenePack(NextFolder));
            }

            return(SPs);
        }
Ejemplo n.º 22
0
 public void LoadMesh()
 {
     try
     {
         ClearMeshes();
         if (MeshSize > 100)
         {
             MeshSize = 100;
         }
         if (MeshSize < 0)
         {
             MeshSize = 0; return;
         }
         if (MeshSize > 0)
         {
             meshes = new GameObject[MeshSize];
             for (int i = 0; i < meshes.Length; i++)
             {
                 meshes[i] = GameObject.CreatePrimitive(PrimitiveType.Plane);
                 Shader diffuse = Shader.Find("Legacy Shaders/Diffuse");
                 if (diffuse != null)
                 {
                     meshes[i].GetComponent <Renderer>().material.shader = diffuse;
                 }
                 meshes[i].GetComponent <MeshCollider>().sharedMesh.Clear();
                 meshes[i].GetComponent <MeshFilter>().mesh.Clear();
                 meshes[i].transform.localScale    = new Vector3(1, 1, 1);
                 meshes[i].transform.localPosition = new Vector3(0, 0, 0);
                 meshes[i].name = "_mesh" + i.ToString();
             }
         }
     }
     catch (System.Exception ex)
     {
         GeoTools.Log("Error! LoadMesh Failed!");
         GeoTools.Log(ex.ToString());
     }
 }
Ejemplo n.º 23
0
 public void ClearFloater()
 {
     try
     {
         bool          sign      = false;
         MyBlockInfo[] infoArray = UnityEngine.Object.FindObjectsOfType <MyBlockInfo>();
         foreach (MyBlockInfo info in infoArray)
         {
             if (info.gameObject.GetComponent <Floater>() != null)
             {
                 Destroy(info.gameObject.GetComponent <Floater>());
                 sign = true;
             }
         }
         if (sign)
         {
             GeoTools.Log("ClearFloater");
         }
     }
     catch
     {
         GeoTools.Log("Error! ClearFloater Failed");
     }
 }
Ejemplo n.º 24
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;
     }
 }
Ejemplo n.º 25
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;
     }
 }
            public SettingsFile()
            {
                string filePath = SettingsPath;

                settings = Settings.Default;

                try
                {
                    if (!File.Exists(filePath))
                    {
                        GeoTools.Log("Error! Settings.txt File not exists!");
                        return;
                    }

                    FileStream fs = new FileStream(filePath, FileMode.Open);
                    //打开数据文件
                    StreamReader srd = new StreamReader(fs, Encoding.Default);

                    while (srd.Peek() != -1)
                    {
                        string   str   = srd.ReadLine();
                        string[] chara = str.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        if (chara.Length >= 2)
                        {
                            #region Camera
                            if (chara[0] == "_Scene")
                            {
                                if (chara[1] == "display_UI")
                                {
                                    settings.sceneUI = (KeyCode)Enum.Parse(typeof(KeyCode), chara[2].ToUpper(), true);
                                }
                                else if (chara[1] == "reload_UI")
                                {
                                    settings.sceneUI_refresh = (KeyCode)Enum.Parse(typeof(KeyCode), chara[2].ToUpper(), true);
                                }
                                else if (chara[1] == "show_on_start")
                                {
                                    if (chara[2] == "0" || chara[2] == "OFF")
                                    {
                                        settings.sceneUI_showOnAwake = false;
                                    }
                                }
                            }
                            else if (chara[0] == "_Timer")
                            {
                                if (chara[1] == "display_UI")
                                {
                                    settings.timerUI = (KeyCode)Enum.Parse(typeof(KeyCode), chara[2].ToUpper(), true);
                                }
                                else if (chara[1] == "reload_UI")
                                {
                                    settings.timerUI_refresh = (KeyCode)Enum.Parse(typeof(KeyCode), chara[2].ToUpper(), true);
                                }
                                else if (chara[1] == "show_on_start")
                                {
                                    if (chara[2] == "0" || chara[2] == "OFF")
                                    {
                                        settings.timerUI_showOnAwake = false;
                                    }
                                }
                            }
                            else if (chara[0] == "_Language")
                            {
                                if (chara[2] != settings.language)
                                {
                                    settings.language = chara[2];
                                }
                            }
                            #endregion
                        }
                    }
                    srd.Close();

                    GeoTools.Log("Read Settings Completed!");
                }
                catch (Exception ex)
                {
                    GeoTools.Log("Read Settings Failed!");
                    GeoTools.Log(ex.ToString());
                    return;
                }
            }
Ejemplo n.º 27
0
        void FixedUpdate()
        {
            if (Isstart > 6 * t)
            {
                return;
            }
            try
            {
                if (Isstart == 1 * t)
                {
                    try
                    {
                        WWW iteratorVariable0 = new WWW("file:///" + GeoTools.ShaderPath + "water5");
                        iteratorVariable1 = iteratorVariable0.assetBundle;
                        if (iteratorVariable1 != null)
                        {
                            string[] names = iteratorVariable1.GetAllAssetNames();
                            for (int i = 0; i < names.Length; i++)
                            {
#if DEBUG
                                GeoTools.Log(names[i]);
#endif
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        GeoTools.Log("Error! assetBundle failed");
                        GeoTools.Log(ex.ToString());
                    }
                }
                if (Isstart == 2 * t)
                {
                    StartedScene = SceneManager.GetActiveScene().name;
                    if (StartedScene != "TITLE SCREEN")
                    {
                        return;
                    }
                    //GeoTools.OpenScene("TITLE SCREEN");
                    CloudTemp = GetObjectInScene("CLoud");
                    ParticleSystemRenderer psr = CloudTemp.GetComponent <ParticleSystemRenderer>();
                    psr.receiveShadows             = false;
                    psr.sharedMaterial.mainTexture = iteratorVariable1.LoadAsset <Texture>(
                        "Assets/Standard Assets/ParticleSystems/Textures/ParticleCloudWhite.png");
                    psr.shadowCastingMode = ShadowCastingMode.Off;
                    ParticleSystem ps = CloudTemp.GetComponent <ParticleSystem>();
                    ps.startSize     = 30;
                    ps.startLifetime = 60;
                    ps.startSpeed    = 0.8f;
                    ps.maxParticles  = 15;
                    CloudTemp.name   = "CloudTemp";
                    DontDestroyOnLoad(CloudTemp);
                    CloudTemp.SetActive(false);
#if DEBUG
                    GeoTools.Log("Get " + CloudTemp.name + " Successfully");
#endif
                }
                if (Isstart == 3 * t)
                {
//                    for (int i = 0; i <= 10; i++)
//                    {
//                        string jpgName = "WM" + i.ToString();
//                        if (!File.Exists(GeoTools.TexturePath + jpgName + ".jpg")) break;
//                        GameObject WMTemp = GameObject.CreatePrimitive(PrimitiveType.Plane);
//                        WMTemp.GetComponent<Renderer>().material.shader = Shader.Find("Standard");
//                        WMTemp.GetComponent<Renderer>().material.SetFloat("_Glossiness", 1);
//                        WMTemp.GetComponent<Renderer>().material.mainTexture = GeoTools.LoadTexture(jpgName);
//                        WMTemp.name = jpgName + "Temp";
//                        DontDestroyOnLoad(WMTemp);
//                        WMTemp.SetActive(false);
//                        this.MaterialTemp.Add(WMTemp);
//#if DEBUG
//                        GeoTools.Log("Get " + WMTemp.name + " Successfully");
//#endif
//                    }
                }

                if (Isstart == 4 * t)
                {
                    WaterTemp = new GameObject();
                    WaterTemp.AddComponent <WaterBase>();
                    WaterTemp.AddComponent <SpecularLighting>();
                    WaterTemp.AddComponent <PlanarReflection>();
                    WaterTemp.AddComponent <GerstnerDisplace>();
                    TileTemp = iteratorVariable1.LoadAsset <GameObject>(
                        "assets/standard assets/environment/water/water4/prefabs/TileOnly.prefab");
                    TileTemp.AddComponent <WaterTile>();
                    TileTemp.GetComponent <WaterTile>().reflection = WaterTemp.GetComponent <PlanarReflection>();
                    TileTemp.GetComponent <WaterTile>().waterBase  = WaterTemp.GetComponent <WaterBase>();
                    Material mat = TileTemp.GetComponent <Renderer>().material;
                    GeoTools.ResetWaterMaterial(ref mat);
                    UnityEngine.Object.DontDestroyOnLoad(TileTemp);
                    TileTemp.name = "TileTemp";
                    TileTemp.SetActive(false);
                    WaterTemp.GetComponent <WaterBase>().sharedMaterial = TileTemp.GetComponent <Renderer>().material;
                    UnityEngine.Object.DontDestroyOnLoad(WaterTemp);
                    WaterTemp.name = "WaterTemp";
                    WaterTemp.SetActive(false);
#if DEBUG
                    GeoTools.Log("Get " + TileTemp.name + " Successfully");
#endif
                }
                if (Isstart == 5 * t)
                {
                    SnowTemp = iteratorVariable1.LoadAsset <GameObject>(
                        "assets/standard assets/particlesystems/prefabs/duststom2.prefab");
                    SnowTemp.name = "SnowTemp";
                    SnowTemp.SetActive(false);
                    UnityEngine.Object.DontDestroyOnLoad(SnowTemp);
#if DEBUG
                    GeoTools.Log("Get " + SnowTemp.name + " Successfully");
#endif
                }
            }
            catch (Exception ex)
            {
                GeoTools.Log(ex.ToString());
            }
            if (Isstart < 6 * t)
            {
                Isstart++;
            }
        }
Ejemplo n.º 28
0
 public void ReadScene(string SceneName)
 {
     CloudsColor = new Color(0.9f, 0.9f, 0.9f, 0.6f);
     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 Cloud
                 if (chara[0] == "Cloud")
                 {
                     if (chara[1] == "size")
                     {
                         this.CloudSize = Convert.ToInt32(chara[2]);
                         LoadCloud();
                     }
                     if (chara[1] == "step")
                     {
                         this.cloudstep = Convert.ToInt32(chara[2]);
                     }
                     else if (chara[1] == "floorScale" || chara[1] == "cloudScale")
                     {
                         cloudScale = new Vector3(
                             Convert.ToSingle(chara[2]),
                             Convert.ToSingle(chara[3]),
                             Convert.ToSingle(chara[4]));
                     }
                     else if (chara[1] == "location")
                     {
                         this.transform.localPosition = new Vector3(
                             Convert.ToSingle(chara[2]),
                             Convert.ToSingle(chara[3]),
                             Convert.ToSingle(chara[4]));
                     }
                     else if (chara[1] == "color")
                     {
                         this.CloudsColor = new Color(
                             Convert.ToSingle(chara[2]),
                             Convert.ToSingle(chara[3]),
                             Convert.ToSingle(chara[4]),
                             Convert.ToSingle(chara[5]));
                     }
                 }
                 #endregion
             }
         }
         srd.Close();
         GeoTools.Log("ReadCloud Completed!");
     }
     catch (Exception ex)
     {
         GeoTools.Log("Error! ReadCloud Failed!");
         GeoTools.Log(ex.ToString());
         return;
     }
 }
Ejemplo n.º 29
0
 private void Start()
 {
     try
     {
         this.WaterHeight = GameObject.Find("water0").transform.localPosition.y;
         if (base.GetComponent <Rigidbody>() == null)
         {
             UnityEngine.Object.Destroy(this);
             return;
         }
         else
         {
             float x = base.gameObject.transform.localScale.x;
             float y = base.gameObject.transform.localScale.y;
             float z = base.gameObject.transform.localScale.z;
             if ((x >= y) && (x >= z))
             {
                 this.minVolue = x;
             }
             else if ((y >= x) && (y >= z))
             {
                 this.minVolue = y;
             }
             else
             {
                 this.minVolue = z;
             }
             this.volume      = (x * y) * z;
             this.Drag        = base.GetComponent <Rigidbody>().drag;
             this.AngularDrag = base.GetComponent <Rigidbody>().angularDrag;
             if (base.GetComponent <FireTag>() != null)
             {
                 fireTag = true;
             }
             if (base.GetComponent <MyBlockInfo>().blockName == "SMALL WOOD BLOCK")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WOODEN BLOCK")
             {
                 this.Force = (4f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WOODEN POLE")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WOODEN PANEL")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "PROPELLER")
             {
                 this.Force = (4f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "SMALL PROPELLER")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WING")
             {
                 this.Force = (8f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WING PANEL")
             {
                 this.Force = (4f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "PROPELLOR SMALL")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "Rocket")
             {
                 this.Force = (0.8f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WHEEL")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "LARGE WHEEL")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "WHEEL FREE")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "UNPOWERED LARGE WHEEL")
             {
                 this.Force = (2f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "FLYING SPIRAL")
             {
                 this.Force = (0.8f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "BALLOON")
             {
                 this.Force = (8f * this.volume) / this.ForceScale;
             }
             else if (base.GetComponent <MyBlockInfo>().blockName == "FLAMETHROWER")
             {
                 this.Force = (0.8f * this.volume) / this.ForceScale;
             }
             else
             {
                 this.Force = 0f;
             }
         }
     }
     catch (Exception exception)
     {
         GeoTools.Log(exception.ToString());
         UnityEngine.Object.Destroy(this);
     }
 }
Ejemplo n.º 30
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;
            }
        }