using System.Collections; using System.Collections.Generic; using UnityEngine; using RotaryHeart.Lib.SerializableDictionary; namespace BITKit { public class OverrideTransform : MonoBehaviour { public List sources = new(); Dictionary rotations = new(); Dictionary 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; } } }