feat: ShapeChanger target migration

This commit is contained in:
nekobako 2024-08-19 22:13:13 +09:00
parent 8c70aa74d0
commit 089389e0db

View File

@ -49,6 +49,9 @@ namespace nadena.dev.modular_avatar.core
[HelpURL("https://modular-avatar.nadena.dev/docs/reference/shape-changer?lang=auto")] [HelpURL("https://modular-avatar.nadena.dev/docs/reference/shape-changer?lang=auto")]
public class ModularAvatarShapeChanger : ReactiveComponent public class ModularAvatarShapeChanger : ReactiveComponent
{ {
[SerializeField] [FormerlySerializedAs("targetRenderer")] [HideInInspector]
private AvatarObjectReference m_targetRenderer = new();
[SerializeField] [FormerlySerializedAs("Shapes")] [SerializeField] [FormerlySerializedAs("Shapes")]
private List<ChangedShape> m_shapes = new(); private List<ChangedShape> m_shapes = new();
@ -65,5 +68,33 @@ namespace nadena.dev.modular_avatar.core
shape.Object?.Get(this); 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;
}
}
} }
} }