Ejemplo n.º 1
0
        public Location LocationNearestMeters(float meters)
        {
            Location   location           = null;
            float      closestMetersSoFar = Mathf.Infinity;
            SplineNode closestNodeSoFar   = null;

            for (int i = 0; i < spline.splineNodesArray.Count; i++)
            {
                SplineNode currentNode = spline.splineNodesArray[i];
                if (currentNode != null)
                {
                    float thisNodeMeters = MetersFromPosition(currentNode.transform.position);
                    if (thisNodeMeters < closestMetersSoFar)
                    {
                        closestMetersSoFar = thisNodeMeters;
                        closestNodeSoFar   = currentNode;
                    }
                }
            }

            if (closestNodeSoFar != null)
            {
                location = closestNodeSoFar.GetComponent <Location>();
            }

            return(location);
        }
Ejemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();
        Spline spline = (Spline)target;

        if (spline)
        {
            EditorGUILayout.BeginVertical();
            EditorGUILayout.BeginHorizontal();
            if (spline.begin)
            {
                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("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();
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.EndVertical();
        }
    }
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();
        }
    }