refactor!: move light methods from FilamentViewer to SceneManager/TLightManager and rename clearLights/clearAssets to destroyLights/destroyAssets
This commit is contained in:
@@ -29,6 +29,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
Pointer<TMaterialProvider>? _unlitMaterialProvider;
|
||||
Pointer<TMaterialProvider>? _ubershaderMaterialProvider;
|
||||
Pointer<TTransformManager>? _transformManager;
|
||||
Pointer<TLightManager>? _lightManager;
|
||||
Pointer<TRenderableManager>? _renderableManager;
|
||||
Pointer<TViewer>? _viewer;
|
||||
Pointer<TAnimationManager>? _animationManager;
|
||||
@@ -197,6 +198,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
SceneManager_getUbershaderMaterialProvider(_sceneManager!);
|
||||
_engine = Viewer_getEngine(_viewer!);
|
||||
_transformManager = Engine_getTransformManager(_engine!);
|
||||
_lightManager = Engine_getLightManager(_engine!);
|
||||
_animationManager = SceneManager_getAnimationManager(_sceneManager!);
|
||||
_nameComponentManager =
|
||||
SceneManager_getNameComponentManager(_sceneManager!);
|
||||
@@ -284,11 +286,11 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
}
|
||||
_disposing = true;
|
||||
await setRendering(false);
|
||||
await clearEntities();
|
||||
await destroyAssets();
|
||||
for (final mInstance in _materialInstances) {
|
||||
await mInstance.dispose();
|
||||
}
|
||||
await clearLights();
|
||||
await destroyLights();
|
||||
|
||||
Viewer_destroyOnRenderThread(_viewer!);
|
||||
_sceneManager = null;
|
||||
@@ -450,8 +452,8 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
///
|
||||
@override
|
||||
Future<ThermionEntity> addDirectLight(DirectLight directLight) async {
|
||||
var entity = add_light(
|
||||
_viewer!,
|
||||
var entity = SceneManager_addLight(
|
||||
_sceneManager!,
|
||||
directLight.type.index,
|
||||
directLight.color,
|
||||
directLight.intensity,
|
||||
@@ -480,15 +482,15 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
///
|
||||
@override
|
||||
Future removeLight(ThermionEntity entity) async {
|
||||
remove_light(_viewer!, entity);
|
||||
SceneManager_removeLight(_sceneManager!, entity);
|
||||
}
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
@override
|
||||
Future clearLights() async {
|
||||
clear_lights(_viewer!);
|
||||
Future destroyLights() async {
|
||||
SceneManager_destroyLights(_sceneManager!);
|
||||
}
|
||||
|
||||
///
|
||||
@@ -987,7 +989,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
///
|
||||
///
|
||||
@override
|
||||
Future clearEntities() async {
|
||||
Future destroyAssets() async {
|
||||
await withVoidCallback((callback) {
|
||||
SceneManager_destroyAllRenderThread(_sceneManager!, callback);
|
||||
});
|
||||
@@ -1314,7 +1316,7 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
@override
|
||||
Future setLightPosition(
|
||||
ThermionEntity lightEntity, double x, double y, double z) async {
|
||||
set_light_position(_viewer!, lightEntity, x, y, z);
|
||||
LightManager_setPosition(_lightManager!, lightEntity, x, y, z);
|
||||
}
|
||||
|
||||
///
|
||||
@@ -1324,8 +1326,8 @@ class ThermionViewerFFI extends ThermionViewer {
|
||||
Future setLightDirection(
|
||||
ThermionEntity lightEntity, Vector3 direction) async {
|
||||
direction.normalize();
|
||||
set_light_direction(
|
||||
_viewer!, lightEntity, direction.x, direction.y, direction.z);
|
||||
LightManager_setPosition(
|
||||
_lightManager!, lightEntity, direction.x, direction.y, direction.z);
|
||||
}
|
||||
|
||||
///
|
||||
|
||||
@@ -206,7 +206,7 @@ abstract class ThermionViewer {
|
||||
///
|
||||
/// Remove all lights (excluding IBL) from the scene.
|
||||
///
|
||||
Future clearLights();
|
||||
Future destroyLights();
|
||||
|
||||
///
|
||||
/// Load the .glb asset at the given path, adding all entities to the scene.
|
||||
@@ -386,7 +386,7 @@ abstract class ThermionViewer {
|
||||
/// Removes/destroys all renderable entities from the scene (including cameras).
|
||||
/// All [ThermionEntity] handles will no longer be valid after this method is called; ensure you immediately discard all references to all entities once this method is complete.
|
||||
///
|
||||
Future clearEntities();
|
||||
Future destroyAssets();
|
||||
|
||||
///
|
||||
/// Schedules the glTF animation at [index] in [asset] to start playing on the next frame.
|
||||
|
||||
@@ -55,14 +55,14 @@ class ThermionViewerStub extends ThermionViewer {
|
||||
}
|
||||
|
||||
@override
|
||||
Future clearEntities() {
|
||||
// TODO: implement clearEntities
|
||||
Future destroyAssets() {
|
||||
// TODO: implement destroyAssets
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future clearLights() {
|
||||
// TODO: implement clearLights
|
||||
Future destroyLights() {
|
||||
// TODO: implement destroyLights
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@@ -1008,8 +1008,8 @@ class ThermionViewerStub extends ThermionViewer {
|
||||
}
|
||||
|
||||
@override
|
||||
Future removeEntity(ThermionAsset asset) {
|
||||
// TODO: implement removeEntity
|
||||
Future removeAsset(ThermionAsset asset) {
|
||||
// TODO: implement removeAsset
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@@ -1074,8 +1074,8 @@ class ThermionViewerStub extends ThermionViewer {
|
||||
}
|
||||
|
||||
@override
|
||||
Future removeEntityFromScene(ThermionEntity entity) {
|
||||
// TODO: implement removeEntityFromScene
|
||||
Future removeAssetFromScene(ThermionEntity entity) {
|
||||
// TODO: implement removeAssetFromScene
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
// JSPromise removeLight(ThermionEntity light) => viewer.removeLight(light).toJS;
|
||||
|
||||
// @JSExport()
|
||||
// JSPromise clearLights() => viewer.clearLights().toJS;
|
||||
// JSPromise destroyLights() => viewer.destroyLights().toJS;
|
||||
|
||||
// @JSExport()
|
||||
// JSPromise<JSNumber> loadGlb(String path, {int numInstances = 1}) {
|
||||
@@ -319,12 +319,12 @@
|
||||
// }
|
||||
|
||||
// @JSExport()
|
||||
// JSPromise removeEntity(ThermionEntity entity) =>
|
||||
// viewer.removeEntity(entity).toJS;
|
||||
// JSPromise removeAsset(ThermionEntity entity) =>
|
||||
// viewer.removeAsset(entity).toJS;
|
||||
|
||||
// @JSExport()
|
||||
// JSPromise clearEntities() {
|
||||
// return viewer.clearEntities().toJS;
|
||||
// JSPromise destroyAssets() {
|
||||
// return viewer.destroyAssets().toJS;
|
||||
// }
|
||||
|
||||
// @JSExport()
|
||||
|
||||
@@ -161,8 +161,8 @@
|
||||
// }
|
||||
|
||||
// @override
|
||||
// Future<void> clearLights() async {
|
||||
// await _shim.clearLights().toDart;
|
||||
// Future<void> destroyLights() async {
|
||||
// await _shim.destroyLights().toDart;
|
||||
// }
|
||||
|
||||
// @override
|
||||
@@ -339,13 +339,13 @@
|
||||
// }
|
||||
|
||||
// @override
|
||||
// Future<void> removeEntity(ThermionEntity entity) async {
|
||||
// await _shim.removeEntity(entity).toDart;
|
||||
// Future<void> removeAsset(ThermionEntity entity) async {
|
||||
// await _shim.removeAsset(entity).toDart;
|
||||
// }
|
||||
|
||||
// @override
|
||||
// Future<void> clearEntities() async {
|
||||
// await _shim.clearEntities().toDart;
|
||||
// Future<void> destroyAssets() async {
|
||||
// await _shim.destroyAssets().toDart;
|
||||
// }
|
||||
|
||||
// @override
|
||||
|
||||
@@ -81,8 +81,8 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject {
|
||||
@JS('removeLight')
|
||||
external JSPromise removeLight(ThermionEntity light);
|
||||
|
||||
@JS('clearLights')
|
||||
external JSPromise clearLights();
|
||||
@JS('destroyLights')
|
||||
external JSPromise destroyLights();
|
||||
|
||||
@JS('loadGlb')
|
||||
external JSPromise<JSNumber> loadGlb(String path, int numInstances);
|
||||
@@ -164,11 +164,11 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject {
|
||||
JSNumber fadeOutInSecs,
|
||||
JSNumber maxDelta);
|
||||
|
||||
@JS('removeEntity')
|
||||
external JSPromise removeEntity(ThermionEntity entity);
|
||||
@JS('removeAsset')
|
||||
external JSPromise removeAsset(ThermionEntity entity);
|
||||
|
||||
@JS('clearEntities')
|
||||
external JSPromise clearEntities();
|
||||
@JS('destroyAssets')
|
||||
external JSPromise destroyAssets();
|
||||
|
||||
@JS('zoomBegin')
|
||||
external JSPromise zoomBegin();
|
||||
|
||||
Reference in New Issue
Block a user