Просмотр исходного кода

added frame based UV animation

ncannasse 11 лет назад
Родитель
Сommit
e3f0d1470b
1 измененных файлов с 35 добавлено и 0 удалено
  1. 35 0
      h3d/shader/UVAnim.hx

+ 35 - 0
h3d/shader/UVAnim.hx

@@ -0,0 +1,35 @@
+package h3d.shader;
+
+class UVAnim extends hxsl.Shader {
+
+	static var SRC = {
+
+		var calculatedUV : Vec2;
+
+		@global var global : {
+			var time : Float;
+		};
+		@param var speed : Float;
+		@param var frameDivision : Float;
+		@param var totalFrames : Float;
+		@param var startTime : Float;
+		@const var loop : Bool;
+
+		function vertex() {
+			var frame = float(int((global.time - startTime) * speed));
+			if( loop ) frame %= totalFrames else frame = max(frame, totalFrames - 1);
+			var delta = vec2(1. / frameDivision, 1. / frameDivision) * vec2( frame % frameDivision, float(int(frame / frameDivision)) );
+			calculatedUV += delta;
+		}
+	};
+
+	public function new(frameDivision : Int, totalFrames = -1, ?speed = 1.) {
+		super();
+		if( totalFrames < 0 ) totalFrames = frameDivision;
+		this.frameDivision = frameDivision;
+		this.totalFrames = totalFrames;
+		this.speed = speed;
+		this.loop = true;
+	}
+
+}