add implementations to JS bridge/shim classes

This commit is contained in:
Nick Fisher
2024-08-24 16:26:05 +08:00
parent ca69c783d3
commit 08ae0387a9
3 changed files with 42 additions and 8 deletions

View File

@@ -404,8 +404,16 @@ class ThermionViewerJSDartBridge {
}
@JSExport()
JSPromise setCameraFov(double degrees, double width, double height) =>
viewer.setCameraFov(degrees, width, height).toJS;
JSPromise setParent(
ThermionEntity child, ThermionEntity parent, bool preserveScaling) {
return viewer
.setParent(child, parent, preserveScaling: preserveScaling)
.toJS;
}
@JSExport()
JSPromise setCameraFov(double degrees, bool horizontal) =>
viewer.setCameraFov(degrees, horizontal: horizontal).toJS;
@JSExport()
JSPromise setToneMapping(int mapper) =>
@@ -527,9 +535,11 @@ class ThermionViewerJSDartBridge {
// b,
// a,
// ).toJS;
@JSExport()
JSPromise transformToUnitCube(ThermionEntity entity) =>
viewer.transformToUnitCube(entity).toJS;
@JSExport()
JSPromise setPosition(ThermionEntity entity, double x, double y, double z) =>
viewer.setPosition(entity, x, y, z).toJS;

View File

@@ -5,6 +5,7 @@ import 'dart:typed_data';
import 'package:animation_tools_dart/animation_tools_dart.dart';
import 'package:logging/logging.dart';
import 'package:thermion_dart/thermion_dart/entities/abstract_gizmo.dart';
import 'package:thermion_dart/thermion_dart/scene.dart';
import 'package:thermion_dart/thermion_dart/thermion_viewer.dart';
@@ -423,8 +424,8 @@ class ThermionViewerJS implements ThermionViewer {
}
@override
Future<void> setCameraFov(double degrees, double width, double height) async {
await _shim.setCameraFov(degrees, width, height).toDart;
Future<void> setCameraFov(double degrees, {bool horizontal = true}) async {
await _shim.setCameraFov(degrees, horizontal).toDart;
}
@override
@@ -737,8 +738,9 @@ class ThermionViewerJS implements ThermionViewer {
}
@override
Future<void> setParent(ThermionEntity child, ThermionEntity parent) async {
await _shim.setParent(child, parent).toDart;
Future<void> setParent(ThermionEntity child, ThermionEntity parent,
{bool preserveScaling = false}) async {
await _shim.setParent(child, parent, preserveScaling).toDart;
}
@override
@@ -857,4 +859,26 @@ class ThermionViewerJS implements ThermionViewer {
final captured = await _shim.capture().toDart;
return captured.toDart;
}
@override
late (double, double) viewportDimensions;
@override
Future<Aabb2> getBoundingBox(ThermionEntity entity) {
// return _shim.getBoundingBox(entity);
throw UnimplementedError();
}
@override
Future<double> getCameraFov(bool horizontal) {
// TODO: implement getCameraFov
throw UnimplementedError();
}
@override
Future queueRelativePositionUpdateWorldAxis(ThermionEntity entity,
double viewportX, double viewportY, double x, double y, double z) {
// TODO: implement queueRelativePositionUpdateWorldAxis
throw UnimplementedError();
}
}

View File

@@ -220,7 +220,7 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject {
external JSPromise<JSNumber> getMainCamera();
@JS('setCameraFov')
external JSPromise setCameraFov(double degrees, double width, double height);
external JSPromise setCameraFov(double degrees, bool horizontal);
@JS('setToneMapping')
external JSPromise setToneMapping(int mapper);
@@ -378,7 +378,7 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject {
JSArray<JSNumber> indices, String? materialPath, int primitiveType);
@JS('setParent')
external JSPromise setParent(ThermionEntity child, ThermionEntity parent);
external JSPromise setParent(ThermionEntity child, ThermionEntity parent, bool preserveScaling);
@JS('getParent')
external JSPromise<JSNumber> getParent(ThermionEntity child);