From 02c5224795e1ec226f784490d7330e2060671e7f Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 25 Sep 2024 13:36:19 +0900 Subject: [PATCH] IVrm10SpringBoneRuntimeProvider --- .../Components/Vrm10Instance/Vrm10Instance.cs | 13 ++++++++++--- .../Vrm10FastSpringboneRuntimeProvider.cs | 12 ++++++++++++ .../Vrm10FastSpringboneRuntimeProvider.cs.meta | 11 +++++++++++ .../Vrm10FastSpringboneRuntimeStandaloneProvider.cs | 12 ++++++++++++ ...0FastSpringboneRuntimeStandaloneProvider.cs.meta | 11 +++++++++++ .../Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs | 11 +++++++++++ .../IO/IVrm10SpringBoneRuntimeProvider.cs.meta | 11 +++++++++++ 7 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs create mode 100644 Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs.meta create mode 100644 Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs create mode 100644 Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs.meta create mode 100644 Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs create mode 100644 Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs index 41a7cede0a..350d62cfc4 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs @@ -119,9 +119,16 @@ internal Vrm10Runtime MakeRuntime(bool useControlRig) { if (m_springBoneRuntime == null) { - // deafult に fallback - // TODO: scene に配置した prefab に SpringRuntime をカスタムする手段 - m_springBoneRuntime = new Vrm10FastSpringboneRuntime(); + var provider = GetComponent(); + if (provider != null) + { + m_springBoneRuntime = provider.CreateSpringBoneRuntime(); + } + else + { + // deafult に fallback + m_springBoneRuntime = new Vrm10FastSpringboneRuntime(); + } m_springBoneRuntime.InitializeAsync(this, new ImmediateCaller()); } return new Vrm10Runtime(this, useControlRig, m_springBoneRuntime); diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs new file mode 100644 index 0000000000..5b3e3bc71f --- /dev/null +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace UniVRM10 +{ + public class Vrm10FastSpringboneRuntimeProvider : MonoBehaviour, IVrm10SpringBoneRuntimeProvider + { + public IVrm10SpringBoneRuntime CreateSpringBoneRuntime() + { + return new Vrm10FastSpringboneRuntime(); + } + } +} \ No newline at end of file diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs.meta new file mode 100644 index 0000000000..48b5093e82 --- /dev/null +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 78eaac730c64cbe419d42f7421340f9c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs new file mode 100644 index 0000000000..aee177ac75 --- /dev/null +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace UniVRM10 +{ + public class Vrm10FastSpringboneRuntimeStandaloneProvider : MonoBehaviour, IVrm10SpringBoneRuntimeProvider + { + public IVrm10SpringBoneRuntime CreateSpringBoneRuntime() + { + return new Vrm10FastSpringboneRuntimeStandalone(); + } + } +} \ No newline at end of file diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs.meta new file mode 100644 index 0000000000..47e869613a --- /dev/null +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandaloneProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da3bdbc4223e46742876deeb0f5ee937 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs new file mode 100644 index 0000000000..5c82c6cf0b --- /dev/null +++ b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs @@ -0,0 +1,11 @@ +namespace UniVRM10 +{ + /// + /// This is an interface to customize springboneruntime of VRM-1.0 placed in the scene. + /// see Vrm10Instance.MakeRuntime. + /// + public interface IVrm10SpringBoneRuntimeProvider + { + IVrm10SpringBoneRuntime CreateSpringBoneRuntime(); + } +} \ No newline at end of file diff --git a/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs.meta b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs.meta new file mode 100644 index 0000000000..fbb920d3b2 --- /dev/null +++ b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntimeProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55c91a26d0d2f4a4291dca89268c729d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: