diff --git a/thermion_dart/lib/src/utils/src/axis.dart b/thermion_dart/lib/src/utils/src/axis.dart new file mode 100644 index 00000000..6c9226e4 --- /dev/null +++ b/thermion_dart/lib/src/utils/src/axis.dart @@ -0,0 +1,44 @@ +import 'dart:typed_data'; + +import 'package:vector_math/vector_math_64.dart'; + +import '../../viewer/viewer.dart'; + +class Axis { + final ThermionViewer _viewer; + final ThermionEntity xAxis; + final ThermionEntity yAxis; + final ThermionEntity zAxis; + + Axis._(this.xAxis, this.yAxis, this.zAxis, this._viewer); + + static Future create(ThermionViewer viewer) async { + final xAxis = await viewer!.createGeometry( + Geometry(Float32List.fromList([0, 0, 0, 10, 0, 0]), [0, 1], + primitiveType: PrimitiveType.LINES), + materialInstance: await viewer!.createUnlitMaterialInstance()); + final yAxis = await viewer!.createGeometry( + Geometry(Float32List.fromList([0, 0, 0, 0, 10, 0]), [0, 1], + primitiveType: PrimitiveType.LINES), + materialInstance: await viewer!.createUnlitMaterialInstance()); + final zAxis = await viewer!.createGeometry( + Geometry(Float32List.fromList([0, 0, 0, 0, 0, 10]), [0, 1], + primitiveType: PrimitiveType.LINES), + materialInstance: await viewer!.createUnlitMaterialInstance()); + + await viewer!.setMaterialPropertyFloat4( + xAxis, "baseColorFactor", 0, 1.0, 0.0, 0.0, 1.0); + await viewer!.setMaterialPropertyFloat4( + yAxis, "baseColorFactor", 0, 0.0, 1.0, 0.0, 1.0); + await viewer!.setMaterialPropertyFloat4( + zAxis, "baseColorFactor", 0, 0.0, 0.0, 1.0, 1.0); + return Axis._(xAxis, yAxis, zAxis, viewer); + } + + Future setTransform(Matrix4 transform) async { + await _viewer.setTransform(xAxis, transform); + await _viewer.setTransform(yAxis, transform); + await _viewer.setTransform(zAxis, transform); + + } +} diff --git a/thermion_dart/lib/src/utils/camera_orientation.dart b/thermion_dart/lib/src/utils/src/camera_orientation.dart similarity index 100% rename from thermion_dart/lib/src/utils/camera_orientation.dart rename to thermion_dart/lib/src/utils/src/camera_orientation.dart diff --git a/thermion_dart/lib/src/utils/dart_resources.dart b/thermion_dart/lib/src/utils/src/dart_resources.dart similarity index 93% rename from thermion_dart/lib/src/utils/dart_resources.dart rename to thermion_dart/lib/src/utils/src/dart_resources.dart index 1f3143b8..c4c5278d 100644 --- a/thermion_dart/lib/src/utils/dart_resources.dart +++ b/thermion_dart/lib/src/utils/src/dart_resources.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:ffi/ffi.dart'; -import '../viewer/src/ffi/src/thermion_dart.g.dart'; +import '../../viewer/src/ffi/src/thermion_dart.g.dart'; class DartResourceLoader { static final _assets = {}; diff --git a/thermion_dart/lib/src/utils/geometry.dart b/thermion_dart/lib/src/utils/src/geometry.dart similarity index 99% rename from thermion_dart/lib/src/utils/geometry.dart rename to thermion_dart/lib/src/utils/src/geometry.dart index 1da4cafe..2e70ff90 100644 --- a/thermion_dart/lib/src/utils/geometry.dart +++ b/thermion_dart/lib/src/utils/src/geometry.dart @@ -1,7 +1,7 @@ import 'dart:math'; import 'dart:typed_data'; -import '../../thermion_dart.dart'; +import '../../../thermion_dart.dart'; class GeometryHelper { static Geometry sphere({bool normals = true, bool uvs = true}) { diff --git a/thermion_dart/lib/src/utils/gizmo.dart b/thermion_dart/lib/src/utils/src/gizmo.dart similarity index 100% rename from thermion_dart/lib/src/utils/gizmo.dart rename to thermion_dart/lib/src/utils/src/gizmo.dart diff --git a/thermion_dart/lib/src/utils/matrix.dart b/thermion_dart/lib/src/utils/src/matrix.dart similarity index 100% rename from thermion_dart/lib/src/utils/matrix.dart rename to thermion_dart/lib/src/utils/src/matrix.dart diff --git a/thermion_dart/lib/src/utils/utils.dart b/thermion_dart/lib/src/utils/utils.dart new file mode 100644 index 00000000..33016b9c --- /dev/null +++ b/thermion_dart/lib/src/utils/utils.dart @@ -0,0 +1,4 @@ +library; + +export 'src/geometry.dart'; +export 'src/axis.dart'; diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_camera.dart b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_camera.dart index e10c6bd0..365fe9fd 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_camera.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_camera.dart @@ -2,7 +2,7 @@ import 'dart:ffi'; import 'package:vector_math/vector_math_64.dart'; -import '../../../../utils/matrix.dart'; +import '../../../../utils/src/matrix.dart'; import '../../thermion_viewer_base.dart'; import 'thermion_dart.g.dart' as g; diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_gizmo.dart b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_gizmo.dart index 0ff2b8a6..2113ff1e 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/ffi_gizmo.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/ffi_gizmo.dart @@ -3,7 +3,7 @@ import 'dart:ffi'; import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_dart.g.dart'; -import '../../../../utils/gizmo.dart'; +import '../../../../utils/src/gizmo.dart'; import '../../../viewer.dart'; class FFIGizmo extends BaseGizmo {