add index operator to web PointerPointer extension

This commit is contained in:
Nick Fisher
2024-06-01 12:40:46 +08:00
parent 57f3135e3b
commit 40187987a6
2 changed files with 112 additions and 55 deletions

View File

@@ -460,45 +460,66 @@ external void reset_to_rest_pose(
); );
@ffi.Native< @ffi.Native<
ffi.Void Function( ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int, ffi.Int,
ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Float>, ffi.Int, ffi.Float)>(
EntityId,
ffi.Pointer<ffi.Float>,
ffi.Int,
ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Pointer<ffi.Char>>,
ffi.Int,
ffi.Float,
ffi.Bool)>(
symbol: 'add_bone_animation', symbol: 'add_bone_animation',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external void add_bone_animation( external void add_bone_animation(
ffi.Pointer<ffi.Void> sceneManager, ffi.Pointer<ffi.Void> sceneManager,
int entity, int entity,
int skinIndex,
int boneIndex,
ffi.Pointer<ffi.Float> frameData, ffi.Pointer<ffi.Float> frameData,
int numFrames, int numFrames,
ffi.Pointer<ffi.Char> boneName,
ffi.Pointer<ffi.Pointer<ffi.Char>> meshNames,
int numMeshTargets,
double frameLengthInMs, double frameLengthInMs,
bool isModelSpace,
); );
@ffi.Native< @ffi.Native<
ffi.Bool Function( ffi.Void Function(
ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>, EntityId, ffi.Pointer<ffi.Float>)>(
EntityId, symbol: 'get_local_transform',
ffi.Pointer<ffi.Char>, assetId: 'package:dart_filament/dart_filament.dart')
ffi.Pointer<ffi.Float>, external void get_local_transform(
ffi.Pointer<ffi.Char>)>( ffi.Pointer<ffi.Void> sceneManager,
int entityId,
ffi.Pointer<ffi.Float> arg2,
);
@ffi.Native<
ffi.Void Function(
ffi.Pointer<ffi.Void>, EntityId, ffi.Pointer<ffi.Float>)>(
symbol: 'get_world_transform',
assetId: 'package:dart_filament/dart_filament.dart')
external void get_world_transform(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
ffi.Pointer<ffi.Float> arg2,
);
@ffi.Native<
ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int, ffi.Int,
ffi.Pointer<ffi.Float>)>(
symbol: 'get_inverse_bind_matrix',
assetId: 'package:dart_filament/dart_filament.dart')
external void get_inverse_bind_matrix(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
int skinIndex,
int boneIndex,
ffi.Pointer<ffi.Float> arg4,
);
@ffi.Native<
ffi.Bool Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int, ffi.Int,
ffi.Pointer<ffi.Float>)>(
symbol: 'set_bone_transform', symbol: 'set_bone_transform',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external bool set_bone_transform( external bool set_bone_transform(
ffi.Pointer<ffi.Void> sceneManager, ffi.Pointer<ffi.Void> sceneManager,
int entity, int entity,
ffi.Pointer<ffi.Char> entityName, int skinIndex,
int boneIndex,
ffi.Pointer<ffi.Float> transform, ffi.Pointer<ffi.Float> transform,
ffi.Pointer<ffi.Char> boneName,
); );
@ffi.Native< @ffi.Native<
@@ -586,6 +607,35 @@ external void get_bone_names(
int skinIndex, int skinIndex,
); );
@ffi.Native<
EntityId Function(ffi.Pointer<ffi.Void>, EntityId, ffi.Int, ffi.Int)>(
symbol: 'get_bone', assetId: 'package:dart_filament/dart_filament.dart')
external int get_bone(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
int skinIndex,
int boneIndex,
);
@ffi.Native<
ffi.Bool Function(
ffi.Pointer<ffi.Void>, EntityId, ffi.Pointer<ffi.Float>)>(
symbol: 'set_transform',
assetId: 'package:dart_filament/dart_filament.dart')
external bool set_transform(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
ffi.Pointer<ffi.Float> transform,
);
@ffi.Native<ffi.Bool Function(ffi.Pointer<ffi.Void>, EntityId)>(
symbol: 'update_bone_matrices',
assetId: 'package:dart_filament/dart_filament.dart')
external bool update_bone_matrices(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
);
@ffi.Native< @ffi.Native<
ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, EntityId, ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, EntityId,
ffi.Pointer<ffi.Char>, ffi.Int)>( ffi.Pointer<ffi.Char>, ffi.Int)>(
@@ -1060,6 +1110,14 @@ external bool add_animation_component(
int entityId, int entityId,
); );
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId)>(
symbol: 'remove_animation_component',
assetId: 'package:dart_filament/dart_filament.dart')
external void remove_animation_component(
ffi.Pointer<ffi.Void> sceneManager,
int entityId,
);
@ffi.Native< @ffi.Native<
EntityId Function( EntityId Function(
ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>,
@@ -1081,6 +1139,13 @@ external int create_geometry(
ffi.Pointer<ffi.Char> materialPath, ffi.Pointer<ffi.Char> materialPath,
); );
@ffi.Native<EntityId Function(ffi.Pointer<ffi.Void>, EntityId)>(
symbol: 'get_parent', assetId: 'package:dart_filament/dart_filament.dart')
external int get_parent(
ffi.Pointer<ffi.Void> sceneManager,
int child,
);
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, EntityId)>( @ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId, EntityId)>(
symbol: 'set_parent', assetId: 'package:dart_filament/dart_filament.dart') symbol: 'set_parent', assetId: 'package:dart_filament/dart_filament.dart')
external void set_parent( external void set_parent(
@@ -1204,12 +1269,15 @@ external FilamentRenderCallback make_render_callback_fn_pointer(
FilamentRenderCallback arg0, FilamentRenderCallback arg0,
); );
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Bool)>( @ffi.Native<
ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Bool,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>(
symbol: 'set_rendering_ffi', symbol: 'set_rendering_ffi',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external void set_rendering_ffi( external void set_rendering_ffi(
ffi.Pointer<ffi.Void> viewer, ffi.Pointer<ffi.Void> viewer,
bool rendering, bool rendering,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> onComplete,
); );
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Float)>( @ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Float)>(
@@ -1601,21 +1669,13 @@ external void set_morph_target_weights_ffi(
); );
@ffi.Native< @ffi.Native<
ffi.Void Function( ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId,
ffi.Pointer<ffi.Void>,
EntityId,
ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.Float>,
ffi.Pointer<ffi.Char>,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>>)>( ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>>)>(
symbol: 'set_bone_transform_ffi', symbol: 'update_bone_matrices_ffi',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external void set_bone_transform_ffi( external void update_bone_matrices_ffi(
ffi.Pointer<ffi.Void> sceneManager, ffi.Pointer<ffi.Void> sceneManager,
int asset, int asset,
ffi.Pointer<ffi.Char> entityName,
ffi.Pointer<ffi.Float> transform,
ffi.Pointer<ffi.Char> boneName,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>> callback, ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>> callback,
); );
@@ -1623,25 +1683,19 @@ external void set_bone_transform_ffi(
ffi.Void Function( ffi.Void Function(
ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>,
EntityId, EntityId,
ffi.Int,
ffi.Int,
ffi.Pointer<ffi.Float>, ffi.Pointer<ffi.Float>,
ffi.Int, ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>>)>(
ffi.Pointer<ffi.Char>, symbol: 'set_bone_transform_ffi',
ffi.Pointer<ffi.Pointer<ffi.Char>>,
ffi.Int,
ffi.Float,
ffi.Bool)>(
symbol: 'add_bone_animation_ffi',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external void add_bone_animation_ffi( external void set_bone_transform_ffi(
ffi.Pointer<ffi.Void> sceneManager, ffi.Pointer<ffi.Void> sceneManager,
int asset, int asset,
ffi.Pointer<ffi.Float> frameData, int skinIndex,
int numFrames, int boneIndex,
ffi.Pointer<ffi.Char> boneName, ffi.Pointer<ffi.Float> transform,
ffi.Pointer<ffi.Pointer<ffi.Char>> meshNames, ffi.Pointer<ffi.NativeFunction<ffi.Void Function(ffi.Bool)>> callback,
int numMeshTargets,
double frameLengthInMs,
bool isModelSpace,
); );
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Bool)>( @ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, ffi.Bool)>(
@@ -1652,19 +1706,17 @@ external void set_post_processing_ffi(
bool enabled, bool enabled,
); );
@ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId)>( @ffi.Native<
ffi.Void Function(ffi.Pointer<ffi.Void>, EntityId,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>(
symbol: 'reset_to_rest_pose_ffi', symbol: 'reset_to_rest_pose_ffi',
assetId: 'package:dart_filament/dart_filament.dart') assetId: 'package:dart_filament/dart_filament.dart')
external void reset_to_rest_pose_ffi( external void reset_to_rest_pose_ffi(
ffi.Pointer<ffi.Void> sceneManager, ffi.Pointer<ffi.Void> sceneManager,
int entityId, int entityId,
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> callback,
); );
@ffi.Native<ffi.Void Function()>(
symbol: 'ios_dummy_ffi',
assetId: 'package:dart_filament/dart_filament.dart')
external void ios_dummy_ffi();
@ffi.Native< @ffi.Native<
ffi.Void Function( ffi.Void Function(
ffi.Pointer<ffi.Void>, ffi.Pointer<ffi.Void>,

View File

@@ -126,6 +126,11 @@ extension PointerPointer<T extends ffi.NativeType>
cast<ffi.Pointer<ffi.Void>>(), 0, value.cast<ffi.Void>()); cast<ffi.Pointer<ffi.Void>>(), 0, value.cast<ffi.Void>());
} }
ffi.Pointer<T> operator [](int index) {
return this.elementAt(index).value;
}
void operator []=(int index, ffi.Pointer<T> value) { void operator []=(int index, ffi.Pointer<T> value) {
this.elementAt(index).value = value; this.elementAt(index).value = value;
} }