ComponentTimeline.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using UnityEngine;
  2. namespace Chronos
  3. {
  4. public interface IComponentTimeline
  5. {
  6. void Initialize();
  7. void OnStartOrReEnable();
  8. void Update();
  9. void FixedUpdate();
  10. void OnDisable();
  11. void AdjustProperties();
  12. void Reset();
  13. }
  14. public interface IComponentTimeline<T> : IComponentTimeline where T : Component
  15. {
  16. T component { get; }
  17. }
  18. public abstract class ComponentTimeline<T> : IComponentTimeline<T> where T : Component
  19. {
  20. protected Timeline timeline { get; private set; }
  21. public T component { get; internal set; }
  22. public ComponentTimeline(Timeline timeline, T component)
  23. {
  24. this.timeline = timeline;
  25. this.component = component;
  26. }
  27. public void Initialize()
  28. {
  29. CopyProperties(component);
  30. }
  31. public virtual void OnStartOrReEnable() { }
  32. public virtual void Update() { }
  33. public virtual void FixedUpdate() { }
  34. public virtual void OnDisable() { }
  35. public virtual void CopyProperties(T source) { }
  36. public virtual void AdjustProperties(float timeScale) { }
  37. public void AdjustProperties()
  38. {
  39. AdjustProperties(timeline.timeScale);
  40. }
  41. public virtual void Reset() { }
  42. }
  43. }