From 81ffbdd82462a32b155e4800b8b9e0fbf98e1470 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 21 Jun 2024 11:44:56 +0800 Subject: [PATCH] fix: update Flutter example project to use new API fix: don't keep example project Podfile.lock in repo --- .../flutter/example/lib/example_viewport.dart | 16 +- examples/flutter/example/lib/main.dart | 207 +++++++++--------- .../example/lib/menus/asset_submenu.dart | 44 ++-- .../example/lib/menus/camera_submenu.dart | 34 +-- .../example/lib/menus/controller_menu.dart | 45 ++-- .../example/lib/menus/rendering_submenu.dart | 20 +- .../flutter/example/lib/menus/scene_menu.dart | 8 +- examples/flutter/example/macos/Podfile.lock | 29 --- examples/flutter/example/pubspec.yaml | 13 ++ .../lib/thermion_flutter.dart | 1 + 10 files changed, 197 insertions(+), 220 deletions(-) delete mode 100644 examples/flutter/example/macos/Podfile.lock diff --git a/examples/flutter/example/lib/example_viewport.dart b/examples/flutter/example/lib/example_viewport.dart index 4b48ea6c..4be74ea2 100644 --- a/examples/flutter/example/lib/example_viewport.dart +++ b/examples/flutter/example/lib/example_viewport.dart @@ -1,36 +1,34 @@ import 'package:flutter/widgets.dart'; -import 'package:thermion_flutter/filament/widgets/camera/entity_controller_mouse_widget.dart'; -import 'package:thermion_flutter/filament/widgets/camera/gestures/filament_gesture_detector.dart'; -import 'package:thermion_flutter/filament/widgets/filament_widget.dart'; +import 'package:thermion_flutter/thermion/widgets/camera/entity_controller_mouse_widget.dart'; import 'package:thermion_flutter/thermion_flutter.dart'; import 'package:thermion_dart/thermion_dart/entities/entity_transform_controller.dart'; class ExampleViewport extends StatelessWidget { - final ThermionFlutterPlugin? controller; + final ThermionViewer? viewer; final EntityTransformController? entityTransformController; final EdgeInsets padding; final FocusNode keyboardFocusNode; const ExampleViewport( {super.key, - required this.controller, + required this.viewer, required this.padding, required this.keyboardFocusNode, this.entityTransformController}); @override Widget build(BuildContext context) { - return controller != null + return viewer != null ? Padding( padding: padding, child: EntityTransformMouseControllerWidget( transformController: entityTransformController, - child: FilamentGestureDetector( + child: ThermionGestureDetector( showControlOverlay: true, - controller: controller!.viewer, + controller: viewer!, child: ThermionWidget( - plugin: controller!, + viewer: viewer!, )))) : Container(); } diff --git a/examples/flutter/example/lib/main.dart b/examples/flutter/example/lib/main.dart index b5cbf62c..4ab80781 100644 --- a/examples/flutter/example/lib/main.dart +++ b/examples/flutter/example/lib/main.dart @@ -1,14 +1,10 @@ import 'dart:async'; import 'package:flutter/material.dart'; -import 'package:thermion_flutter/filament/widgets/debug/entity_list_widget.dart'; -import 'package:thermion_flutter_example/camera_matrix_overlay.dart'; +import 'package:thermion_flutter/thermion/widgets/debug/entity_list_widget.dart'; import 'package:thermion_flutter_example/menus/controller_menu.dart'; import 'package:thermion_flutter_example/example_viewport.dart'; -import 'package:thermion_dart/thermion_dart/entities/entity_transform_controller.dart'; import 'package:thermion_flutter_example/menus/scene_menu.dart'; import 'package:thermion_flutter/thermion_flutter.dart'; -import 'package:thermion_flutter_example/picker_result_widget.dart'; - const loadDefaultScene = bool.hasEnvironment('--load-default-scene'); @@ -38,8 +34,7 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { bodyMedium: TextStyle(fontSize: 12))), // showPerformanceOverlay: true, home: const Scaffold( - backgroundColor: Color(0x00000000), - body: ExampleWidget())); + backgroundColor: Color(0x00000000), body: ExampleWidget())); } } @@ -55,7 +50,7 @@ class ExampleWidget extends StatefulWidget { enum MenuType { controller, assets, camera, misc } class ExampleWidgetState extends State { - final _plugin = ThermionFlutterPlugin(); + ThermionViewer? _viewer; EdgeInsets _viewportMargin = EdgeInsets.zero; @@ -99,105 +94,103 @@ class ExampleWidgetState extends State { @override Widget build(BuildContext context) { - return FutureBuilder( - future: _plugin.initialized, - builder: (_, AsyncSnapshot initialized) { - var isInitialized = initialized.data == true; - - return Stack( - fit: StackFit.expand, - children: [ - if (isInitialized) - Positioned.fill( - child: ExampleViewport( - controller: isInitialized ? _plugin : null, - entityTransformController: _transformController, - padding: _viewportMargin, - keyboardFocusNode: _sharedFocusNode), + return Stack(fit: StackFit.expand, children: [ + if (_viewer != null) + Positioned.fill( + child: ExampleViewport( + viewer: _viewer!, + entityTransformController: _transformController, + padding: _viewportMargin, + keyboardFocusNode: _sharedFocusNode), + ), + Positioned( + bottom: 30, + left: 0, + right: 10, + height: 30, + child: Container( + height: 30, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30), + color: Colors.white.withOpacity(0.25), ), - Positioned( - bottom: 30, - left: 0, - right: 10, - height: 30, - child: Container( - height: 30, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(30), - color: Colors.white.withOpacity(0.25), - ), - padding: const EdgeInsets.symmetric(horizontal: 10), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - ControllerMenu( - sharedFocusNode: _sharedFocusNode, - controller: _plugin, - onToggleViewport: () { - setState(() { - _viewportMargin = - (_viewportMargin == EdgeInsets.zero) - ? const EdgeInsets.all(30) - : EdgeInsets.zero; - }); - }, - onControllerDestroyed: () {}, - onControllerCreated: () {}), - SceneMenu( - sharedFocusNode: _sharedFocusNode, - controller: _plugin, - ), - GestureDetector( - onTap: () async { - await _plugin.viewer.loadGlb( - 'assets/shapes/shapes.glb', - numInstances: 1); - }, - child: Container( - color: Colors.transparent, - child: const Text("shapes.glb"))), - const SizedBox(width: 5), - GestureDetector( - onTap: () async { - await _plugin.viewer.loadGlb('assets/1.glb'); - }, - child: Container( - color: Colors.transparent, - child: const Text("1.glb"))), - const SizedBox(width: 5), - GestureDetector( - onTap: () async { - await _plugin.viewer.loadGlb('assets/2.glb'); - }, - child: Container( - color: Colors.transparent, - child: const Text("2.glb"))), - const SizedBox(width: 5), - GestureDetector( - onTap: () async { - await _plugin.viewer.loadGlb('assets/3.glb'); - }, - child: Container( - color: Colors.transparent, - child: const Text("3.glb"))), - Expanded(child: Container()), - ]))), - if (isInitialized) ...[ - Positioned(top:10, left:10, width:200, height:200, child:Container( - child:EntityListWidget(controller: _plugin.viewer))), - // Padding( - // padding: const EdgeInsets.only(top: 10, left: 20, right: 20), - // child: ValueListenableBuilder( - // valueListenable: showProjectionMatrices, - // builder: (ctx, value, child) => CameraMatrixOverlay( - // controller: _plugin.viewer, showProjectionMatrices: value)), - // ), - // Align( - // alignment: Alignment.topRight, - // child: PickerResultWidget(controller: _plugin.viewer), - // ) - ] - ]); - }); + padding: const EdgeInsets.symmetric(horizontal: 10), + child: + Row(crossAxisAlignment: CrossAxisAlignment.center, children: [ + ViewerMenu( + sharedFocusNode: _sharedFocusNode, + viewer: _viewer, + onToggleViewport: () { + setState(() { + _viewportMargin = (_viewportMargin == EdgeInsets.zero) + ? const EdgeInsets.all(30) + : EdgeInsets.zero; + }); + }, + onViewerDestroyed: () { + setState(() { + _viewer = null; + }); + }, + onViewerCreated: (v) { + setState(() { + _viewer = v; + }); + }), + SceneMenu( + sharedFocusNode: _sharedFocusNode, + controller: _viewer, + ), + GestureDetector( + onTap: () async { + await _viewer! + .loadGlb('assets/shapes/shapes.glb', numInstances: 1); + }, + child: Container( + color: Colors.transparent, + child: const Text("shapes.glb"))), + const SizedBox(width: 5), + GestureDetector( + onTap: () async { + await _viewer!.loadGlb('assets/1.glb'); + }, + child: Container( + color: Colors.transparent, child: const Text("1.glb"))), + const SizedBox(width: 5), + GestureDetector( + onTap: () async { + await _viewer!.loadGlb('assets/2.glb'); + }, + child: Container( + color: Colors.transparent, child: const Text("2.glb"))), + const SizedBox(width: 5), + GestureDetector( + onTap: () async { + await _viewer!.loadGlb('assets/3.glb'); + }, + child: Container( + color: Colors.transparent, child: const Text("3.glb"))), + Expanded(child: Container()), + ]))), + if (_viewer != null) ...[ + Positioned( + top: 10, + left: 10, + width: 200, + height: 200, + child: Container(child: EntityListWidget(controller: _viewer!))), + // Padding( + // padding: const EdgeInsets.only(top: 10, left: 20, right: 20), + // child: ValueListenableBuilder( + // valueListenable: showProjectionMatrices, + // builder: (ctx, value, child) => CameraMatrixOverlay( + // controller: _viewer!, showProjectionMatrices: value)), + // ), + // Align( + // alignment: Alignment.topRight, + // child: PickerResultWidget(controller: _viewer!), + // ) + ] + ]); } } diff --git a/examples/flutter/example/lib/menus/asset_submenu.dart b/examples/flutter/example/lib/menus/asset_submenu.dart index 3ddc3d08..78705f9c 100644 --- a/examples/flutter/example/lib/menus/asset_submenu.dart +++ b/examples/flutter/example/lib/menus/asset_submenu.dart @@ -8,8 +8,8 @@ import 'package:vector_math/vector_math_64.dart' as v; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; class AssetSubmenu extends StatefulWidget { - final ThermionFlutterPlugin controller; - const AssetSubmenu({super.key, required this.controller}); + final ThermionViewer viewer; + const AssetSubmenu({super.key, required this.viewer}); @override State createState() => _AssetSubmenuState(); @@ -26,8 +26,8 @@ class _AssetSubmenuState extends State { MenuItemButton( closeOnActivate: false, onPressed: () async { - var entity = await widget.controller.viewer.getChildEntity( - widget.controller.viewer.scene.listEntities().last, "Cylinder"); + var entity = await widget.viewer.getChildEntity( + widget.viewer.scene.listEntities().last, "Cylinder"); await showDialog( context: context, builder: (BuildContext context) { @@ -39,8 +39,8 @@ class _AssetSubmenuState extends State { child: const Text('Find Cylinder entity by name')), MenuItemButton( onPressed: () async { - widget.controller.viewer.setPosition( - widget.controller.viewer.scene.listEntities().last, + widget.viewer.setPosition( + widget.viewer.scene.listEntities().last, 1.0, 1.0, -1.0); @@ -50,8 +50,8 @@ class _AssetSubmenuState extends State { MenuItemButton( onPressed: () async { final color = Colors.purple; - widget.controller.viewer.setMaterialColor( - widget.controller.viewer.scene.listEntities().last, + widget.viewer.setMaterialColor( + widget.viewer.scene.listEntities().last, "Cone", 0, color.red / 255.0, @@ -85,14 +85,14 @@ class _AssetSubmenuState extends State { -1.0, ]; var indices = [0, 1, 2, 2, 3, 0]; - var geom = await widget.controller.viewer.createGeometry( + var geom = await widget.viewer.createGeometry( verts, indices, materialPath: "asset://assets/solidcolor.filamat"); }, child: const Text("Quad")), MenuItemButton( onPressed: () async { - await widget.controller.viewer.createGeometry([ + await widget.viewer.createGeometry([ 0, 0, 0, @@ -118,14 +118,14 @@ class _AssetSubmenuState extends State { _geometrySubmenu(), MenuItemButton( onPressed: () async { - await widget.controller.viewer.addLight( + await widget.viewer.addLight( LightType.DIRECTIONAL, 6500, 100000, 0, 1, 0, 0, -1, 0); }, child: const Text("Add directional light"), ), MenuItemButton( onPressed: () async { - await widget.controller.viewer.addLight( + await widget.viewer.addLight( LightType.POINT, 6500, 100000, 0, 1, 0, 0, -1, 0, falloffRadius: 1.0); }, @@ -133,7 +133,7 @@ class _AssetSubmenuState extends State { ), MenuItemButton( onPressed: () async { - await widget.controller.viewer.addLight( + await widget.viewer.addLight( LightType.SPOT, 6500, 1000000, 0, 0, 0, 0, 1, 0, spotLightConeInner: 0.1, spotLightConeOuter: 0.4, @@ -143,26 +143,26 @@ class _AssetSubmenuState extends State { ), MenuItemButton( onPressed: () async { - await widget.controller.viewer.clearLights(); + await widget.viewer.clearLights(); }, child: const Text("Clear lights"), ), MenuItemButton( onPressed: () { final color = const Color(0xAA73C9FA); - widget.controller.viewer.setBackgroundColor(color.red / 255.0, + widget.viewer.setBackgroundColor(color.red / 255.0, color.green / 255.0, color.blue / 255.0, 1.0); }, child: const Text("Set background color")), MenuItemButton( onPressed: () { - widget.controller.viewer + widget.viewer .setBackgroundImage('assets/background.ktx'); }, child: const Text("Load background image")), MenuItemButton( onPressed: () { - widget.controller.viewer.setBackgroundImage( + widget.viewer.setBackgroundImage( 'assets/background.ktx', fillHeight: true); }, @@ -170,9 +170,9 @@ class _AssetSubmenuState extends State { MenuItemButton( onPressed: () { if (ExampleWidgetState.hasSkybox) { - widget.controller.viewer.removeSkybox(); + widget.viewer.removeSkybox(); } else { - widget.controller.viewer + widget.viewer .loadSkybox('assets/default_env/default_env_skybox.ktx'); } ExampleWidgetState.hasSkybox = !ExampleWidgetState.hasSkybox; @@ -182,18 +182,18 @@ class _AssetSubmenuState extends State { : 'Load skybox')), MenuItemButton( onPressed: () { - widget.controller.viewer + widget.viewer .loadIbl('assets/default_env/default_env_ibl.ktx'); }, child: const Text('Load IBL')), MenuItemButton( onPressed: () { - widget.controller.viewer.removeIbl(); + widget.viewer.removeIbl(); }, child: const Text('Remove IBL')), MenuItemButton( onPressed: () async { - await widget.controller.viewer.clearEntities(); + await widget.viewer.clearEntities(); }, child: const Text('Clear assets')), ], diff --git a/examples/flutter/example/lib/menus/camera_submenu.dart b/examples/flutter/example/lib/menus/camera_submenu.dart index 5113264e..30033684 100644 --- a/examples/flutter/example/lib/menus/camera_submenu.dart +++ b/examples/flutter/example/lib/menus/camera_submenu.dart @@ -8,8 +8,8 @@ import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; import 'package:thermion_flutter_example/main.dart'; class CameraSubmenu extends StatefulWidget { - final ThermionFlutterPlugin controller; - const CameraSubmenu({super.key, required this.controller}); + final ThermionViewer viewer; + const CameraSubmenu({super.key, required this.viewer}); @override State createState() => _CameraSubmenuState(); @@ -22,10 +22,10 @@ class _CameraSubmenuState extends State { @override void initState() { super.initState(); - widget.controller.viewer.initialized.then((_) { - widget.controller.viewer.getCameraCullingNear().then((v) { + widget.viewer.initialized.then((_) { + widget.viewer.getCameraCullingNear().then((v) { _near = v; - widget.controller.viewer.getCameraCullingFar().then((v) { + widget.viewer.getCameraCullingFar().then((v) { _far = v; setState(() {}); }); @@ -56,7 +56,7 @@ class _CameraSubmenuState extends State { menuChildren: [1.0, 7.0, 14.0, 28.0, 56.0] .map((v) => MenuItemButton( onPressed: () { - widget.controller.viewer.setCameraFocalLength(v); + widget.viewer.setCameraFocalLength(v); }, child: Text( v.toStringAsFixed(2), @@ -71,7 +71,7 @@ class _CameraSubmenuState extends State { _near = v; print("Setting camera culling to $_near $_far!"); - widget.controller.viewer.setCameraCulling(_near!, _far!); + widget.viewer.setCameraCulling(_near!, _far!); }, child: Text( v.toStringAsFixed(2), @@ -85,7 +85,7 @@ class _CameraSubmenuState extends State { onPressed: () { _far = v; print("Setting camera culling to $_near! $_far"); - widget.controller.viewer.setCameraCulling(_near!, _far!); + widget.viewer.setCameraCulling(_near!, _far!); }, child: Text( v.toStringAsFixed(2), @@ -95,21 +95,21 @@ class _CameraSubmenuState extends State { child: const Text("Set far")), MenuItemButton( onPressed: () async { - widget.controller.viewer.setCameraPosition(1.0, 1.0, -1.0); + widget.viewer.setCameraPosition(1.0, 1.0, -1.0); }, child: const Text('Set position to 1, 1, -1 (leave rotation as-is)'), ), MenuItemButton( onPressed: () async { - widget.controller.viewer.setCameraPosition(0.0, 0.0, 0.0); - widget.controller.viewer.setCameraRotation( + widget.viewer.setCameraPosition(0.0, 0.0, 0.0); + widget.viewer.setCameraRotation( v.Quaternion.axisAngle(v.Vector3(0, 0.0, 1.0), 0.0)); }, child: const Text('Move to 0,0,0, facing towards 0,0,-1'), ), MenuItemButton( onPressed: () { - widget.controller.viewer.setCameraRotation( + widget.viewer.setCameraRotation( v.Quaternion.axisAngle(v.Vector3(0, 1, 0), pi / 4)); }, child: const Text("Rotate camera 45 degrees around y axis"), @@ -118,7 +118,7 @@ class _CameraSubmenuState extends State { onPressed: () { ExampleWidgetState.frustumCulling = !ExampleWidgetState.frustumCulling; - widget.controller.viewer + widget.viewer .setViewFrustumCulling(ExampleWidgetState.frustumCulling); }, child: Text( @@ -128,7 +128,7 @@ class _CameraSubmenuState extends State { closeOnActivate: false, onPressed: () async { var projMatrix = - await widget.controller.viewer.getCameraProjectionMatrix(); + await widget.viewer.getCameraProjectionMatrix(); await showDialog( context: context, builder: (ctx) { @@ -147,7 +147,7 @@ class _CameraSubmenuState extends State { menuChildren: ManipulatorMode.values.map((mm) { return MenuItemButton( onPressed: () { - widget.controller.viewer.setCameraManipulatorOptions( + widget.viewer.setCameraManipulatorOptions( mode: mm, orbitSpeedX: ExampleWidgetState.orbitSpeedX, orbitSpeedY: ExampleWidgetState.orbitSpeedY, @@ -169,7 +169,7 @@ class _CameraSubmenuState extends State { return MenuItemButton( onPressed: () { ExampleWidgetState.zoomSpeed = speed; - widget.controller.viewer.setCameraManipulatorOptions( + widget.viewer.setCameraManipulatorOptions( orbitSpeedX: ExampleWidgetState.orbitSpeedX, orbitSpeedY: ExampleWidgetState.orbitSpeedY, zoomSpeed: ExampleWidgetState.zoomSpeed); @@ -191,7 +191,7 @@ class _CameraSubmenuState extends State { onPressed: () { ExampleWidgetState.orbitSpeedX = speed; ExampleWidgetState.orbitSpeedY = speed; - widget.controller.viewer.setCameraManipulatorOptions( + widget.viewer.setCameraManipulatorOptions( orbitSpeedX: ExampleWidgetState.orbitSpeedX, orbitSpeedY: ExampleWidgetState.orbitSpeedY, zoomSpeed: ExampleWidgetState.zoomSpeed); diff --git a/examples/flutter/example/lib/menus/controller_menu.dart b/examples/flutter/example/lib/menus/controller_menu.dart index 2ba71624..08bd89d4 100644 --- a/examples/flutter/example/lib/menus/controller_menu.dart +++ b/examples/flutter/example/lib/menus/controller_menu.dart @@ -5,29 +5,31 @@ import 'package:flutter/widgets.dart'; import 'package:thermion_flutter/thermion_flutter.dart'; -class ControllerMenu extends StatefulWidget { - final ThermionFlutterPlugin controller; +class ViewerMenu extends StatefulWidget { + final ThermionViewer? viewer; final void Function() onToggleViewport; - final void Function() onControllerCreated; - final void Function() onControllerDestroyed; + final void Function(ThermionViewer viewer) onViewerCreated; + final void Function() onViewerDestroyed; final FocusNode sharedFocusNode; - - ControllerMenu( - {required this.controller, - required this.onControllerCreated, - required this.onControllerDestroyed, + ViewerMenu( + { + required this.viewer, + required this.onViewerCreated, + required this.onViewerDestroyed, required this.sharedFocusNode, required this.onToggleViewport}); @override - State createState() => _ControllerMenuState(); + State createState() => _ViewerMenuState(); } -class _ControllerMenuState extends State { - void _createController({String? uberArchivePath}) async { - widget.controller.initialize(uberArchivePath: uberArchivePath); - widget.onControllerCreated(); +class _ViewerMenuState extends State { + void _createViewer({String? uberArchivePath}) async { + var viewer = await ThermionFlutterPlugin.createViewer( + uberArchivePath: uberArchivePath); + await viewer.initialized; + widget.onViewerCreated(viewer); } @override @@ -36,7 +38,7 @@ class _ControllerMenuState extends State { } @override - void didUpdateWidget(ControllerMenu oldWidget) { + void didUpdateWidget(ViewerMenu oldWidget) { super.didUpdateWidget(oldWidget); } @@ -50,14 +52,14 @@ class _ControllerMenuState extends State { child: const Text("Create ThermionFlutterPlugin (default ubershader)"), onPressed: () { - _createController(); + _createViewer(); }, ), MenuItemButton( child: const Text( "Create ThermionFlutterPlugin (custom ubershader - lit opaque only)"), onPressed: () { - _createController( + _createViewer( uberArchivePath: Platform.isWindows ? "assets/lit_opaque_32.uberz" : Platform.isMacOS @@ -73,8 +75,8 @@ class _ControllerMenuState extends State { MenuItemButton( child: const Text("Destroy viewer"), onPressed: () async { - widget.controller.dispose(); - widget.onControllerDestroyed(); + widget.viewer!.dispose(); + widget.onViewerDestroyed(); setState(() {}); }, ) @@ -89,8 +91,7 @@ class _ControllerMenuState extends State { onPressed: widget.onToggleViewport, ) ], - builder: - (BuildContext context, MenuController controller, Widget? child) { + builder: (BuildContext context, MenuController controller, Widget? child) { return TextButton( onPressed: () { if (controller.isOpen) { @@ -99,7 +100,7 @@ class _ControllerMenuState extends State { controller.open(); } }, - child: const Text("Controller / Viewer"), + child: const Text("Viewer / Viewer"), ); }); } diff --git a/examples/flutter/example/lib/menus/rendering_submenu.dart b/examples/flutter/example/lib/menus/rendering_submenu.dart index 0a6ced87..c075c0ad 100644 --- a/examples/flutter/example/lib/menus/rendering_submenu.dart +++ b/examples/flutter/example/lib/menus/rendering_submenu.dart @@ -4,9 +4,9 @@ import 'package:thermion_flutter_example/main.dart'; import 'package:thermion_dart/thermion_dart/thermion_viewer.dart'; class RenderingSubmenu extends StatefulWidget { - final ThermionFlutterPlugin controller; + final ThermionViewer viewer; - const RenderingSubmenu({super.key, required this.controller}); + const RenderingSubmenu({super.key, required this.viewer}); @override State createState() => _RenderingSubmenuState(); @@ -19,14 +19,14 @@ class _RenderingSubmenuState extends State { menuChildren: [ MenuItemButton( onPressed: () { - widget.controller.viewer.render(); + widget.viewer.render(); }, child: const Text("Render single frame"), ), MenuItemButton( onPressed: () { ExampleWidgetState.rendering = !ExampleWidgetState.rendering; - widget.controller.viewer.setRendering(ExampleWidgetState.rendering); + widget.viewer.setRendering(ExampleWidgetState.rendering); }, child: Text( "Set continuous rendering to ${!ExampleWidgetState.rendering}"), @@ -35,14 +35,14 @@ class _RenderingSubmenuState extends State { onPressed: () { ExampleWidgetState.framerate = ExampleWidgetState.framerate == 60 ? 30 : 60; - widget.controller.viewer.setFrameRate(ExampleWidgetState.framerate); + widget.viewer.setFrameRate(ExampleWidgetState.framerate); }, child: Text( "Toggle framerate (currently ${ExampleWidgetState.framerate}) "), ), MenuItemButton( onPressed: () { - widget.controller.viewer.setToneMapping(ToneMapper.LINEAR); + widget.viewer.setToneMapping(ToneMapper.LINEAR); }, child: const Text("Set tone mapping to linear"), ), @@ -50,7 +50,7 @@ class _RenderingSubmenuState extends State { onPressed: () { ExampleWidgetState.postProcessing = !ExampleWidgetState.postProcessing; - widget.controller.viewer + widget.viewer .setPostProcessing(ExampleWidgetState.postProcessing); }, child: Text( @@ -60,7 +60,7 @@ class _RenderingSubmenuState extends State { onPressed: () { ExampleWidgetState.antiAliasingMsaa = !ExampleWidgetState.antiAliasingMsaa; - widget.controller.viewer.setAntiAliasing( + widget.viewer.setAntiAliasing( ExampleWidgetState.antiAliasingMsaa, ExampleWidgetState.antiAliasingFxaa, ExampleWidgetState.antiAliasingTaa); @@ -72,7 +72,7 @@ class _RenderingSubmenuState extends State { onPressed: () { ExampleWidgetState.antiAliasingFxaa = !ExampleWidgetState.antiAliasingFxaa; - widget.controller.viewer.setAntiAliasing( + widget.viewer.setAntiAliasing( ExampleWidgetState.antiAliasingMsaa, ExampleWidgetState.antiAliasingFxaa, ExampleWidgetState.antiAliasingTaa); @@ -83,7 +83,7 @@ class _RenderingSubmenuState extends State { MenuItemButton( onPressed: () { ExampleWidgetState.recording = !ExampleWidgetState.recording; - widget.controller.viewer.setRecording(ExampleWidgetState.recording); + widget.viewer.setRecording(ExampleWidgetState.recording); }, child: Text( "Turn recording ${ExampleWidgetState.recording ? "OFF" : "ON"}) "), diff --git a/examples/flutter/example/lib/menus/scene_menu.dart b/examples/flutter/example/lib/menus/scene_menu.dart index fbd1bf71..3a5e1d9b 100644 --- a/examples/flutter/example/lib/menus/scene_menu.dart +++ b/examples/flutter/example/lib/menus/scene_menu.dart @@ -6,7 +6,7 @@ import 'package:thermion_flutter_example/menus/camera_submenu.dart'; import 'package:thermion_flutter_example/menus/rendering_submenu.dart'; class SceneMenu extends StatefulWidget { - final ThermionFlutterPlugin? controller; + final ThermionViewer? controller; final FocusNode sharedFocusNode; const SceneMenu( @@ -37,11 +37,11 @@ class _SceneMenuState extends State { ? [] : [ RenderingSubmenu( - controller: widget.controller!, + viewer: widget.controller!, ), - AssetSubmenu(controller: widget.controller!), + AssetSubmenu(viewer: widget.controller!), CameraSubmenu( - controller: widget.controller!, + viewer: widget.controller!, ), ], builder: diff --git a/examples/flutter/example/macos/Podfile.lock b/examples/flutter/example/macos/Podfile.lock deleted file mode 100644 index 94fb2021..00000000 --- a/examples/flutter/example/macos/Podfile.lock +++ /dev/null @@ -1,29 +0,0 @@ -PODS: - - FlutterMacOS (1.0.0) - - path_provider_foundation (0.0.1): - - Flutter - - FlutterMacOS - - thermion_flutter (0.0.1): - - FlutterMacOS - -DEPENDENCIES: - - FlutterMacOS (from `Flutter/ephemeral`) - - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - - thermion_flutter (from `Flutter/ephemeral/.symlinks/plugins/thermion_flutter/macos`) - -EXTERNAL SOURCES: - FlutterMacOS: - :path: Flutter/ephemeral - path_provider_foundation: - :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin - thermion_flutter: - :path: Flutter/ephemeral/.symlinks/plugins/thermion_flutter/macos - -SPEC CHECKSUMS: - FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 - thermion_flutter: e4895ade6b14d9efb6e17ed2436e89dbb87fa998 - -PODFILE CHECKSUM: 1888651be91a8ad58692c1add9ce24279fd4e950 - -COCOAPODS: 1.15.2 diff --git a/examples/flutter/example/pubspec.yaml b/examples/flutter/example/pubspec.yaml index 218dc262..2f10f80c 100644 --- a/examples/flutter/example/pubspec.yaml +++ b/examples/flutter/example/pubspec.yaml @@ -13,9 +13,22 @@ dependencies: sdk: flutter path_provider: thermion_flutter: + path: ../../../thermion_flutter/thermion_flutter cupertino_icons: ^1.0.2 web: +dependency_overrides: + thermion_flutter: + path: ../../../thermion_flutter/thermion_flutter + thermion_flutter_platform_interface: + path: ../../../thermion_flutter/thermion_flutter_platform_interface + thermion_flutter_ffi: + path: ../../../thermion_flutter/thermion_flutter_ffi + thermion_flutter_web: + path: ../../../thermion_flutter/thermion_flutter_web + thermion_dart: + path: ../../../thermion_dart + dev_dependencies: flutter_test: sdk: flutter diff --git a/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart b/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart index efb90338..d48d5747 100644 --- a/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart +++ b/thermion_flutter/thermion_flutter/lib/thermion_flutter.dart @@ -3,4 +3,5 @@ library thermion_flutter; export 'thermion/thermion_flutter_plugin.dart'; export 'thermion/widgets/thermion_widget.dart'; export 'thermion/widgets/camera/gestures/thermion_gesture_detector.dart'; + export 'package:thermion_dart/thermion_dart.dart';