Răsfoiți Sursa

Shader: use child noise prefabs

trethaller 7 ani în urmă
părinte
comite
b742fe57b5
1 a modificat fișierele cu 7 adăugiri și 4 ștergeri
  1. 7 4
      hide/prefab/Shader.hx

+ 7 - 4
hide/prefab/Shader.hx

@@ -34,6 +34,9 @@ class Shader extends Prefab {
 				case TSampler2D:
 				case TSampler2D:
 					if(val != null)
 					if(val != null)
 						val = ctx.loadTexture(val);
 						val = ctx.loadTexture(val);
+					var childNoise = getOpt(Noise, v.name);
+					if(childNoise != null)
+						val = childNoise.toTexture();
 				default:
 				default:
 			}
 			}
 			if(val == null)
 			if(val == null)
@@ -45,8 +48,6 @@ class Shader extends Prefab {
 	override function makeInstance(ctx:Context):Context {
 	override function makeInstance(ctx:Context):Context {
 		if(source == null)
 		if(source == null)
 			return ctx;
 			return ctx;
-		if(ctx.local3d == null)
-			return ctx;
 		ctx = ctx.clone(this);
 		ctx = ctx.clone(this);
 		loadShaderDef(ctx);
 		loadShaderDef(ctx);
 		if(shaderDef == null)
 		if(shaderDef == null)
@@ -60,8 +61,10 @@ class Shader extends Prefab {
 			shader.hscriptSet(v.v.name, defVal);
 			shader.hscriptSet(v.v.name, defVal);
 			#end
 			#end
 		}
 		}
-		for(m in ctx.local3d.getMaterials()) { // TODO: Only add to self materials, not all children materials
-			m.mainPass.addShader(shader);
+		if(ctx.local3d != null) {
+			for(m in ctx.local3d.getMaterials()) { // TODO: Only add to self materials, not all children materials
+				m.mainPass.addShader(shader);
+			}
 		}
 		}
 		ctx.custom = shader;
 		ctx.custom = shader;
 		updateInstance(ctx);
 		updateInstance(ctx);