1
This commit is contained in:
53
Unity/Scripts/OverrideTransform/OverrideTransform.cs
Normal file
53
Unity/Scripts/OverrideTransform/OverrideTransform.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using RotaryHeart.Lib.SerializableDictionary;
|
||||
namespace BITKit
|
||||
{
|
||||
public class OverrideTransform : MonoBehaviour
|
||||
{
|
||||
public List<Transform> sources = new();
|
||||
Dictionary<string, Quaternion> rotations = new();
|
||||
Dictionary<string, Vector3> positions = new();
|
||||
Quaternion currentRotation;
|
||||
Vector3 currentPosition;
|
||||
Quaternion defaultRotation;
|
||||
Vector3 defualtPosition;
|
||||
public void Set(string key, Quaternion rotation)
|
||||
{
|
||||
rotations.Insert(key, rotation);
|
||||
}
|
||||
public void Set(string key, Vector3 position)
|
||||
{
|
||||
positions.Insert(key, position);
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
defaultRotation = transform.localRotation;
|
||||
defualtPosition = transform.localPosition;
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
currentRotation = defaultRotation;
|
||||
currentPosition = defualtPosition;
|
||||
foreach (var x in sources)
|
||||
{
|
||||
currentRotation *= x.localRotation;
|
||||
currentPosition += x.localPosition;
|
||||
}
|
||||
foreach (var x in rotations.Values)
|
||||
{
|
||||
currentRotation *= x;
|
||||
}
|
||||
foreach (var x in positions.Values)
|
||||
{
|
||||
currentPosition += x;
|
||||
}
|
||||
}
|
||||
void LateUpdate()
|
||||
{
|
||||
transform.localPosition = currentPosition;
|
||||
transform.localRotation = currentRotation;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user