diff --git a/Assets/UniGLTF/Runtime/Extensions/TransformExtensions.cs b/Assets/UniGLTF/Runtime/Extensions/TransformExtensions.cs
new file mode 100644
index 000000000..126138457
--- /dev/null
+++ b/Assets/UniGLTF/Runtime/Extensions/TransformExtensions.cs
@@ -0,0 +1,21 @@
+using UnityEngine;
+
+namespace UniGLTF
+{
+ public static class TransformExtensions
+ {
+ public static float UniformedLossyScale(this Transform transform)
+ {
+ var s = transform.lossyScale;
+ return AbsoluteMaxValue(s);
+ }
+
+ public static float AbsoluteMaxValue(in Vector3 s)
+ {
+ var x = Mathf.Abs(s.x);
+ var y = Mathf.Abs(s.y);
+ var z = Mathf.Abs(s.z);
+ return Mathf.Max(Mathf.Max(x, y), z);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/VRM/Runtime/Extensions/TransformExtensions.cs.meta b/Assets/UniGLTF/Runtime/Extensions/TransformExtensions.cs.meta
similarity index 100%
rename from Assets/VRM/Runtime/Extensions/TransformExtensions.cs.meta
rename to Assets/UniGLTF/Runtime/Extensions/TransformExtensions.cs.meta
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableExternalData.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableExternalData.cs
deleted file mode 100644
index 17ba54e07..000000000
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableExternalData.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using UnityEngine;
-
-namespace UniGLTF.SpringBoneJobs.Blittables
-{
- ///
- /// 外力等の毎フレーム更新されうる外部から与えられる情報
- ///
- public struct BlittableExternalData
- {
- public Vector3 ExternalForce;
-
- ///
- /// if false, spring bone is paused.
- ///
- public bool IsSpringBoneEnabled;
- }
-}
\ No newline at end of file
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableModelLevel.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableModelLevel.cs
new file mode 100644
index 000000000..f86daccc2
--- /dev/null
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableModelLevel.cs
@@ -0,0 +1,23 @@
+using UnityEngine;
+
+namespace UniGLTF.SpringBoneJobs.Blittables
+{
+ public struct BlittableModelLevel
+ {
+ ///
+ /// 風など。
+ ///
+ public Vector3 ExternalForce;
+
+ ///
+ /// 処理結果の Transform への書き戻しを停止する。
+ ///
+ public bool StopSpringBoneWriteback;
+
+ ///
+ /// スケール値に連動して SpringBone のパラメータを自動調整する。
+ /// (見た目の角速度が同じになるようにする)
+ ///
+ public bool SupportsScalingAtRuntime;
+ }
+}
\ No newline at end of file
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableExternalData.cs.meta b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableModelLevel.cs.meta
similarity index 100%
rename from Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableExternalData.cs.meta
rename to Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableModelLevel.cs.meta
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs
index b1cdfa14c..c4de2b291 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpring.cs
@@ -13,6 +13,6 @@ namespace UniGLTF.SpringBoneJobs.Blittables
public BlittableSpan logicSpan;
public int centerTransformIndex;
public int transformIndexOffset;
- public unsafe BlittableExternalData* ExternalData;
+ public int modelIndex;
}
}
\ No newline at end of file
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs
index 4b0e78d5d..324ea8d7e 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using Unity.Jobs;
using UnityEngine.Profiling;
using UniGLTF.SpringBoneJobs.InputPorts;
+using UnityEngine;
namespace UniGLTF.SpringBoneJobs
{
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs
index 284eada61..a87f9b6fd 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs
@@ -20,48 +20,58 @@ namespace UniGLTF.SpringBoneJobs
///
public class FastSpringBoneCombinedBuffer : IDisposable
{
- // 長さと index 同じ
+ // Joint Level
private NativeArray _logics;
private NativeArray _joints;
private NativeArray _prevTails;
private NativeArray _currentTails;
private NativeArray _nextTails;
-
+ // Spring Level
private NativeArray _springs;
+ // Moodel Level
+ private NativeArray _models;
+ // その他
private NativeArray _colliders;
-
private NativeArray _transforms;
private TransformAccessArray _transformAccessArray;
+ // accessor: Joint Level
public NativeArray Logics => _logics;
public NativeArray Joints => _joints;
public NativeArray PrevTails => _prevTails;
public NativeArray CurrentTails => _currentTails;
public NativeArray NextTails => _nextTails;
-
+ // accessor: Spring Level
public NativeArray Springs => _springs;
-
+ // accessor: Model LEvel
+ public NativeArray Models => _models;
+ // accessor: Other
public NativeArray Colliders => _colliders;
-
public NativeArray Transforms => _transforms;
public TransformAccessArray TransformAccessArray => _transformAccessArray;
-
// 構築情報
private FastSpringBoneBuffer[] _batchedBuffers;
private int[] _batchedBufferLogicSizes;
+ private Dictionary _modelMap = new();
+ private Dictionary _jointMap = new();
- private FastSpringBoneCombinedBuffer(int logicsCount, int springsCount, int collidersCount, int transformsCount,
+ private FastSpringBoneCombinedBuffer(int logicsCount, int springsCount, int modelCount, int collidersCount, int transformsCount,
FastSpringBoneBuffer[] batchedBuffers,
int[] batchedBufferLogicSizes
)
{
+ // joint level
_logics = new NativeArray(logicsCount, Allocator.Persistent);
_joints = new NativeArray(logicsCount, Allocator.Persistent);
_prevTails = new NativeArray(logicsCount, Allocator.Persistent);
_currentTails = new NativeArray(logicsCount, Allocator.Persistent);
_nextTails = new NativeArray(logicsCount, Allocator.Persistent);
+ // spring level
_springs = new NativeArray(springsCount, Allocator.Persistent);
+ // model level
+ _models = new NativeArray(modelCount, Allocator.Persistent);
+ // others
_colliders = new NativeArray(collidersCount, Allocator.Persistent);
_transforms = new NativeArray(transformsCount, Allocator.Persistent);
_batchedBuffers = batchedBuffers;
@@ -93,8 +103,8 @@ namespace UniGLTF.SpringBoneJobs
// バッファの構築
Profiler.BeginSample("FastSpringBone.ReconstructBuffers.CreateBuffers");
- combined = new FastSpringBoneCombinedBuffer(logicsCount, springsCount, collidersCount, transformsCount,
- batchedBuffers, batchedBufferLogicSizes);
+ combined = new FastSpringBoneCombinedBuffer(logicsCount, springsCount, _buffers.Count,
+ collidersCount, transformsCount, batchedBuffers, batchedBufferLogicSizes);
Profiler.EndSample();
return combined.Batching(handle);
@@ -110,6 +120,14 @@ namespace UniGLTF.SpringBoneJobs
for (var i = 0; i < _batchedBuffers.Length; i++)
{
var buffer = _batchedBuffers[i];
+ // 逆引き
+ _modelMap.Add(buffer.Model, i);
+
+ for (var j = 0; j < _batchedBufferLogicSizes[i]; ++j)
+ {
+ var head = buffer.Logics[j].headTransformIndex;
+ _jointMap.Add(buffer.Transforms[head], logicsOffset + j);
+ }
// バッファの読み込みをスケジュール
handle = new LoadTransformsJob
@@ -121,6 +139,7 @@ namespace UniGLTF.SpringBoneJobs
handle = new LoadSpringsJob
{
+ ModelIndex = i,
SrcSprings = buffer.Springs,
DestSprings = new NativeSlice(_springs, springsOffset, buffer.Springs.Length),
CollidersOffset = collidersOffset,
@@ -173,12 +192,17 @@ namespace UniGLTF.SpringBoneJobs
public void Dispose()
{
+ // joint
if (_logics.IsCreated) _logics.Dispose();
if (_joints.IsCreated) _joints.Dispose();
if (_prevTails.IsCreated) _prevTails.Dispose();
if (_currentTails.IsCreated) _currentTails.Dispose();
if (_nextTails.IsCreated) _nextTails.Dispose();
+ // spring
if (_springs.IsCreated) _springs.Dispose();
+ // model
+ if (_models.IsCreated) _models.Dispose();
+ // other
if (_colliders.IsCreated) _colliders.Dispose();
if (_transforms.IsCreated) _transforms.Dispose();
if (_transformAccessArray.isCreated) _transformAccessArray.Dispose();
@@ -211,6 +235,22 @@ namespace UniGLTF.SpringBoneJobs
_nextTails = tmp;
}
+ public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings)
+ {
+ if (_jointMap.TryGetValue(joint, out var jointIndex))
+ {
+ _joints[jointIndex] = jointSettings;
+ }
+ }
+
+ public void SetModelLevel(Transform model, BlittableModelLevel modelSetting)
+ {
+ if (_modelMap.TryGetValue(model, out var modelIndex))
+ {
+ _models[modelIndex] = modelSetting;
+ }
+ }
+
#if ENABLE_SPRINGBONE_BURST
[BurstCompile]
#endif
@@ -236,6 +276,7 @@ namespace UniGLTF.SpringBoneJobs
[ReadOnly] public NativeArray SrcSprings;
[WriteOnly] public NativeSlice DestSprings;
+ public int ModelIndex;
public int CollidersOffset;
public int LogicsOffset;
public int TransformOffset;
@@ -243,6 +284,7 @@ namespace UniGLTF.SpringBoneJobs
public void Execute(int index)
{
var spring = SrcSprings[index];
+ spring.modelIndex = ModelIndex;
spring.colliderSpan.startIndex += CollidersOffset;
spring.logicSpan.startIndex += LogicsOffset;
spring.transformIndexOffset = TransformOffset;
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs
index 825707b48..9a27260d9 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs
@@ -43,6 +43,7 @@ namespace UniGLTF.SpringBoneJobs
PrevTail = combined.PrevTails,
NextTail = combined.NextTails,
Springs = combined.Springs,
+ Models = combined.Models,
Colliders = combined.Colliders,
Transforms = combined.Transforms,
DeltaTime = deltaTime,
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs
index 40493b294..fcd2b61f5 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/InputPorts/FastSpringBoneBuffer.cs
@@ -2,7 +2,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Unity.Collections;
-using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
using UnityEngine.Profiling;
using UniGLTF.SpringBoneJobs.Blittables;
@@ -14,6 +13,10 @@ namespace UniGLTF.SpringBoneJobs.InputPorts
///
public class FastSpringBoneBuffer : IDisposable
{
+ ///
+ /// model root
+ ///
+ public Transform Model { get; }
// NOTE: これらはFastSpringBoneBufferCombinerによってバッチングされる
public NativeArray Springs { get; }
public NativeArray Joints { get; }
@@ -23,34 +26,6 @@ namespace UniGLTF.SpringBoneJobs.InputPorts
public Transform[] Transforms { get; }
public bool IsDisposed { get; private set; }
- // NOTE: これは更新頻度が高くバッチングが難しいため、ランダムアクセスを許容してメモリへ直接アクセスする
- // 生のヒープ領域は扱いにくいので長さ1のNativeArrayで代用
- private NativeArray _externalData;
- public Vector3 ExternalForce
- {
- get => _externalData[0].ExternalForce;
- set
- {
- _externalData[0] = new BlittableExternalData
- {
- ExternalForce = value,
- IsSpringBoneEnabled = _externalData[0].IsSpringBoneEnabled,
- };
- }
- }
- public bool IsSpringBoneEnabled
- {
- get => _externalData[0].IsSpringBoneEnabled;
- set
- {
- _externalData[0] = new BlittableExternalData
- {
- ExternalForce = _externalData[0].ExternalForce,
- IsSpringBoneEnabled = value,
- };
- }
- }
-
///
/// Joint, Collider, Center の Transform のリスト
/// - 重複を除去
@@ -79,18 +54,13 @@ namespace UniGLTF.SpringBoneJobs.InputPorts
return Transforms;
}
- public unsafe FastSpringBoneBuffer(FastSpringBoneSpring[] springs)
+ public FastSpringBoneBuffer(Transform model, FastSpringBoneSpring[] springs)
{
+ Model = model;
+
Profiler.BeginSample("FastSpringBone.ConstructBuffers.BufferBuilder");
Transforms = MakeFlattenTransformList(springs);
- _externalData = new NativeArray(1, Allocator.Persistent);
- _externalData[0] = new BlittableExternalData
- {
- ExternalForce = Vector3.zero,
- IsSpringBoneEnabled = true,
- };
- var externalDataPtr = (BlittableExternalData*)_externalData.GetUnsafePtr();
List blittableSprings = new();
List blittableJoints = new();
List blittableColliders = new();
@@ -110,7 +80,6 @@ namespace UniGLTF.SpringBoneJobs.InputPorts
count = spring.joints.Length - 1,
},
centerTransformIndex = Array.IndexOf(Transforms, spring.center),
- ExternalData = externalDataPtr,
};
blittableSprings.Add(blittableSpring);
@@ -182,7 +151,6 @@ namespace UniGLTF.SpringBoneJobs.InputPorts
BlittableTransforms.Dispose();
Colliders.Dispose();
Logics.Dispose();
- _externalData.Dispose();
}
}
}
\ No newline at end of file
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/SpringBoneJobs.asmdef b/Assets/UniGLTF/Runtime/SpringBoneJobs/SpringBoneJobs.asmdef
index 2954f7f79..29d33d7c1 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/SpringBoneJobs.asmdef
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/SpringBoneJobs.asmdef
@@ -1,10 +1,12 @@
{
"name": "SpringBoneJobs",
"rootNamespace": "",
- "references": [],
+ "references": [
+ "GUID:8d76e605759c3f64a957d63ef96ada7c"
+ ],
"includePlatforms": [],
"excludePlatforms": [],
- "allowUnsafeCode": true,
+ "allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/UpdateFastSpringBoneJob.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/UpdateFastSpringBoneJob.cs
index c6d0e2f9a..fc1a8983a 100644
--- a/Assets/UniGLTF/Runtime/SpringBoneJobs/UpdateFastSpringBoneJob.cs
+++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/UpdateFastSpringBoneJob.cs
@@ -12,33 +12,44 @@ namespace UniGLTF.SpringBoneJobs
#if ENABLE_SPRINGBONE_BURST
[BurstCompile]
#endif
+ ///
+ /// データの粒度
+ /// - Joint Level: spring の節。Transform. stiffness など
+ /// - Spring Level: spring の房。root から末端まで。この房 level で並列処理する
+ /// - Model Level: 一人分。複数の房
+ /// - System Level: すべての model。delta time とか
+ ///
public struct UpdateFastSpringBoneJob : IJobParallelFor
{
+ // Joint Level
// すべての spring の joint を平坦に連結した配列
// Joints, Logics, PrevTail, CurrentTail, NextTail は同じ index
[ReadOnly] public NativeArray Joints;
[ReadOnly] public NativeArray Logics;
[ReadOnly] public NativeArray PrevTail;
[ReadOnly] public NativeArray CurrentTail;
- // ランダムアクセス
+ // 処理後の tail 位置(ランダムアクセス)
[NativeDisableParallelForRestriction] public NativeArray NextTail;
-
+ // Spring Level
[ReadOnly] public NativeArray Springs;
+ // Model Level
+ [ReadOnly] public NativeArray Models;
[ReadOnly] public NativeArray Colliders;
-
- // FastSpringBoneBuffer.Transforms を連結したもの
- // ランダムアクセス
+ // FastSpringBoneBuffer.Transforms を連結したもの(ランダムアクセス)
[NativeDisableParallelForRestriction] public NativeArray Transforms;
+ // System Level
public float DeltaTime;
- public unsafe void Execute(int index)
+ /// 房のindex
+ public void Execute(int index)
{
var spring = Springs[index];
var transformIndexOffset = spring.transformIndexOffset;
var colliderSpan = spring.colliderSpan;
var logicSpan = spring.logicSpan;
+ var model = Models[spring.modelIndex];
for (var logicIndex = logicSpan.startIndex; logicIndex < logicSpan.startIndex + logicSpan.count; ++logicIndex)
{
@@ -70,13 +81,16 @@ namespace UniGLTF.SpringBoneJobs
var parentRotation = parentTransform?.rotation ?? Quaternion.identity;
+ // scaling 対応
+ var scalingFactor = model.SupportsScalingAtRuntime ? TransformExtensions.AbsoluteMaxValue(headTransform.localToWorldMatrix.lossyScale) : 1.0f;
+
// verlet積分で次の位置を計算
- var external = (joint.gravityDir * joint.gravityPower + spring.ExternalData->ExternalForce) * DeltaTime;
+ var external = (joint.gravityDir * joint.gravityPower + model.ExternalForce) * DeltaTime;
var nextTail = currentTail
+ (currentTail - prevTail) * (1.0f - joint.dragForce) // 前フレームの移動を継続する(減衰もあるよ)
+ parentRotation * logic.localRotation * logic.boneAxis *
- joint.stiffnessForce * DeltaTime // 親の回転による子ボーンの移動目標
- + external; // 外力による移動量
+ joint.stiffnessForce * DeltaTime * scalingFactor // 親の回転による子ボーンの移動目標
+ + external * scalingFactor; // 外力による移動量
// 長さをboneLengthに強制
nextTail = headTransform.position + (nextTail - headTransform.position).normalized * logic.length;
@@ -153,7 +167,7 @@ namespace UniGLTF.SpringBoneJobs
headTransform.localRotation = headTransform.rotation;
}
- if (spring.ExternalData->IsSpringBoneEnabled)
+ if (!model.StopSpringBoneWriteback)
{
// SpringBone の結果を Transform に反映する
Transforms[logic.headTransformIndex + transformIndexOffset] = headTransform;
diff --git a/Assets/VRM/Runtime/Extensions/TransformExtensions.cs b/Assets/VRM/Runtime/Extensions/TransformExtensions.cs
deleted file mode 100644
index 3959fbd8c..000000000
--- a/Assets/VRM/Runtime/Extensions/TransformExtensions.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using UnityEngine;
-
-namespace VRM
-{
- public static class TransformExtensions
- {
- public static float UniformedLossyScale(this Transform transform)
- {
- // Mathf.Max(a, b, c) は GC どうなんだろう
- var s = transform.lossyScale;
- var x = Mathf.Abs(s.x);
- var y = Mathf.Abs(s.y);
- var z = Mathf.Abs(s.z);
- if (x < y)
- {
- if (y < z)
- {
- return z;
- }
- else
- {
- return y;
- }
- }
- else
- {
- if (x < z)
- {
- return z;
- }
- else
- {
- return x;
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs
index e7c32945b..5feed60de 100644
--- a/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs
+++ b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs
@@ -79,7 +79,7 @@ namespace VRM.SpringBoneJobs
springs[i] = spring;
}
- return new FastSpringBoneBuffer(springs);
+ return new FastSpringBoneBuffer(root.transform, springs);
}
static void Traverse(List joints, VRMSpringBone spring, Transform joint)
diff --git a/Assets/VRM/Runtime/SpringBone/Logic/SphereCollider.cs b/Assets/VRM/Runtime/SpringBone/Logic/SphereCollider.cs
index ded97a744..23af6b60d 100644
--- a/Assets/VRM/Runtime/SpringBone/Logic/SphereCollider.cs
+++ b/Assets/VRM/Runtime/SpringBone/Logic/SphereCollider.cs
@@ -1,3 +1,4 @@
+using UniGLTF;
using UnityEngine;
namespace VRM.SpringBone
diff --git a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneJointInit.cs b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneJointInit.cs
index 762caea0a..2ab4865f8 100644
--- a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneJointInit.cs
+++ b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneJointInit.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using UniGLTF;
using UnityEngine;
namespace VRM.SpringBone
diff --git a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs
index af21306e6..a53f1baf1 100644
--- a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs
+++ b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
+using UniGLTF;
using UnityEngine;
namespace VRM.SpringBone
diff --git a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs
index 7e5ef5aba..89d5f7277 100644
--- a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs
+++ b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs
@@ -74,10 +74,9 @@ namespace UniVRM10
{
if (Application.isPlaying)
{
- // UniGLTF.UniGLTFLogger.Log("invaliate");
- if(m_root!=null)
+ if (m_root != null)
{
- m_root.Runtime.SpringBone.ReconstructSpringBone();
+ m_root.Runtime.SpringBone.SetJointLevel(m_target.transform, m_target.Blittable);
}
}
}
diff --git a/Assets/VRM10/Editor/VRM10.Editor.asmdef b/Assets/VRM10/Editor/VRM10.Editor.asmdef
index ad3c9fdc3..2e12a2512 100644
--- a/Assets/VRM10/Editor/VRM10.Editor.asmdef
+++ b/Assets/VRM10/Editor/VRM10.Editor.asmdef
@@ -6,10 +6,9 @@
"GUID:2ef84b520212e174a94668c7a0862d3b",
"GUID:5f875fdc81c40184c8333b9d63c6ddd5",
"GUID:8d76e605759c3f64a957d63ef96ada7c",
- "GUID:da3e51d19d51a544fa14d43fee843098",
- "GUID:7da8a75dcade2144aab699032d7d7987",
"GUID:b7aa47b240b57de44a4b2021c143c9bf",
- "GUID:1cd941934d098654fa21a13f28346412"
+ "GUID:1cd941934d098654fa21a13f28346412",
+ "GUID:3e5d614bc16b50d41bd94c8d7444ca46"
],
"includePlatforms": [
"Editor"
diff --git a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneJoint.cs b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneJoint.cs
index 4583e9fdb..a0e751a84 100644
--- a/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneJoint.cs
+++ b/Assets/VRM10/Runtime/Components/SpringBone/VRM10SpringBoneJoint.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using UniGLTF;
+using UniGLTF.SpringBoneJobs.Blittables;
using UnityEngine;
@@ -28,6 +29,15 @@ namespace UniVRM10
[SerializeField]
public bool m_drawCollider = false;
+ public BlittableJointMutable Blittable => new BlittableJointMutable
+ {
+ stiffnessForce = m_stiffnessForce,
+ dragForce = m_dragForce,
+ gravityDir = m_gravityDir,
+ gravityPower = m_dragForce,
+ radius = m_jointRadius,
+ };
+
void AddJointRecursive(Transform t, VRM10SpringBoneJoint src)
{
var joint = t.gameObject.GetOrAddComponent();
diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/FastSpringBoneBufferFactory.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/FastSpringBoneBufferFactory.cs
index 7d7033f4b..a6a03f23c 100644
--- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/FastSpringBoneBufferFactory.cs
+++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/FastSpringBoneBufferFactory.cs
@@ -41,7 +41,7 @@ namespace UniVRM10
// create(Spring情報の再収集。設定変更の反映)
var springs = vrm.SpringBone.Springs.Select(spring => new FastSpringBoneSpring
- {
+ {
center = spring.Center,
colliders = spring.ColliderGroups
.SelectMany(group => group.Colliders)
@@ -74,7 +74,7 @@ namespace UniVRM10
await awaitCaller.NextFrame();
- fastSpringBoneBuffer = new FastSpringBoneBuffer(springs);
+ fastSpringBoneBuffer = new FastSpringBoneBuffer(vrm.transform, springs);
return fastSpringBoneBuffer;
}
diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs
index 7c98dedfa..75793c5b1 100644
--- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs
+++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntime.cs
@@ -3,6 +3,8 @@ using UniGLTF;
using UnityEngine;
using UniGLTF.SpringBoneJobs.InputPorts;
using System.Threading.Tasks;
+using UniGLTF.SpringBoneJobs.Blittables;
+using UniGLTF.SpringBoneJobs;
namespace UniVRM10
{
@@ -17,18 +19,21 @@ namespace UniVRM10
private FastSpringBones.FastSpringBoneService m_fastSpringBoneService;
private FastSpringBoneBuffer m_fastSpringBoneBuffer;
- public Vector3 ExternalForce
+ public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings)
{
- get => m_fastSpringBoneBuffer.ExternalForce;
- set => m_fastSpringBoneBuffer.ExternalForce = value;
- }
- public bool IsSpringBoneEnabled
- {
- get => m_fastSpringBoneBuffer.IsSpringBoneEnabled;
- set => m_fastSpringBoneBuffer.IsSpringBoneEnabled = value;
+ if (m_fastSpringBoneService.BufferCombiner.Combined is FastSpringBoneCombinedBuffer combined)
+ {
+ combined.SetJointLevel(joint, jointSettings);
+ }
}
- public float DeltaTime => throw new NotImplementedException();
+ public void SetModelLevel(Transform modelRoot, BlittableModelLevel modelSettings)
+ {
+ if (m_fastSpringBoneService.BufferCombiner.Combined is FastSpringBoneCombinedBuffer combined)
+ {
+ combined.SetModelLevel(modelRoot, modelSettings);
+ }
+ }
public async Task InitializeAsync(Vrm10Instance instance, IAwaitCaller awaitCaller)
{
diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs
index 43222561a..80e1eaf7d 100644
--- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs
+++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs
@@ -3,6 +3,7 @@ using UnityEngine;
using UniGLTF.SpringBoneJobs.InputPorts;
using UniGLTF.SpringBoneJobs;
using System.Threading.Tasks;
+using UniGLTF.SpringBoneJobs.Blittables;
namespace UniVRM10
{
@@ -19,18 +20,21 @@ namespace UniVRM10
public FastSpringBoneBufferCombiner m_bufferCombiner = new();
private FastSpringBoneScheduler m_fastSpringBoneScheduler;
- public Vector3 ExternalForce
+ public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings)
{
- get => m_fastSpringBoneBuffer.ExternalForce;
- set => m_fastSpringBoneBuffer.ExternalForce = value;
- }
- public bool IsSpringBoneEnabled
- {
- get => m_fastSpringBoneBuffer.IsSpringBoneEnabled;
- set => m_fastSpringBoneBuffer.IsSpringBoneEnabled = value;
+ if (m_bufferCombiner.Combined is FastSpringBoneCombinedBuffer combined)
+ {
+ combined.SetJointLevel(joint, jointSettings);
+ }
}
- public float DeltaTime => Time.deltaTime;
+ public void SetModelLevel(Transform modelRoot, BlittableModelLevel modelSettings)
+ {
+ if (m_bufferCombiner.Combined is FastSpringBoneCombinedBuffer combined)
+ {
+ combined.SetModelLevel(modelRoot, modelSettings);
+ }
+ }
public Vrm10FastSpringboneRuntimeStandalone()
{
@@ -115,7 +119,7 @@ namespace UniVRM10
public void Process()
{
- m_fastSpringBoneScheduler.Schedule(DeltaTime).Complete();
+ m_fastSpringBoneScheduler.Schedule(Time.deltaTime).Complete();
}
}
}
\ No newline at end of file
diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs
index fbe655c63..6365c7c1e 100644
--- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs
+++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10Runtime.cs
@@ -30,11 +30,19 @@ namespace UniVRM10
public IVrm10SpringBoneRuntime SpringBone { get; }
public IVrm10Animation VrmAnimation { get; set; }
- [Obsolete("use Vrm10Runtime.SpringBone.ExternalForce")]
+ [Obsolete("use Vrm10Runtime.SpringBone.SetModelLevel")]
public Vector3 ExternalForce
{
- get { return SpringBone.ExternalForce; }
- set { SpringBone.ExternalForce = value; }
+ get
+ {
+ throw new NotImplementedException();
+ // return SpringBone.ExternalForce;
+ }
+ set
+ {
+ // SpringBone.SetModelLevel = value;
+ throw new NotImplementedException();
+ }
}
public Vrm10Runtime(Vrm10Instance instance, bool useControlRig, IVrm10SpringBoneRuntime springBoneRuntime)
diff --git a/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntime.cs b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntime.cs
index 00714a46d..bfa66e038 100644
--- a/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntime.cs
+++ b/Assets/VRM10/Runtime/IO/IVrm10SpringBoneRuntime.cs
@@ -1,8 +1,10 @@
using System;
using System.Threading.Tasks;
using UniGLTF;
+using UniGLTF.SpringBoneJobs.Blittables;
using UnityEngine;
+
namespace UniVRM10
{
public interface IVrm10SpringBoneRuntime : IDisposable
@@ -20,20 +22,23 @@ namespace UniVRM10
public void RestoreInitialTransform();
///
+ /// Joint レベルの可変情報をセットする
+ /// stiffness,
+ ///
+ public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings);
+
+ ///
+ /// Model レベルの可変情報をセットする
+ /// 風, pause, scaling
+ ///
+ public void SetModelLevel(Transform modelRoot, BlittableModelLevel modelSettings);
+
+ ///
+ /// System レベルの可変情報
+ /// TODO: デザイン検討中。
/// deltaTime のカスタマイズポイント。通常は Time.dletaTime
///
- public float DeltaTime { get; }
-
- ///
- /// 風などの追加の外力を設定する
- ///
- public Vector3 ExternalForce { get; set; }
-
- ///
- // SpringBone のランタイムの動作状態を設定する。
- // SpringBone の動きを一時停止したいときは false にする。
- ///
- public bool IsSpringBoneEnabled { get; set; }
+ // public float DeltaTime { get; }
///
/// 毎フレーム Vrm10Runtime.Process から呼ばれる。
diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10.Samples.VRM10Viewer.asmdef b/Assets/VRM10_Samples/VRM10Viewer/VRM10.Samples.VRM10Viewer.asmdef
index dc15df086..f40e22e2d 100644
--- a/Assets/VRM10_Samples/VRM10Viewer/VRM10.Samples.VRM10Viewer.asmdef
+++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10.Samples.VRM10Viewer.asmdef
@@ -3,10 +3,10 @@
"rootNamespace": "",
"references": [
"GUID:b7aa47b240b57de44a4b2021c143c9bf",
- "GUID:da3e51d19d51a544fa14d43fee843098",
"GUID:8d76e605759c3f64a957d63ef96ada7c",
"GUID:e47c917724578cc43b5506c17a27e9a0",
- "GUID:1cd941934d098654fa21a13f28346412"
+ "GUID:1cd941934d098654fa21a13f28346412",
+ "GUID:3e5d614bc16b50d41bd94c8d7444ca46"
],
"includePlatforms": [],
"excludePlatforms": [],
diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Loaded.cs b/Assets/VRM10_Samples/VRM10Viewer/VRM10Loaded.cs
index 11d47dac9..b607a673f 100644
--- a/Assets/VRM10_Samples/VRM10Viewer/VRM10Loaded.cs
+++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Loaded.cs
@@ -8,6 +8,7 @@ namespace UniVRM10.VRM10Viewer
{
RuntimeGltfInstance m_instance;
Vrm10Instance m_controller;
+ public Vrm10Instance Instance => m_controller;
public Vrm10RuntimeControlRig ControlRig => m_controller.Runtime.ControlRig;
public Vrm10Runtime Runtime => m_controller.Runtime;
diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity b/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity
index e5f35d265..731b58285 100644
--- a/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity
+++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Viewer.unity
@@ -281,6 +281,164 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 62367394}
m_CullTransparentMesh: 0
+--- !u!1 &74180717
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 74180718}
+ - component: {fileID: 74180720}
+ - component: {fileID: 74180719}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &74180718
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 74180717}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1221148532}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &74180719
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 74180717}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &74180720
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 74180717}
+ m_CullTransparentMesh: 1
+--- !u!1 &87189655
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 87189656}
+ - component: {fileID: 87189658}
+ - component: {fileID: 87189657}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &87189656
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 87189655}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 434383452}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &87189657
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 87189655}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'ReconstructSpring
+
+'
+--- !u!222 &87189658
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 87189655}
+ m_CullTransparentMesh: 0
--- !u!1 &103723703
GameObject:
m_ObjectHideFlags: 0
@@ -312,7 +470,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 339774397}
- m_RootOrder: 16
+ m_RootOrder: 23
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -478,6 +636,169 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 154330167}
m_CullTransparentMesh: 0
+--- !u!1 &154340881
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 154340882}
+ - component: {fileID: 154340883}
+ m_Layer: 5
+ m_Name: ScalingSpringBone
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &154340882
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 154340881}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2140338386}
+ - {fileID: 626187927}
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 12
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &154340883
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 154340881}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 2140338387}
+ toggleTransition: 1
+ graphic: {fileID: 2124505811}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_IsOn: 0
+--- !u!1 &156820478
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 156820479}
+ - component: {fileID: 156820481}
+ - component: {fileID: 156820480}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &156820479
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156820478}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1828459436}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &156820480
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156820478}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &156820481
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 156820478}
+ m_CullTransparentMesh: 1
--- !u!1 &168425994
GameObject:
m_ObjectHideFlags: 0
@@ -1108,6 +1429,97 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 310000825}
m_CullTransparentMesh: 0
+--- !u!1 &310817053
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 310817054}
+ - component: {fileID: 310817055}
+ m_Layer: 5
+ m_Name: ExternalY
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &310817054
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 310817053}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1521028243}
+ - {fileID: 1925934808}
+ - {fileID: 816781596}
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 15
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &310817055
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 310817053}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1400862396}
+ m_FillRect: {fileID: 2124827620}
+ m_HandleRect: {fileID: 1400862395}
+ m_Direction: 0
+ m_MinValue: -10
+ m_MaxValue: 10
+ m_WholeNumbers: 0
+ m_Value: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &322182884
GameObject:
m_ObjectHideFlags: 0
@@ -1194,16 +1606,21 @@ RectTransform:
- {fileID: 974864191}
- {fileID: 1767706907}
- {fileID: 1557052150}
+ - {fileID: 522109224}
- {fileID: 1728528388}
+ - {fileID: 154340882}
+ - {fileID: 1814253213}
+ - {fileID: 1221148532}
+ - {fileID: 310817054}
+ - {fileID: 1828459436}
- {fileID: 704896193}
+ - {fileID: 434383452}
- {fileID: 597950322}
- {fileID: 935566651}
- {fileID: 634488421}
- {fileID: 1767738854}
- {fileID: 103723704}
- {fileID: 602093298}
- - {fileID: 1346594062}
- - {fileID: 522109224}
m_Father: {fileID: 124675794}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1356,6 +1773,128 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 427963460}
m_CullTransparentMesh: 0
+--- !u!1 &434383451
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 434383452}
+ - component: {fileID: 434383455}
+ - component: {fileID: 434383454}
+ - component: {fileID: 434383453}
+ m_Layer: 5
+ m_Name: ReconstructSpringBone\
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &434383452
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 434383451}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 87189656}
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 18
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 162, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &434383453
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 434383451}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Highlighted
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 434383454}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
+--- !u!114 &434383454
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 434383451}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &434383455
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 434383451}
+ m_CullTransparentMesh: 0
--- !u!1 &450042403
GameObject:
m_ObjectHideFlags: 0
@@ -1620,7 +2159,7 @@ RectTransform:
- {fileID: 2052921329}
- {fileID: 20563309}
m_Father: {fileID: 339774397}
- m_RootOrder: 19
+ m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1786,7 +2325,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 339774397}
- m_RootOrder: 12
+ m_RootOrder: 19
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1867,7 +2406,7 @@ RectTransform:
- {fileID: 154330168}
- {fileID: 1954133885}
m_Father: {fileID: 339774397}
- m_RootOrder: 17
+ m_RootOrder: 24
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -1922,6 +2461,86 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
+--- !u!1 &626187926
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 626187927}
+ - component: {fileID: 626187929}
+ - component: {fileID: 626187928}
+ m_Layer: 5
+ m_Name: Label
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &626187927
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 626187926}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 154340882}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 9, y: -0.5}
+ m_SizeDelta: {x: -28, y: -3}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &626187928
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 626187926}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 0
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SupportScaling
+--- !u!222 &626187929
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 626187926}
+ m_CullTransparentMesh: 1
--- !u!1 &634488420
GameObject:
m_ObjectHideFlags: 0
@@ -1954,7 +2573,7 @@ RectTransform:
- {fileID: 2010083454}
- {fileID: 1081455630}
m_Father: {fileID: 339774397}
- m_RootOrder: 14
+ m_RootOrder: 21
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -2243,7 +2862,7 @@ RectTransform:
m_Children:
- {fileID: 983782643}
m_Father: {fileID: 339774397}
- m_RootOrder: 11
+ m_RootOrder: 17
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -2629,6 +3248,43 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 806723448}
m_CullTransparentMesh: 0
+--- !u!1 &816781595
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 816781596}
+ m_Layer: 5
+ m_Name: Handle Slide Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &816781596
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 816781595}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1400862395}
+ m_Father: {fileID: 310817054}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &826167455
GameObject:
m_ObjectHideFlags: 0
@@ -3431,7 +4087,7 @@ RectTransform:
- {fileID: 175751363}
- {fileID: 1904789319}
m_Father: {fileID: 339774397}
- m_RootOrder: 13
+ m_RootOrder: 20
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -4237,6 +4893,43 @@ RectTransform:
m_AnchoredPosition: {x: 50, y: 0}
m_SizeDelta: {x: -100, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &1112632635
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1112632636}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1112632636
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1112632635}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1710765761}
+ m_Father: {fileID: 1221148532}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: -5, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1140410863
GameObject:
m_ObjectHideFlags: 0
@@ -4712,6 +5405,97 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1199975012}
m_CullTransparentMesh: 0
+--- !u!1 &1221148531
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1221148532}
+ - component: {fileID: 1221148533}
+ m_Layer: 5
+ m_Name: ExternalX
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1221148532
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1221148531}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 74180718}
+ - {fileID: 1112632636}
+ - {fileID: 2007464251}
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 14
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1221148533
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1221148531}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1580403199}
+ m_FillRect: {fileID: 1710765761}
+ m_HandleRect: {fileID: 1580403198}
+ m_Direction: 0
+ m_MinValue: -10
+ m_MaxValue: 10
+ m_WholeNumbers: 0
+ m_Value: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &1242458542
GameObject:
m_ObjectHideFlags: 0
@@ -4863,7 +5647,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
- m_Text: PauseSpringBone
+ m_Text: Pause
--- !u!222 &1258907233
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -5108,6 +5892,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1289294207}
m_CullTransparentMesh: 0
+--- !u!1 &1299708885
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1299708886}
+ - component: {fileID: 1299708888}
+ - component: {fileID: 1299708887}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1299708886
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1299708885}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2068041823}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1299708887
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1299708885}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1299708888
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1299708885}
+ m_CullTransparentMesh: 1
--- !u!1 &1307084560
GameObject:
m_ObjectHideFlags: 0
@@ -5473,7 +6333,7 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1322834809}
m_CullTransparentMesh: 0
---- !u!1 &1346594061
+--- !u!1 &1400862394
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -5481,78 +6341,74 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1346594062}
- - component: {fileID: 1346594064}
- - component: {fileID: 1346594063}
+ - component: {fileID: 1400862395}
+ - component: {fileID: 1400862397}
+ - component: {fileID: 1400862396}
m_Layer: 5
- m_Name: _SpringBone_
+ m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &1346594062
+--- !u!224 &1400862395
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1346594061}
+ m_GameObject: {fileID: 1400862394}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 339774397}
- m_RootOrder: 18
+ m_Father: {fileID: 816781596}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 178, y: 30}
+ m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1346594063
+--- !u!114 &1400862396
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1346594061}
+ m_GameObject: {fileID: 1400862394}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
- m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
- m_FontData:
- m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
- m_FontSize: 14
- m_FontStyle: 1
- m_BestFit: 0
- m_MinSize: 10
- m_MaxSize: 40
- m_Alignment: 4
- m_AlignByGeometry: 0
- m_RichText: 1
- m_HorizontalOverflow: 0
- m_VerticalOverflow: 0
- m_LineSpacing: 1
- m_Text: SpringBone
---- !u!222 &1346594064
+ m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1400862397
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1346594061}
- m_CullTransparentMesh: 0
+ m_GameObject: {fileID: 1400862394}
+ m_CullTransparentMesh: 1
--- !u!1 &1407428956
GameObject:
m_ObjectHideFlags: 0
@@ -5840,6 +6696,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1519258557}
m_CullTransparentMesh: 1
+--- !u!1 &1521028242
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1521028243}
+ - component: {fileID: 1521028245}
+ - component: {fileID: 1521028244}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1521028243
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1521028242}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 310817054}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1521028244
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1521028242}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1521028245
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1521028242}
+ m_CullTransparentMesh: 1
--- !u!1 &1557052149
GameObject:
m_ObjectHideFlags: 0
@@ -5920,6 +6852,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1557052149}
m_CullTransparentMesh: 0
+--- !u!1 &1580403197
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1580403198}
+ - component: {fileID: 1580403200}
+ - component: {fileID: 1580403199}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1580403198
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580403197}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2007464251}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1580403199
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580403197}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1580403200
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1580403197}
+ m_CullTransparentMesh: 1
--- !u!1 &1621794410
GameObject:
m_ObjectHideFlags: 0
@@ -6296,6 +7304,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1636340563}
m_CullTransparentMesh: 0
+--- !u!1 &1710765760
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1710765761}
+ - component: {fileID: 1710765763}
+ - component: {fileID: 1710765762}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1710765761
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710765760}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1112632636}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 10, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1710765762
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710765760}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1710765763
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710765760}
+ m_CullTransparentMesh: 1
--- !u!1 &1728528387
GameObject:
m_ObjectHideFlags: 0
@@ -6328,7 +7412,7 @@ RectTransform:
- {fileID: 1519258558}
- {fileID: 1258907231}
m_Father: {fileID: 339774397}
- m_RootOrder: 10
+ m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -6662,7 +7746,7 @@ RectTransform:
- {fileID: 62367395}
- {fileID: 1037763549}
m_Father: {fileID: 339774397}
- m_RootOrder: 15
+ m_RootOrder: 22
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -6836,15 +7920,20 @@ MonoBehaviour:
m_openMotion: {fileID: 168425996}
m_pastePose: {fileID: 1307084564}
m_showBoxMan: {fileID: 1767706908}
- m_pauseSpringBone: {fileID: 1728528389}
- m_resetSpringBone: {fileID: 704896194}
m_enableLipSync: {fileID: 935566650}
m_enableAutoBlink: {fileID: 634488422}
m_enableAutoExpression: {fileID: 1767738855}
m_useAsync: {fileID: 602093299}
- m_useSingelton: {fileID: 522109225}
m_target: {fileID: 802105000}
m_motion: {fileID: 4900000, guid: 08df5151e71aed748b13547492fb8b9a, type: 3}
+ m_useSpringboneSingelton: {fileID: 522109225}
+ m_springbonePause: {fileID: 1728528389}
+ m_springboneScaling: {fileID: 154340883}
+ m_springboneExternalX: {fileID: 1221148533}
+ m_springboneExternalY: {fileID: 310817055}
+ m_springboneExternalZ: {fileID: 1828459437}
+ m_resetSpringBone: {fileID: 704896194}
+ m_reconstructSpringBone: {fileID: 434383453}
m_texts:
m_textModelTitle: {fileID: 1111491925}
m_textModelVersion: {fileID: 1045380263}
@@ -6951,6 +8040,177 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls: []
m_IsOn: 0
+--- !u!1 &1814253212
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1814253213}
+ - component: {fileID: 1814253215}
+ - component: {fileID: 1814253214}
+ m_Layer: 5
+ m_Name: _SpringExternal_
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1814253213
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1814253212}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 13
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 178, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1814253214
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1814253212}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 0
+ m_BestFit: 0
+ m_MinSize: 10
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: SpringExternal
+--- !u!222 &1814253215
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1814253212}
+ m_CullTransparentMesh: 0
+--- !u!1 &1828459435
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1828459436}
+ - component: {fileID: 1828459437}
+ m_Layer: 5
+ m_Name: ExternalZ
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1828459436
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1828459435}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 156820479}
+ - {fileID: 2063799833}
+ - {fileID: 2068041823}
+ m_Father: {fileID: 339774397}
+ m_RootOrder: 16
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 160, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1828459437
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1828459435}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 1299708887}
+ m_FillRect: {fileID: 1872368843}
+ m_HandleRect: {fileID: 1299708886}
+ m_Direction: 0
+ m_MinValue: -10
+ m_MaxValue: 10
+ m_WholeNumbers: 0
+ m_Value: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &1866921957
GameObject:
m_ObjectHideFlags: 0
@@ -7028,6 +8288,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1866921957}
m_CullTransparentMesh: 0
+--- !u!1 &1872368842
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1872368843}
+ - component: {fileID: 1872368845}
+ - component: {fileID: 1872368844}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1872368843
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1872368842}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2063799833}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 10, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1872368844
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1872368842}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1872368845
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1872368842}
+ m_CullTransparentMesh: 1
--- !u!1 &1904789318
GameObject:
m_ObjectHideFlags: 0
@@ -7271,6 +8607,43 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1923525314}
m_CullTransparentMesh: 0
+--- !u!1 &1925934807
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1925934808}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1925934808
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1925934807}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2124827620}
+ m_Father: {fileID: 310817054}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: -5, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1954133884
GameObject:
m_ObjectHideFlags: 0
@@ -7509,6 +8882,43 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1987265554}
m_CullTransparentMesh: 1
+--- !u!1 &2007464250
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2007464251}
+ m_Layer: 5
+ m_Name: Handle Slide Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2007464251
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2007464250}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1580403198}
+ m_Father: {fileID: 1221148532}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2009818431
GameObject:
m_ObjectHideFlags: 0
@@ -7861,6 +9271,80 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2055567528}
m_CullTransparentMesh: 1
+--- !u!1 &2063799832
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2063799833}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2063799833
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2063799832}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1872368843}
+ m_Father: {fileID: 1828459436}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: -5, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2068041822
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2068041823}
+ m_Layer: 5
+ m_Name: Handle Slide Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2068041823
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2068041822}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1299708886}
+ m_Father: {fileID: 1828459436}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2105159131
GameObject:
m_ObjectHideFlags: 0
@@ -7942,6 +9426,235 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2105159131}
m_CullTransparentMesh: 0
+--- !u!1 &2124505809
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2124505810}
+ - component: {fileID: 2124505812}
+ - component: {fileID: 2124505811}
+ m_Layer: 5
+ m_Name: Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2124505810
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124505809}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2140338386}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2124505811
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124505809}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2124505812
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124505809}
+ m_CullTransparentMesh: 1
+--- !u!1 &2124827619
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2124827620}
+ - component: {fileID: 2124827622}
+ - component: {fileID: 2124827621}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2124827620
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124827619}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1925934808}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 10, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2124827621
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124827619}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2124827622
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124827619}
+ m_CullTransparentMesh: 1
+--- !u!1 &2140338385
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2140338386}
+ - component: {fileID: 2140338388}
+ - component: {fileID: 2140338387}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2140338386
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2140338385}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2124505810}
+ m_Father: {fileID: 154340882}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 10, y: -10}
+ m_SizeDelta: {x: 20, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2140338387
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2140338385}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2140338388
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2140338385}
+ m_CullTransparentMesh: 1
--- !u!1 &2141451816
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs b/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs
index 0a84d5e34..f7b442561 100644
--- a/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs
+++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10ViewerUI.cs
@@ -3,6 +3,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using UniGLTF;
+using UniGLTF.SpringBoneJobs.Blittables;
using UnityEngine;
using UnityEngine.UI;
@@ -26,12 +27,6 @@ namespace UniVRM10.VRM10Viewer
[SerializeField]
Toggle m_showBoxMan = default;
- [SerializeField]
- Toggle m_pauseSpringBone = default;
-
- [SerializeField]
- Button m_resetSpringBone = default;
-
[SerializeField]
Toggle m_enableLipSync = default;
@@ -44,15 +39,34 @@ namespace UniVRM10.VRM10Viewer
[SerializeField]
Toggle m_useAsync = default;
- [SerializeField]
- Toggle m_useSingelton = default;
-
[SerializeField]
GameObject m_target = default;
[SerializeField]
TextAsset m_motion;
+ // springbone
+ [SerializeField]
+ Toggle m_useSpringboneSingelton = default;
+
+ [SerializeField]
+ Toggle m_springbonePause = default;
+
+ [SerializeField]
+ Toggle m_springboneScaling = default;
+
+ [SerializeField]
+ Slider m_springboneExternalX = default;
+ [SerializeField]
+ Slider m_springboneExternalY = default;
+ [SerializeField]
+ Slider m_springboneExternalZ = default;
+
+ [SerializeField]
+ Button m_resetSpringBone = default;
+ [SerializeField]
+ Button m_reconstructSpringBone = default;
+
GameObject Root = default;
IVrm10Animation m_src = default;
@@ -257,7 +271,6 @@ namespace UniVRM10.VRM10Viewer
m_openModel = buttons.First(x => x.name == "OpenModel");
m_openMotion = buttons.First(x => x.name == "OpenMotion");
m_pastePose = buttons.First(x => x.name == "PastePose");
- m_resetSpringBone = buttons.First(x => x.name == "ResetSpringBone");
#if UNITY_2022_3_OR_NEWER
var toggles = GameObject.FindObjectsByType(FindObjectsSortMode.InstanceID);
@@ -265,12 +278,15 @@ namespace UniVRM10.VRM10Viewer
var toggles = GameObject.FindObjectsOfType();
#endif
m_showBoxMan = toggles.First(x => x.name == "ShowBoxMan");
- m_pauseSpringBone = toggles.First(x => x.name == "PauseSpringBone");
m_enableLipSync = toggles.First(x => x.name == "EnableLipSync");
m_enableAutoBlink = toggles.First(x => x.name == "EnableAutoBlink");
m_enableAutoExpression = toggles.First(x => x.name == "EnableAutoExpression");
m_useAsync = toggles.First(x => x.name == "UseAsync");
- m_useSingelton = toggles.First(x => x.name == "UseSingleton");
+
+ m_useSpringboneSingelton = toggles.First(x => x.name == "UseSingleton");
+ m_springbonePause = toggles.First(x => x.name == "PauseSpringBone");
+ m_resetSpringBone = buttons.First(x => x.name == "ResetSpringBone");
+
#if UNITY_2022_3_OR_NEWER
var texts = GameObject.FindObjectsByType(FindObjectsSortMode.InstanceID);
@@ -355,6 +371,7 @@ namespace UniVRM10.VRM10Viewer
m_openMotion.onClick.AddListener(OnOpenMotionClicked);
m_pastePose.onClick.AddListener(OnPastePoseClicked);
m_resetSpringBone.onClick.AddListener(OnResetSpringBoneClicked);
+ m_reconstructSpringBone.onClick.AddListener(OnReconstructSpringBoneClicked);
// load initial bvh
if (m_motion != null)
@@ -414,7 +431,12 @@ namespace UniVRM10.VRM10Viewer
m_loaded.Runtime.VrmAnimation = Motion;
}
- m_loaded.Runtime.SpringBone.IsSpringBoneEnabled = !m_pauseSpringBone.isOn;
+ m_loaded.Runtime.SpringBone.SetModelLevel(m_loaded.Instance.transform, new BlittableModelLevel
+ {
+ ExternalForce = new Vector3(m_springboneExternalX.value, m_springboneExternalY.value, m_springboneExternalZ.value),
+ StopSpringBoneWriteback = m_springbonePause.isOn,
+ SupportsScalingAtRuntime = m_springboneScaling.isOn,
+ });
}
}
}
@@ -505,6 +527,17 @@ namespace UniVRM10.VRM10Viewer
}
}
+ void OnReconstructSpringBoneClicked()
+ {
+ if (m_loaded != null)
+ {
+ if (m_loaded.Runtime != null)
+ {
+ m_loaded.Runtime.SpringBone.ReconstructSpringBone();
+ }
+ }
+ }
+
static IMaterialDescriptorGenerator GetVrmMaterialDescriptorGenerator(bool useUrp)
{
if (useUrp)
@@ -547,7 +580,7 @@ namespace UniVRM10.VRM10Viewer
awaitCaller: m_useAsync.enabled ? new RuntimeOnlyAwaitCaller() : new ImmediateCaller(),
vrmMetaInformationCallback: m_texts.UpdateMeta,
ct: cancellationToken,
- springboneRuntime: m_useSingelton.isOn ? new Vrm10FastSpringboneRuntime() : new Vrm10FastSpringboneRuntimeStandalone());
+ springboneRuntime: m_useSpringboneSingelton.isOn ? new Vrm10FastSpringboneRuntime() : new Vrm10FastSpringboneRuntimeStandalone());
if (cancellationToken.IsCancellationRequested)
{
UnityObjectDestroyer.DestroyRuntimeOrEditor(vrm10Instance.gameObject);