HumanoidControl_Free/Editor/HumanoidFree/TrackedRigidbody_Editor.cs
Pascal Serrarens 17741d862a First commit
2022-01-12 10:50:57 +01:00

56 lines
2.3 KiB
C#

using UnityEditor;
using UnityEngine;
namespace Passer {
using Passer.Tracking;
[CustomEditor(typeof(TrackedRigidbody))]
public class TrackedRigidbody_Editor : Editor {
public override void OnInspectorGUI() {
serializedObject.Update();
SensorInspector();
HybridPhysics.PhysicsMode physicsMode = PhysicsModeInspector();
if (physicsMode != HybridPhysics.PhysicsMode.Kinematic) {
StrengthInspector();
if (physicsMode == HybridPhysics.PhysicsMode.HybridKinematic)
KinematicMass();
}
serializedObject.ApplyModifiedProperties();
}
protected virtual void SensorInspector() {
SerializedProperty sensorComponentProp = serializedObject.FindProperty("target");
Transform sensorTransform = (Transform)sensorComponentProp.objectReferenceValue;
SensorComponent sensorComponent =
sensorTransform != null ?
sensorTransform.GetComponent<SensorComponent>() :
null;
sensorComponent = (SensorComponent)EditorGUILayout.ObjectField("Sensor", sensorComponent, typeof(SensorComponent), true);
sensorComponentProp.objectReferenceValue =
sensorComponent != null ?
sensorComponent.transform :
null;
}
protected virtual HybridPhysics.PhysicsMode PhysicsModeInspector() {
SerializedProperty modeProp = serializedObject.FindProperty("mode");
HybridPhysics.PhysicsMode physicsMode = (HybridPhysics.PhysicsMode)EditorGUILayout.EnumPopup("Physics Mode", (HybridPhysics.PhysicsMode)modeProp.intValue);
modeProp.intValue = (int)physicsMode;
return physicsMode;
}
protected virtual void StrengthInspector() {
SerializedProperty strengthProp = serializedObject.FindProperty("strength");
strengthProp.floatValue = EditorGUILayout.FloatField("Strength", strengthProp.floatValue);
}
protected virtual void KinematicMass() {
SerializedProperty kinematicMassProp = serializedObject.FindProperty("kinematicMass");
kinematicMassProp.floatValue = EditorGUILayout.FloatField("Kinematic Mass", kinematicMassProp.floatValue);
}
}
}