Example #1
0
    public void LinkNode(bool a_anchorToEdit = true)
    {
        PedestrianNode useEditNode   = null;
        PedestrianNode useAnchorNode = null;

        if (EditNode)
        {
            useEditNode = EditNode;
        }
        else if (PreviousEditNode)
        {
            useEditNode = PreviousEditNode;
        }

        if (AnchorNode)
        {
            useAnchorNode = AnchorNode;
        }
        else if (PreviousAnchorNode)
        {
            useAnchorNode = PreviousAnchorNode;
        }

        if (m_linkBothDir)
        {
            if (useAnchorNode)
            {
                useAnchorNode.AddNode(useEditNode);
            }
            if (useEditNode)
            {
                useEditNode.AddNode(useAnchorNode);
            }
        }
        else if (a_anchorToEdit)
        {
            if (useAnchorNode)
            {
                useAnchorNode.AddNode(useEditNode);
            }
        }
        else
        {
            if (useEditNode)
            {
                useEditNode.AddNode(useAnchorNode);
            }
        }
    }
Example #2
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        if (!PedestrianSystem || !PedestrianSystem.Instance)
        {
            return;
        }

        GUILayout.Space(10.0f);
        GUILayout.BeginVertical("box");

        if (GUILayout.Button("Generate Node", GUILayout.Height(49)))
        {
            if (!PedestrianSystem.Instance.m_nodePrefab)
            {
                Debug.LogError("Node Prefab not set. You can find one in \"Assets\\Pedestrian System\\Prefabs\\Pathing\". Node Generation Cancelled.");
                return;
            }

            PedestrianNode node = PrefabUtility.InstantiatePrefab(PedestrianSystem.Instance.m_nodePrefab) as PedestrianNode;
            Selection.activeGameObject = node.gameObject;
            node.transform.parent      = PedestrianSystem.Instance.transform;

            if (PedestrianSystem.Instance.m_autoLink)
            {
                if (PedestrianSystem.Instance.m_linkBothDir)
                {
                    if (EditNode)
                    {
                        EditNode.AddNode(node);
                        EditorUtility.SetDirty(EditNode);

                        node.AddNode(EditNode);
                        EditorUtility.SetDirty(node);

                        Vector3 pos = EditNode.transform.position;
                        pos.x += 4.0f;
                        node.transform.position = pos;
                    }
                    else if (AnchorNode)
                    {
                        AnchorNode.AddNode(node);
                        EditorUtility.SetDirty(AnchorNode);

                        node.AddNode(AnchorNode);
                        EditorUtility.SetDirty(node);

                        Vector3 pos = AnchorNode.transform.position;
                        pos.x += 4.0f;
                        node.transform.position = pos;
                    }
                }
                else if (EditNode)
                {
                    EditNode.AddNode(node);
                    EditorUtility.SetDirty(EditNode);

                    Vector3 pos = EditNode.transform.position;
                    pos.x += 4.0f;
                    node.transform.position = pos;
                }
                else if (AnchorNode)
                {
                    AnchorNode.AddNode(node);
                    EditorUtility.SetDirty(AnchorNode);

                    Vector3 pos = AnchorNode.transform.position;
                    pos.x += 4.0f;
                    node.transform.position = pos;
                }
            }

            if (EditNode)
            {
                if (AnchorNode)
                {
                    AnchorNode.transform.parent = PedestrianSystem.transform;
                }

                AnchorNode = EditNode;
                AnchorNode.transform.parent = AnchorNodeFolder.transform;

                EditNode = node;
                EditNode.transform.parent = EditNodeFolder.transform;

                PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, AnchorNode);
            }
            else
            {
                EditNode = node;
                EditNode.transform.parent = EditNodeFolder.transform;
            }

            PedestrianSystem.Instance.SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, node);
        }

        GUILayout.EndVertical();
        bool guiChanged = false;

        if (EditNode && AnchorNode)
        {
            GUILayout.BeginHorizontal("box");
            if (GUILayout.Button("Go to 'Edit' Piece", GUILayout.Height(49)))
            {
                Selection.activeObject = EditNode.transform;
            }

            if (GUILayout.Button("Go to 'Anchor' Piece", GUILayout.Height(49)))
            {
                Selection.activeObject = AnchorNode.transform;
            }
            GUILayout.EndHorizontal();

            GUILayout.Space(10.0f);
        }

        PedestrianNode useAnchorNode = null;
        PedestrianNode useEditNode   = null;

        if (PedestrianSystem.Instance.EditNode)
        {
            useEditNode = PedestrianSystem.Instance.EditNode;
        }
        else if (PedestrianSystem.Instance.PreviousEditNode)
        {
            useEditNode = PedestrianSystem.Instance.PreviousEditNode;
        }

        if (PedestrianSystem.Instance.AnchorNode)
        {
            useAnchorNode = PedestrianSystem.Instance.AnchorNode;
        }
        else if (PedestrianSystem.Instance.PreviousAnchorNode)
        {
            useAnchorNode = PedestrianSystem.Instance.PreviousAnchorNode;
        }

        if (useAnchorNode && useEditNode)
        {
            GUILayout.BeginHorizontal("box");

            if (PedestrianSystem && PedestrianSystem.TextureIconAnchorToEdit)
            {
                if (GUILayout.Button(PedestrianSystem.TextureIconAnchorToEdit))
                {
                    // link Anchor To Edit
                    PedestrianSystem.Instance.LinkNode();
                    guiChanged = true;
                }
            }
            else
            {
                if (GUILayout.Button("Link Anchor To Edit", GUILayout.Height(49)))
                {
                    // link Anchor To Edit
                    PedestrianSystem.Instance.LinkNode();
                    guiChanged = true;
                }
            }

            if (PedestrianSystem.TextureIconEditToAnchor)
            {
                if (GUILayout.Button(PedestrianSystem.TextureIconEditToAnchor))
                {
                    // link Edit to Anchor
                    PedestrianSystem.Instance.LinkNode(false);
                    guiChanged = true;
                }
            }
            else
            {
                if (GUILayout.Button("Link Edit to Anchor", GUILayout.Height(49)))
                {
                    // link Edit to Anchor
                    PedestrianSystem.Instance.LinkNode(false);
                    guiChanged = true;
                }
            }
            GUILayout.EndHorizontal();
        }

