Files

47 lines
1.8 KiB
C#

using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace Unity.Cinemachine.Editor
{
[CustomEditor(typeof(CinemachineSplineCart))]
[CanEditMultipleObjects]
class CinemachineSplineCartEditor : UnityEditor.Editor
{
CinemachineSplineCart Target => target as CinemachineSplineCart;
public override VisualElement CreateInspectorGUI()
{
var ux = new VisualElement();
var splineIsChildHelp = ux.AddChild(new HelpBox("Spline should not be a child of this object.", HelpBoxMessageType.Error));
ux.Add(new PropertyField(serializedObject.FindProperty("m_SplineSettings")));
ux.Add(new PropertyField(serializedObject.FindProperty(() => Target.UpdateMethod)));
var autoDollyProp = serializedObject.FindProperty(() => Target.AutomaticDolly);
ux.Add(new PropertyField(autoDollyProp));
var targetField = ux.AddChild(new PropertyField(serializedObject.FindProperty(() => Target.TrackingTarget)));
ux.TrackPropertyWithInitialCallback(autoDollyProp, (p) =>
{
var autodolly = p.FindPropertyRelative("Method").managedReferenceValue as SplineAutoDolly.ISplineAutoDolly;
targetField.SetVisible(autodolly != null && autodolly.RequiresTrackingTarget);
});
ux.TrackAnyUserActivity(() =>
{
bool isChild = false;
for (int i = 0; !isChild && i < targets.Length; ++i)
{
var t = targets[i] as CinemachineSplineCart;
if (t != null && t.Spline != null)
isChild = t.transform.IsAncestorOf(t.Spline.transform);
}
splineIsChildHelp.SetVisible(isChild);
});
return ux;
}
}
}