UVAffector.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using UnityEngine;
  3. namespace Xft
  4. {
  5. public class UVAffector : Affector
  6. {
  7. public UVAffector(UVAnimation frame, float time, EffectNode node, bool randomStart) : base(node, AFFECTORTYPE.UVAffector)
  8. {
  9. this.Frames = frame;
  10. this.UVTime = time;
  11. this.RandomStartFrame = randomStart;
  12. if (this.RandomStartFrame)
  13. {
  14. this.Frames.curFrame = UnityEngine.Random.Range(0, this.Frames.frames.Length - 1);
  15. }
  16. }
  17. public override void Reset()
  18. {
  19. this.ElapsedTime = 0f;
  20. this.FirstUpdate = true;
  21. this.Frames.curFrame = 0;
  22. this.Frames.numLoops = 0;
  23. if (this.RandomStartFrame)
  24. {
  25. this.Frames.curFrame = UnityEngine.Random.Range(0, this.Frames.frames.Length - 1);
  26. }
  27. }
  28. public override void Update(float deltaTime)
  29. {
  30. this.ElapsedTime += deltaTime;
  31. float num;
  32. if (this.UVTime <= 0f)
  33. {
  34. num = this.Node.GetLifeTime() / (float)this.Frames.frames.Length;
  35. }
  36. else
  37. {
  38. num = this.UVTime / (float)this.Frames.frames.Length;
  39. }
  40. if (this.ElapsedTime >= num || this.FirstUpdate)
  41. {
  42. Vector2 zero = Vector2.zero;
  43. Vector2 zero2 = Vector2.zero;
  44. this.Frames.GetNextFrame(ref zero, ref zero2);
  45. this.Node.LowerLeftUV = zero;
  46. this.Node.UVDimensions = zero2;
  47. this.ElapsedTime -= num;
  48. }
  49. this.FirstUpdate = false;
  50. }
  51. protected UVAnimation Frames;
  52. protected float ElapsedTime;
  53. protected float UVTime;
  54. protected bool RandomStartFrame;
  55. protected bool FirstUpdate = true;
  56. }
  57. }