public int AddState(int layer, CraPlayer state) { Debug.Assert(Handle.IsValid()); return(CraAnimatorManager.Instance.AnimatorAddState(Handle, layer, state)); }
void OnGUI() { if (CraPlaybackManager.Instance != null) { CraStatistics stats = CraPlaybackManager.Instance.Statistics; DisplayMeasure("Playback", ref stats.PlayerData); DisplayMeasure("Clip", ref stats.ClipData); DisplayMeasure("Baked", ref stats.BakedClipTransforms); DisplayMeasure("Bone", ref stats.BoneData); DisplayMeasure("Transforms", ref stats.Bones); EditorGUILayout.Space(); ulong totalBytes = stats.PlayerData.CurrentBytes + stats.ClipData.CurrentBytes + stats.BakedClipTransforms.CurrentBytes + stats.BoneData.CurrentBytes + stats.Bones.CurrentBytes; ulong totalMaxBytes = stats.PlayerData.MaxBytes + stats.ClipData.MaxBytes + stats.BakedClipTransforms.MaxBytes + stats.BoneData.MaxBytes + stats.Bones.MaxBytes; EditorGUILayout.LabelField("Total", FormatBytes(totalBytes) + " / " + FormatBytes(totalMaxBytes)); } if (Selection.activeGameObject == null) { EditorGUILayout.LabelField("Select a GameObject in Hierarchy!"); return; } if (MonitoredObject != Selection.activeGameObject) { Monitored = null; MonitoredObject = Selection.activeGameObject; Component[] comps = MonitoredObject.GetComponents <Component>(); for (int i = 0; i < comps.Length; ++i) { if (comps[i] is ICraAnimated) { Monitored = (comps[i] as ICraAnimated).GetAnimator(); break; } } if (!Monitored.HasValue) { EditorGUILayout.LabelField("Selected GameObject is not animated by Cra!"); return; } if (!Monitored.Value.IsValid()) { EditorGUILayout.LabelField("Selected GameObject is animated by Cra, but returned no valid CraAnimator!"); return; } ViewLayerNames = new string[Monitored.Value.GetNumLayers()]; for (int i = 0; i < ViewLayerNames.Length; ++i) { ViewLayerNames[i] = "Layer " + i; } } if (!Monitored.HasValue) { EditorGUILayout.LabelField("Selected GameObject is not animated by Cra!"); return; } ViewLayer = EditorGUILayout.Popup(ViewLayer, ViewLayerNames); CraPlayer state = Monitored.Value.GetCurrentState(ViewLayer); if (state.IsValid()) { EditorGUILayout.LabelField("Player Handle", state.Handle.Handle.ToString()); EditorGUILayout.Space(); EditorGUILayout.LabelField("State Idx", Monitored.Value.GetCurrentStateIdx(ViewLayer).ToString()); EditorGUILayout.Space(); EditorGUILayout.LabelField("Playback Speed"); state.SetPlaybackSpeed(EditorGUILayout.Slider(state.GetPlaybackSpeed(), 0f, 10f)); EditorGUILayout.Space(); EditorGUILayout.LabelField("Looping"); state.SetLooping(EditorGUILayout.Toggle(state.IsLooping())); EditorGUILayout.Space(); if (GUILayout.Button(state.IsPlaying() ? "Stop" : "Play")) { if (state.IsPlaying()) { state.Reset(); } else { state.Play(); } } EditorGUILayout.Space(); EditorGUILayout.Slider(state.GetPlayback(), 0f, state.GetDuration()); } else { EditorGUILayout.LabelField("NO STATE"); } }