rabidus-test/Assets/Dreamteck/Splines/Editor/Components/SplineProjectorEditor.cs

73 lines
2.7 KiB
C#
Raw Permalink Normal View History

2023-07-24 16:38:13 +03:00
namespace Dreamteck.Splines.Editor
{
using UnityEngine;
using System.Collections;
using UnityEditor;
[CustomEditor(typeof(SplineProjector), true)]
[CanEditMultipleObjects]
public class SplineProjectorEditor : SplineTracerEditor
{
private bool info = false;
public override void OnInspectorGUI()
{
SplineProjector user = (SplineProjector)target;
if (user.mode == SplineProjector.Mode.Accurate)
{
showAveraging = false;
}
else
{
showAveraging = true;
}
base.OnInspectorGUI();
}
protected override void BodyGUI()
{
EditorGUILayout.Space();
EditorGUILayout.LabelField("Projector", EditorStyles.boldLabel);
serializedObject.Update();
SerializedProperty mode = serializedObject.FindProperty("_mode");
SerializedProperty projectTarget = serializedObject.FindProperty("_projectTarget");
SerializedProperty targetObject = serializedObject.FindProperty("_targetObject");
SerializedProperty autoProject = serializedObject.FindProperty("_autoProject");
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(mode, new GUIContent("Mode"));
if (mode.intValue == (int)SplineProjector.Mode.Accurate)
{
SerializedProperty subdivide = serializedObject.FindProperty("_subdivide");
EditorGUILayout.PropertyField(subdivide, new GUIContent("Subdivide"));
}
EditorGUILayout.PropertyField(projectTarget, new GUIContent("Project Target"));
EditorGUILayout.PropertyField(targetObject, new GUIContent("Apply Target"));
GUI.color = Color.white;
EditorGUILayout.PropertyField(autoProject, new GUIContent("Auto Project"));
info = EditorGUILayout.Foldout(info, "Info");
SerializedProperty percent = serializedObject.FindProperty("_result").FindPropertyRelative("percent");
if (info) EditorGUILayout.HelpBox("Projection percent: " + percent.floatValue, MessageType.Info);
if (EditorGUI.EndChangeCheck()) serializedObject.ApplyModifiedProperties();
base.BodyGUI();
}
protected override void DuringSceneGUI(SceneView currentSceneView)
{
base.DuringSceneGUI(currentSceneView);
for (int i = 0; i < users.Length; i++)
{
SplineProjector user = (SplineProjector)users[i];
if (user.spline == null) return;
if (!user.autoProject) return;
DrawResult(user.result);
}
}
}
}