CinemachineCollisionImpulseSourceEditor.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #if !UNITY_2019_3_OR_NEWER
  2. #define CINEMACHINE_PHYSICS
  3. #define CINEMACHINE_PHYSICS_2D
  4. #endif
  5. using UnityEditor;
  6. using UnityEngine;
  7. namespace Cinemachine.Editor
  8. {
  9. #if CINEMACHINE_PHYSICS || CINEMACHINE_PHYSICS_2D
  10. [CustomEditor(typeof(CinemachineCollisionImpulseSource))]
  11. internal sealed class CinemachineCollisionImpulseSourceEditor
  12. : BaseEditor<CinemachineCollisionImpulseSource>
  13. {
  14. float m_TestForce = 1;
  15. GUIContent m_TestButton = new GUIContent(
  16. "Invoke", "Play-mode only: Generate an impulse with the default velocity scaled by this amount");
  17. GUIContent m_TestLabel = new GUIContent(
  18. "Test with Force", "Generate an impulse with the default velocity scaled by an amount");
  19. public override void OnInspectorGUI()
  20. {
  21. BeginInspector();
  22. EditorGUILayout.Separator();
  23. var collider = Target.GetComponent<Collider>();
  24. var collider2D = Target.GetComponent<Collider2D>();
  25. if ((collider == null || !collider.enabled) && (collider2D == null || !collider2D.enabled))
  26. EditorGUILayout.HelpBox(
  27. "An active Collider or Collider2D component is required in order to detect "
  28. + "collisions and generate Impulse events",
  29. MessageType.Warning);
  30. DrawRemainingPropertiesInInspector();
  31. EditorGUILayout.Space();
  32. GUI.enabled = EditorApplication.isPlaying;
  33. {
  34. var r1 = EditorGUILayout.GetControlRect();
  35. r1 = EditorGUI.PrefixLabel(r1, m_TestLabel);
  36. var testButtonWidth = GUI.skin.button.CalcSize(m_TestButton).x;
  37. var r2 = r1;
  38. r1.width = testButtonWidth;
  39. r2.x += testButtonWidth + 3; r2.width -= testButtonWidth + 3;
  40. m_TestForce = EditorGUI.Slider(r2, m_TestForce, 0.1f, 20f);
  41. if (GUI.Button(r1, m_TestButton))
  42. Target.GenerateImpulseWithForce(m_TestForce);
  43. }
  44. GUI.enabled = true;
  45. }
  46. }
  47. #endif
  48. }