using System.Collections; using System.Collections.Generic; using Lean.Pool; using UnityEngine; namespace Ichni.RhythmGame { public class Swirl : AnimationBase { public TransformSubmodule targetTransformSubmodule; public FlexibleFloat eulerAngleX, eulerAngleY, eulerAngleZ; public static Swirl GenerateElement(string elementName, BaseElement targetObject, FlexibleFloat eulerAngleX, FlexibleFloat eulerAngleY, FlexibleFloat eulerAngleZ) { Swirl swirl = LeanPool.Spawn(EditorManager.instance.basePrefabs.emptyObject).AddComponent(); swirl.NewInitialize(elementName, targetObject); swirl.eulerAngleX = eulerAngleX; swirl.eulerAngleY = eulerAngleY; swirl.eulerAngleZ = eulerAngleZ; swirl.animationReturnType = FlexibleReturnType.Before; if (targetObject.transformSubmodule != null) { swirl.targetTransformSubmodule = targetObject.transformSubmodule; } else { throw new System.Exception("Target object does not have a TransformSubmodule"); } swirl.SetTimeDuration(eulerAngleX, eulerAngleY, eulerAngleZ); return swirl; } protected override void UpdateAnimation(float songTime) { eulerAngleX.UpdateFlexibleFloat(songTime); eulerAngleY.UpdateFlexibleFloat(songTime); eulerAngleZ.UpdateFlexibleFloat(songTime); if (eulerAngleX.returnType is FlexibleReturnType.MiddleExecuting || eulerAngleY.returnType is FlexibleReturnType.MiddleExecuting || eulerAngleZ.returnType is FlexibleReturnType.MiddleExecuting) { animationReturnType = FlexibleReturnType.MiddleExecuting; Vector3 currentEulerAngles = new Vector3(eulerAngleX.value, eulerAngleY.value, eulerAngleZ.value); targetTransformSubmodule.eulerAnglesOffset.Add(currentEulerAngles); targetTransformSubmodule.eulerAnglesDirtyMark = true; } } } }