ソースを参照

Fix shader not applied properly in hide.

clementlandrin 10 ヶ月 前
コミット
ac27be38c0
2 ファイル変更12 行追加11 行削除
  1. 11 10
      hrt/prefab/Shader.hx
  2. 1 1
      hrt/prefab/fx/FX.hx

+ 11 - 10
hrt/prefab/Shader.hx

@@ -151,7 +151,16 @@ class Shader extends Prefab {
 		super.dispose();
 	}
 
-	public function apply() {
+	public function apply3d() {
+		if( shared.current3d != null )
+			iterMaterials(function(obj,mat) if(checkMaterial(mat)) applyShader(obj, mat, shader));
+	}
+
+	override function makeInstance() {
+		var shader = makeShader();
+		if( shader == null )
+			return;
+
 		if( shared.current2d != null ) {
 			var drawable = Std.downcast(shared.current2d, h2d.Drawable);
 			if (drawable != null) {
@@ -165,17 +174,9 @@ class Shader extends Prefab {
 				}
 			}
 		}
-		
+		// can't use apply3d(), macros?
 		if( shared.current3d != null )
 			iterMaterials(function(obj,mat) if(checkMaterial(mat)) applyShader(obj, mat, shader));
-	}
-
-	override function makeInstance() {
-		var shader = makeShader();
-		if( shader == null )
-			return;
-
-		apply();
 		this.shader = shader;
 		updateInstance();
 	}

+ 1 - 1
hrt/prefab/fx/FX.hx

@@ -650,7 +650,7 @@ class FX extends Object3D implements BaseFX {
 				continue;
 			obj3d.local3d = target.object;
 			for ( s in obj3d.findAll(Shader) )
-				s.apply();
+				s.apply3d();
 		}
 
 		var fxAnim : FXAnimation = cast local3d;