Example #1
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        GameObjectActive go = target as GameObjectActive;

        if (!go)
        {
            return;
        }
        if (go.gos_Hide == null)
        {
            go.gos_Hide = new GameObject[0];
        }
        if (go.gos_Show == null)
        {
            go.gos_Show = new GameObject[0];
        }

        for (int i = 0; i < go.gos_Hide.Length; i++)
        {
            if (go.gos_Hide[i] == null)
            {
                continue;
            }
            go.gos_Hide[i].SetActive(!go.bl_IsBoom);
        }
        for (int i = 0; i < go.gos_Show.Length; i++)
        {
            if (go.gos_Show[i] == null)
            {
                continue;
            }
            go.gos_Show[i].SetActive(go.bl_IsBoom);
        }

        if (GUILayout.Button(go.bl_IsBoom ? "初始" : "切换"))
        {
            go.bl_IsBoom = !go.bl_IsBoom;
        }
    }
Example #2
0
    //Is called when a selection from the context menu is made
    void ContextCallback(object obj)
    {
        //make the passed object to a string
        string clb = obj.ToString();

        //add the node we want
        if (clb.Equals("inputNode"))
        {
            InputNode inputNode = ScriptableObject.CreateInstance <InputNode>();
            inputNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 80);

            windows.Add(inputNode);
        }
        else if (clb.Equals("outputNode"))
        {
            OutputNode outputNode = ScriptableObject.CreateInstance <OutputNode>();
            outputNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 80);

            windows.Add(outputNode);
        }
        else if (clb.Equals("calcNode"))
        {
            CalcNode calcNode = ScriptableObject.CreateInstance <CalcNode>();
            calcNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 95);

            windows.Add(calcNode);
        }
        else if (clb.Equals("compNode"))
        {
            ComparisonNode compNode = ScriptableObject.CreateInstance <ComparisonNode>();
            compNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 95);

            windows.Add(compNode);
        }
        else if (clb.Equals("numNode"))
        {
            NumberNode numNode = ScriptableObject.CreateInstance <NumberNode>();
            numNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 95);

            windows.Add(numNode);
        }
        else if (clb.Equals("goObj"))
        {
            GameObjectNode goObj = ScriptableObject.CreateInstance <GameObjectNode>();
            goObj.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 100);

            windows.Add(goObj);
        }
        else if (clb.Equals("goActive"))
        {
            GameObjectActive goNode = ScriptableObject.CreateInstance <GameObjectActive>();
            goNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 80);

            windows.Add(goNode);
        }
        else if (clb.Equals("goDistance"))
        {
            GameObjectDistance goDistance = ScriptableObject.CreateInstance <GameObjectDistance>();
            goDistance.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 80);

            windows.Add(goDistance);
        }
        else if (clb.Equals("timerNode"))
        {
            TimerNode tNode = ScriptableObject.CreateInstance <TimerNode>();
            tNode.WindowRect = new Rect(mousePos.x, mousePos.y, 200, 95);

            windows.Add(tNode);
        }
        else if (clb.Equals("boolNode"))
        {
            BoolNode bNode = ScriptableObject.CreateInstance <BoolNode>();
            bNode.WindowRect = new Rect(mousePos.x, mousePos.y, 120, 75);

            windows.Add(bNode);
        }
        else if (clb.Equals("clearAll"))
        {
            windows.Clear();
        }
        else if (clb.Equals("reset"))
        {
            PanX = PanY = 0;
        }
        else if (clb.Equals("makeTransition"))    //if it's a transition
        {
            bool clickedOnWindow = false;
            int  selectedIndex   = -1;
            //find the window that it was clicked
            for (int i = 0; i < windows.Count; i++)
            {
                if (windows[i].WindowRect.Contains(mousePos))
                {
                    selectedIndex   = i;
                    clickedOnWindow = true;
                    break;
                }
            }

            //and make it the selected node of the transition
            if (clickedOnWindow)
            {
                selectedNode       = windows[selectedIndex];
                makeTransitionMode = true;
            }
        }
        else if (clb.Equals("deleteNode"))    //if it's a delete node
        {
            bool clickedOnWindow = false;
            int  selectedIndex   = -1;

            //find the selected node
            for (int i = 0; i < windows.Count; i++)
            {
                if (windows[i].WindowRect.Contains(mousePos))
                {
                    selectedIndex   = i;
                    clickedOnWindow = true;
                    break;
                }
            }

            if (clickedOnWindow)
            {
                //delete it from our list
                BaseNode selNode = windows[selectedIndex];
                windows.RemoveAt(selectedIndex);

                //then pass it to all our nodes that is deleted
                foreach (BaseNode n in windows)
                {
                    n.NodeDeleted(selNode);
                }
            }
        }

        //we use else if instead of a switch because:

        /*Selecting from a set of multiple cases is faster with if statements than with switch
         */
    }