refactor: use VirtualControllerContext.Controllers

This commit is contained in:
bd_ 2025-03-09 16:26:53 -07:00
parent e91b8ab6c3
commit cd5bb5ff4e
7 changed files with 11 additions and 14 deletions

View File

@ -23,7 +23,7 @@ namespace nadena.dev.modular_avatar.animation
var activeProxies = context.GetState<ReadablePropertyExtension.Retained>().proxyProps; var activeProxies = context.GetState<ReadablePropertyExtension.Retained>().proxyProps;
if (activeProxies.Count == 0) return; if (activeProxies.Count == 0) return;
var fx = asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]; var fx = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
if (fx == null) return; if (fx == null) return;
var nullMotion = new AnimationClip(); var nullMotion = new AnimationClip();

View File

@ -94,7 +94,7 @@ namespace nadena.dev.modular_avatar.core.editor
var afterOriginal = sorted.Where(x => x.layerPriority >= 0) var afterOriginal = sorted.Where(x => x.layerPriority >= 0)
.ToList(); .ToList();
var controller = _asc.ControllerContext[layerType]; var controller = _asc.ControllerContext.Controllers[layerType];
var wdStateCounter = controller.Layers.SelectMany(l => l.StateMachine.AllStates()) var wdStateCounter = controller.Layers.SelectMany(l => l.StateMachine.AllStates())
.Select(s => s.WriteDefaultValues) .Select(s => s.WriteDefaultValues)

View File

@ -43,8 +43,8 @@ namespace nadena.dev.modular_avatar.core.editor
_asc = context.Extension<AnimatorServicesContext>(); _asc = context.Extension<AnimatorServicesContext>();
_rootBlendTree = null; _rootBlendTree = null;
_parameterNames = new HashSet<string>(); _parameterNames = new HashSet<string>();
var fx = _asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]; var fx = _asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
foreach (var component in foreach (var component in
context.AvatarRootObject.GetComponentsInChildren<ModularAvatarMergeBlendTree>(true)) context.AvatarRootObject.GetComponentsInChildren<ModularAvatarMergeBlendTree>(true))
@ -132,8 +132,8 @@ namespace nadena.dev.modular_avatar.core.editor
private VirtualBlendTree GetRootBlendTree() private VirtualBlendTree GetRootBlendTree()
{ {
if (_rootBlendTree != null) return _rootBlendTree; if (_rootBlendTree != null) return _rootBlendTree;
var fx = _asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]; var fx = _asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
var controller = fx.AddLayer(new LayerPriority(int.MinValue), BlendTreeLayerName); var controller = fx.AddLayer(new LayerPriority(int.MinValue), BlendTreeLayerName);
var stateMachine = controller.StateMachine; var stateMachine = controller.StateMachine;

View File

@ -40,7 +40,7 @@ namespace nadena.dev.modular_avatar.core.editor
// Having a WD OFF layer after WD ON layers can break WD. We match the behavior of the existing states, // Having a WD OFF layer after WD ON layers can break WD. We match the behavior of the existing states,
// and if mixed, use WD ON to maximize compatibility. // and if mixed, use WD ON to maximize compatibility.
var asc = context.Extension<AnimatorServicesContext>(); var asc = context.Extension<AnimatorServicesContext>();
_writeDefaults = asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]?.Layers.Any( _writeDefaults = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX]?.Layers.Any(
l => l.StateMachine.StateMachines.Any( l => l.StateMachine.StateMachines.Any(
sm => sm.StateMachine.AllStates().Any( sm => sm.StateMachine.AllStates().Any(
s => s.WriteDefaultValues && s.Motion is not VirtualBlendTree s => s.WriteDefaultValues && s.Motion is not VirtualBlendTree
@ -593,9 +593,7 @@ namespace nadena.dev.modular_avatar.core.editor
private void ApplyController(AnimatorStateMachine asm, string layerName) private void ApplyController(AnimatorStateMachine asm, string layerName)
{ {
var asc = context.Extension<AnimatorServicesContext>(); var asc = context.Extension<AnimatorServicesContext>();
var fx = asc.ControllerContext[ var fx = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
VRCAvatarDescriptor.AnimLayerType.FX
];
if (fx == null) if (fx == null)
{ {

View File

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using nadena.dev.ndmf; using nadena.dev.ndmf;
using nadena.dev.ndmf.animator; using nadena.dev.ndmf.animator;
using UnityEditor.Animations;
using UnityEngine; using UnityEngine;
using VRC.SDK3.Avatars.Components; using VRC.SDK3.Avatars.Components;
using VRC.SDK3.Avatars.ScriptableObjects; using VRC.SDK3.Avatars.ScriptableObjects;
@ -203,7 +202,7 @@ namespace nadena.dev.modular_avatar.core.editor
if (mamiWithRC.Count > 0) if (mamiWithRC.Count > 0)
{ {
var asc = context.Extension<AnimatorServicesContext>(); var asc = context.Extension<AnimatorServicesContext>();
var fx = asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]; var fx = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX];
foreach (var (name, _) in mamiWithRC) foreach (var (name, _) in mamiWithRC)
{ {

View File

@ -381,7 +381,7 @@ namespace nadena.dev.modular_avatar.core.editor
); );
}).ToImmutableDictionary(); }).ToImmutableDictionary();
var controller = animServices.ControllerContext[virtualized]; var controller = animServices.ControllerContext.Controllers[virtualized];
if (controller != null) if (controller != null)
{ {
ProcessVirtualAnimatorController(controller, remap); ProcessVirtualAnimatorController(controller, remap);

View File

@ -31,7 +31,7 @@ public class ActiveAnimationRetargeterTests : TestBase
var created = retargeter.CreateIntermediateObjects(newParent.gameObject); var created = retargeter.CreateIntermediateObjects(newParent.gameObject);
retargeter.FixupAnimations(); retargeter.FixupAnimations();
var fx = asc.ControllerContext[VRCAvatarDescriptor.AnimLayerType.FX]!; var fx = asc.ControllerContext.Controllers[VRCAvatarDescriptor.AnimLayerType.FX]!;
var clip = (VirtualClip) fx.Layers.First(l => l.Name == "retarget").StateMachine.DefaultState!.Motion; var clip = (VirtualClip) fx.Layers.First(l => l.Name == "retarget").StateMachine.DefaultState!.Motion;
var curveBindings = clip!.GetFloatCurveBindings(); var curveBindings = clip!.GetFloatCurveBindings();