예제 #1
0
        public void OpenFile()
        {
#if UNITY_EDITOR
            fileName = EditorUtility.OpenFilePanel("Please select the JSON file", "", "json");
#else
            OpenFileDialog OpenFile = new OpenFileDialog();

            OpenFile.RestoreDirectory = true;
            OpenFile.InitialDirectory = @"C:\\";
            OpenFile.Title            = "Please select the JSON file";
            OpenFile.Filter           = "JSON Files (*.json) | *.json |All Files | *.* ";

            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                fileName = OpenFile.FileName;
            }
            else
            {
                fileName = "";
            }
#endif
            if (fileName.Length != 0)
            {
                ClearTemp();
                changeM.ResetChange();
                structureM.LoadingJson(fileName);
            }
        }
예제 #2
0
        // Если сделали двойной клик в пустоту.
        public void DoubleTapToNull()
        {
            //Debug.Log("Я кликнул два раза в пустоту");

            isConnection = false;
            SelectActive(startConnectionObject, false);
            startConnectionObject = null;

            string name = PredicateModule.NameSystem.GetName("Vertex");

            Vector3[] position = new Vector3[1];

            // 5f - расстояние создания.
            Vector3 mousePosFar = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 5f);

            position[0] = Camera.main.ScreenToWorldPoint(mousePosFar);
            structureM.AddNode(name);
            structureM.AddNodeData(name, position, "Vertex");
            predicateM.TactBuild(name, "Vertex");
            changeM.ResetChange();
            isNowSelected             = true;
            freeCamera.selectedObject = name;
            changeM.ShowChangeMenu(name);
        }
예제 #3
0
        // Загрузка из JSON.
        public void LoadingJson(string path)
        {
            // СТАДИЯ 1. ЗАГРУЗКА ИЗ JSON В СТРУКТУРУ.

            // Очищаем выделение, если оно и было.
            changeM.ResetChange();
            // Очищаем объекты unity сцены.
            SceneCleaning.Instance.Clean();
            // Очищаем систему имён.
            PredicateModule.NameSystem.Clear();
            // Создаём новую структуру.
            NewStructure();

            using (StreamReader sr = new StreamReader(path))
            {
                string json = sr.ReadToEnd();
                json = json.Replace("\t", string.Empty);
                json = json.Replace("\n", string.Empty);
                json = json.Replace("\r", string.Empty);
                Structure[] structureArr = JsonHelper.FromJson <Structure>(json);
                foreach (var part in structureArr)
                {
                    structure[part.Name] = part;
                }
            }

            // TO DO Возможно после билда не заработает.
            string pathTemp     = Application.dataPath + "/MetagraphEditorTemp";
            string homeLocation = Path.GetDirectoryName(LoadSaveDialog.GetInstance().fileName);

            if (!Directory.Exists(pathTemp))
            {
                Directory.CreateDirectory(pathTemp);
            }

            foreach (var part in structure)
            {
                foreach (var parent in part.Value.ParentStructuresKeys)
                {
                    part.Value.ParentStructures.Add(parent, structure[parent]);
                }
                foreach (var child in part.Value.ChildStructuresKeys)
                {
                    part.Value.ChildStructures.Add(child, structure[child]);
                }
                // Поправить как-нибудь. TO DO
                // При десериализации null становится empty.
                if (part.Value.Description == string.Empty)
                {
                    part.Value.Description = null;
                }
                if (part.Value.Start == string.Empty)
                {
                    part.Value.Start = null;
                }
                if (part.Value.End == string.Empty)
                {
                    part.Value.End = null;
                }
                if (part.Value.NameModel != null && part.Value.NameModel != string.Empty)
                {
                    File.Copy(homeLocation + "/" + part.Value.NameModel, pathTemp + "/" + part.Value.NameModel, true);
                }
                else
                {
                    part.Value.NameModel = null;
                }
            }

            // Загружаем новые имена в менеджер имён.
            PredicateModule.NameSystem.LoadNameDict(ref structure);

            // СТАДИЯ 2. ПОСТРОЕНИЕ ГРАФА ПО СТРУКТУРЕ.
            predicateM.BuildGraphs();
        }