예제 #1
0
 WaypointAgent.AxisToggle AxisToggleField(string label, WaypointAgent.AxisToggle field)
 {
     GUILayout.BeginHorizontal();
     EditorGUILayout.LabelField(label);
     field.x = GUILayout.Toggle(field.x, "X");
     field.y = GUILayout.Toggle(field.y, "Y");
     field.z = GUILayout.Toggle(field.z, "Z");
     GUILayout.EndHorizontal();
     return(field);
 }
예제 #2
0
        public override void OnInspectorGUI()
        {
            EditorGUI.BeginChangeCheck();
            GUILayout.Space(5);

            WaypointManager manager    = EditorGUILayout.ObjectField("Waypoint Manager", self.manager, typeof(WaypointManager), true) as WaypointManager;
            float           factor     = EditorGUILayout.Slider("Factor", self.factor, -1f, 1f);
            float           speed      = EditorGUILayout.FloatField("Speed", self.speed);
            float           height     = EditorGUILayout.FloatField("Height", self.height);
            float           baseOffset = EditorGUILayout.FloatField("BaseOffset", self.baseOffset);
            float           radius     = EditorGUILayout.FloatField("Radius", self.radius);

            WaypointAgent.AxisToggle posGroup = this.AxisToggleField("Position Apply", self.positionApply);
            WaypointAgent.AxisToggle rotGroup = this.AxisToggleField("Rotation Apply", self.rotationApply);
            bool completeTrail = EditorGUILayout.Toggle("Complete Trail", self.completeTrail);
            bool loop          = EditorGUILayout.Toggle("Loop", self.loop);

            if (self.manager != null)
            {
                if (Application.isPlaying)
                {
                    if (GUILayout.Button(self.isStopped ? "Return" : "Stop"))
                    {
                        self.isStopped = !self.isStopped;
                    }
                }
                else
                {
                    if (GUILayout.Button("Update Position"))
                    {
                        self.SetPosition(self.manager.GetPositionOnTrail(self.factor));
                    }
                }
            }
            else
            {
                GUILayout.Label("It needs a WaypointManager to move", new GUIStyle("Helpbox"));
            }

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(self, "Change Agent");
                self.manager       = manager;
                self.factor        = factor;
                self.speed         = speed;
                self.height        = height;
                self.baseOffset    = baseOffset;
                self.radius        = radius;
                self.completeTrail = completeTrail;
                self.loop          = loop;
                self.positionApply = posGroup;
                self.rotationApply = rotGroup;
                //self.UpdatePosition();
            }
        }