Wrap a TSL UniformNode in an IUniform-shaped getter/setter so
callers can keep using material.uniforms.uX.value = Y while the
read/write is routed straight to node.value. See the module
preamble for why this replaces the older .onUpdate('render')
bridge.
The node argument is typed loosely as TSLNode because TSL's
typed-overload surface returns many concrete inner classes; the
runtime contract is just that node.value is a readable & writable
property of type T.
Wrap a TSL
UniformNodein anIUniform-shaped getter/setter so callers can keep usingmaterial.uniforms.uX.value = Ywhile the read/write is routed straight tonode.value. See the module preamble for why this replaces the older.onUpdate('render')bridge.The node argument is typed loosely as
TSLNodebecause TSL's typed-overload surface returns many concrete inner classes; the runtime contract is just thatnode.valueis a readable & writable property of typeT.