From eb5a04511dc9a0fc6e44d66c97fb4c559f0f99be Mon Sep 17 00:00:00 2001 From: bd_ Date: Sun, 18 Aug 2024 19:03:18 -0700 Subject: [PATCH] fix: implement ResolveReferences for reactive objects (#1019) Closes: #996 --- Runtime/AvatarTagComponent.cs | 7 ++++--- Runtime/ReactiveObjects/ModularAvatarMaterialSetter.cs | 8 ++++++++ Runtime/ReactiveObjects/ModularAvatarObjectToggle.cs | 8 ++++++++ Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs | 5 +++++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Runtime/AvatarTagComponent.cs b/Runtime/AvatarTagComponent.cs index 6e0fff8f..fd5ef258 100644 --- a/Runtime/AvatarTagComponent.cs +++ b/Runtime/AvatarTagComponent.cs @@ -31,9 +31,10 @@ using VRC.SDKBase; namespace nadena.dev.modular_avatar.core { - /** - * This abstract base class is injected into the VRCSDK avatar component allowlist to avoid - */ + /// + /// This class is used internally by Modular Avatar for common operations between MA components. It should not be + /// inherited by user classes, and will be removed in Modular Avatar 2.0. + /// [DefaultExecutionOrder(-9999)] // run before av3emu public abstract class AvatarTagComponent : MonoBehaviour, IEditorOnly { diff --git a/Runtime/ReactiveObjects/ModularAvatarMaterialSetter.cs b/Runtime/ReactiveObjects/ModularAvatarMaterialSetter.cs index a70b60f4..e9a50062 100644 --- a/Runtime/ReactiveObjects/ModularAvatarMaterialSetter.cs +++ b/Runtime/ReactiveObjects/ModularAvatarMaterialSetter.cs @@ -39,5 +39,13 @@ namespace nadena.dev.modular_avatar.core get => m_objects; set => m_objects = value; } + + public override void ResolveReferences() + { + foreach (var obj in m_objects) + { + obj.Object?.Get(this); + } + } } } \ No newline at end of file diff --git a/Runtime/ReactiveObjects/ModularAvatarObjectToggle.cs b/Runtime/ReactiveObjects/ModularAvatarObjectToggle.cs index c87451d3..9756ea92 100644 --- a/Runtime/ReactiveObjects/ModularAvatarObjectToggle.cs +++ b/Runtime/ReactiveObjects/ModularAvatarObjectToggle.cs @@ -22,5 +22,13 @@ namespace nadena.dev.modular_avatar.core get => m_objects; set => m_objects = value; } + + public override void ResolveReferences() + { + foreach (var obj in m_objects) + { + obj.Object?.Get(this); + } + } } } \ No newline at end of file diff --git a/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs b/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs index f21adabe..1acc1157 100644 --- a/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs +++ b/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs @@ -65,5 +65,10 @@ namespace nadena.dev.modular_avatar.core get => m_shapes; set => m_shapes = value; } + + public override void ResolveReferences() + { + m_targetRenderer?.Get(this); + } } } \ No newline at end of file