HumanoidBakerInspector.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEditor;
  4. namespace RootMotion
  5. {
  6. [CustomEditor(typeof(HumanoidBaker))]
  7. public class HumanoidBakerInspector : BakerInspector
  8. {
  9. private HumanoidBaker script { get { return target as HumanoidBaker; } }
  10. private MonoScript monoScript;
  11. void OnEnable()
  12. {
  13. // Changing the script execution order
  14. if (!Application.isPlaying)
  15. {
  16. monoScript = MonoScript.FromMonoBehaviour(script);
  17. int currentExecutionOrder = MonoImporter.GetExecutionOrder(monoScript);
  18. if (currentExecutionOrder != 15000) MonoImporter.SetExecutionOrder(monoScript, 15000);
  19. }
  20. }
  21. // TODO Move this to BakerInspector.cs
  22. public override void OnInspectorGUI()
  23. {
  24. serializedObject.Update();
  25. DrawKeyframeSettings(script as Baker);
  26. DrawHumanoidKeyframeSettings(script);
  27. DrawModeSettings(script as Baker);
  28. DrawButtons(script as Baker);
  29. if (serializedObject.ApplyModifiedProperties())
  30. {
  31. EditorUtility.SetDirty(script);
  32. }
  33. }
  34. protected void DrawHumanoidKeyframeSettings(HumanoidBaker script)
  35. {
  36. if (script.isBaking) return;
  37. EditorGUILayout.PropertyField(serializedObject.FindProperty("IKKeyReductionError"));
  38. EditorGUILayout.PropertyField(serializedObject.FindProperty("muscleFrameRateDiv"));
  39. EditorGUILayout.PropertyField(serializedObject.FindProperty("bakeHandIK"));
  40. }
  41. }
  42. }