Skip to content

Commit 43c464a

Browse files
authored
Merge pull request #20 from forestrf/main
Made some playable settings editable to aid with debugging.
2 parents 9499974 + ecfaf73 commit 43c464a

11 files changed

+170
-138
lines changed

Editor/Scripts/Node/AnimationClipPlayableNode.cs

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using GBG.PlayableGraphMonitor.Editor.GraphView;
22
using GBG.PlayableGraphMonitor.Editor.Utility;
33
using System.Text;
4+
using UnityEditor;
45
using UnityEditor.UIElements;
56
using UnityEngine;
67
using UnityEngine.Animations;
@@ -113,9 +114,9 @@ protected override void OnUpdate(PlayableGraphViewUpdateContext updateContext, b
113114
// // _clipField.SetValueWithoutNotify(null);
114115
// }
115116

116-
protected override void AppendNodeDescription(StringBuilder descBuilder)
117+
protected override void AppendNodeDescription()
117118
{
118-
base.AppendNodeDescription(descBuilder);
119+
base.AppendNodeDescription();
119120

120121
if (!Playable.IsValid())
121122
{
@@ -125,44 +126,44 @@ protected override void AppendNodeDescription(StringBuilder descBuilder)
125126
var animClipPlayable = (AnimationClipPlayable)Playable;
126127

127128
// IK
128-
descBuilder.AppendLine(LINE)
129-
.Append("ApplyFootIK: ").AppendLine(animClipPlayable.GetApplyFootIK().ToString())
130-
.Append("ApplyPlayableIK: ").AppendLine(animClipPlayable.GetApplyPlayableIK().ToString());
129+
GUILayout.Label(LINE);
130+
EditorGUILayout.Toggle("ApplyFootIK:", animClipPlayable.GetApplyFootIK());
131+
EditorGUILayout.Toggle("ApplyPlayableIK:", animClipPlayable.GetApplyPlayableIK());
131132

132133
// Clip
133-
descBuilder.AppendLine(LINE);
134+
GUILayout.Label(LINE);
134135
var clip = animClipPlayable.GetAnimationClip();
135136
if (!clip)
136137
{
137-
descBuilder.AppendLine("Clip: None");
138+
GUILayout.Label("Clip: None");
138139
return;
139140
}
140141

141-
descBuilder.Append("Clip: ").AppendLine(clip.name)
142-
.Append("Length: ").Append(clip.length.ToString("F3")).AppendLine("(s)")
143-
.Append("Looped: ").AppendLine(clip.isLooping.ToString())
144-
.Append("WrapMode: ").AppendLine(clip.wrapMode.ToString())
145-
.Append("FrameRate: ").AppendLine(clip.frameRate.ToString("F3"))
146-
.Append("Empty: ").AppendLine(clip.empty.ToString())
147-
.Append("Legacy: ").AppendLine(clip.legacy.ToString())
148-
.Append("HumanMotion: ").AppendLine(clip.humanMotion.ToString())
149-
.Append("HasMotionCurves: ").AppendLine(clip.hasMotionCurves.ToString())
150-
.Append("HasRootCurves: ").AppendLine(clip.hasRootCurves.ToString())
151-
.Append("HasGenericRootTransform: ").AppendLine(clip.hasGenericRootTransform.ToString())
152-
.Append("HasMotionFloatCurves: ").AppendLine(clip.hasMotionFloatCurves.ToString())
153-
.AppendLine("LocalBounds: ")
154-
.Append(" Center: ").AppendLine(clip.localBounds.center.ToString())
155-
.Append(" Extends: ").AppendLine(clip.localBounds.extents.ToString())
156-
.Append("ApparentSpeed: ").AppendLine(clip.apparentSpeed.ToString("F3")) // Motion.cs
157-
.Append("AverageSpeed: ").AppendLine(clip.averageSpeed.ToString())
158-
.Append("AverageAngularSpeed: ").AppendLine(clip.averageAngularSpeed.ToString("F3"))
159-
.Append("AverageDuration: ").AppendLine(clip.averageDuration.ToString("F3"))
160-
.Append("IsHumanMotion: ").AppendLine(clip.isHumanMotion.ToString());
142+
EditorGUILayout.ObjectField("Clip:", clip, typeof(AnimationClip), true);
143+
GUILayout.Label($"Length: {clip.length.ToString("F3")}(s)");
144+
GUILayout.Label($"Looped: {clip.isLooping}");
145+
GUILayout.Label($"WrapMode: {clip.wrapMode}");
146+
GUILayout.Label($"FrameRate: {clip.frameRate.ToString("F3")}");
147+
GUILayout.Label($"Empty: {clip.empty}");
148+
GUILayout.Label($"Legacy: {clip.legacy}");
149+
GUILayout.Label($"HumanMotion: {clip.humanMotion}");
150+
GUILayout.Label($"HasMotionCurves: {clip.hasMotionCurves}");
151+
GUILayout.Label($"HasRootCurves: {clip.hasRootCurves}");
152+
GUILayout.Label($"HasGenericRootTransform: {clip.hasGenericRootTransform}");
153+
GUILayout.Label($"HasMotionFloatCurves: {clip.hasMotionFloatCurves}");
154+
GUILayout.Label($"LocalBounds: ");
155+
GUILayout.Label($" Center: {clip.localBounds.center}");
156+
GUILayout.Label($" Extends: {clip.localBounds.extents}");
157+
GUILayout.Label($"ApparentSpeed: {clip.apparentSpeed.ToString("F3")}"); // Motion.cs
158+
GUILayout.Label($"AverageSpeed: {clip.averageSpeed}");
159+
GUILayout.Label($"AverageAngularSpeed: {clip.averageAngularSpeed.ToString("F3")}");
160+
GUILayout.Label($"AverageDuration: {clip.averageDuration.ToString("F3")}");
161+
GUILayout.Label($"IsHumanMotion: {clip.isHumanMotion}");
161162

162163
// Event
163-
descBuilder.AppendLine(LINE);
164+
GUILayout.Label(LINE);
164165
var events = clip.events;
165-
descBuilder.AppendLine(
166+
GUILayout.Label(
166167
events.Length == 0
167168
? "No Event"
168169
: (events.Length == 1 ? "1 Event:" : $"{events.Length.ToString()} Events:")
@@ -171,7 +172,7 @@ protected override void AppendNodeDescription(StringBuilder descBuilder)
171172
{
172173
var evt = events[i];
173174
var evtPosition = evt.time / clip.length * 100;
174-
descBuilder.AppendLine($" #{(i + 1).ToString()} {evtPosition.ToString("F2")}% {evt.functionName}");
175+
GUILayout.Label($" #{(i + 1)} {evtPosition.ToString("F2")}% {evt.functionName}");
175176
}
176177
}
177178
}

Editor/Scripts/Node/AnimationLayerMixerPlayableNode.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
using System.Text;
2+
using UnityEditor;
23
using UnityEngine.Animations;
34
using UnityEngine.Playables;
45

56
namespace GBG.PlayableGraphMonitor.Editor.Node
67
{
78
public class AnimationLayerMixerPlayableNode : PlayableNode
89
{
9-
protected override void AppendInputPortDescription(StringBuilder descBuilder)
10+
protected override void AppendInputPortDescription()
1011
{
1112
var layerMixer = (AnimationLayerMixerPlayable)Playable;
1213
var inputCount = layerMixer.GetInputCount();
1314
for (int i = 0; i < inputCount; i++)
1415
{
15-
descBuilder.Append(" #").Append(i.ToString())
16-
.Append(" Weight: ").Append(Playable.GetInputWeight(i).ToString("F3"))
17-
.Append(" Additive: ").AppendLine(layerMixer.IsLayerAdditive((uint)i).ToString());
16+
EditorGUI.BeginChangeCheck();
17+
var weight = EditorGUILayout.Slider($" #{i} Weight:", Playable.GetInputWeight(i), 0, 1);
18+
if (EditorGUI.EndChangeCheck()) Playable.SetInputWeight(i, weight);
19+
EditorGUI.BeginChangeCheck();
20+
var isLayerAdditive = EditorGUILayout.Toggle($" #{i} Additive:", layerMixer.IsLayerAdditive((uint)i));
21+
if (EditorGUI.EndChangeCheck()) layerMixer.SetLayerAdditive((uint) i, isLayerAdditive);
1822
}
1923
}
2024
}

Editor/Scripts/Node/AnimationPlayableOutputNode.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Text;
2+
using UnityEditor;
23
using UnityEditor.UIElements;
34
using UnityEngine;
45
using UnityEngine.Animations;
@@ -44,9 +45,9 @@ protected override void OnUpdate(bool playableOutputChanged)
4445
_targetField.SetValueWithoutNotify(target);
4546
}
4647

47-
protected override void AppendNodeDescription(StringBuilder descBuilder)
48+
protected override void AppendNodeDescription()
4849
{
49-
base.AppendNodeDescription(descBuilder);
50+
base.AppendNodeDescription();
5051

5152
if (!PlayableOutput.IsOutputValid())
5253
{
@@ -55,12 +56,14 @@ protected override void AppendNodeDescription(StringBuilder descBuilder)
5556

5657
var animationPlayableOutput = (AnimationPlayableOutput)PlayableOutput;
5758
var target = animationPlayableOutput.GetTarget();
58-
var animationStreamSource = animationPlayableOutput.GetAnimationStreamSource();
59-
var sortingOrder = animationPlayableOutput.GetSortingOrder();
60-
descBuilder.AppendLine(LINE);
61-
descBuilder.Append("Target: ").AppendLine(target?.name ?? "Null")
62-
.Append("AnimationStreamSource: ").AppendLine(animationStreamSource.ToString())
63-
.Append("SortingOrder: ").AppendLine(sortingOrder.ToString());
59+
GUILayout.Label(LINE);
60+
EditorGUILayout.ObjectField("Target:", target, typeof(Animator), true);
61+
EditorGUI.BeginChangeCheck();
62+
var animationStreamSource = (AnimationStreamSource) EditorGUILayout.EnumPopup("AnimationStreamSource:", animationPlayableOutput.GetAnimationStreamSource());
63+
if (EditorGUI.EndChangeCheck()) animationPlayableOutput.SetAnimationStreamSource(animationStreamSource);
64+
EditorGUI.BeginChangeCheck();
65+
var sortingOrder = (ushort) EditorGUILayout.IntField("SortingOrder:", animationPlayableOutput.GetSortingOrder());
66+
if (EditorGUI.EndChangeCheck()) animationPlayableOutput.SetSortingOrder(sortingOrder);
6467
}
6568
}
6669
}

Editor/Scripts/Node/AnimationScriptPlayableNode.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,27 @@ protected override void OnUpdate(PlayableGraphViewUpdateContext updateContext, b
5050
}
5151
}
5252

53-
protected override void AppendPlayableTypeDescription(StringBuilder descBuilder)
53+
protected override void AppendPlayableTypeDescription()
5454
{
55-
base.AppendPlayableTypeDescription(descBuilder);
55+
base.AppendPlayableTypeDescription();
5656

5757
// Job
5858
var jobType = GetJobType();
59-
descBuilder.Append("Job: ").AppendLine(jobType?.Name ?? "?");
59+
GUILayout.Label($"Job: {jobType?.Name ?? "?"}");
6060
}
6161

62-
protected override void AppendNodeDescription(StringBuilder descBuilder)
62+
protected override void AppendNodeDescription()
6363
{
64-
base.AppendNodeDescription(descBuilder);
64+
base.AppendNodeDescription();
6565

6666
if (!Playable.IsValid())
6767
{
6868
return;
6969
}
7070

7171
var animScriptPlayable = (AnimationScriptPlayable)Playable;
72-
descBuilder.AppendLine(LINE)
73-
.Append("ProcessInputs: ").AppendLine(animScriptPlayable.GetProcessInputs().ToString());
72+
GUILayout.Label(LINE);
73+
GUILayout.Label($"ProcessInputs: {animScriptPlayable.GetProcessInputs()}");
7474
}
7575

7676
private Type GetJobType()

Editor/Scripts/Node/AudioClipPlayableNode.cs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using GBG.PlayableGraphMonitor.Editor.GraphView;
22
using GBG.PlayableGraphMonitor.Editor.Utility;
33
using System.Text;
4+
using UnityEditor;
45
using UnityEditor.UIElements;
56
using UnityEngine;
67
using UnityEngine.Audio;
@@ -113,35 +114,35 @@ protected override void OnUpdate(PlayableGraphViewUpdateContext updateContext, b
113114
// }
114115

115116

116-
protected override void AppendNodeDescription(StringBuilder descBuilder)
117+
protected override void AppendNodeDescription()
117118
{
118-
base.AppendNodeDescription(descBuilder);
119+
base.AppendNodeDescription();
119120

120121
if (!Playable.IsValid())
121122
{
122123
return;
123124
}
124125

125126
var clipPlayable = (AudioClipPlayable)Playable;
126-
descBuilder.AppendLine(LINE);
127+
GUILayout.Label(LINE);
127128
var clip = clipPlayable.GetClip();
128129
if (!clip)
129130
{
130-
descBuilder.AppendLine("Clip: None");
131+
GUILayout.Label("Clip: None");
131132
return;
132133
}
133134

134-
descBuilder.Append("Clip: ").AppendLine(clip.name)
135-
.Append("Length: ").Append(clip.length.ToString("F3")).AppendLine("(s)")
136-
.Append("Looped: ").AppendLine(clipPlayable.GetLooped().ToString())
137-
.Append("Channels: ").AppendLine(clip.channels.ToString())
138-
.Append("Ambisonic: ").AppendLine(clip.ambisonic.ToString())
139-
.Append("Frequency: ").AppendLine(clip.frequency.ToString())
140-
.Append("Samples: ").AppendLine(clip.samples.ToString())
141-
.Append("LoadState: ").AppendLine(clip.loadState.ToString())
142-
.Append("LoadType: ").AppendLine(clip.loadType.ToString())
143-
.Append("LoadInBackground: ").AppendLine(clip.loadInBackground.ToString())
144-
.Append("PreloadAudioData: ").AppendLine(clip.preloadAudioData.ToString());
135+
EditorGUILayout.ObjectField("Clip:", clip, typeof(AudioClip), true);
136+
GUILayout.Label($"Length: {clip.length.ToString("F3")}(s)");
137+
EditorGUILayout.Toggle("Looped:", clipPlayable.GetLooped());
138+
GUILayout.Label($"Channels: {clip.channels}");
139+
GUILayout.Label($"Ambisonic: {clip.ambisonic}");
140+
GUILayout.Label($"Frequency: {clip.frequency}");
141+
GUILayout.Label($"Samples: {clip.samples}");
142+
GUILayout.Label($"LoadState: {clip.loadState}");
143+
GUILayout.Label($"LoadType: {clip.loadType}");
144+
GUILayout.Label($"LoadInBackground: {clip.loadInBackground}");
145+
GUILayout.Label($"PreloadAudioData: {clip.preloadAudioData}");;
145146
}
146147
}
147148
}

