refactor
This commit is contained in:
@@ -19,3 +19,4 @@ enums:
|
|||||||
- TPrimitiveType
|
- TPrimitiveType
|
||||||
- TPixelDataFormat
|
- TPixelDataFormat
|
||||||
- TPixelDataType
|
- TPixelDataType
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import '../input_handler.dart';
|
|||||||
class OverTheShoulderCameraDelegate implements InputHandlerDelegate {
|
class OverTheShoulderCameraDelegate implements InputHandlerDelegate {
|
||||||
final ThermionViewer viewer;
|
final ThermionViewer viewer;
|
||||||
|
|
||||||
late ThermionEntity player;
|
late ThermionAsset player;
|
||||||
late Camera camera;
|
late Camera camera;
|
||||||
|
|
||||||
final double rotationSensitivity;
|
final double rotationSensitivity;
|
||||||
@@ -79,7 +79,7 @@ class OverTheShoulderCameraDelegate implements InputHandlerDelegate {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix4 currentPlayerTransform = await viewer.getWorldTransform(player);
|
Matrix4 currentPlayerTransform = await player.getWorldTransform();
|
||||||
|
|
||||||
// first we need to convert the move vector to player space
|
// first we need to convert the move vector to player space
|
||||||
var newTransform =
|
var newTransform =
|
||||||
@@ -87,7 +87,7 @@ class OverTheShoulderCameraDelegate implements InputHandlerDelegate {
|
|||||||
|
|
||||||
_queuedMoveDelta = Vector3.zero();
|
_queuedMoveDelta = Vector3.zero();
|
||||||
Matrix4 newPlayerTransform = newTransform * currentPlayerTransform;
|
Matrix4 newPlayerTransform = newTransform * currentPlayerTransform;
|
||||||
await viewer.setTransform(player, newPlayerTransform);
|
await player.setTransform(newPlayerTransform);
|
||||||
|
|
||||||
if (_queuedZoomDelta != 0.0) {
|
if (_queuedZoomDelta != 0.0) {
|
||||||
// Ignore zoom
|
// Ignore zoom
|
||||||
@@ -112,8 +112,8 @@ class OverTheShoulderCameraDelegate implements InputHandlerDelegate {
|
|||||||
var newCameraTransform = newPlayerTransform * newCameraViewMatrix;
|
var newCameraTransform = newPlayerTransform * newCameraViewMatrix;
|
||||||
await camera.setTransform(newCameraTransform);
|
await camera.setTransform(newCameraTransform);
|
||||||
|
|
||||||
await viewer.queueTransformUpdates(
|
// await viewer.queueTransformUpdates(
|
||||||
[camera.getEntity(), player], [newCameraTransform, newPlayerTransform]);
|
// [camera.getEntity(), player], [newCameraTransform, newPlayerTransform]);
|
||||||
onUpdate?.call(newPlayerTransform);
|
onUpdate?.call(newPlayerTransform);
|
||||||
_executing = false;
|
_executing = false;
|
||||||
return newCameraTransform;
|
return newCameraTransform;
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ class BackgroundImage extends ThermionAsset {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future setTransform(ThermionEntity entity, Matrix4 transform) {
|
Future setTransform(Matrix4 transform, { ThermionEntity? entity }) {
|
||||||
// TODO: implement setTransform
|
// TODO: implement setTransform
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -425,7 +425,8 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future render() async {
|
Future render() async {
|
||||||
RenderTicker_renderRenderThread(renderTicker, 0);
|
await withVoidCallback((cb) =>
|
||||||
|
RenderTicker_renderRenderThread(renderTicker, 0, cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class FFIView extends View {
|
|||||||
@override
|
@override
|
||||||
Future setToneMapper(ToneMapper mapper) async {
|
Future setToneMapper(ToneMapper mapper) async {
|
||||||
View_setToneMappingRenderThread(
|
View_setToneMappingRenderThread(
|
||||||
view, app.engine, TToneMapping.values[mapper.index].value);
|
view, app.engine, TToneMapping.values[mapper.index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future setStencilBufferEnabled(bool enabled) async {
|
Future setStencilBufferEnabled(bool enabled) async {
|
||||||
|
|||||||
@@ -333,18 +333,22 @@ external void LightManager_setDirection(
|
|||||||
double z,
|
double z,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Int Function(ffi.Pointer<TLightManager>, ffi.UnsignedInt)>(
|
@ffi.Native<
|
||||||
symbol: "LightManager_createLight", isLeaf: true)
|
ffi.Int Function(ffi.Pointer<TEngine>, ffi.Pointer<TLightManager>,
|
||||||
|
ffi.UnsignedInt)>(symbol: "LightManager_createLight", isLeaf: true)
|
||||||
external int _LightManager_createLight(
|
external int _LightManager_createLight(
|
||||||
|
ffi.Pointer<TEngine> tEngine,
|
||||||
ffi.Pointer<TLightManager> tLightManager,
|
ffi.Pointer<TLightManager> tLightManager,
|
||||||
int tLightTtype,
|
int tLightTtype,
|
||||||
);
|
);
|
||||||
|
|
||||||
int LightManager_createLight(
|
int LightManager_createLight(
|
||||||
|
ffi.Pointer<TEngine> tEngine,
|
||||||
ffi.Pointer<TLightManager> tLightManager,
|
ffi.Pointer<TLightManager> tLightManager,
|
||||||
TLightType tLightTtype,
|
TLightType tLightTtype,
|
||||||
) =>
|
) =>
|
||||||
_LightManager_createLight(
|
_LightManager_createLight(
|
||||||
|
tEngine,
|
||||||
tLightManager,
|
tLightManager,
|
||||||
tLightTtype.value,
|
tLightTtype.value,
|
||||||
);
|
);
|
||||||
@@ -1492,11 +1496,13 @@ external void RenderLoop_requestAnimationFrame(
|
|||||||
ffi.Pointer<ffi.Void> onComplete,
|
ffi.Pointer<ffi.Void> onComplete,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Void Function(ffi.Pointer<TRenderTicker>, ffi.Uint64)>(
|
@ffi.Native<
|
||||||
isLeaf: true)
|
ffi.Void Function(ffi.Pointer<TRenderTicker>, ffi.Uint64,
|
||||||
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>>)>(isLeaf: true)
|
||||||
external void RenderTicker_renderRenderThread(
|
external void RenderTicker_renderRenderThread(
|
||||||
ffi.Pointer<TRenderTicker> tRenderTicker,
|
ffi.Pointer<TRenderTicker> tRenderTicker,
|
||||||
int frameTimeInNanos,
|
int frameTimeInNanos,
|
||||||
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> onComplete,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
@@ -1896,14 +1902,26 @@ external void Material_createInstanceRenderThread(
|
|||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(
|
ffi.Void Function(
|
||||||
ffi.Pointer<TView>, ffi.Pointer<TEngine>, ffi.Int)>(isLeaf: true)
|
ffi.Pointer<TView>, ffi.Pointer<TEngine>, ffi.UnsignedInt)>(
|
||||||
external void View_setToneMappingRenderThread(
|
symbol: "View_setToneMappingRenderThread", isLeaf: true)
|
||||||
|
external void _View_setToneMappingRenderThread(
|
||||||
ffi.Pointer<TView> tView,
|
ffi.Pointer<TView> tView,
|
||||||
ffi.Pointer<TEngine> tEngine,
|
ffi.Pointer<TEngine> tEngine,
|
||||||
int toneMapping,
|
int toneMapping,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void View_setToneMappingRenderThread(
|
||||||
|
ffi.Pointer<TView> tView,
|
||||||
|
ffi.Pointer<TEngine> tEngine,
|
||||||
|
TToneMapping toneMapping,
|
||||||
|
) =>
|
||||||
|
_View_setToneMappingRenderThread(
|
||||||
|
tView,
|
||||||
|
tEngine,
|
||||||
|
toneMapping.value,
|
||||||
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Void Function(ffi.Pointer<TView>, ffi.Bool, ffi.Double)>(
|
@ffi.Native<ffi.Void Function(ffi.Pointer<TView>, ffi.Bool, ffi.Double)>(
|
||||||
isLeaf: true)
|
isLeaf: true)
|
||||||
external void View_setBloomRenderThread(
|
external void View_setBloomRenderThread(
|
||||||
@@ -2963,8 +2981,8 @@ ffi.Pointer<TEngine> Engine_create(
|
|||||||
disableHandleUseAfterFreeCheck,
|
disableHandleUseAfterFreeCheck,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Pointer<TEngine> Function(ffi.Pointer<TEngine>)>(isLeaf: true)
|
@ffi.Native<ffi.Void Function(ffi.Pointer<TEngine>)>(isLeaf: true)
|
||||||
external ffi.Pointer<TEngine> Engine_destroy(
|
external void Engine_destroy(
|
||||||
ffi.Pointer<TEngine> tEngine,
|
ffi.Pointer<TEngine> tEngine,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -3296,10 +3314,12 @@ external Aabb3 SceneAsset_getBoundingBox(
|
|||||||
ffi.Pointer<TSceneAsset> asset,
|
ffi.Pointer<TSceneAsset> asset,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Pointer<TAnimationManager> Function(ffi.Pointer<TEngine>)>(
|
@ffi.Native<
|
||||||
isLeaf: true)
|
ffi.Pointer<TAnimationManager> Function(
|
||||||
|
ffi.Pointer<TEngine>, ffi.Pointer<TScene>)>(isLeaf: true)
|
||||||
external ffi.Pointer<TAnimationManager> AnimationManager_create(
|
external ffi.Pointer<TAnimationManager> AnimationManager_create(
|
||||||
ffi.Pointer<TEngine> tEngine,
|
ffi.Pointer<TEngine> tEngine,
|
||||||
|
ffi.Pointer<TScene> tScene,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Void Function(ffi.Pointer<TAnimationManager>, EntityId)>(
|
@ffi.Native<ffi.Void Function(ffi.Pointer<TAnimationManager>, EntityId)>(
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future render() async {
|
Future render() async {
|
||||||
RenderTicker_renderRenderThread(app.renderTicker, 0);
|
await withVoidCallback((cb) => RenderTicker_renderRenderThread(app.renderTicker, 0, cb));
|
||||||
}
|
}
|
||||||
|
|
||||||
double _msPerFrame = 1000.0 / 60.0;
|
double _msPerFrame = 1000.0 / 60.0;
|
||||||
@@ -320,7 +320,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future<ThermionEntity> addDirectLight(DirectLight directLight) async {
|
Future<ThermionEntity> addDirectLight(DirectLight directLight) async {
|
||||||
var entity = LightManager_createLight(
|
var entity = LightManager_createLight(app.engine,
|
||||||
app.lightManager, TLightType.values[directLight.type.index]);
|
app.lightManager, TLightType.values[directLight.type.index]);
|
||||||
if (entity == FILAMENT_ASSET_ERROR) {
|
if (entity == FILAMENT_ASSET_ERROR) {
|
||||||
throw Exception("Failed to add light to scene");
|
throw Exception("Failed to add light to scene");
|
||||||
|
|||||||
Reference in New Issue
Block a user