Ejemplo n.º 1
0
    public GameObject AddPrev()
    {
        GameObject dup = (GameObject)GameObject.Instantiate(gameObject);                                //Start by copying me

        //For some reason, all children are active on duplication.  We just need to deactivate all of the children, and reactivate the parent
        dup.SetActiveRecursively(false);
        dup.active = true;
        if (transform.parent)
        {
            dup.transform.parent = transform.parent;                                                            //If I have a parent, add it to the new node
        }
        dup.transform.position   = transform.position + Vector3.left * addOffset;
        dup.transform.localScale = transform.localScale;
        dup.name = "Node";
        SplineNode dupNode = dup.GetComponent <SplineNode>();

        dupNode.spanCollider = null;
        if (dupNode)
        {
            if (previous)
            {
                previous.next    = dupNode;                                                                             //My previous node now points to the new node
                dupNode.previous = previous;                                                                            //The new node points back to my old previous
            }
            previous     = dupNode;                                                                                     //The dup is now my previous node
            dupNode.next = this;                                                                                        //I'm the dup's next node
        }
        dupNode.AddCollider();
        if (spline)
        {
            spline.AddVert(dupNode);
        }
        return(dup);
    }
Ejemplo n.º 2
0
    public GameObject AddNext()
    {
        //New Node
        GameObject dup = (GameObject)GameObject.Instantiate(gameObject);

        dup.SetActive(false);
        dup.SetActive(true);
        if (transform.parent)
        {
            dup.transform.parent = transform.parent;
        }
        dup.transform.position   = transform.position + Vector3.right * addOffset;
        dup.transform.rotation   = Quaternion.FromToRotation(Vector3.forward, Vector3.right);
        dup.transform.localScale = transform.localScale;
        dup.name = "Node";
        SplineNode dupNode = dup.GetComponent <SplineNode>();

        dupNode.spanCollider = null;
        if (next)
        {
            next.previous = dupNode;
            dupNode.next  = next;
            dupNode.AddCollider();
        }
        next             = dupNode;                                                                                     //The dup is now my previous node
        dupNode.previous = this;                                                                                        //I'm the dup's next node
        AddCollider();
        if (spline)
        {
            spline.AddVert(dupNode);
        }
        return(dup);
    }
Ejemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        Spline spline = (Spline)target;

        if (spline)
        {
            if (spline.begin)
            {
                EditorGUILayout.BeginVertical();
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("Set Speed"))
                {
                    SplineNode begin = spline.begin;
                    do
                    {
                        begin.speed = spline.setSpeed;
                        begin       = begin.next;
                    } while(begin && begin != spline.begin);
                }
                if (GUILayout.Button("Set Pause Time"))
                {
                    SplineNode begin = spline.begin;
                    do
                    {
                        begin.pauseTime = spline.setPauseTime;
                        begin           = begin.next;
                    } while(begin && begin != spline.begin);
                }
                if (GUILayout.Button("Toggle handles"))
                {
                    SplineNode begin = spline.begin;
                    spline.handlesOn = !spline.handlesOn;
                    do
                    {
                        begin.hideHandles = spline.handlesOn;
                        begin.RefreshModel();
                        begin = begin.next;
                    } while(begin && begin != spline.begin);
                }
                if (GUILayout.Button("Toggle nodes"))
                {
                    SplineNode begin = spline.begin;
                    spline.nodesOn = !spline.nodesOn;
                    do
                    {
                        begin.GetComponent <Renderer>().enabled = spline.nodesOn;
                        begin = begin.next;
                    } while(begin && begin != spline.begin);
                }
                EditorGUILayout.EndHorizontal();
            }
            spline.colliderRadius = EditorGUILayout.Slider("Global Collider Radius", spline.colliderRadius, Mathf.Epsilon, spline.maxColliderRadius);
            SplineNode node = spline.begin;
            do
            {
                if (!node.colliderFreedom)
                {
                    node.colliderRadius = spline.colliderRadius;
                    node.ReOrient();
                }
                node = node.next;
            } while(node && node != spline.begin);
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Toggle colliders"))
            {
                spline.collidersOn = !spline.collidersOn;
                SplineColliderDraw[] colliders = spline.GetComponentsInChildren <SplineColliderDraw>();
                foreach (SplineColliderDraw draw in colliders)
                {
                    draw.draw = spline.collidersOn;
                }
            }
            if (GUILayout.Button("Reset Colliders"))
            {
                node = spline.begin;
                do
                {
                    node.colliderType = spline.globalColliderType;
                    node.AddCollider();
                    node = node.next;
                } while(node && node != spline.begin);
                SplineColliderDraw[] colliders = spline.GetComponentsInChildren <SplineColliderDraw>();
                foreach (SplineColliderDraw draw in colliders)
                {
                    draw.draw = spline.collidersOn;
                }
            }
            if (GUILayout.Button("Lock Ornaments"))
            {
                node          = spline.begin;
                spline.locked = !spline.locked;
                do
                {
                    node.Locked = spline.locked;
                    node        = node.next;
                } while(node && node != spline.begin);
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndVertical();
        }
    }