Editor/Scripts/Node/AudioPlayableOutputNode.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Text;
2+
using UnityEditor;
23
using UnityEditor.UIElements;
34
using UnityEngine;
45
using UnityEngine.Audio;
@@ -43,9 +44,9 @@ protected override void OnUpdate(bool playableOutputChanged)
4344
_targetField.SetValueWithoutNotify(target);
4445
}
4546

46-
protected override void AppendNodeDescription(StringBuilder descBuilder)
47+
protected override void AppendNodeDescription()
4748
{
48-
base.AppendNodeDescription(descBuilder);
49+
base.AppendNodeDescription();
4950

5051
if (!PlayableOutput.IsOutputValid())
5152
{
@@ -55,9 +56,9 @@ protected override void AppendNodeDescription(StringBuilder descBuilder)
5556
var audioPlayableOutput = (AudioPlayableOutput)PlayableOutput;
5657
var target = audioPlayableOutput.GetTarget();
5758
var evaluateOnSeek = audioPlayableOutput.GetEvaluateOnSeek();
58-
descBuilder.AppendLine(LINE);
59-
descBuilder.Append("Target: ").AppendLine(target?.name ?? "Null")
60-
.Append("EvaluateOnSeek: ").AppendLine(evaluateOnSeek.ToString());
59+
GUILayout.Label(LINE);
60+
EditorGUILayout.ObjectField("Target:", target, typeof(AudioSource), true);
61+
EditorGUILayout.Toggle("EvaluateOnSeek:", evaluateOnSeek);
6162
}
6263
}
6364
}

Editor/Scripts/Node/GraphViewNode.cs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections.Generic;
22
using System.Linq;
33
using System.Text;
4+
using UnityEditor;
45
using UnityEditor.Experimental.GraphView;
56
using UnityEngine;
67
using UnityEngine.Assertions;
@@ -49,20 +50,16 @@ public override void BuildContextualMenu(ContextualMenuPopulateEvent evt)
4950
protected const string LINE = "----------";
5051

5152

52-
public string GetNodeDescription()
53+
public void GetNodeDescription()
5354
{
54-
if (_descBuilder == null)
55-
{
56-
_descBuilder = new StringBuilder();
57-
}
58-
59-
_descBuilder.Clear();
60-
AppendNodeDescription(_descBuilder);
61-
return _descBuilder.ToString();
55+
var prevSize = EditorGUIUtility.labelWidth;
56+
EditorGUIUtility.labelWidth = 120;
57+
AppendNodeDescription();
58+
EditorGUIUtility.labelWidth = prevSize;
6259
}
6360

6461

65-
protected abstract void AppendNodeDescription(StringBuilder descBuilder);
62+
protected abstract void AppendNodeDescription();
6663

6764
#endregion
6865

0 commit comments

Comments
 (0)