Compare commits
8 Commits
thermion_d
...
thermion_f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8c6c33269 | ||
|
|
6e5627f90e | ||
|
|
1921007fc6 | ||
|
|
7a362411b1 | ||
|
|
e95dfe4671 | ||
|
|
e7b79bb6b9 | ||
|
|
59bc309f5b | ||
|
|
d2fb40f317 |
43
CHANGELOG.md
43
CHANGELOG.md
@@ -3,6 +3,49 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||
|
||||
## 2024-07-11
|
||||
|
||||
### Changes
|
||||
|
||||
---
|
||||
|
||||
Packages with breaking changes:
|
||||
|
||||
- There are no breaking changes in this release.
|
||||
|
||||
Packages with other changes:
|
||||
|
||||
- [`thermion_dart` - `v0.1.2`](#thermion_dart---v012)
|
||||
- [`thermion_flutter_ffi` - `v0.1.0+10`](#thermion_flutter_ffi---v01010)
|
||||
- [`thermion_flutter_web` - `v0.0.2`](#thermion_flutter_web---v002)
|
||||
- [`thermion_flutter` - `v0.1.1+11`](#thermion_flutter---v01111)
|
||||
- [`thermion_flutter_platform_interface` - `v0.1.0+10`](#thermion_flutter_platform_interface---v01010)
|
||||
|
||||
Packages with dependency updates only:
|
||||
|
||||
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
|
||||
|
||||
- `thermion_flutter` - `v0.1.1+11`
|
||||
- `thermion_flutter_platform_interface` - `v0.1.0+10`
|
||||
|
||||
---
|
||||
|
||||
#### `thermion_dart` - `v0.1.2`
|
||||
|
||||
- **FIX**: manually remove leading slash for compiler path on Windows when building for Android.
|
||||
- **FIX**: web/JS bool checks need to compare to int.
|
||||
- **FIX**: shadow JS<->WASM bridge methods.
|
||||
- **FEAT**: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths.
|
||||
|
||||
#### `thermion_flutter_ffi` - `v0.1.0+10`
|
||||
|
||||
- **FIX**: web/JS bool checks need to compare to int.
|
||||
|
||||
#### `thermion_flutter_web` - `v0.0.2`
|
||||
|
||||
- **FEAT**: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths.
|
||||
|
||||
|
||||
## 2024-07-04
|
||||
|
||||
### Changes
|
||||
|
||||
@@ -40,7 +40,7 @@ and change the minimum deployment target to 13.0:
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Click to open Windows instructions">
|
||||
See the [/windows](/Windows) page for steps needed to build on Windows.
|
||||
See the [/windows](/windows) page for steps needed to build on Windows.
|
||||
</Accordion>
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
## 0.1.2
|
||||
|
||||
- **FIX**: manually remove leading slash for compiler path on Windows when building for Android.
|
||||
- **FIX**: web/JS bool checks need to compare to int.
|
||||
- **FIX**: shadow JS<->WASM bridge methods.
|
||||
- **FEAT**: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths.
|
||||
|
||||
## 0.1.1+5
|
||||
|
||||
- Bump "thermion_dart" to `0.1.1+5`.
|
||||
|
||||
@@ -176,9 +176,17 @@ void main(List<String> args) async {
|
||||
Architecture.ia32 => "i686-linux-android",
|
||||
_ => throw FormatException('Invalid')
|
||||
};
|
||||
var ndkRoot = File(config.cCompiler.compiler!.path).parent.parent.path;
|
||||
|
||||
var compilerPath = config.cCompiler.compiler!.path;
|
||||
|
||||
if(Platform.isWindows && compilerPath.startsWith("/")) {
|
||||
compilerPath = compilerPath.substring(1);
|
||||
}
|
||||
|
||||
var ndkRoot = File(compilerPath).parent.parent.uri.toFilePath(windows:true);
|
||||
|
||||
var stlPath =
|
||||
File("$ndkRoot/sysroot/usr/lib/${archExtension}/libc++_shared.so");
|
||||
File([ndkRoot, "sysroot", "usr", "lib", archExtension, "libc++_shared.so"].join(Platform.pathSeparator));
|
||||
output.addAsset(NativeCodeAsset(
|
||||
package: "thermion_dart",
|
||||
name: "libc++_shared.so",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
library thermion_flutter_js;
|
||||
|
||||
import 'dart:js_interop';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:thermion_dart/thermion_dart/compatibility/web/interop/thermion_viewer_js_shim.dart';
|
||||
|
||||
import 'package:vector_math/vector_math_64.dart' as v64;
|
||||
@@ -21,6 +22,7 @@ import 'package:vector_math/vector_math_64.dart';
|
||||
///
|
||||
@JSExport()
|
||||
class ThermionViewerJSDartBridge {
|
||||
final _logger = Logger("ThermionViewerJSDartBridge");
|
||||
final ThermionViewer viewer;
|
||||
|
||||
ThermionViewerJSDartBridge(this.viewer);
|
||||
@@ -76,7 +78,7 @@ class ThermionViewerJSDartBridge {
|
||||
|
||||
@JSExport()
|
||||
JSPromise loadIbl(String lightingPath, double intensity) {
|
||||
print("Loading IBL from $lightingPath with intensity $intensity");
|
||||
_logger.info("Loading IBL from $lightingPath with intensity $intensity");
|
||||
return viewer.loadIbl(lightingPath, intensity: intensity).toJS;
|
||||
}
|
||||
|
||||
@@ -130,12 +132,12 @@ class ThermionViewerJSDartBridge {
|
||||
|
||||
@JSExport()
|
||||
JSPromise<JSNumber> loadGlb(String path, {int numInstances = 1}) {
|
||||
print("Loading GLB from path $path with numInstances $numInstances");
|
||||
_logger.info("Loading GLB from path $path with numInstances $numInstances");
|
||||
return viewer
|
||||
.loadGlb(path, numInstances: numInstances)
|
||||
.then((entity) => entity.toJS)
|
||||
.catchError((err) {
|
||||
print("Error: $err");
|
||||
_logger.info("Error: $err");
|
||||
}).toJS;
|
||||
}
|
||||
|
||||
@@ -253,13 +255,13 @@ class ThermionViewerJSDartBridge {
|
||||
targetMeshNames: targetMeshNamesDart,
|
||||
)
|
||||
.onError((err, st) {
|
||||
print("ERROR SETTING MORPH ANIMATION DATA : $err\n$st");
|
||||
_logger.severe("ERROR SETTING MORPH ANIMATION DATA : $err\n$st");
|
||||
return null;
|
||||
});
|
||||
return result.toJS;
|
||||
} catch (err, st) {
|
||||
print(err);
|
||||
print(st);
|
||||
_logger.severe(err);
|
||||
_logger.severe(st);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
@@ -618,7 +620,7 @@ class ThermionViewerJSDartBridge {
|
||||
)
|
||||
.then((entities) => entities.map((entity) => entity.toJS).toList().toJS)
|
||||
.onError((e, st) async {
|
||||
print("Error : $e\n$st");
|
||||
_logger.severe("Error : $e\n$st");
|
||||
return <JSNumber>[].toJS;
|
||||
}).toJS;
|
||||
}
|
||||
@@ -632,7 +634,7 @@ class ThermionViewerJSDartBridge {
|
||||
)
|
||||
.then((entity) => entity.toJS)
|
||||
.onError((e, st) async {
|
||||
print("Error getChildEntity : $e\n$st");
|
||||
_logger.severe("Error getChildEntity : $e\n$st");
|
||||
return 0.toJS;
|
||||
}).toJS;
|
||||
}
|
||||
@@ -720,4 +722,20 @@ class ThermionViewerJSDartBridge {
|
||||
{JSFunction? callback, bool affectsTransform = false}) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@JSExport()
|
||||
JSPromise setShadowsEnabled(bool enabled) {
|
||||
return viewer.setShadowsEnabled(enabled).toJS;
|
||||
}
|
||||
|
||||
@JSExport()
|
||||
JSPromise setShadowType(int shadowType) {
|
||||
return viewer.setShadowType(ShadowType.values[shadowType]).toJS;
|
||||
}
|
||||
|
||||
@JSExport()
|
||||
JSPromise setSoftShadowOptions(
|
||||
double penumbraScale, double penumbraRatioScale) {
|
||||
return viewer.setSoftShadowOptions(penumbraScale, penumbraRatioScale).toJS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:js_interop_unsafe';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:thermion_dart/thermion_dart/scene.dart';
|
||||
import 'package:thermion_dart/thermion_dart/thermion_viewer.dart';
|
||||
|
||||
@@ -15,6 +16,7 @@ import 'thermion_viewer_js_shim.dart';
|
||||
/// a corresponding Javascript shim implementation (see [ThermionViewerJSShim]).
|
||||
///
|
||||
class ThermionViewerJS implements ThermionViewer {
|
||||
final _logger = Logger("ThermionViewerJS");
|
||||
late final ThermionViewerJSShim _shim;
|
||||
|
||||
ThermionViewerJS.fromGlobalProperty(String globalPropertyName) {
|
||||
@@ -282,8 +284,8 @@ class ThermionViewerJS implements ThermionViewer {
|
||||
targetMeshNamesJS, animation.frameLengthInMs)
|
||||
.toDart;
|
||||
} catch (err, st) {
|
||||
print(err);
|
||||
print(st);
|
||||
_logger.severe(err);
|
||||
_logger.severe(st);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
@@ -829,7 +831,7 @@ class ThermionViewerJS implements ThermionViewer {
|
||||
|
||||
@override
|
||||
Future setShadowType(ShadowType shadowType) {
|
||||
return _shim.setShadowType(shadowType).toDart;
|
||||
return _shim.setShadowType(shadowType.index).toDart;
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -412,7 +412,7 @@ extension type ThermionViewerJSShim(JSObject _) implements JSObject {
|
||||
|
||||
@JS('setShadowType')
|
||||
external JSPromise setShadowType(
|
||||
ShadowType shadowType);
|
||||
int shadowType);
|
||||
|
||||
@JS('setSoftShadowOptions')
|
||||
external JSPromise setSoftShadowOptions(
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:js_interop_unsafe';
|
||||
import 'dart:math';
|
||||
import 'dart:typed_data' as td;
|
||||
import 'dart:typed_data';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:thermion_dart/thermion_dart/scene.dart';
|
||||
import 'package:web/web.dart';
|
||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||
@@ -35,19 +36,48 @@ extension type _EmscriptenModule(JSObject _) implements JSObject {
|
||||
|
||||
typedef ThermionViewerImpl = ThermionViewerWasm;
|
||||
|
||||
|
||||
///
|
||||
/// A [ThermionViewer] implementation that forwards calls to
|
||||
/// the (Emscripten-generated) ThermionDart JS module.
|
||||
/// A [ThermionViewer] implementation that forwards calls to the
|
||||
/// (Emscripten-generated) ThermionDart JS module.
|
||||
///
|
||||
class ThermionViewerWasm implements ThermionViewer {
|
||||
final _logger = Logger("ThermionViewerWasm");
|
||||
|
||||
late _EmscriptenModule _module;
|
||||
|
||||
bool _initialized = false;
|
||||
bool _rendering = false;
|
||||
|
||||
ThermionViewerWasm({JSObject? module, String moduleName = "thermion_dart"}) {
|
||||
_module = module as _EmscriptenModule? ?? window.getProperty<_EmscriptenModule>(moduleName.toJS);
|
||||
///
|
||||
/// Construct an instance of this class by explicitly passing the
|
||||
/// module instance via the [module] property, or by specifying [moduleName],
|
||||
/// being the name of the window property where the module has already been
|
||||
/// loaded.
|
||||
///
|
||||
/// Pass [assetPathPrefix] if you need to prepend a path to all asset paths
|
||||
/// (e.g. on Flutter where the asset directory /foo is actually shipped under
|
||||
/// the directory /assets/foo, you would construct this as:
|
||||
///
|
||||
/// final viewer = ThermionViewerWasm(assetPathPrefix:"/assets/")
|
||||
///
|
||||
ThermionViewerWasm(
|
||||
{JSObject? module,
|
||||
String moduleName = "thermion_dart",
|
||||
String? assetPathPrefix}) {
|
||||
_module = module as _EmscriptenModule? ??
|
||||
window.getProperty<_EmscriptenModule>(moduleName.toJS);
|
||||
if (assetPathPrefix != null) {
|
||||
_setAssetPathPrefix(assetPathPrefix);
|
||||
}
|
||||
}
|
||||
|
||||
void _setAssetPathPrefix(String assetPathPrefix) {
|
||||
_module.ccall(
|
||||
"thermion_dart_web_set_asset_path_prefix",
|
||||
"void",
|
||||
<JSString>["string".toJS].toJS,
|
||||
<JSAny>[assetPathPrefix.toJS].toJS,
|
||||
null);
|
||||
}
|
||||
|
||||
JSNumber? _viewer;
|
||||
@@ -785,7 +815,7 @@ class ThermionViewerWasm implements ThermionViewer {
|
||||
var meshEntity = meshEntities[i];
|
||||
|
||||
if (targetMeshNames?.contains(meshName) == false) {
|
||||
// print("Skipping $meshName, not contained in target");
|
||||
// _logger.info("Skipping $meshName, not contained in target");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -793,7 +823,7 @@ class ThermionViewerWasm implements ThermionViewer {
|
||||
|
||||
var meshMorphTargets = await getMorphTargetNames(entity, meshEntity);
|
||||
|
||||
print("Got mesh morph targets ${meshMorphTargets}");
|
||||
_logger.info("Got mesh morph targets ${meshMorphTargets}");
|
||||
|
||||
var intersection = animation.morphTargets
|
||||
.toSet()
|
||||
@@ -835,8 +865,9 @@ class ThermionViewerWasm implements ThermionViewer {
|
||||
// Copy the morph indices to WASM
|
||||
_module.writeArrayToMemory(
|
||||
idxList.buffer.asUint8List(idxList.offsetInBytes).toJS, idxPtr);
|
||||
|
||||
var result = _module.ccall(
|
||||
bool result = false;
|
||||
try {
|
||||
var jsResult = _module.ccall(
|
||||
"set_morph_animation",
|
||||
"bool",
|
||||
[
|
||||
@@ -857,13 +888,19 @@ class ThermionViewerWasm implements ThermionViewer {
|
||||
animation.numFrames.toJS,
|
||||
animation.frameLengthInMs.toJS
|
||||
].toJS,
|
||||
null) as JSBoolean;
|
||||
null);
|
||||
_logger.info("Got jsResult $jsResult");
|
||||
result = (jsResult as JSNumber).toDartInt == 1;
|
||||
} catch (err, st) {
|
||||
_logger.severe(err);
|
||||
_logger.severe(st);
|
||||
}
|
||||
|
||||
// Free the memory allocated in WASM
|
||||
_module._free(dataPtr);
|
||||
_module._free(idxPtr);
|
||||
|
||||
if (!result.toDart) {
|
||||
if (!result) {
|
||||
throw Exception("Failed to set morph animation data for ${meshName}");
|
||||
}
|
||||
}
|
||||
@@ -1850,26 +1887,19 @@ class ThermionViewerWasm implements ThermionViewer {
|
||||
|
||||
@override
|
||||
Future setShadowType(ShadowType shadowType) async {
|
||||
_module.ccall(
|
||||
"set_shadow_type",
|
||||
"void",
|
||||
["void*".toJS, "int".toJS].toJS,
|
||||
[_viewer!, shadowType.index.toJS].toJS,
|
||||
null);
|
||||
_module.ccall("set_shadow_type", "void", ["void*".toJS, "int".toJS].toJS,
|
||||
[_viewer!, shadowType.index.toJS].toJS, null);
|
||||
}
|
||||
|
||||
@override
|
||||
Future setShadowsEnabled(bool enabled) async {
|
||||
_module.ccall(
|
||||
"set_shadows_enabled",
|
||||
"void",
|
||||
["void*".toJS, "bool".toJS].toJS,
|
||||
[_viewer!, enabled.toJS].toJS,
|
||||
null);
|
||||
_module.ccall("set_shadows_enabled", "void",
|
||||
["void*".toJS, "bool".toJS].toJS, [_viewer!, enabled.toJS].toJS, null);
|
||||
}
|
||||
|
||||
@override
|
||||
Future setSoftShadowOptions(double penumbraScale, double penumbraRatioScale) async {
|
||||
Future setSoftShadowOptions(
|
||||
double penumbraScale, double penumbraRatioScale) async {
|
||||
_module.ccall(
|
||||
"set_soft_shadow_options",
|
||||
"void",
|
||||
|
||||
@@ -15,37 +15,6 @@
|
||||
#include <emscripten/val.h>
|
||||
#include <emscripten/fetch.h>
|
||||
|
||||
class PendingCall
|
||||
{
|
||||
public:
|
||||
PendingCall()
|
||||
{
|
||||
}
|
||||
~PendingCall() {}
|
||||
|
||||
void Wait()
|
||||
{
|
||||
std::future<int32_t> accumulate_future = prom.get_future();
|
||||
std::cout << "Loaded asset from Flutter of length " << accumulate_future.get() << std::endl;
|
||||
}
|
||||
|
||||
void HandleResponse(void* data, int32_t length)
|
||||
{
|
||||
this->data = data;
|
||||
this->length = length;
|
||||
prom.set_value(length);
|
||||
}
|
||||
void* data = nullptr;
|
||||
int32_t length = 0;
|
||||
|
||||
private:
|
||||
std::mutex mutex_;
|
||||
std::condition_variable cv_;
|
||||
bool notified_ = false;
|
||||
std::promise<int32_t> prom;
|
||||
|
||||
};
|
||||
|
||||
using emscripten::val;
|
||||
|
||||
extern "C"
|
||||
@@ -60,8 +29,10 @@ extern "C"
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void thermion_filament_web_load_resource_callback(void* data, int32_t length, void* context) {
|
||||
((PendingCall*)context)->HandleResponse(data, length);
|
||||
std::string _assetPathPrefix;
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE void thermion_dart_web_set_asset_path_prefix(const char* prefix) {
|
||||
_assetPathPrefix = std::string(prefix);
|
||||
}
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE EMSCRIPTEN_WEBGL_CONTEXT_HANDLE thermion_dart_web_create_gl_context() {
|
||||
@@ -160,7 +131,7 @@ extern "C"
|
||||
// memcpy(data, request->data, request->numBytes);
|
||||
// emscripten_fetch_close(request);
|
||||
// return ResourceBuffer { data, (int32_t) request->numBytes, _lastResourceId } ;
|
||||
auto pathString = std::string(path);
|
||||
auto pathString = _assetPathPrefix + std::string(path);
|
||||
void* data = nullptr;
|
||||
int32_t numBytes = 0;
|
||||
|
||||
@@ -199,12 +170,10 @@ extern "C"
|
||||
EM_ASM({
|
||||
var filename = UTF8ToString($0);
|
||||
var data = new Uint8Array(HEAPU8.subarray($1, $1 + $2));
|
||||
console.log('Analyinzg /indexed');
|
||||
|
||||
// Ensure the '/indexed' directory exists
|
||||
if (!FS.analyzePath('/indexed').exists) {
|
||||
FS.mkdir('/indexed');
|
||||
console.log('Made dir /indexed');
|
||||
}
|
||||
|
||||
// Create all parent directories
|
||||
@@ -214,13 +183,10 @@ extern "C"
|
||||
currentPath += '/' + parts[i];
|
||||
if (!FS.analyzePath(currentPath).exists) {
|
||||
FS.mkdir(currentPath);
|
||||
console.log("Made dir " + currentPath);
|
||||
}
|
||||
}
|
||||
console.log('Writing file to /indexed/' + filename);
|
||||
// Write the file
|
||||
FS.writeFile('/indexed/' + filename, data);
|
||||
console.log('File written, syncing');
|
||||
|
||||
FS.syncfs(false, function (err) {
|
||||
if (err) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: thermion_dart
|
||||
description: 3D rendering toolkit for Dart.
|
||||
version: 0.1.1+5
|
||||
version: 0.1.2
|
||||
homepage: https://thermion.dev
|
||||
repository: https://github.com/nmfisher/thermion
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
## 0.1.1+11
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
## 0.1.1+10
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: thermion_flutter
|
||||
description: Flutter plugin for 3D rendering with the Thermion toolkit.
|
||||
version: 0.1.1+10
|
||||
version: 0.1.1+11
|
||||
homepage: https://thermion.dev
|
||||
repository: https://github.com/nmfisher/thermion
|
||||
|
||||
@@ -17,10 +17,10 @@ dependencies:
|
||||
plugin_platform_interface: ^2.0.0
|
||||
ffi: ^2.1.2
|
||||
animation_tools_dart: ^0.0.4
|
||||
thermion_dart: ^0.1.1+5
|
||||
thermion_flutter_platform_interface: ^0.1.0+9
|
||||
thermion_flutter_ffi: ^0.1.0+9
|
||||
thermion_flutter_web: ^0.0.1+9
|
||||
thermion_dart: ^0.1.2
|
||||
thermion_flutter_platform_interface: ^0.1.0+10
|
||||
thermion_flutter_ffi: ^0.1.0+10
|
||||
thermion_flutter_web: ^0.0.2
|
||||
logging: ^1.2.0
|
||||
|
||||
dev_dependencies:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
## 0.1.0+10
|
||||
|
||||
- **FIX**: web/JS bool checks need to compare to int.
|
||||
|
||||
## 0.1.0+9
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:thermion_dart/thermion_dart.dart';
|
||||
import 'package:thermion_dart/thermion_dart/thermion_viewer_ffi.dart';
|
||||
import 'package:thermion_flutter_platform_interface/thermion_flutter_platform_interface.dart';
|
||||
import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
///
|
||||
/// An implementation of [ThermionFlutterPlatform] that uses a Flutter platform
|
||||
@@ -13,6 +14,7 @@ import 'package:thermion_flutter_platform_interface/thermion_flutter_texture.dar
|
||||
///
|
||||
class ThermionFlutterFFI extends ThermionFlutterPlatform {
|
||||
final _channel = const MethodChannel("dev.thermion.flutter/event");
|
||||
final _logger = Logger("ThermionFlutterFFI");
|
||||
|
||||
ThermionViewerFFI? _viewer;
|
||||
|
||||
@@ -133,7 +135,7 @@ class ThermionFlutterFFI extends ThermionFlutterPlatform {
|
||||
final hardwareTextureId = result[1] as int?;
|
||||
final surfaceAddress = result[2] as int?;
|
||||
|
||||
print(
|
||||
_logger.info(
|
||||
"Created texture with flutter texture id ${flutterTextureId}, hardwareTextureId $hardwareTextureId and surfaceAddress $surfaceAddress");
|
||||
|
||||
_viewer?.viewportDimensions = (width.toDouble(), height.toDouble());
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: thermion_flutter_ffi
|
||||
description: An FFI interface for the thermion_flutter plugin (all platforms except web).
|
||||
repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter
|
||||
version: 0.1.0+9
|
||||
version: 0.1.0+10
|
||||
|
||||
environment:
|
||||
sdk: ">=3.3.0 <4.0.0"
|
||||
@@ -22,8 +22,8 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
plugin_platform_interface: ^2.1.0
|
||||
thermion_flutter_platform_interface: ^0.1.0+9
|
||||
thermion_dart: ^0.1.1+5
|
||||
thermion_flutter_platform_interface: ^0.1.0+10
|
||||
thermion_dart: ^0.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
## 0.1.0+10
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
## 0.1.0+9
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: thermion_flutter_platform_interface
|
||||
description: A common platform interface for the thermion_flutter plugin.
|
||||
repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter
|
||||
version: 0.1.0+9
|
||||
version: 0.1.0+10
|
||||
|
||||
environment:
|
||||
sdk: ">=3.3.0 <4.0.0"
|
||||
@@ -11,7 +11,7 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
plugin_platform_interface: ^2.1.0
|
||||
thermion_dart: ^0.1.1+5
|
||||
thermion_dart: ^0.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
## 0.0.2
|
||||
|
||||
- **FEAT**: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths.
|
||||
|
||||
## 0.0.1+9
|
||||
|
||||
- Update a dependency to the latest release.
|
||||
|
||||
@@ -35,7 +35,7 @@ class ThermionFlutterWebPlugin extends ThermionFlutterPlatform {
|
||||
var width = window.innerWidth;
|
||||
var height = window.innerHeight;
|
||||
|
||||
var viewer = ThermionViewerWasm();
|
||||
var viewer = ThermionViewerWasm(assetPathPrefix: "/assets/");
|
||||
await viewer.initialize(width, height, uberArchivePath: uberArchivePath);
|
||||
return viewer;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: thermion_flutter_web
|
||||
description: A web platform interface for the thermion_flutter plugin.
|
||||
repository: https://github.com/nmfisher/thermion_flutter/thermion_flutter
|
||||
version: 0.0.1+9
|
||||
version: 0.0.2
|
||||
|
||||
environment:
|
||||
sdk: ">=3.3.0 <4.0.0"
|
||||
@@ -20,8 +20,8 @@ dependencies:
|
||||
sdk: flutter
|
||||
plugin_platform_interface: ^2.1.0
|
||||
web: ^0.5.1
|
||||
thermion_dart: ^0.1.1+5
|
||||
thermion_flutter_platform_interface: ^0.1.0+9
|
||||
thermion_dart: ^0.1.2
|
||||
thermion_flutter_platform_interface: ^0.1.0+10
|
||||
flutter_web_plugins:
|
||||
sdk: flutter
|
||||
|
||||
|
||||
Reference in New Issue
Block a user