namespace Dreamteck.Splines.Primitives { using UnityEngine; using UnityEditor; using System.Collections; using Dreamteck.Splines.Editor; [System.Serializable] public class PrimitiveEditor { [System.NonSerialized] protected DreamteckSplinesEditor editor; [System.NonSerialized] public Vector3 origin = Vector3.zero; protected SplinePrimitive primitive = new SplinePrimitive(); public virtual string GetName() { return "Primitive"; } public virtual void Open(DreamteckSplinesEditor editor) { this.editor = editor; primitive.is2D = editor.is2D; primitive.Calculate(); } public void Draw() { EditorGUI.BeginChangeCheck(); OnGUI(); if (EditorGUI.EndChangeCheck()) { Update(); } } public void Update() { primitive.is2D = editor.is2D; primitive.Calculate(); editor.SetPointsArray(primitive.GetPoints()); editor.SetSplineType(primitive.GetSplineType()); editor.SetSplineClosed(primitive.GetIsClosed()); editor.ApplyModifiedProperties(true); } protected virtual void OnGUI() { primitive.is2D = editor.is2D; primitive.offset = EditorGUILayout.Vector3Field("Offset", primitive.offset); if (editor.is2D) { float rot = primitive.rotation.z; rot = EditorGUILayout.FloatField("Rotation", rot); primitive.rotation = new Vector3(0f, 0f, rot); } else primitive.rotation = EditorGUILayout.Vector3Field("Rotation", primitive.rotation); } } }