update node scripts
This commit is contained in:
parent
6c3a4d12a6
commit
457c8fe7c5
|
@ -1,40 +1,34 @@
|
|||
package armory.logicnode;
|
||||
|
||||
import iron.Scene;
|
||||
import iron.data.MaterialData;
|
||||
import iron.object.Object;
|
||||
import armory.trait.internal.UniformsManager;
|
||||
|
||||
class SetMaterialImageParamNode extends LogicNode {
|
||||
|
||||
static var registered = false;
|
||||
static var map = new Map<MaterialData, Map<String, kha.Image>>();
|
||||
public var property0: Bool; // per object
|
||||
|
||||
var manager: UniformsManager;
|
||||
|
||||
public function new(tree: LogicTree) {
|
||||
super(tree);
|
||||
if (!registered) {
|
||||
registered = true;
|
||||
iron.object.Uniforms.externalTextureLinks.push(textureLink);
|
||||
}
|
||||
|
||||
manager = new UniformsManager(UniformType.Texture);
|
||||
}
|
||||
|
||||
override function run(from: Int) {
|
||||
var mat = inputs[1].get();
|
||||
if (mat == null) return;
|
||||
var entry = map.get(mat);
|
||||
if (entry == null) {
|
||||
entry = new Map();
|
||||
map.set(mat, entry);
|
||||
var object = inputs[1].get();
|
||||
if(object == null) return;
|
||||
|
||||
var mat = inputs[2].get();
|
||||
if(mat == null) return;
|
||||
|
||||
if(! property0){
|
||||
object = Scene.active.root;
|
||||
}
|
||||
|
||||
iron.data.Data.getImage(inputs[3].get(), function(image: kha.Image) {
|
||||
entry.set(inputs[2].get(), image); // Node name, value
|
||||
});
|
||||
manager.setTextureValue(mat, object, inputs[3].get(), inputs[4].get());
|
||||
runOutput(0);
|
||||
}
|
||||
|
||||
static function textureLink(object: Object, mat: MaterialData, link: String): kha.Image {
|
||||
if (mat == null) return null;
|
||||
var entry = map.get(mat);
|
||||
if (entry == null) return null;
|
||||
return entry.get(link);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,38 +1,35 @@
|
|||
package armory.logicnode;
|
||||
|
||||
import iron.Scene;
|
||||
import iron.math.Vec4;
|
||||
import iron.data.MaterialData;
|
||||
import iron.object.Object;
|
||||
import armory.trait.internal.UniformsManager;
|
||||
|
||||
class SetMaterialRgbParamNode extends LogicNode {
|
||||
|
||||
static var registered = false;
|
||||
static var map = new Map<MaterialData, Map<String, Vec4>>();
|
||||
public var property0: Bool; // per object
|
||||
|
||||
var manager: UniformsManager;
|
||||
|
||||
public function new(tree: LogicTree) {
|
||||
super(tree);
|
||||
if (!registered) {
|
||||
registered = true;
|
||||
iron.object.Uniforms.externalVec3Links.push(vec3Link);
|
||||
}
|
||||
|
||||
manager = new UniformsManager(UniformType.Vector);
|
||||
}
|
||||
|
||||
override function run(from: Int) {
|
||||
var mat = inputs[1].get();
|
||||
if (mat == null) return;
|
||||
var entry = map.get(mat);
|
||||
if (entry == null) {
|
||||
entry = new Map();
|
||||
map.set(mat, entry);
|
||||
var object = inputs[1].get();
|
||||
if(object == null) return;
|
||||
|
||||
var mat = inputs[2].get();
|
||||
if(mat == null) return;
|
||||
|
||||
if(! property0){
|
||||
object = Scene.active.root;
|
||||
}
|
||||
entry.set(inputs[2].get(), inputs[3].get()); // Node name, value
|
||||
|
||||
manager.setVec3Value(mat, object, inputs[3].get(), inputs[4].get());
|
||||
runOutput(0);
|
||||
}
|
||||
|
||||
static function vec3Link(object: Object, mat: MaterialData, link: String): iron.math.Vec4 {
|
||||
if (mat == null) return null;
|
||||
var entry = map.get(mat);
|
||||
if (entry == null) return null;
|
||||
return entry.get(link);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,20 +3,18 @@ package armory.logicnode;
|
|||
import iron.Scene;
|
||||
import iron.data.MaterialData;
|
||||
import iron.object.Object;
|
||||
import armory.trait.internal.UniformsManager;
|
||||
|
||||
class SetMaterialValueParamNode extends LogicNode {
|
||||
|
||||
public var property0: Bool; // per object
|
||||
|
||||
static var registered = false;
|
||||
static var map = new Map<Object, Map<MaterialData, Map<String, Null<kha.FastFloat>>>>();
|
||||
|
||||
var manager: UniformsManager;
|
||||
|
||||
public function new(tree: LogicTree) {
|
||||
super(tree);
|
||||
if (!registered) {
|
||||
registered = true;
|
||||
iron.object.Uniforms.externalFloatLinks.push(floatLink);
|
||||
}
|
||||
|
||||
manager = new UniformsManager(UniformType.Float);
|
||||
}
|
||||
|
||||
override function run(from: Int) {
|
||||
|
@ -30,36 +28,7 @@ class SetMaterialValueParamNode extends LogicNode {
|
|||
object = Scene.active.root;
|
||||
}
|
||||
|
||||
var matMap = map.get(object);
|
||||
if (matMap == null) {
|
||||
matMap = new Map();
|
||||
map.set(object, matMap);
|
||||
}
|
||||
|
||||
var entry = matMap.get(mat);
|
||||
if (entry == null) {
|
||||
entry = new Map();
|
||||
matMap.set(mat, entry);
|
||||
}
|
||||
|
||||
entry.set(inputs[3].get(), inputs[4].get()); // Node name, value
|
||||
manager.setFloatValue(mat, object, inputs[3].get(), inputs[4].get());
|
||||
runOutput(0);
|
||||
}
|
||||
|
||||
static function floatLink(object: Object, mat: MaterialData, link: String): Null<kha.FastFloat> {
|
||||
if(object == null) return null;
|
||||
if (mat == null) return null;
|
||||
|
||||
if(! map.exists(object)){
|
||||
object = Scene.active.root;
|
||||
}
|
||||
|
||||
var material = map.get(object);
|
||||
if (material == null) return null;
|
||||
|
||||
var entry = material.get(mat);
|
||||
if (entry == null) return null;
|
||||
|
||||
return entry.get(link);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue