Skip to main content

Loading a Component

Basic

Use Component.Create().
You can load from ReadOnlySpan<byte> or ReadOnlySequence<byte>.

using WaaS.ComponentModel.Models;

Span<byte> bytes = System.IO.File.LoadAllBytes("foo.wasm");
var component = Component.Create(bytes);

Streaming

Not supported at the moment.

Loading as an Asset Unity

When you import a file with the extension *.wasm into a Unity project, it is automatically loaded as a WaaS.Unity.ComponentAsset.

info

Both modules and components have the extension *.wasm, but they are automatically distinguished upon import.

Modules can be assigned as [SerializeField] and loaded with ComponentAsset.LoadComponent() or ComponentAsset.LoadComponentAsync().

using UnityEngine;
using WaaS.Unity;

[SerializeField] private ComponentAsset componentAsset;

// synchronous
var component = componentAsset.LoadComponent();

// asynchronous
var component = await componentAsset.LoadComponentAsync();

By enabling Deserialize On Load in the settings of ComponentAsset, the module is preloaded synchronously when the asset is loaded.
This reduces the waiting time for ComponentAsset.LoadComponent().