From 089389e0dbc2a14d9abeb1806d117aefa0a5a6a7 Mon Sep 17 00:00:00 2001 From: nekobako Date: Mon, 19 Aug 2024 22:13:13 +0900 Subject: [PATCH] feat: ShapeChanger target migration --- .../ModularAvatarShapeChanger.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs b/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs index b1d1f9b0..53d17eb8 100644 --- a/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs +++ b/Runtime/ReactiveObjects/ModularAvatarShapeChanger.cs @@ -49,6 +49,9 @@ namespace nadena.dev.modular_avatar.core [HelpURL("https://modular-avatar.nadena.dev/docs/reference/shape-changer?lang=auto")] public class ModularAvatarShapeChanger : ReactiveComponent { + [SerializeField] [FormerlySerializedAs("targetRenderer")] [HideInInspector] + private AvatarObjectReference m_targetRenderer = new(); + [SerializeField] [FormerlySerializedAs("Shapes")] private List m_shapes = new(); @@ -65,5 +68,33 @@ namespace nadena.dev.modular_avatar.core shape.Object?.Get(this); } } + + private void OnEnable() + { + MigrateTargetRenderer(); + } + + protected override void OnValidate() + { + base.OnValidate(); + MigrateTargetRenderer(); + } + + private void MigrateTargetRenderer() + { + if (!string.IsNullOrEmpty(m_targetRenderer.referencePath) || m_targetRenderer.targetObject != null) + { + foreach (var shape in m_shapes) + { + if (string.IsNullOrEmpty(shape.Object.referencePath) && shape.Object.targetObject == null) + { + shape.Object.referencePath = m_targetRenderer.referencePath; + shape.Object.targetObject = m_targetRenderer.targetObject; + } + } + m_targetRenderer.referencePath = null; + m_targetRenderer.targetObject = null; + } + } } } \ No newline at end of file