don't use asTypedList/setRange on Float32List as this doesn't work with WASM

This commit is contained in:
Nick Fisher
2024-05-19 14:18:40 +08:00
parent 467b80beb7
commit e9b87a9a9a

View File

@@ -62,10 +62,14 @@ class FilamentViewer extends AbstractFilamentViewer {
this._renderCallback = renderCallback ?? nullptr; this._renderCallback = renderCallback ?? nullptr;
this._driver = driver ?? nullptr; this._driver = driver ?? nullptr;
this._sharedContext = sharedContext ?? nullptr; this._sharedContext = sharedContext ?? nullptr;
try {
// _onPickResultCallable = _onPickResultCallable =
// NativeCallable<Void Function(Int32 entityId, Int x, Int y)>.listener( NativeCallable<Void Function(Int32 entityId, Int x, Int y)>.listener(
// _onPickResult); _onPickResult);
} catch (err) {
print(
"Failed to set pick result callback. This is expected if running on web/wasm");
}
_initialize(); _initialize();
} }
@@ -364,12 +368,10 @@ class FilamentViewer extends AbstractFilamentViewer {
for (int i = 0; i < weights.length; i++) { for (int i = 0; i < weights.length; i++) {
weightsPtr[i] = weights[i]; weightsPtr[i] = weights[i];
} }
var success = await withBoolCallback((cb) { var success = await withBoolCallback((cb) {
set_morph_target_weights_ffi( set_morph_target_weights_ffi(
_sceneManager!, entity, weightsPtr, weights.length, cb); _sceneManager!, entity, weightsPtr, weights.length, cb);
}); });
allocator.free(weightsPtr); allocator.free(weightsPtr);
if (!success) { if (!success) {
@@ -451,8 +453,10 @@ class FilamentViewer extends AbstractFilamentViewer {
var meshEntity = meshEntities[i]; var meshEntity = meshEntities[i];
if (targetMeshNames?.contains(meshName) == false) { if (targetMeshNames?.contains(meshName) == false) {
print("Skipping $meshName, not contained in target");
continue; continue;
} }
var meshMorphTargets = await getMorphTargetNames(entity, meshEntity); var meshMorphTargets = await getMorphTargetNames(entity, meshEntity);
var intersection = animation.morphTargets var intersection = animation.morphTargets
@@ -474,9 +478,13 @@ class FilamentViewer extends AbstractFilamentViewer {
var dataPtr = allocator<Float>(frameData.length); var dataPtr = allocator<Float>(frameData.length);
dataPtr // not currently working on WASM :( wasted a lot of time figuring that out as no error is thrown
.asTypedList(frameData.length) // dataPtr
.setRange(0, frameData.length, frameData); // .asTypedList(frameData.length)
// .setRange(0, frameData.length, frameData);
for (int i = 0; i < frameData.length; i++) {
dataPtr[i] = frameData[i];
}
final idxPtr = allocator<Int>(indices.length); final idxPtr = allocator<Int>(indices.length);