46 lines
1.5 KiB
C#
46 lines
1.5 KiB
C#
#if WASM
|
|
using PkmnLibSharp.Utils;
|
|
using Interface = PkmnLibSharp.FFI.DynamicData.Libraries.ScriptResolver;
|
|
|
|
namespace PkmnLibSharp.DynamicData.Libraries
|
|
{
|
|
/// <summary>
|
|
/// A WebAssembly script resolver implements the dynamic scripts functionality with WebAssembly.
|
|
/// </summary>
|
|
public class WasmScriptResolver : ScriptResolver
|
|
{
|
|
/// <inheritdoc cref="WasmScriptResolver"/>
|
|
protected WasmScriptResolver(FFIHandle handle) : base(handle)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Instantiates a new WebAssemblyScriptResolver.
|
|
/// </summary>
|
|
public static WasmScriptResolver Create()
|
|
{
|
|
var handle = Interface.webassembly_script_resolver_new();
|
|
return (WasmScriptResolver)Resolver.Instance.ResolveScriptResolver(handle.Resolve());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads a compiled WASM module into the script resolver.
|
|
/// </summary>
|
|
/// <param name="data">The bytes of a compiled WASM module</param>
|
|
public void LoadBytes(byte[] data)
|
|
{
|
|
Interface.webassembly_script_resolver_load_wasm_from_bytes(Handle, data.ArrayPtr(), (ulong)data.LongLength)
|
|
.Result();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tells the script resolver we're done loading wasm modules, and to finalize the resolver. After this it is
|
|
/// ready for use.
|
|
/// </summary>
|
|
public void FinalizeResolver()
|
|
{
|
|
Interface.webassembly_script_resolver_finalize(Handle).Result();
|
|
}
|
|
}
|
|
}
|
|
#endif |