UVAnim.hx 930 B

1234567891011121314151617181920212223242526272829303132333435
  1. package h3d.shader;
  2. class UVAnim extends hxsl.Shader {
  3. static var SRC = {
  4. var calculatedUV : Vec2;
  5. @global var global : {
  6. var time : Float;
  7. };
  8. @param var speed : Float;
  9. @param var frameDivision : Float;
  10. @param var totalFrames : Float;
  11. @param var startTime : Float;
  12. @const var loop : Bool;
  13. function vertex() {
  14. var frame = float(int((global.time - startTime) * speed));
  15. if( loop ) frame %= totalFrames else frame = min(frame, totalFrames - 1);
  16. var delta = vec2(1. / frameDivision, 1. / frameDivision) * vec2( frame % frameDivision, float(int(frame / frameDivision)) );
  17. calculatedUV += delta;
  18. }
  19. };
  20. public function new(frameDivision : Int, totalFrames = -1, ?speed = 1.) {
  21. super();
  22. if( totalFrames < 0 ) totalFrames = frameDivision;
  23. this.frameDivision = frameDivision;
  24. this.totalFrames = totalFrames;
  25. this.speed = speed;
  26. this.loop = true;
  27. }
  28. }