EventHorizon.Blazor.TypeScript.Interop.Generator
EventHorizon.Blazor.TypeScript.Interop.Generator copied to clipboard
Setting an array of class type?
I'm at a loss as to how to add an array of a class type. For example, in RenderTargetTexture
, you need to add any meshes that you want rendered into a property on the RenderTargetTexture
object called renderList
. This is a plain array of type AbstractMesh[]
. The generator picks this up just fine. I try to use it like this:
_shadowRenderTarget.renderList = new AbstractMesh[] { _moleculeMesh };
However, when I later call render()
on the RenderTargetTexture
, BabylonJS spits out an error. The actual JS AbstractMesh object is the Cached version that has the ___guid
. There doesn't seem to be a way to translate those C# objects to the javascript objects. I can't seem to find a way to manipulate arrays, so I'm not sure what to do next.
Looks like I might have to write a custom CachedEntityConverter
Wasn't sure how to do the CachedEntityConverter
. Instead this javascript hack seems to work:
function pushClassToArray(root, identifier, ...args) {
try {
var arrayEntity = blazorInterop.cacheEntity(root, identifier);
for (var i = 0; i < args.length; i++) {
blazorInterop.call(arrayEntity, "push", args[i]);
}
} catch (ex) {
console.log("error", ex);
}
}
used like this with a synchronous JSRuntime:
Runtime.InvokeVoid("pushClassToArray", _shadowRenderTarget.___guid, "renderList", _moleculeMesh);
This looks like a deficiency in the generator, I will look at getting this in.