From 4238f0b2a0cf2589b384e7dc48c3843e6fa051fd Mon Sep 17 00:00:00 2001 From: Onek8 Date: Tue, 10 Jun 2025 18:32:15 +0000 Subject: [PATCH] t3du - Add material texture filter node --- .../logicnode/SetMaterialTextureFilterNode.hx | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 leenkx/Sources/leenkx/logicnode/SetMaterialTextureFilterNode.hx diff --git a/leenkx/Sources/leenkx/logicnode/SetMaterialTextureFilterNode.hx b/leenkx/Sources/leenkx/logicnode/SetMaterialTextureFilterNode.hx new file mode 100644 index 0000000..45ac61d --- /dev/null +++ b/leenkx/Sources/leenkx/logicnode/SetMaterialTextureFilterNode.hx @@ -0,0 +1,55 @@ +package leenkx.logicnode; + +import iron.object.MeshObject; +import iron.data.MaterialData; + +class SetMaterialTextureFilterNode extends LogicNode { + + public function new(tree: LogicTree) { + super(tree); + } + + override function run(from: Int) { + var object: MeshObject = inputs[1].get(); + var mat: MaterialData = inputs[2].get(); + var slot: Int = inputs[3].get(); + var name: String = inputs[4].get(); + var filter: Int = inputs[5].get(); + + if (object == null) return; + if (slot >= object.materials.length) return; + + var mo = cast(object, iron.object.MeshObject); + + for (i => node in mo.materials[slot].contexts[0].raw.bind_textures) + if (node.name == name){ + var moImgt = mo.materials[slot].contexts[0].raw.bind_textures[i]; + switch(filter){ + case 0: //Linear + moImgt.min_filter = null; + moImgt.mag_filter = null; + moImgt.mipmap_filter = null; + moImgt.generate_mipmaps = null; + case 1: //Closest + moImgt.min_filter = 'point'; + moImgt.mag_filter = 'point'; + moImgt.mipmap_filter = null; + moImgt.generate_mipmaps = null; + case 2: //Cubic + moImgt.min_filter = null; + moImgt.mag_filter = null; + moImgt.mipmap_filter = 'linear'; + moImgt.generate_mipmaps = true; + case 3: //Smart + moImgt.min_filter = 'anisotropic'; + moImgt.mag_filter = null; + moImgt.mipmap_filter = 'linear'; + moImgt.generate_mipmaps = true; + } + + break; + } + + runOutput(0); + } +} \ No newline at end of file