BoolKeyframeGroup.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. namespace Funly.SkyStudio
  6. {
  7. [Serializable]
  8. public class BoolKeyframeGroup : KeyframeGroup<BoolKeyframe>
  9. {
  10. public BoolKeyframeGroup(string name) : base(name) { }
  11. public BoolKeyframeGroup(string name, BoolKeyframe keyframe) : base(name)
  12. {
  13. AddKeyFrame(keyframe);
  14. }
  15. public bool BoolForTime(float time)
  16. {
  17. if (keyframes.Count == 0) {
  18. Debug.LogError("Can't sample bool without any keyframes");
  19. return false;
  20. }
  21. if (keyframes.Count == 1) {
  22. return keyframes[0].value;
  23. }
  24. // Check if time comes before first keyframe, retun last keyframe then.
  25. if (time < keyframes[0].time) {
  26. return keyframes[keyframes.Count - 1].value;
  27. }
  28. int overlappingIndex = 0;
  29. for (int i = 1; i < keyframes.Count; i++) {
  30. if (keyframes[i].time <= time) {
  31. overlappingIndex = i;
  32. } else {
  33. break;
  34. }
  35. }
  36. return keyframes[overlappingIndex].value;
  37. }
  38. }
  39. }