public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            var node = (NodeBehaviour)this.target;

            GUIHelper.HorizontalLine();

            var dataChanged = node.NodeState.StateChanged();

            GUI.enabled = !node.noJson;
            if (GUILayout.Button("Save Node" + (dataChanged ? " *" : "")))
            {
                var json = node.ToJson();//need to add as well??
                NodeDataManager.AddNode(json);
                NodeDataLoader.SaveAll(NodeDataManager.SaveFilePath(), NodeDataManager.SaveDataHolder());
                node.NodeState.UpdateState();
            }
            GUI.enabled = true;

            changeParentMenu(node);

            if (GUILayout.Button("Normalise direct children"))
            {
                NodeHelper.NormaliseScale(node);
            }

            GUIHelper.HorizontalLine();


            GUI.enabled = false;
            EditorGUILayout.Vector3Field("Position", node.GetPosition());
            EditorGUILayout.Vector3Field("Scale", node.GetScale());
            GUI.enabled = true;
        }
Beispiel #2
0
 private IEnumerator nodeEnabledCoroutine()
 {
     while (!NodeDataManager.IsLoaded)
     {
         yield return(null);
     }
     NodeDataManager.NodeEnabled(this);
 }
Beispiel #3
0
 private void acceptNode()
 {
     NodeDataManager.AddNode(this.node);
     if (this.node.behaviour == null)
     {
         this.createNodeBehaviour();
     }
     this.accepted = true;
     this.Close();
 }
        public void OnGUI()
        {
            this.container            = EditorGUILayout.ObjectField("container", this.container, typeof(Transform), true) as Transform;
            NodeDataName.DataFileName = EditorGUILayout.TextField("Data File Name", NodeDataName.DataFileName);


            GUI.enabled = this.container != null && !NodeDataManager.IsLoaded && !this.hasCreated;
            if (GUILayout.Button("Create"))
            {
                Debug.Log("Creating new room layout from cubes, old data will be deleted");
                var data = NodeDataLoader.LoadAll(NodeDataName.DataFileName);
                NodeDataManager.Load(NodeDataName.DataFileName, data);
                NodeDataManager.DeleteAll();

                var cubes = this.container.GetComponentsInChildren <Transform>();
                foreach (var cube in cubes)
                {
                    if (cube == this.container)
                    {
                        continue;
                    }
                    if (cube.parent != this.container)
                    {
                        Debug.LogWarning("Container has 2nd level a child that will be ignored"); continue;
                    }

                    var node = new NodeJson(NodeDataManager.NextName(NodeType.CUBE), cube.position, cube.localScale, "", NodeType.CUBE);

                    NodeDataManager.AddNode(node);
                }

                NodeFactory.CreateNodes(NodeDataManager.NodeJsons);

                this.container.gameObject.SetActive(false);
                this.hasCreated = true;
            }
            GUI.enabled = true;
            if (NodeDataManager.IsLoaded)
            {
                GUILayout.Label("Please Unload first");
            }


            GUIHelper.HorizontalLine();
            GUI.skin.label.wordWrap = true;
            GUILayout.Label("** This Action will overrite current data **");
            GUILayout.Label("If you dont want to lose any data please change the data file that is being used");

            GUI.enabled = this.hasCreated;
            if (GUILayout.Button("Save"))
            {
                NodeDataLoader.SaveAll(NodeDataManager.SaveFilePath(), NodeDataManager.SaveDataHolder());
            }
            GUI.enabled = true;
        }
Beispiel #5
0
        private void finishNodeEditing()
        {
            NodeDataManager.Finish();

            destroyAllBehaviours <NodeBehaviour>();
            destroyAllGameObjects <HoleCutterBehaviour>();
            destroyAllGameObjects <NodeBehaviour>();

            closeAllOtherNodeWindows();
            this.Close();
        }
Beispiel #6
0
        public void OnDisable()
        {
            if (NodeDataManager.Finished)
            {
                return;
            }

            if (NodeDataManager.IsLoaded)
            {
                NodeDataManager.NodeDisabled(this);
            }
        }
