add fade in/out arguments to JS export types

This commit is contained in:
Nick Fisher
2024-06-04 20:53:20 +08:00
parent dadd7d1f5d
commit 15392071e4
3 changed files with 52 additions and 22 deletions

View File

@@ -74,8 +74,11 @@ class DartFilamentJSExportViewer {
viewer.loadIbl(lightingPath, intensity: intensity).toJS; viewer.loadIbl(lightingPath, intensity: intensity).toJS;
@JSExport() @JSExport()
JSPromise rotateIbl(JSArray<JSNumber> rotation) => throw UnimplementedError(); JSPromise rotateIbl(JSArray<JSNumber> rotation) {
// viewer.rotateIbl(rotation.toDartMatrix3()).toJS; var matrix =
Matrix3.fromList(rotation.toDart.map((v) => v.toDartDouble).toList());
return viewer.rotateIbl(matrix).toJS;
}
@JSExport() @JSExport()
JSPromise removeIbl() => viewer.removeIbl().toJS; JSPromise removeIbl() => viewer.removeIbl().toJS;
@@ -261,7 +264,9 @@ class DartFilamentJSExportViewer {
JSArray<JSArray<JSArray<JSNumber>>> frameData, JSArray<JSArray<JSArray<JSNumber>>> frameData,
JSNumber frameLengthInMs, JSNumber frameLengthInMs,
JSNumber spaceEnum, JSNumber spaceEnum,
JSNumber skinIndex) { JSNumber skinIndex,
JSNumber fadeInInSecs,
JSNumber fadeOutInSecs) {
var frameDataDart = frameData.toDart var frameDataDart = frameData.toDart
.map((frame) => frame.toDart .map((frame) => frame.toDart
.map((v) { .map((v) {
@@ -285,7 +290,10 @@ class DartFilamentJSExportViewer {
space: Space.values[spaceEnum.toDartInt]); space: Space.values[spaceEnum.toDartInt]);
return viewer return viewer
.addBoneAnimation(entity, data, skinIndex: skinIndex.toDartInt) .addBoneAnimation(entity, data,
skinIndex: skinIndex.toDartInt,
fadeInInSecs: fadeInInSecs.toDartDouble,
fadeOutInSecs: fadeOutInSecs.toDartDouble)
.toJS; .toJS;
} }
@@ -455,18 +463,23 @@ class DartFilamentJSExportViewer {
JSPromise moveCameraToAsset(FilamentEntity entity) => JSPromise moveCameraToAsset(FilamentEntity entity) =>
throw UnimplementedError(); throw UnimplementedError();
// viewer.moveCameraToAsset(entity)).toJS; // viewer.moveCameraToAsset(entity)).toJS;
@JSExport() @JSExport()
JSPromise setViewFrustumCulling(JSBoolean enabled) => JSPromise setViewFrustumCulling(JSBoolean enabled) =>
throw UnimplementedError(); throw UnimplementedError();
// viewer.setViewFrustumCulling(enabled).toJS; // viewer.setViewFrustumCulling(enabled).toJS;
@JSExport() @JSExport()
JSPromise setCameraExposure( JSPromise setCameraExposure(
double aperture, double shutterSpeed, double sensitivity) => double aperture, double shutterSpeed, double sensitivity) =>
viewer.setCameraExposure(aperture, shutterSpeed, sensitivity).toJS; viewer.setCameraExposure(aperture, shutterSpeed, sensitivity).toJS;
@JSExport() @JSExport()
JSPromise setCameraRotation(JSArray<JSNumber> quaternion) => JSPromise setCameraRotation(JSArray<JSNumber> quaternion) {
throw UnimplementedError(); var dartVals = quaternion.toDart;
// viewer.setCameraRotation(quaternion.toDartQuaternion()).toJS; return viewer.setCameraRotation(v64.Quaternion(dartVals[0].toDartDouble, dartVals[1].toDartDouble, dartVals[2].toDartDouble, dartVals[3].toDartDouble)).toJS;
}
@JSExport() @JSExport()
JSPromise setCameraModelMatrix(JSArray<JSNumber> matrix) { JSPromise setCameraModelMatrix(JSArray<JSNumber> matrix) {
throw UnimplementedError(); throw UnimplementedError();
@@ -669,10 +682,16 @@ class DartFilamentJSExportViewer {
} }
@JSExport() @JSExport()
JSPromise setBoneTransform(FilamentEntity entity, JSPromise setBoneTransform(FilamentEntity entity, int boneIndex,
int boneIndex, JSArray<JSNumber> transform, int skinIndex) { JSArray<JSNumber> transform, int skinIndex) {
return viewer.setBoneTransform(entity, boneIndex, Matrix4.fromList(transform.toDart.map((v) => v.toDartDouble).toList()), return viewer
skinIndex: skinIndex).toJS; .setBoneTransform(
entity,
boneIndex,
Matrix4.fromList(
transform.toDart.map((v) => v.toDartDouble).toList()),
skinIndex: skinIndex)
.toJS;
} }
@JSExport() @JSExport()

View File

@@ -149,7 +149,9 @@ extension type DartFilamentJSShim(JSObject _) implements JSObject {
JSArray<JSArray<JSArray<JSNumber>>> frameData, JSArray<JSArray<JSArray<JSNumber>>> frameData,
JSNumber frameLengthInMs, JSNumber frameLengthInMs,
JSNumber spaceEnum, JSNumber spaceEnum,
JSNumber skinIndex); JSNumber skinIndex,
JSNumber fadeInInSecs,
JSNumber fadeOutInSecs);
@JS('removeEntity') @JS('removeEntity')
external JSPromise removeEntity(FilamentEntity entity); external JSPromise removeEntity(FilamentEntity entity);

View File

@@ -92,9 +92,9 @@ class JsInteropFilamentViewer implements AbstractFilamentViewer {
@override @override
Future<void> rotateIbl(Matrix3 rotation) async { Future<void> rotateIbl(Matrix3 rotation) async {
throw UnimplementedError(); await _jsObject
// final JSMatrix3 jsRotation = rotation.storage; .rotateIbl(rotation.storage.map((v) => v.toJS).toList().toJS)
// await _jsObject.rotateIbl(jsRotation).toDart; .toDart;
} }
@override @override
@@ -287,7 +287,9 @@ class JsInteropFilamentViewer implements AbstractFilamentViewer {
@override @override
Future<void> addBoneAnimation( Future<void> addBoneAnimation(
FilamentEntity entity, BoneAnimationData animation, FilamentEntity entity, BoneAnimationData animation,
{int skinIndex = 0}) async { {int skinIndex = 0,
double fadeInInSecs = 0.0,
double fadeOutInSecs = 0.0}) async {
var boneNames = animation.bones.map((n) => n.toJS).toList().toJS; var boneNames = animation.bones.map((n) => n.toJS).toList().toJS;
var frameData = animation.frameData var frameData = animation.frameData
.map((frame) => frame .map((frame) => frame
@@ -312,7 +314,9 @@ class JsInteropFilamentViewer implements AbstractFilamentViewer {
frameData, frameData,
animation.frameLengthInMs.toJS, animation.frameLengthInMs.toJS,
animation.space.index.toJS, animation.space.index.toJS,
skinIndex.toJS) skinIndex.toJS,
fadeInInSecs.toJS,
fadeOutInSecs.toJS)
.toDart; .toDart;
} }
@@ -515,9 +519,13 @@ class JsInteropFilamentViewer implements AbstractFilamentViewer {
@override @override
Future<void> setCameraRotation(Quaternion quaternion) async { Future<void> setCameraRotation(Quaternion quaternion) async {
throw UnimplementedError(); final values = <JSNumber>[
// final JSQuaternion jsQuaternion = quaternion.toJSQuaternion().toDart; quaternion.x.toJS,
// await _jsObject.setCameraRotation(jsQuaternion).toDart; quaternion.y.toJS,
quaternion.z.toJS,
quaternion.w.toJS
];
await _jsObject.setCameraRotation(values.toJS).toDart;
} }
@override @override
@@ -781,10 +789,11 @@ class JsInteropFilamentViewer implements AbstractFilamentViewer {
@override @override
Future setBoneTransform( Future setBoneTransform(
FilamentEntity entity, int boneIndex, Matrix4 transform, { int skinIndex =0}) { FilamentEntity entity, int boneIndex, Matrix4 transform,
{int skinIndex = 0}) {
return _jsObject return _jsObject
.setBoneTransform(entity, boneIndex, .setBoneTransform(entity, boneIndex,
transform.storage.map((v) => v.toJS).toList().toJS) transform.storage.map((v) => v.toJS).toList().toJS, skinIndex)
.toDart; .toDart;
} }