//		if(PedestrianSystem.Instance.EditNode)
//		{
//			SetPedestrianNode( PedestrianSystem.Tooltip.EDIT, PedestrianSystem.Instance.EditNode );
//			PedestrianSystem.Instance.SetPedestrianNode( PedestrianSystem.Tooltip.EDIT, null );
//		}
//
//		if(PedestrianSystem.Instance.AnchorNode)
//		{
//			SetPedestrianNode( PedestrianSystem.Tooltip.ANCHOR, PedestrianSystem.Instance.AnchorNode );
//			PedestrianSystem.Instance.SetPedestrianNode( PedestrianSystem.Tooltip.ANCHOR, null );
//		}

        if (guiChanged)
        {
            EditorUtility.SetDirty(useAnchorNode);
            EditorUtility.SetDirty(useEditNode);
        }

        if (EditNodeFolder)
        {
            for (int cIndex = 0; cIndex < EditNodeFolder.childCount; cIndex++)
            {
                EditNodeFolder.GetChild(cIndex).transform.parent = PedestrianSystem.transform;
            }

            if (EditNode)
            {
                EditNode.transform.parent = EditNodeFolder;
            }
        }

        if (AnchorNodeFolder)
        {
            for (int cIndex = 0; cIndex < AnchorNodeFolder.childCount; cIndex++)
            {
                AnchorNodeFolder.GetChild(cIndex).transform.parent = PedestrianSystem.transform;
            }

            if (AnchorNode)
            {
                AnchorNode.transform.parent = AnchorNodeFolder;
            }
        }

        if (AnchorNode)
        {
            SetPedestrianNode(PedestrianSystem.Tooltip.ANCHOR, AnchorNode);
        }

        if (EditNode)
        {
            SetPedestrianNode(PedestrianSystem.Tooltip.EDIT, EditNode);
        }

        if (GUI.changed)
        {
            EditorUtility.SetDirty(PedestrianSystem);
        }
    }