Beispiel #7
0
        public void Load()
        {
            Debug.Log("Loading Nodes");
            this.sceneChanged = false;

            NodeDataManager.Unload();

            var data = NodeDataLoader.LoadAll(NodeDataName.DataFileName);

            NodeDataManager.Load(NodeDataName.DataFileName, data);
            NodeFactory.CreateRootParent();
            NodeFactory.CreateNodes(NodeDataManager.NodeJsons);
        }
        private static void cutHole(Vector3 pos, Vector3 sca, Transform wall)
        {
            var position = calculateHolePosition(pos, wall);
            var scale = calculateHoleScale(sca, wall);

            var parentScale = getParentScale(wall);
            var scaledPos = NodeHelper.InverseScale(position, parentScale);
            var scaledSca = NodeHelper.InverseScale(scale, parentScale);

            var hole = new NodeJson(wall.name, scaledPos, scaledSca, "", NodeType.HOLE);

            NodeDataManager.AddNode(hole);
            NodeFactory.CreateNode(hole);
        }
Beispiel #9
0
        public static void SaveAll(string fileName, NodeJsonHolder data)
        {
            backup(GetFullPath(fileName));

            var text = JsonUtility.ToJson(data, true);

            createFolders(GetFullPath(fileName));
            var steam = new StreamWriter(GetFullPath(fileName));

            steam.Write(text);
            steam.Close();
            AssetDatabase.Refresh();
            NodeDataManager.AfterSave();
        }
Beispiel #10
0
        public void OnDestroy()
        {
            if (NodeDataManager.Finished)
            {
                return;
            }

            if (this.HasParent)
            {
                this.RemoveParent();
            }
            if (!this.noJson && this.json != null && NodeDataManager.IsLoaded)
            {
                NodeDataManager.RemoveNode(this.json);
            }
        }
Beispiel #11
0
        public void Save()
        {
            Debug.Log("Save Nodes");

            this.savingNodeData = true;
            this.sceneChanged   = false;

            foreach (var node in NodeDataManager.NodeBehaviours)
            {
                if (node.nodeType == NodeType.HOLE)
                {
                    continue;                                   /* dont save hole? */
                }

                node.UpdateJson(); // updates json
                node.NodeState.UpdateState();
            }
            NodeDataLoader.SaveAll(NodeDataManager.SaveFilePath(), NodeDataManager.SaveDataHolder());
        }
Beispiel #12
0
        public void UpdateFromJson(NodeJson updatedJson)
        {
            if (updatedJson == null)
            {
                return;
            }

            this.name = updatedJson.name;
            this.transform.localPosition = updatedJson.position;
            if (this.GetScale() != updatedJson.scale)
            {
                var newScale = NodeHelper.InverseScale(updatedJson.scale, this.GetScale());
                this.transform.localScale = newScale;
                NodeHelper.NormaliseScale(this);
            }

            var parentName = this.HasParent ? this.parent.name : "";

            if (updatedJson.parentName != parentName)
            {
                var newParent = updatedJson.parentName == "" ? RootParent : NodeDataManager.FindNode(updatedJson.parentName);
                this.ChangeParent(newParent);
            }
        }
Beispiel #13
0
 public QuadCreator(Vector3 position, Vector3 scale) : base(NodeDataManager.NextName("Quad"), position, scale)
 {
 }
Beispiel #14
0
 public void UnLoad()
 {
     NodeDataManager.Unload();
 }
Beispiel #15
0
 public CubeCreator(Vector3 position, Vector3 scale) : base(NodeDataManager.NextName("cube"), position, scale)
 {
 }
 public static void Load(string fileName, NodeJsonHolder data)
 {
     _instance = new NodeDataManager(fileName);
     _instance.loadData(data); // maybe need this line
 }
 public static void Unload()
 {
     _instance = null;
     DeleteAutoGenObjects();
 }
 public static void Finish()
 {
     _instance = null;
     _finished = true;
 }
Beispiel #19
0
 private void createNewNode(string nodeType)
 {
     this.node = new NodeJson(NodeDataManager.NextName(nodeType), Vector3.zero, Vector3.one, "", nodeType);
 }
Beispiel #20
0
 private NodeBehaviour getOldWall()
 {
     return(NodeDataManager.FindNode(this.name));
 }
Beispiel #21
0
 public EmptyCreator(Vector3 position, Vector3 scale) : base(NodeDataManager.NextName("empty"), position, scale)
 {
 }