MegaPointCacheAnimatorEditor.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CanEditMultipleObjects, CustomEditor(typeof(MegaPointCacheAnimator))]
  4. public class MegaPointCacheAnimatorEditor : Editor
  5. {
  6. // TODO: Need none in the popup to clear a channel
  7. public override void OnInspectorGUI()
  8. {
  9. MegaPointCacheAnimator anim = (MegaPointCacheAnimator)target;
  10. string[] clips = anim.GetClipNames();
  11. anim.useFrames = EditorGUILayout.BeginToggleGroup("Use Frames", anim.useFrames);
  12. anim.sourceFPS = EditorGUILayout.IntField("Source FPS", anim.sourceFPS);
  13. EditorGUILayout.EndToggleGroup();
  14. anim.LinkedUpdate = EditorGUILayout.Toggle("Linked Update", anim.LinkedUpdate);
  15. anim.PlayOnStart = EditorGUILayout.Toggle("Play On Start", anim.PlayOnStart);
  16. //anim.current = EditorGUILayout.Popup("Playing Clip", anim.current, clips);
  17. int current = EditorGUILayout.Popup("Playing Clip", anim.current, clips);
  18. if ( current != anim.current )
  19. {
  20. anim.PlayClip(current);
  21. }
  22. //anim.t = EditorGUILayout.FloatField("t", anim.t);
  23. //anim.at = EditorGUILayout.FloatField("at", anim.at);
  24. if ( GUILayout.Button("Add Clip") )
  25. anim.AddClip("Clip " + anim.clips.Count, 0.0f, 1.0f, MegaRepeatMode.Loop);
  26. EditorGUILayout.BeginVertical();
  27. for ( int i = 0; i < anim.clips.Count; i++ )
  28. {
  29. EditorGUILayout.BeginHorizontal();
  30. //EditorGUILayout.TextArea("" + i + " - ");
  31. anim.clips[i].name = EditorGUILayout.TextField(anim.clips[i].name);
  32. if ( anim.useFrames )
  33. {
  34. anim.clips[i].start = (float)EditorGUILayout.FloatField((float)(anim.clips[i].start * anim.sourceFPS), GUILayout.Width(40)) / (float)anim.sourceFPS;
  35. anim.clips[i].end = (float)EditorGUILayout.FloatField((float)(anim.clips[i].end * anim.sourceFPS), GUILayout.Width(40)) / (float)anim.sourceFPS;
  36. anim.clips[i].speed = EditorGUILayout.FloatField(anim.clips[i].speed, GUILayout.Width(40));
  37. anim.clips[i].loop = (MegaRepeatMode)EditorGUILayout.EnumPopup(anim.clips[i].loop);
  38. }
  39. else
  40. {
  41. anim.clips[i].start = EditorGUILayout.FloatField(anim.clips[i].start, GUILayout.Width(40));
  42. anim.clips[i].end = EditorGUILayout.FloatField(anim.clips[i].end, GUILayout.Width(40));
  43. anim.clips[i].speed = EditorGUILayout.FloatField(anim.clips[i].speed, GUILayout.Width(40));
  44. anim.clips[i].loop = (MegaRepeatMode)EditorGUILayout.EnumPopup(anim.clips[i].loop);
  45. }
  46. if ( GUILayout.Button("-") )
  47. {
  48. anim.clips.Remove(anim.clips[i]);
  49. }
  50. EditorGUILayout.EndHorizontal();
  51. }
  52. EditorGUILayout.EndVertical();
  53. }
  54. }