Kaynağa Gözat

FX2D : preview h2d.Anim

Tom Spira 6 yıl önce
ebeveyn
işleme
b869795248

+ 12 - 14
hrt/prefab/fx/FX2D.hx

@@ -51,11 +51,6 @@ class FX2DAnimation extends h2d.Object {
 	}
 
 	public function setTime( time : Float ) {
-
-		var newLoop = false;
-
-		if (loop && this.localTime > time)
-			newLoop = true;
 		
 		this.localTime = time;
 
@@ -91,16 +86,18 @@ class FX2DAnimation extends h2d.Object {
 				}
 			}
 			
-			var atlas = Std.downcast(anim.elt2d, hrt.prefab.fx2d.Atlas);
+			var atlas : Dynamic = Std.downcast(anim.elt2d, hrt.prefab.fx2d.Atlas);
+			if (atlas == null) {
+				atlas = Std.downcast(anim.elt2d, hrt.prefab.fx2d.Anim2D);
+			}
 			if (atlas != null) {
-				@:privateAccess if (!atlas.loop && newLoop)  {
-					atlas.h2dAnim.currentFrame = 0;
-				}
-			} else {
-				var atlas = Std.downcast(anim.elt2d, hrt.prefab.fx2d.Anim2D);
-				if (atlas != null) {
-					@:privateAccess if (!atlas.loop && newLoop)  {
-						atlas.h2dAnim.currentFrame = 0;
+				@:privateAccess if (!atlas.loop) {
+					var t = time - atlas.delayStart;
+					if (t < 0) {
+						atlas.h2dAnim.curFrame = 0;
+					} else {
+						var nbFrames = Math.floor(t*atlas.fpsAnimation);
+						atlas.h2dAnim.curFrame = Math.min(nbFrames, atlas.h2dAnim.frames.length-1);
 					}
 				}
 			}
@@ -129,6 +126,7 @@ class FX2D extends BaseFX {
 
 	override function save() {
 		var obj : Dynamic = super.save();
+		obj.type = type;
 		obj.loop = loop;
 		return obj;
 	}

+ 6 - 0
hrt/prefab/fx2d/Anim2D.hx

@@ -9,6 +9,8 @@ class Anim2D extends Object2D {
 	var heightFrame : Int = 10;
 	var fpsAnimation : Int = 30;
 	var nbFrames : Int = 30;
+
+	var delayStart : Float = 0;
 	
 	var loop : Bool = false;
 
@@ -22,6 +24,7 @@ class Anim2D extends Object2D {
 		this.heightFrame = v.heightFrame;
 		this.fpsAnimation = v.fpsAnimation;
 		this.nbFrames = v.nbFrames;
+		this.delayStart = v.delayStart;
 		this.loop = v.loop;
 	}
 
@@ -32,6 +35,7 @@ class Anim2D extends Object2D {
 		o.heightFrame = heightFrame;
 		o.fpsAnimation = fpsAnimation;
 		o.nbFrames = nbFrames;
+		o.delayStart = delayStart;
 		o.loop = loop;
 		return o;
 	}
@@ -63,6 +67,7 @@ class Anim2D extends Object2D {
 		if (propName == null || propName == "loop") {
 			h2dAnim.loop = loop;
 		}
+		h2dAnim.pause = !loop;
 		h2dAnim.blendMode = blendMode;
 	}
 
@@ -87,6 +92,7 @@ class Anim2D extends Object2D {
 				<dt>Height Frame</dt><dd><input type="range" min="0" max="100" step="1" field="heightFrame"/></dd>
 				<dt>FPS</dt><dd><input type="range" min="0" max="60" step="1" field="fpsAnimation"/></dd>
 				<dt>nbFrames</dt><dd><input type="range" min="0" max="120" step="1" field="nbFrames"/></dd>
+				<dt>Delay Start</dt><dd><input type="range" min="0" max="10" field="delayStart"/></dd>
 				<dt>Loop</dt><dd><input type="checkbox" field="loop"/></dd>
 			</dl></div>'), this, function(pname) {
 			ctx.onChange(this, pname);

+ 5 - 0
hrt/prefab/fx2d/Atlas.hx

@@ -6,6 +6,7 @@ class Atlas extends Object2D {
 	var src : String;
 
 	var fpsAnimation : Int = 30;
+	var delayStart : Float = 0;
 	
 	var loop : Bool = false;
 
@@ -16,6 +17,7 @@ class Atlas extends Object2D {
 		super.load(v);
 		this.src = v.src;
 		this.fpsAnimation = v.fpsAnimation;
+		this.delayStart = v.delayStart;
 		this.loop = v.loop;
 	}
 
@@ -23,6 +25,7 @@ class Atlas extends Object2D {
 		var o : Dynamic = super.save();
 		o.src = src;
 		o.fpsAnimation = fpsAnimation;
+		o.delayStart = delayStart;
 		o.loop = loop;
 		return o;
 	}
@@ -44,6 +47,7 @@ class Atlas extends Object2D {
 		if (propName == null || propName == "loop") {
 			h2dAnim.loop = loop;
 		}
+		h2dAnim.pause = !loop;
 		h2dAnim.blendMode = blendMode;
 	}
 
@@ -78,6 +82,7 @@ class Atlas extends Object2D {
 			updateInstance(ctx.getContext(this), "src");
 		}
 		new hide.Element('<dt>FPS</dt><dd><input type="range" min="0" max="60" step="1" field="fpsAnimation"/></dd>').appendTo(gr);
+		new hide.Element('<dt>Delay Start</dt><dd><input type="range" min="0" max="5" field="delayStart"/></dd>').appendTo(gr);
 		new hide.Element('<dt>Loop</dt><dd><input type="checkbox" field="loop"/></dd>').appendTo(gr);
 		
 

+ 1 - 1
hrt/prefab/fx2d/Bitmap.hx

@@ -3,7 +3,7 @@ package hrt.prefab.fx2d;
 class Bitmap extends Object2D {
 
 	// parameters
-	var color : Int = 0;
+	var color : Int = 16777215;
 
 	var src : String;