diff --git a/leenkx/Sources/leenkx/logicnode/SetWorldNode.hx b/leenkx/Sources/leenkx/logicnode/SetWorldNode.hx new file mode 100644 index 0000000..cd1acaa --- /dev/null +++ b/leenkx/Sources/leenkx/logicnode/SetWorldNode.hx @@ -0,0 +1,40 @@ +package leenkx.logicnode; + +class SetWorldNode extends LogicNode { + + public function new(tree: LogicTree) { + super(tree); + } + + override function run(from: Int) { + var world: String = inputs[1].get(); + + if (world != null){ + + //check if world shader data exists + var file: String = 'World_'+world+'_data'; + #if lnx_json + file += ".json"; + #elseif lnx_compress + file += ".lz4"; + #else + file += '.lnx'; + #end + + var exists: Bool = false; + + iron.data.Data.getBlob(file, function(b: kha.Blob) { + if (b != null) exists = true; + }); + + assert(Error, exists == true, "World must be either associated to a scene or have fake user"); + + iron.Scene.active.raw.world_ref = world; + var npath = leenkx.renderpath.RenderPathCreator.get(); + npath.loadShader("shader_datas/World_" + world + "/World_" + world); + iron.RenderPath.setActive(npath); + } + + runOutput(0); + } +} \ No newline at end of file