2026-04-27 BGM 및 이스터에그

This commit is contained in:
2026-04-27 17:47:44 +09:00
parent 88a71e6292
commit 18d3077cc4
840 changed files with 53720 additions and 4 deletions

View File

@@ -0,0 +1,99 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
// 1 = duration
// 2 = position move curve
[CreateAssetMenu(menuName = "Tiny Giant Studio/Modular 3D Layouts/Element Updater/Animated")]
public class AnimatedElementUpdater : LayoutElementModule
{
public override void UpdateLocalTransform(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition, Quaternion localRotation)
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
LayoutElementAnimator elementAnimator = transform.gameObject.GetComponent<LayoutElementAnimator>();
if (elementAnimator.targetPosition != localPosition)
{
elementAnimator.NewTargetLocalPosition(variableHolders, localPosition);
//if (elementAnimator.targetRotation != localRotation)
elementAnimator.NewTargetLocalRotation(variableHolders, localRotation);
}
}
else
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localPosition = localPosition;
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localRotation = localRotation;
}
}
public override void UpdateLocalPosition(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementAnimator>().NewTargetLocalPosition(variableHolders, localPosition);
}
else
{
transform.localPosition = localPosition;
}
}
}
public override void UpdateLocalRotation(Transform transform, VariableHolder[] variableHolders, Quaternion localRotation)
{
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementAnimator>().NewTargetLocalRotation(variableHolders, localRotation);
}
else
{
transform.localRotation = localRotation;
}
}
}
public override void UpdateWorldTransform(Transform transform, VariableHolder[] variableHolders, Vector3 position, Quaternion rotation)
{
transform.SetPositionAndRotation(position, rotation);
}
public override void UpdateWorldPosition(Transform transform, VariableHolder[] variableHolders, Vector3 position)
{
transform.position = position;
}
public override void UpdateWorldRotation(Transform transform, VariableHolder[] variableHolders, Quaternion rotation)
{
transform.rotation = rotation;
}
void AddAnimatorIfRequired(Transform transform)
{
if (!transform.gameObject.GetComponent<LayoutElementAnimator>())
transform.gameObject.AddComponent<LayoutElementAnimator>();
}
public override string VariableWarnings(VariableHolder[] variableHolders)
{
return null;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 1016cff7a4bef0d46a3c19b6413b2222
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/AnimatedElementUpdater.cs
uploadId: 877966

View File

@@ -0,0 +1,52 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
[CreateAssetMenu(menuName = "Tiny Giant Studio/Modular 3D Layouts/Element Updater/Flat")]
public class BaseLayoutElementUpdater : LayoutElementModule
{
public override void UpdateLocalTransform(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition, Quaternion localRotation)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localPosition = localPosition;
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localRotation = localRotation;
}
public override void UpdateWorldTransform(Transform transform, VariableHolder[] variableHolders, Vector3 position, Quaternion rotation)
{
transform.SetPositionAndRotation(position, rotation);
}
public override void UpdateLocalPosition(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localPosition = localPosition;
}
public override void UpdateWorldPosition(Transform transform, VariableHolder[] variableHolders, Vector3 position)
{
transform.position = position;
}
public override void UpdateLocalRotation(Transform transform, VariableHolder[] variableHolders, Quaternion localRotation)
{
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
transform.localRotation = localRotation;
}
public override void UpdateWorldRotation(Transform transform, VariableHolder[] variableHolders, Quaternion rotation)
{
transform.rotation = rotation;
}
public override string VariableWarnings(VariableHolder[] variableHolders)
{
return null;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 9874342bdf7f7c04382bb1befebfb05e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/BaseLayoutElementUpdater.cs
uploadId: 877966

View File

@@ -0,0 +1,105 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
[DisallowMultipleComponent]
public class LayoutElementAnimator : MonoBehaviour
{
bool settingPosition = false;
public float moveDuration;
public Vector3 startingPosition;
public Vector3 targetPosition;
public AnimationCurve positionAnimationCurve;
bool settingRotation = false;
public float rotateDuration;
public Quaternion startingRotation;
public Quaternion targetRotation;
public AnimationCurve rotationAnimationCurve;
public float positionTimer = 0;
public float rotationTimer = 0;
void Update()
{
if (settingPosition)
{
if (positionTimer < moveDuration)
{
float perc = positionTimer / moveDuration;
transform.localPosition = Vector3.LerpUnclamped(startingPosition, targetPosition, positionAnimationCurve.Evaluate(perc));
}
else
{
transform.localPosition = targetPosition;
settingPosition = false;
}
}
if (settingRotation)
{
if (rotationTimer < rotateDuration)
{
if (!IsNaN(startingRotation) && !IsNaN(targetRotation))
{
float perc = rotationTimer / moveDuration;
var currentRotation = Quaternion.LerpUnclamped(startingRotation, targetRotation, rotationAnimationCurve.Evaluate(perc));
if (!IsNaN(currentRotation))
transform.localRotation = currentRotation;
}
}
else
{
transform.localRotation = targetRotation;
settingRotation = false;
}
}
if (!settingRotation && !settingPosition)
this.enabled = false;
positionTimer += Time.deltaTime;
rotationTimer += Time.deltaTime;
}
public void NewTargetLocalPosition(VariableHolder[] variableHolders, Vector3 newTargetPosition)
{
if (targetPosition == newTargetPosition)
return;
targetPosition = newTargetPosition;
positionTimer = 0;
startingPosition = transform.localPosition;
moveDuration = variableHolders[0].floatValue;
positionAnimationCurve = variableHolders[1].animationCurve;
settingPosition = true;
this.enabled = true;
}
public void NewTargetLocalRotation(VariableHolder[] variableHolders, Quaternion target)
{
if (targetRotation == target)
return;
rotationTimer = 0;
startingRotation = transform.localRotation;
targetRotation = target;
rotateDuration = variableHolders[2].floatValue;
rotationAnimationCurve = variableHolders[3].animationCurve;
settingRotation = true;
this.enabled = true;
}
private bool IsNaN(Quaternion q)
{
//return q.x == 0 && q.y == 0 && q.z == 0;
return float.IsNaN(q.x) && float.IsNaN(q.y) && float.IsNaN(q.z);
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: bc4d5f6f1fb2e2345b7354c0c66be568
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/LayoutElementAnimator.cs
uploadId: 877966

View File

@@ -0,0 +1,15 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
public abstract class LayoutElementModule : ModuleCore
{
public abstract void UpdateLocalTransform(Transform target, VariableHolder[] variableHolders, Vector3 localPosition, Quaternion localRotation);
public abstract void UpdateWorldTransform(Transform target, VariableHolder[] variableHolders, Vector3 position, Quaternion rotation);
public abstract void UpdateLocalPosition(Transform target, VariableHolder[] variableHolders, Vector3 localPosition);
public abstract void UpdateWorldPosition(Transform target, VariableHolder[] variableHolders, Vector3 position);
public abstract void UpdateLocalRotation(Transform target, VariableHolder[] variableHolders, Quaternion localRotation);
public abstract void UpdateWorldRotation(Transform target, VariableHolder[] variableHolders, Quaternion rotation);
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 1c3386a33f3628247911b8bb92a5c138
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/LayoutElementModule.cs
uploadId: 877966

View File

@@ -0,0 +1,12 @@
using TinyGiantStudio.Modules;
namespace TinyGiantStudio.Layout
{
[System.Serializable]
public class LayoutElementModuleContainer
{
public LayoutElementModule module;
public VariableHolder[] variableHolders;
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 41791388c9a20a64382c5ce4fd9ab4d4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/LayoutElementModuleContainer.cs
uploadId: 877966

View File

@@ -0,0 +1,98 @@
using TinyGiantStudio.Modules;
using UnityEngine;
using UnityEngine.AI;
namespace TinyGiantStudio.Layout
{
[DisallowMultipleComponent]
public class LayoutElementNavmeshController : MonoBehaviour
{
//bool settingPosition = false;
public Vector3 startingPosition;
public Vector3 targetPosition;
public float gravitationalAcceleration = 10;
void Update()
{
if (transform.position != targetPosition)
{
////GetComponent<Rigidbody>().AddForce((targetPosition - transform.position) * gravitationalAcceleration * Time.deltaTime);
//Vector3 direction = targetPosition - transform.position;
//GetComponent<Rigidbody>().AddForceAtPosition(direction.normalized, transform.position);
}
//if (settingPosition)
//{
// //if (timer < moveDuration)
// //{
// // float perc = timer / moveDuration;
// // GetComponent<Rigidbody>().velocity += gravitationalAcceleration * Time.fixedTime * (targetPosition - transform.position);
// // transform.localPosition = Vector3.LerpUnclamped(startingPosition, targetPosition, positionAnimationCurve.Evaluate(perc));
// //}
// //else
// //{
// // transform.localPosition = targetPosition;
// // settingPosition = false;
// //}
//}
//if (settingRotation)
//{
// if (timer < rotateDuration)
// {
// if (!IsNaN(startingRotation) && !IsNaN(targetRotation))
// {
// float perc = timer / moveDuration;
// transform.localRotation = Quaternion.LerpUnclamped(startingRotation, targetRotation, rotationAnimationCurve.Evaluate(perc)); ;
// }
// }
// else
// {
// transform.localRotation = targetRotation;
// settingRotation = false;
// }
//}
//if (!settingRotation && !settingPosition)
// this.enabled = false;
//timer += Time.deltaTime;
}
public void NewTargetLocalPosition(VariableHolder[] variableHolders, Vector3 target)
{
if (targetPosition == target)
return;
NavMesh.avoidancePredictionTime = 2.5f;
NavMesh.pathfindingIterationsPerFrame = 1000;
//GetComponent<NavMeshAgent>().avoidancePriority = Random.Range(50, 100);
GetComponent<NavMeshAgent>().obstacleAvoidanceType = ObstacleAvoidanceType.HighQualityObstacleAvoidance;
GetComponent<NavMeshAgent>().SetDestination(targetPosition);
}
public void NewTargetLocalRotation(VariableHolder[] variableHolders, Quaternion target)
{
//if (targetRotation == target)
// return;
//timer = 0;
//startingRotation = transform.localRotation;
//targetRotation = target;
//rotateDuration = variableHolders[2].floatValue;
//rotationAnimationCurve = variableHolders[3].animationCurve;
//settingRotation = true;
//this.enabled = true;
}
private bool IsNaN(Quaternion q)
{
return q.x == 0 && q.y == 0 && q.z == 0;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 047ca61faa35e5242bd3e9199ba484ac
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/LayoutElementNavmeshController.cs
uploadId: 877966

View File

@@ -0,0 +1,100 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
[DisallowMultipleComponent]
public class LayoutElementPhysicsController : MonoBehaviour
{
//bool settingPosition = false;
public Vector3 startingPosition;
public Vector3 targetPosition;
public float gravitationalAcceleration = 10;
void Update()
{
if (transform.position != targetPosition)
{
GetComponent<Rigidbody>().linearVelocity += gravitationalAcceleration * Time.fixedTime * (targetPosition - transform.position);
////GetComponent<Rigidbody>().AddForce((targetPosition - transform.position) * gravitationalAcceleration * Time.deltaTime);
//Vector3 direction = targetPosition - transform.position;
//GetComponent<Rigidbody>().AddForceAtPosition(direction.normalized, transform.position);
}
//if (settingPosition)
//{
// //if (timer < moveDuration)
// //{
// // float perc = timer / moveDuration;
// // GetComponent<Rigidbody>().velocity += gravitationalAcceleration * Time.fixedTime * (targetPosition - transform.position);
// // transform.localPosition = Vector3.LerpUnclamped(startingPosition, targetPosition, positionAnimationCurve.Evaluate(perc));
// //}
// //else
// //{
// // transform.localPosition = targetPosition;
// // settingPosition = false;
// //}
//}
//if (settingRotation)
//{
// if (timer < rotateDuration)
// {
// if (!IsNaN(startingRotation) && !IsNaN(targetRotation))
// {
// float perc = timer / moveDuration;
// transform.localRotation = Quaternion.LerpUnclamped(startingRotation, targetRotation, rotationAnimationCurve.Evaluate(perc)); ;
// }
// }
// else
// {
// transform.localRotation = targetRotation;
// settingRotation = false;
// }
//}
//if (!settingRotation && !settingPosition)
// this.enabled = false;
//timer += Time.deltaTime;
}
public void NewTargetLocalPosition(VariableHolder[] variableHolders, Vector3 target)
{
if (targetPosition == target)
return;
//timer = 0;
startingPosition = transform.localPosition;
targetPosition = target;
//moveDuration = variableHolders[0].floatValue;
//positionAnimationCurve = variableHolders[1].animationCurve;
//settingPosition = true;
this.enabled = true;
}
public void NewTargetLocalRotation(VariableHolder[] variableHolders, Quaternion target)
{
//if (targetRotation == target)
// return;
//timer = 0;
//startingRotation = transform.localRotation;
//targetRotation = target;
//rotateDuration = variableHolders[2].floatValue;
//rotationAnimationCurve = variableHolders[3].animationCurve;
//settingRotation = true;
//this.enabled = true;
}
private bool IsNaN(Quaternion q)
{
return q.x == 0 && q.y == 0 && q.z == 0;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: e91b61cafad9a284883a87f67a687245
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/LayoutElementPhysicsController.cs
uploadId: 877966

View File

@@ -0,0 +1,103 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
// 1 = duration
// 2 = position move curve
[CreateAssetMenu(menuName = "Tiny Giant Studio/Modular 3D Layouts/Element Updater/Navmesh")]
public class NavMeshElementUpdater : LayoutElementModule
{
public override void UpdateLocalTransform(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition, Quaternion localRotation)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementNavmeshController>().NewTargetLocalPosition(variableHolders, localPosition);
}
else
{
transform.localPosition = localPosition;
}
}
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementNavmeshController>().NewTargetLocalRotation(variableHolders, localRotation);
}
else
{
transform.localRotation = localRotation;
}
}
}
public override void UpdateLocalPosition(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementNavmeshController>().NewTargetLocalPosition(variableHolders, localPosition);
}
else
{
transform.localPosition = localPosition;
}
}
}
public override void UpdateLocalRotation(Transform transform, VariableHolder[] variableHolders, Quaternion localRotation)
{
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementNavmeshController>().NewTargetLocalRotation(variableHolders, localRotation);
}
else
{
transform.localRotation = localRotation;
}
}
}
public override void UpdateWorldTransform(Transform transform, VariableHolder[] variableHolders, Vector3 position, Quaternion rotation)
{
transform.SetPositionAndRotation(position, rotation);
}
public override void UpdateWorldPosition(Transform transform, VariableHolder[] variableHolders, Vector3 position)
{
transform.position = position;
}
public override void UpdateWorldRotation(Transform transform, VariableHolder[] variableHolders, Quaternion rotation)
{
transform.rotation = rotation;
}
void AddAnimatorIfRequired(Transform transform)
{
if (!transform.gameObject.GetComponent<LayoutElementNavmeshController>())
transform.gameObject.AddComponent<LayoutElementNavmeshController>();
}
public override string VariableWarnings(VariableHolder[] variableHolders)
{
return null;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 9a96d9826294ad948a7e36a927b4e8e2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/NavMeshElementUpdater.cs
uploadId: 877966

View File

@@ -0,0 +1,103 @@
using TinyGiantStudio.Modules;
using UnityEngine;
namespace TinyGiantStudio.Layout
{
// 1 = duration
// 2 = position move curve
[CreateAssetMenu(menuName = "Tiny Giant Studio/Modular 3D Layouts/Element Updater/Physics")]
public class PhysicsElementUpdater : LayoutElementModule
{
public override void UpdateLocalTransform(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition, Quaternion localRotation)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementPhysicsController>().NewTargetLocalPosition(variableHolders, localPosition);
}
else
{
transform.localPosition = localPosition;
}
}
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementPhysicsController>().NewTargetLocalRotation(variableHolders, localRotation);
}
else
{
transform.localRotation = localRotation;
}
}
}
public override void UpdateLocalPosition(Transform transform, VariableHolder[] variableHolders, Vector3 localPosition)
{
if (transform.localPosition != localPosition) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementPhysicsController>().NewTargetLocalPosition(variableHolders, localPosition);
}
else
{
transform.localPosition = localPosition;
}
}
}
public override void UpdateLocalRotation(Transform transform, VariableHolder[] variableHolders, Quaternion localRotation)
{
if (transform.localRotation != localRotation) //This is to avoid unnecessary marking things as changed in scene hierarchy
{
if (Application.isPlaying)
{
AddAnimatorIfRequired(transform);
transform.gameObject.GetComponent<LayoutElementPhysicsController>().NewTargetLocalRotation(variableHolders, localRotation);
}
else
{
transform.localRotation = localRotation;
}
}
}
public override void UpdateWorldTransform(Transform transform, VariableHolder[] variableHolders, Vector3 position, Quaternion rotation)
{
transform.SetPositionAndRotation(position, rotation);
}
public override void UpdateWorldPosition(Transform transform, VariableHolder[] variableHolders, Vector3 position)
{
transform.position = position;
}
public override void UpdateWorldRotation(Transform transform, VariableHolder[] variableHolders, Quaternion rotation)
{
transform.rotation = rotation;
}
void AddAnimatorIfRequired(Transform transform)
{
if (!transform.gameObject.GetComponent<LayoutElementPhysicsController>())
transform.gameObject.AddComponent<LayoutElementPhysicsController>();
}
public override string VariableWarnings(VariableHolder[] variableHolders)
{
return null;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 0fde9b90f291fe74dba12608b3483f44
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 247241
packageName: Modular 3D Text - In-Game 3D UI System
packageVersion: 4.9.2
assetPath: Assets/Plugins/Tiny Giant Studio/Modular 3D Layouts/Scripts/ElementUpdaters/PhysicsElementUpdater.cs
uploadId: 877966