private string SetStatsText(string PLYData)
        {
            PLYMeshConstruct.GetPLYState(PLYData);
            int    VertexCount = PLYMeshConstruct.VertexCount;
            string Text        = string.Format("Vertex Count : {0}\nPolygon Count : {1}\nUV : {2}\nVertex Color : {3}", VertexCount, PLYMeshConstruct.PolygonCount, PLYMeshConstruct.ReadUV, PLYMeshConstruct.ReadColor);

            if (VertexCount > 65535)
            {
                Text = Text + "\n\nWarning : Vertex Count Maximum 65535";
            }
            return(Text);
        }
        public override string SetText(string NewText, bool sync = true)
        {
            PLYDataList = new List <string>(NewText.Split(new string[] { PLYDataDelimiter }, StringSplitOptions.None));
            List <string> NameList = (PLYDataList[0] == string.Empty) ? new List <string>() : new List <string>(PLYDataList[0].Split(new string[] { PLYNameDelimiter }, StringSplitOptions.None));

            PLYDataList.RemoveAt(0);

            for (int i = 0; i < PLYDataList.Count; ++i)
            {
                MeshList.Add(PLYMeshConstruct.MeshConstruct(PLYDataList[i], NameList[i]));
            }

            return(string.Empty);
        }
        public override bool ExtraGUI()
        {
            Rect Panel1 = new Rect(250f, 100f, 1030f, 600f);

            GUILayout.BeginArea(Panel1, "PLYDataStorageBlock", GUI.skin.window);

            GUILayout.BeginVertical(GUILayout.Height(490));
            GUILayout.Label("State");
            GUILayout.TextArea(StatsText, GUILayout.Height(130));

            if (SelectID != -1)
            {
                AddDataMenu = false;
                PLYData     = string.Empty;
                StatsText   = SetStatsText(PLYDataList[SelectID]);

                if (GUILayout.Button("Delete", GUILayout.ExpandHeight(false)))
                {
                    PLYDataList.RemoveAt(SelectID);
                    UnityEngine.Object.Destroy(MeshList[SelectID]);
                    MeshList.RemoveAt(SelectID--);
                    StatsText = string.Empty;
                }
            }

            if (AddDataMenu)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Set Name : ", GUILayout.MaxWidth(100));
                PLYName = GUILayout.TextField(PLYName);
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("File Path : ", GUILayout.MaxWidth(100));
                SetFilePath = GUILayout.TextField(SetFilePath);
                GUILayout.EndHorizontal();

                if (GUILayout.Button("Load", GUILayout.ExpandHeight(false)))
                {
                    PLYData   = new WWW(SetFilePath).text;
                    StatsText = SetStatsText(PLYData);
                }

                if (PLYData != string.Empty && GUILayout.Button("Add To List", GUILayout.ExpandHeight(false)))
                {
                    PLYDataList.Add(PLYData);
                    MeshList.Add(PLYMeshConstruct.MeshConstruct(PLYData, PLYName));
                    PLYData     = string.Empty;
                    StatsText   = string.Empty;
                    AddDataMenu = false;
                    SyncroniseDataUpLoad();
                }
            }

            GUILayout.EndVertical();

            if (!AddDataMenu && GUILayout.Button("Add New Data", GUILayout.Height(40)))
            {
                SelectID    = -1;
                StatsText   = string.Empty;
                AddDataMenu = true;
            }

            bool result = GuiCommon.DisplayCloseButton((int)Panel1.width);

            GUILayout.EndArea();

            Gui_PLYDataList();
            return(result);
        }