add fade in/out to dynamic bone animations
This commit is contained in:
@@ -274,7 +274,7 @@ abstract class AbstractFilamentViewer {
|
||||
/// to transform to another space, you will need to do so manually.
|
||||
///
|
||||
Future addBoneAnimation(FilamentEntity entity, BoneAnimationData animation,
|
||||
{int skinIndex = 0});
|
||||
{int skinIndex = 0, double fadeInInSecs=0.0, double fadeOutInSecs=0.0});
|
||||
|
||||
///
|
||||
/// Gets the entity representing the bone at [boneIndex]/[skinIndex].
|
||||
|
||||
@@ -461,7 +461,7 @@ external void reset_to_rest_pose(
|
||||
|
||||
@ffi.Native<
|
||||
ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int, ffi.Int,
|
||||
ffi.Pointer<ffi.Float>, ffi.Int, ffi.Float)>(
|
||||
ffi.Pointer<ffi.Float>, ffi.Int, ffi.Float, ffi.Float, ffi.Float)>(
|
||||
symbol: 'add_bone_animation',
|
||||
assetId: 'package:dart_filament/dart_filament.dart')
|
||||
external void add_bone_animation(
|
||||
@@ -472,6 +472,8 @@ external void add_bone_animation(
|
||||
ffi.Pointer<ffi.Float> frameData,
|
||||
int numFrames,
|
||||
double frameLengthInMs,
|
||||
double fadeOutInSecs,
|
||||
double fadeInInSecs,
|
||||
);
|
||||
|
||||
@ffi.Native<
|
||||
@@ -485,6 +487,19 @@ external void get_local_transform(
|
||||
ffi.Pointer<ffi.Float> arg2,
|
||||
);
|
||||
|
||||
@ffi.Native<
|
||||
ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int,
|
||||
ffi.Pointer<ffi.Float>, ffi.Int)>(
|
||||
symbol: 'get_rest_local_transforms',
|
||||
assetId: 'package:dart_filament/dart_filament.dart')
|
||||
external void get_rest_local_transforms(
|
||||
ffi.Pointer<ffi.Void> sceneManager,
|
||||
int entityId,
|
||||
int skinIndex,
|
||||
ffi.Pointer<ffi.Float> out,
|
||||
int numBones,
|
||||
);
|
||||
|
||||
@ffi.Native<
|
||||
ffi.Void Function(
|
||||
ffi.Pointer<ffi.Void>, EntityId, ffi.Pointer<ffi.Float>)>(
|
||||
|
||||
@@ -4,7 +4,6 @@ import 'dart:io';
|
||||
import 'dart:math';
|
||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||
import 'package:dart_filament/dart_filament/compatibility/compatibility.dart';
|
||||
import 'package:dart_filament/dart_filament/compatibility/native/compatibility.dart';
|
||||
import 'package:dart_filament/dart_filament/entities/filament_entity.dart';
|
||||
import 'package:dart_filament/dart_filament/entities/gizmo.dart';
|
||||
|
||||
@@ -676,7 +675,7 @@ class FilamentViewer extends AbstractFilamentViewer {
|
||||
///
|
||||
@override
|
||||
Future addBoneAnimation(FilamentEntity entity, BoneAnimationData animation,
|
||||
{int skinIndex = 0}) async {
|
||||
{int skinIndex = 0, double fadeOutInSecs=0.0, double fadeInInSecs=0.0}) async {
|
||||
if (animation.space != Space.Bone &&
|
||||
animation.space != Space.ParentWorldRotation) {
|
||||
throw UnimplementedError("TODO - support ${animation.space}");
|
||||
@@ -739,7 +738,7 @@ class FilamentViewer extends AbstractFilamentViewer {
|
||||
}
|
||||
|
||||
add_bone_animation(_sceneManager!, entity, skinIndex, entityBoneIndex,
|
||||
data, numFrames, animation.frameLengthInMs);
|
||||
data, numFrames, animation.frameLengthInMs, fadeOutInSecs, fadeInInSecs);
|
||||
}
|
||||
allocator.free(data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user