123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #if UNITY_EDITOR
- using System.Collections.Generic;
- using UnityEngine;
- namespace Animancer
- {
-
- partial class ControllerState
- {
-
-
- protected internal override Editor.IAnimancerNodeDrawer CreateDrawer() => new Drawer(this);
-
-
- public class Drawer : Editor.ParametizedAnimancerStateDrawer<ControllerState>
- {
-
-
- public Drawer(ControllerState state) : base(state) { }
-
-
- protected override void DoDetailsGUI()
- {
- GatherParameters();
- base.DoDetailsGUI();
- }
-
- private readonly List<AnimatorControllerParameter>
- Parameters = new List<AnimatorControllerParameter>();
-
- private void GatherParameters()
- {
- Parameters.Clear();
- var count = Target.ParameterCount;
- if (count == 0)
- return;
- for (int i = 0; i < count; i++)
- {
- var hash = Target.GetParameterHash(i);
- Parameters.Add(GetParameter(hash));
- }
- }
-
- private AnimatorControllerParameter GetParameter(int hash)
- {
- Validate.AssertPlayable(Target);
- var parameterCount = Target._Playable.GetParameterCount();
- for (int i = 0; i < parameterCount; i++)
- {
- var parameter = Target._Playable.GetParameter(i);
- if (parameter.nameHash == hash)
- return parameter;
- }
- return null;
- }
-
-
- public override int ParameterCount => Parameters.Count;
-
- public override string GetParameterName(int index) => Parameters[index].name;
-
- public override AnimatorControllerParameterType GetParameterType(int index) => Parameters[index].type;
-
- public override object GetParameterValue(int index)
- {
- Validate.AssertPlayable(Target);
- return AnimancerUtilities.GetParameterValue(Target._Playable, Parameters[index]);
- }
-
- public override void SetParameterValue(int index, object value)
- {
- Validate.AssertPlayable(Target);
- AnimancerUtilities.SetParameterValue(Target._Playable, Parameters[index], value);
- }
-
- }
-
- }
- }
- #endif
|