Handle multiple material params

This commit is contained in:
luboslenco 2018-11-13 22:18:44 +01:00
parent a3436495b0
commit b424b058bb
3 changed files with 14 additions and 27 deletions

View file

@ -8,8 +8,7 @@ class SetMaterialImageParamNode extends LogicNode {
static var registered = false; static var registered = false;
static var mat:MaterialData = null; static var mat:MaterialData = null;
static var node = ""; static var map = new Map<String, kha.Image>();
static var image:kha.Image = null;
public function new(tree:LogicTree) { public function new(tree:LogicTree) {
super(tree); super(tree);
@ -21,21 +20,16 @@ class SetMaterialImageParamNode extends LogicNode {
override function run(from:Int) { override function run(from:Int) {
mat = inputs[1].get(); mat = inputs[1].get();
node = inputs[2].get(); if (mat == null) return;
if (mat == null || node == null) return;
var name = inputs[3].get(); iron.data.Data.getImage(inputs[3].get(), function(image:kha.Image) {
iron.data.Data.getImage(name, function(img:kha.Image) { map.set(inputs[2].get(), image);
image = img;
}); });
runOutput(0); runOutput(0);
} }
static function textureLink(object:Object, mat:MaterialData, link:String):kha.Image { static function textureLink(object:Object, mat:MaterialData, link:String):kha.Image {
if (link == node) { return map.get(link);
return image;
}
return null;
} }
} }

View file

@ -8,6 +8,8 @@ class SetMaterialRgbParamNode extends LogicNode {
static var registered = false; static var registered = false;
static var mat:MaterialData = null; static var mat:MaterialData = null;
static var map = new Map<String, Vec4>();
static var node = ""; static var node = "";
static var col:Vec4 = null; static var col:Vec4 = null;
@ -21,16 +23,12 @@ class SetMaterialRgbParamNode extends LogicNode {
override function run(from:Int) { override function run(from:Int) {
mat = inputs[1].get(); mat = inputs[1].get();
node = inputs[2].get(); if (mat == null) return;
col = inputs[3].get(); map.set(inputs[2].get(), inputs[3].get());
runOutput(0); runOutput(0);
} }
static function vec3Link(object:Object, mat:MaterialData, link:String):iron.math.Vec4 { static function vec3Link(object:Object, mat:MaterialData, link:String):iron.math.Vec4 {
if (link == node) { return map.get(link);
return col;
}
return null;
} }
} }

View file

@ -8,8 +8,7 @@ class SetMaterialValueParamNode extends LogicNode {
static var registered = false; static var registered = false;
static var mat:MaterialData = null; static var mat:MaterialData = null;
static var node = ""; static var map = new Map<String, Null<kha.FastFloat>>();
static var value:Null<kha.FastFloat> = null;
public function new(tree:LogicTree) { public function new(tree:LogicTree) {
super(tree); super(tree);
@ -21,16 +20,12 @@ class SetMaterialValueParamNode extends LogicNode {
override function run(from:Int) { override function run(from:Int) {
mat = inputs[1].get(); mat = inputs[1].get();
node = inputs[2].get(); if (mat == null) return;
value = inputs[3].get(); map.set(inputs[2].get(), inputs[3].get()); // Node name, value
runOutput(0); runOutput(0);
} }
static function floatLink(object:Object, mat:MaterialData, link:String):Null<kha.FastFloat> { static function floatLink(object:Object, mat:MaterialData, link:String):Null<kha.FastFloat> {
if (link == node) { return map.get(link);
return value;
}
return null;
} }
} }