Beispiel #1
0
    public void LoadGraph(string path)
    {
        string jsonString = "";

        try
        {
            jsonString = File.ReadAllText(path);
        }
        catch (System.Exception) { }

        if (jsonString == "")
        {
            string log = $"{path} is empty";
            uiManager.AddLog(log);
            Debug.LogError(log);
            return;
        }

        if (isSimulating)
        {
            Simulate();
        }

        ClearAll();
        //if (!jsonString.Contains("camSize"))
        //{
        //    int len = jsonString.Length;
        //    jsonString.Insert(len - 2, ",\"camPos\":{\"x\":0.0,\"y\":0.0,\"z\":-10.0},\"camSize\":10.0");
        //    print(jsonString);
        //}
        PetriNet petriNet = JsonUtility.FromJson <PetriNet>(jsonString);

        AddStateMode      addStateMode      = FindObjectOfType <AddStateMode>();
        AddTransitionMode addTransitionMode = FindObjectOfType <AddTransitionMode>();
        AddEdgeMode       addEdgeMode       = FindObjectOfType <AddEdgeMode>();

        foreach (NodeInfo nodeInfo in petriNet.nodeInfos)
        {
            int     value = nodeInfo.value;
            Vector3 pos   = nodeInfo.WorldPos;
            if (nodeInfo.tag == "State")
            {
                addStateMode.AddState(pos).value = value;
            }
            else
            {
                addTransitionMode.AddTransition(pos).value = value;
            }
        }
        foreach (EdgeInfo edgeInfo in petriNet.edgeInfos)
        {
            Node toNode   = FindNode(edgeInfo.toNodeTag, edgeInfo.toNodePosition);
            Node fromNode = FindNode(edgeInfo.fromNodeTag, edgeInfo.fromNodePosition);
            addEdgeMode.CreateEdge(fromNode, toNode, edgeInfo.points).weight = edgeInfo.weight;
        }
        string logText = $"Petri-net loaded from {path}";

        uiManager.AddLog(logText);
        Debug.Log(logText);
        Refresh();

        Debug.Log(petriNet.camPos + " " + petriNet.camSize);
        Camera cam = Camera.main;

        cam.transform.position = petriNet.camPos;
        camController.SetCameraSize(petriNet.camSize);
    }
Beispiel #2
0
    void Update()
    {
        if (!enableShortcut)
        {
            return;
        }

        if (Input.GetKeyDown(KeyCode.LeftControl))
        {
            ctrlDown = true;
        }
        else if (Input.GetKeyUp(KeyCode.LeftControl))
        {
            ctrlDown = false;
        }

        if (Input.GetKeyDown(KeyCode.LeftShift))
        {
            shiftDown = true;
        }
        else if (Input.GetKeyUp(KeyCode.LeftShift))
        {
            shiftDown = false;
        }


        if (Input.GetKeyDown(KeyCode.D) && ctrlDown && !shiftDown)
        {
            string logText = "Delete mode activated";
            uiManager.AddLog(logText);
            Debug.Log(logText);
            graphManager.currentMode = graphModes.GetComponent <DeleteMode>();
        }
        else if (Input.GetKeyDown(KeyCode.E) && !ctrlDown && !shiftDown)
        {
            string logText = "Add edge mode activated";
            Debug.Log(logText);
            uiManager.AddLog(logText);
            AddEdgeMode addEdgeMode = graphModes.GetComponent <AddEdgeMode>();
            addEdgeMode.ResetEverything();
            graphManager.currentMode = addEdgeMode;
        }
        //else if (Input.GetKeyDown(KeyCode.E) && !ctrlDown && shiftDown)
        //{
        //    string logText = "Add double edge mode activated";
        //    Debug.Log(logText);
        //    uiManager.AddLog(logText);
        //    AddDoubleEdgeMode addDoubleEdgeMode = graphModes.GetComponent<AddDoubleEdgeMode>();
        //    addDoubleEdgeMode.prevNode = null;
        //    graphManager.currentMode = addDoubleEdgeMode;
        //}
        else if (Input.GetKeyDown(KeyCode.E) && ctrlDown && !shiftDown)
        {
            string logText = "Edit mode activated";
            Debug.Log(logText);
            uiManager.AddLog(logText);
            graphManager.currentMode = graphModes.GetComponent <InputMode>();
        }
        else if (Input.GetKeyDown(KeyCode.F) && ctrlDown && !shiftDown)
        {
            string logText = "Firing mode activate";
            Debug.Log(logText);
            uiManager.AddLog(logText);
            graphManager.currentMode = graphModes.GetComponent <FiringMode>();
        }
        else if (Input.GetKeyDown(KeyCode.L) && ctrlDown)
        {
            StartCoroutine(ShowLoadDialogCoroutine());
        }
        else if (Input.GetKeyDown(KeyCode.R) && ctrlDown && !shiftDown)
        {
            ResetGraphStates();
        }
        else if (Input.GetKeyDown(KeyCode.R) && ctrlDown && shiftDown)
        {
            graphManager.ClearAll();
        }
        else if (Input.GetKeyDown(KeyCode.S) && !ctrlDown && !shiftDown)
        {
            ActivateAddStateMode();
        }
        else if (Input.GetKeyDown(KeyCode.S) && ctrlDown)
        {
            StartCoroutine(ShowSaveDialogCoroutine());
        }
        else if (Input.GetKeyDown(KeyCode.T) && !ctrlDown && !shiftDown)
        {
            string logText = "Add transition mode activated";
            Debug.Log(logText);
            uiManager.AddLog(logText);
            graphManager.currentMode = graphModes.GetComponent <AddTransitionMode>();
        }
        else if (Input.GetKeyDown(KeyCode.X) && ctrlDown && shiftDown)
        {
            string logText = "Exiting application";
            Debug.Log(logText);
            uiManager.AddLog(logText);
            Application.Quit();
        }
        else if (Input.GetKeyDown(KeyCode.Space) && ctrlDown && shiftDown)
        {
            SimulateGraph();
        }
        //else
        //{
        //    for(int i=0; i<10; i++)
        //    {
        //        if (Input.GetKeyDown("" + i) && altDown && shiftDown)
        //        {
        //            graphManager.SaveGraph(i);
        //        }
        //        else if(Input.GetKeyDown("" + i) && altDown && !shiftDown)
        //        {
        //            graphManager.LoadGraph(i);
        //        }
        //    }
        //}


        GetMovementInput();

        camController.MoveCamera(moveInput);
    }