chore: move examples to separate repository
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4a1d72d69da8b933bde5453ef2000612b561f8ddfa536a7ad89288ef11eb876d
|
||||
size 1624
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fe0151ced8fd8609f9692f3d62dbd30890dada97cb6995572e37c7e7b4440d86
|
||||
size 21304
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0f8b793f6513cf83f80ce9c63c7b51d329908b1991f17ca642911634b15b32de
|
||||
size 34172
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2aafaedba913b3c5642907e4fc57f5fcd2f4f4deb0a5a6c9ad17ef2b0ae2ed1f
|
||||
size 1810780
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ea5425c972afb40de5b0c5caa1ae121c51592143245c4e8a39273ac26ca19d01
|
||||
size 232514
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f6d208315a0b37935face8f9b159ee3bdf44d3b95bcfdf441d1725f6c81d0faa
|
||||
size 543635
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e5f3a5f2deb2abd7382905a2fb483071f610152f1433eecc527dc8d8ded1c98b
|
||||
size 1680
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1c9fe38941e09e853ab8410a84a0336d0fc1e2733a4a2b8571e5b5e47b5fd30c
|
||||
size 876491
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e57477f5e57d6e3381051367dd05425327643c7bd19a972a1172275ecc675106
|
||||
size 1501226
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:999903752cd80ca12b074117942a7128c1c84d27edc8cc773bb15a7f7ddcdcb9
|
||||
size 197691
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d88568b3463f21a96400cd265286fbb26accdef3a11dbeb65e9faf824a441e4e
|
||||
size 3868939
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a34c5fdd0696d1679f5f0464f8fdfc5f012dc2be435046218158bed1bed0f7cb
|
||||
size 1369811
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8de472e97570c33f0945bb38e97fea2af779e972e21d0226145060ab3ec83fd2
|
||||
size 512354
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:df391e772b5ff04540d5187cdf01d5cb04adf661931b2ccbe8744909b0954100
|
||||
size 628316
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:20dec60f67ea38b14ac45ae2490ddd4bbf5c108f842e244a5fe3f90c7010cc7f
|
||||
size 468148
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a8b61da658f891a244ffba8a293b0b4dcf384893f99c6bcaa4ab653f981de853
|
||||
size 501824
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7b05a4cf63ea1c614a9385cdb902c62bad324eccbb87a6c9e3370da2b6f36f2d
|
||||
size 14565
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8e5567daf7a3ac83f6ebc04605f3605ac17c19a153b6b8aadd2596690209c34c
|
||||
size 2778518
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fd1207967131afbe2fa523c9f4bae1f6dbce1a8fdd0ebfad5ec0cf7ba6a66dc1
|
||||
size 5348302
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7729882e59bc227554d1b26ffd6494bbd37357ee37ac959fad2932b16d586f79
|
||||
size 825327
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3c8bd17cfddecede5a3fa9e1933ac6f309ce4cc6bc85d4122b9ae39b0ba2b0d8
|
||||
size 2990685
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7987620b2a90887fa1a0521bf72f84933a2eadca88965f47599204dd55dae62a
|
||||
size 3974850
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7acaed3775bb6246c266c8e3dcd803391a08a528b727781bf11559f016752f61
|
||||
size 3185146
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:573a3d39db8a109352d16a421aff316d37faeb52f6abf01d0ca72db279bde7d9
|
||||
size 5708074
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:13e867927da090fe696248e0d884087a7d4e310dca8315cd8d4d686b95db7aef
|
||||
size 17805
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3506c43687bf4bd441eef301b157761574c2edecab6c8af6b8e6a85b772abe15
|
||||
size 3713769
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c34919581290d71a541697454ef9200d3f693236e8e9ddac89b49fa83c3befd9
|
||||
size 3702691
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7fe00edcc79fb3266f7fe61ddb3fbf08f425b731985af7543bc5b677414cbf19
|
||||
size 4591738
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c6f75cb920285d4b0eb1f087bc79e70d31b1801c3df4edba294351516fa98953
|
||||
size 5304637
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:32afd5ae0da2f2880fc85753b993a6945da1993f4087e562f2f75e107ecbf2f3
|
||||
size 755081
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c15354b40ef4f79b83d16d6aaa37cfd7654a8e281ef5e5dc5a25934d55f16f7a
|
||||
size 3748216
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c821ef0709398d8bc3cccfa311572fb45d4d9198514155f940936019ad0f32fd
|
||||
size 4489618
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0bc81c711f74fdfd2ef56e34d747383444a3ab6a1ee52fe62cb5838e59b0be56
|
||||
size 545
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:620bfa644724e9914df19949346ad0f441357fbb176879421d66b4377705836b
|
||||
size 1048644
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bedb625eca04a9abba66d1521efda591819212e44cef0ab2438631596902140c
|
||||
size 585493
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0245800fa846c2a3c15cb1d2aa6ded86fcf8355e568907dcd50e073c589f85d6
|
||||
size 2095464
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:40379fcd881ca3729b0fa057f66b8fedbd8ab92b8e407bc3a4fd17c1a2b6e75e
|
||||
size 1572932
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5821c53850d84c5b2d0b39ad28e6cde94d8fc7e1bbb97d5d898c40733e2d4e99
|
||||
size 107424
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d9134594e40a4bad7601d0396bb5f2a7600656bda5d815b3cb2e855ba6c6c5e4
|
||||
size 1263808
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ab0cada556723be0d138d7b1cadb5e315a273524db0468e0c4255d8d2b0c1c2d
|
||||
size 1222992
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c58d82602dc9b4dabb63f378fecd7ecb9eaf6f5da5746552ec42dde4ec211d7
|
||||
size 121104
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0c1d3eac0151a58c3f36bea0f636691559612fd2d5ce21bb3551d43e86043e26
|
||||
size 36741
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b58c687c2687f5b3b576e4f5672981fde5657519f51dd331e6e671634c77640f
|
||||
size 29920
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c07d5f3b06fb763d74e4d6afa2ff933d8953e8f73828320d0c34c2105e346d97
|
||||
size 38119
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2033d3f7f8e0af983d8ab237737b45db2ed476b9283c6b0fda6a6954e1a72dea
|
||||
size 294
|
||||
3
examples/dart/cli_macos/.gitignore
vendored
3
examples/dart/cli_macos/.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
# https://dart.dev/guides/libraries/private-files
|
||||
# Created by `dart pub`
|
||||
.dart_tool/
|
||||
@@ -1,3 +0,0 @@
|
||||
## 1.0.0
|
||||
|
||||
- Initial version.
|
||||
@@ -1,2 +0,0 @@
|
||||
A sample command-line application with an entrypoint in `bin/`, library code
|
||||
in `lib/`, and example unit test in `test/`.
|
||||
@@ -1,30 +0,0 @@
|
||||
# This file configures the static analysis results for your project (errors,
|
||||
# warnings, and lints).
|
||||
#
|
||||
# This enables the 'recommended' set of lints from `package:lints`.
|
||||
# This set helps identify many issues that may lead to problems when running
|
||||
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
|
||||
# style and format.
|
||||
#
|
||||
# If you want a smaller set of lints you can change this to specify
|
||||
# 'package:lints/core.yaml'. These are just the most critical lints
|
||||
# (the recommended set includes the core lints).
|
||||
# The core lints are also what is used by pub.dev for scoring packages.
|
||||
|
||||
include: package:lints/recommended.yaml
|
||||
|
||||
# Uncomment the following section to specify additional rules.
|
||||
|
||||
# linter:
|
||||
# rules:
|
||||
# - camel_case_types
|
||||
|
||||
# analyzer:
|
||||
# exclude:
|
||||
# - path/to/excluded/files/**
|
||||
|
||||
# For more information about the core and recommended set of lints, see
|
||||
# https://dart.dev/go/core-lints
|
||||
|
||||
# For additional information about configuring this file, see
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
@@ -1 +0,0 @@
|
||||
../../../assets
|
||||
@@ -1,46 +0,0 @@
|
||||
import 'dart:io';
|
||||
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
|
||||
import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart';
|
||||
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
|
||||
import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart';
|
||||
import 'package:ffi/ffi.dart';
|
||||
import 'package:thermion_dart/thermion_dart.dart';
|
||||
|
||||
void main() async {
|
||||
var scriptDir = File(Platform.script.toFilePath()).parent.path;
|
||||
final lib = ThermionDartTexture1(
|
||||
DynamicLibrary.open("$scriptDir/libthermion_swift.dylib"));
|
||||
final object = ThermionDartTexture.new1(lib);
|
||||
object.initWithWidth_height_(500, 500);
|
||||
|
||||
final resourceLoader = calloc<ResourceLoaderWrapper>(1);
|
||||
var loadToOut = NativeCallable<
|
||||
Void Function(Pointer<Char>,
|
||||
Pointer<ResourceBuffer>)>.listener(DartResourceLoader.loadResource);
|
||||
|
||||
resourceLoader.ref.loadToOut = loadToOut.nativeFunction;
|
||||
var freeResource = NativeCallable<Void Function(ResourceBuffer)>.listener(
|
||||
DartResourceLoader.freeResource);
|
||||
resourceLoader.ref.freeResource = freeResource.nativeFunction;
|
||||
|
||||
var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast<Void>());
|
||||
|
||||
await viewer.initialized;
|
||||
await viewer.createSwapChain(500, 500);
|
||||
await viewer.createRenderTarget(500, 500, object.metalTextureAddress);
|
||||
await viewer.updateViewportAndCameraProjection(500, 500);
|
||||
|
||||
var outDir = Directory("$scriptDir/output");
|
||||
if (outDir.existsSync()) {
|
||||
outDir.deleteSync(recursive: true);
|
||||
}
|
||||
outDir.createSync();
|
||||
|
||||
await viewer.setRecordingOutputDirectory(outDir.path);
|
||||
await viewer.setRecording(true);
|
||||
await viewer.loadSkybox(
|
||||
"file:///$scriptDir/assets/default_env/default_env_skybox.ktx");
|
||||
await Future.delayed(Duration(milliseconds: 16));
|
||||
await viewer.render();
|
||||
await viewer.dispose();
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../../../thermion_dart/native/lib/macos/swift/libthermion_swift.dylib
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 46 KiB |
@@ -1,18 +0,0 @@
|
||||
name: example_cli
|
||||
description: A sample command-line application.
|
||||
version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ^3.3.0
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
thermion_dart:
|
||||
path: ../../../thermion_dart
|
||||
ffi:
|
||||
|
||||
dev_dependencies:
|
||||
ffigen: ^11.0.0
|
||||
lints: ^3.0.0
|
||||
test: ^1.24.0
|
||||
@@ -1,8 +0,0 @@
|
||||
import 'package:example_cli/example_cli.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
test('calculate', () {
|
||||
expect(calculate(), 42);
|
||||
});
|
||||
}
|
||||
3
examples/dart/cli_wasm/.gitignore
vendored
3
examples/dart/cli_wasm/.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
# https://dart.dev/guides/libraries/private-files
|
||||
# Created by `dart pub`
|
||||
.dart_tool/
|
||||
@@ -1,3 +0,0 @@
|
||||
## 1.0.0
|
||||
|
||||
- Initial version.
|
||||
@@ -1,2 +0,0 @@
|
||||
A sample command-line application with an entrypoint in `bin/`, library code
|
||||
in `lib/`, and example unit test in `test/`.
|
||||
@@ -1,30 +0,0 @@
|
||||
# This file configures the static analysis results for your project (errors,
|
||||
# warnings, and lints).
|
||||
#
|
||||
# This enables the 'recommended' set of lints from `package:lints`.
|
||||
# This set helps identify many issues that may lead to problems when running
|
||||
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
|
||||
# style and format.
|
||||
#
|
||||
# If you want a smaller set of lints you can change this to specify
|
||||
# 'package:lints/core.yaml'. These are just the most critical lints
|
||||
# (the recommended set includes the core lints).
|
||||
# The core lints are also what is used by pub.dev for scoring packages.
|
||||
|
||||
include: package:lints/recommended.yaml
|
||||
|
||||
# Uncomment the following section to specify additional rules.
|
||||
|
||||
# linter:
|
||||
# rules:
|
||||
# - camel_case_types
|
||||
|
||||
# analyzer:
|
||||
# exclude:
|
||||
# - path/to/excluded/files/**
|
||||
|
||||
# For more information about the core and recommended set of lints, see
|
||||
# https://dart.dev/go/core-lints
|
||||
|
||||
# For additional information about configuring this file, see
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
4
examples/dart/cli_wasm/bin/.gitignore
vendored
4
examples/dart/cli_wasm/bin/.gitignore
vendored
@@ -1,4 +0,0 @@
|
||||
example_cli.mjs
|
||||
example_cli.wasm
|
||||
example_cli.unopt.wasm
|
||||
node_modules/**/*
|
||||
@@ -1,98 +0,0 @@
|
||||
MAIN
|
||||
initializing
|
||||
gto uberarchive ptr
|
||||
create void ptr callback
|
||||
resolve
|
||||
try
|
||||
done, returning
|
||||
created
|
||||
got promise [object Promise]
|
||||
got fn ptr address 2720
|
||||
Calling create_filament_viewer_ffi
|
||||
Call complete
|
||||
Created viewer, waiting for initialization
|
||||
Creating WebGL context.
|
||||
Created WebGL context 2.0
|
||||
Made WebGL context current
|
||||
FEngine (32 bits) created at 0x1937d0 (threading is disabled)
|
||||
|
||||
[stack-gl], [ANGLE], [OpenGL ES 3.0 (WebGL 1.0 stack-gl 8.0.2)], [OpenGL ES GLSL ES 1.00 (WebGL GLSL ES 1.0 stack-gl)]
|
||||
|
||||
Feature level: 1
|
||||
Active workarounds:
|
||||
|
||||
Backend feature level: 1
|
||||
|
||||
FEngine feature level: 1
|
||||
|
||||
Set frame interval to 16.666666
|
||||
Setting tone mapping to ACES
|
||||
Bloom is disabled on WebGL builds as it causes instability with certain drivers. setBloom will be ignored
|
||||
View created
|
||||
Camera aperture 16.000000 shutter 0.008000 sensitivity 100.000000
|
||||
Created ubershader provider.
|
||||
Added imageEntity 6
|
||||
Got void ptr callback
|
||||
Set viewer to true
|
||||
Created viewer 1652064
|
||||
Initialied
|
||||
Loading GLB from buffer of length 116948
|
||||
Loaded glb
|
||||
Entities : [10, 11, 12]
|
||||
entityName : Cone
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
morph targets : [Key 1, Key 2, Key 3, Key 4, Key 5, Key 6, Key 7, Key 8]
|
||||
entityName : Cube
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
morph targets : [Key 1, Key 2]
|
||||
entityName : Cylinder
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
Getting morpht arget names
|
||||
No insdtance
|
||||
Using asset instance
|
||||
morph targets : [Key 1, Key 2, Key 3, Key 4]
|
||||
@@ -1,33 +0,0 @@
|
||||
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
|
||||
import 'package:thermion_dart/thermion_dart.dart';
|
||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||
|
||||
void main(List<String> args) async {
|
||||
final resourceLoader = thermion_dart_web_get_resource_loader_wrapper();
|
||||
var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast<Void>());
|
||||
viewer.initialized.then((_) async {
|
||||
var entity = await viewer.loadGlb(
|
||||
"/Users/nickfisher/Documents/polyvox/apps/packages/thermion_flutter/thermion_flutter_federated/thermion_flutter/example/assets/shapes/shapes.glb");
|
||||
var entities = await viewer.getChildEntities(entity, true);
|
||||
for (final childEntity in entities) {
|
||||
final childName = await viewer.getNameForEntity(childEntity);
|
||||
var morphTargetNames =
|
||||
await viewer.getMorphTargetNames(entity, childEntity!);
|
||||
if (morphTargetNames.isNotEmpty) {
|
||||
await viewer.setMorphTargetWeights(
|
||||
childEntity, List<double>.filled(morphTargetNames.length, 1.0));
|
||||
}
|
||||
var animationData = MorphAnimationData(
|
||||
List.generate(
|
||||
10, (_) => List<double>.filled(morphTargetNames.length, 1.0)),
|
||||
morphTargetNames);
|
||||
|
||||
await viewer.setMorphAnimationData(entity, animationData,
|
||||
targetMeshNames: [childName!]);
|
||||
}
|
||||
});
|
||||
|
||||
while (true) {
|
||||
await Future.delayed(Duration(seconds: 1));
|
||||
}
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
const fs = require('node:fs');
|
||||
const thermion_dart = require("./thermion_dart.js")
|
||||
const GLctx = require('gl')(100, 100, { preserveDrawingBuffer: true })
|
||||
|
||||
// queueMicrotask = (func) => {
|
||||
// func();
|
||||
// }
|
||||
// read('thermion_dart.wasm', 'binary')
|
||||
// const exports = {};
|
||||
// const module = {};
|
||||
|
||||
const wasmBuffer = fs.readFileSync('thermion_dart.wasm');
|
||||
|
||||
var dartFilamentModulePromise = WebAssembly.compile(wasmBuffer);
|
||||
let globalDf;
|
||||
thermion_dart({
|
||||
dartFilamentResolveCallback: (cb, data) => {
|
||||
const fn = globalDf.wasmTable.get(cb);
|
||||
if(data) {
|
||||
fn(data);
|
||||
} else {
|
||||
fn();
|
||||
}
|
||||
},
|
||||
ctx:GLctx}).then((df) => {
|
||||
globalDf = df;
|
||||
createVoidCallback = () => {
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = () => {
|
||||
try {
|
||||
res({});
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = df.addFunction(callback, 'v');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
createIntCallback = () => {
|
||||
let res;
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = (val) => {
|
||||
try {
|
||||
res(val);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = df.addFunction(callback, 'vi');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
createVoidPointerCallback = () => {
|
||||
console.log("create void ptr callback");
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
console.log("resolve");
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
console.log("try");
|
||||
const callback = (voidPtr) => {
|
||||
try {
|
||||
res(voidPtr);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = df.addFunction(callback, 'vi');
|
||||
console.log("done, returning");
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
createBoolCallback = () => {
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = (val) => {
|
||||
try {
|
||||
res(val);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = df.addFunction(callback, 'vi');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
import('./example_cli.mjs').then((dart2wasm_runtime) => {
|
||||
var dartModulePromise = WebAssembly.compile(fs.readFileSync('./example_cli.wasm'));
|
||||
const imports = {"thermion_dart": df, "ctx": GLctx};
|
||||
dart2wasm_runtime.instantiate(dartModulePromise, imports).then((moduleInstance) => {
|
||||
dart2wasm_runtime.invoke(moduleInstance);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// // dartModulePromise.then((dartModule) => { console.log(dartModule.exports); dart2wasm_runtime.invoke(dartModule, imports);}); });
|
||||
1559
examples/dart/cli_wasm/bin/package-lock.json
generated
1559
examples/dart/cli_wasm/bin/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"gl": "^8.0.2"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.js
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.wasm
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.worker.js
|
||||
@@ -1,18 +0,0 @@
|
||||
name: example_cli
|
||||
description: A sample command-line application.
|
||||
version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ^3.3.0
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
thermion_dart:
|
||||
path: ../../
|
||||
ffi:
|
||||
|
||||
dev_dependencies:
|
||||
ffigen: ^11.0.0
|
||||
lints: ^3.0.0
|
||||
test: ^1.24.0
|
||||
@@ -1,8 +0,0 @@
|
||||
import 'package:example_cli/example_cli.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
test('calculate', () {
|
||||
expect(calculate(), 42);
|
||||
});
|
||||
}
|
||||
3
examples/dart/web_wasm/.gitignore
vendored
3
examples/dart/web_wasm/.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
# https://dart.dev/guides/libraries/private-files
|
||||
# Created by `dart pub`
|
||||
.dart_tool/
|
||||
@@ -1,3 +0,0 @@
|
||||
## 1.0.0
|
||||
|
||||
- Initial version.
|
||||
@@ -1,2 +0,0 @@
|
||||
A sample command-line application with an entrypoint in `bin/`, library code
|
||||
in `lib/`, and example unit test in `test/`.
|
||||
@@ -1,30 +0,0 @@
|
||||
# This file configures the static analysis results for your project (errors,
|
||||
# warnings, and lints).
|
||||
#
|
||||
# This enables the 'recommended' set of lints from `package:lints`.
|
||||
# This set helps identify many issues that may lead to problems when running
|
||||
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
|
||||
# style and format.
|
||||
#
|
||||
# If you want a smaller set of lints you can change this to specify
|
||||
# 'package:lints/core.yaml'. These are just the most critical lints
|
||||
# (the recommended set includes the core lints).
|
||||
# The core lints are also what is used by pub.dev for scoring packages.
|
||||
|
||||
include: package:lints/recommended.yaml
|
||||
|
||||
# Uncomment the following section to specify additional rules.
|
||||
|
||||
# linter:
|
||||
# rules:
|
||||
# - camel_case_types
|
||||
|
||||
# analyzer:
|
||||
# exclude:
|
||||
# - path/to/excluded/files/**
|
||||
|
||||
# For more information about the core and recommended set of lints, see
|
||||
# https://dart.dev/go/core-lints
|
||||
|
||||
# For additional information about configuring this file, see
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
@@ -1,16 +0,0 @@
|
||||
# Flight Helmet
|
||||
|
||||
## Screenshot
|
||||
|
||||

|
||||
|
||||
## License Information
|
||||
|
||||
Donated by Microsoft for glTF testing
|
||||
|
||||
[](http://creativecommons.org/publicdomain/zero/1.0/)
|
||||
To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset.
|
||||
|
||||
Draco compression was done via Cesium tools on 27-03-2020 as follows.
|
||||
|
||||
gltf-pipeline -i FlightHelmet.gltf -o FlightHelmet.gltf -d -s --keep-unused-elements
|
||||
@@ -1 +0,0 @@
|
||||
../../../../flutter_filament_federated/flutter_filament/example/assets
|
||||
@@ -1,57 +0,0 @@
|
||||
import 'dart:js_interop';
|
||||
import 'dart:js_interop_unsafe';
|
||||
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
|
||||
import 'package:thermion_dart/thermion_dart/thermion_viewer_ffi.dart';
|
||||
import 'package:web/web.dart';
|
||||
|
||||
void main(List<String> arguments) async {
|
||||
var fc = FooChar();
|
||||
|
||||
final canvas = document.getElementById("canvas") as HTMLCanvasElement;
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = window.innerHeight;
|
||||
|
||||
var resourceLoader = thermion_dart_web_get_resource_loader_wrapper();
|
||||
|
||||
var viewer = ThermionViewerFFI(resourceLoader: resourceLoader);
|
||||
|
||||
var mousedown = (JSObject event) {
|
||||
var x = event.getProperty("clientX".toJS) as JSNumber;
|
||||
var y = event.getProperty("clientY".toJS) as JSNumber;
|
||||
viewer.rotateStart(x.toDartDouble, y.toDartDouble);
|
||||
};
|
||||
|
||||
canvas.addEventListener("mousedown", mousedown.toJS);
|
||||
|
||||
var mousemove = (JSObject event) {
|
||||
var x = event.getProperty("clientX".toJS) as JSNumber;
|
||||
var y = event.getProperty("clientY".toJS) as JSNumber;
|
||||
viewer.rotateUpdate(x.toDartDouble, y.toDartDouble);
|
||||
};
|
||||
|
||||
canvas.addEventListener("mousemove", mousemove.toJS);
|
||||
|
||||
var mouseup = (JSObject event) {
|
||||
viewer.rotateEnd();
|
||||
};
|
||||
|
||||
canvas.addEventListener("mouseup", mousedown.toJS);
|
||||
|
||||
await viewer.initialized;
|
||||
var width = window.innerWidth;
|
||||
var height = window.innerHeight;
|
||||
await viewer.createSwapChain(width.toDouble(), height.toDouble());
|
||||
await viewer.setBackgroundColor(0.0, 1.0, 1.0, 1.0);
|
||||
await viewer.loadSkybox("assets/default_env_skybox.ktx");
|
||||
await viewer.loadIbl("assets/default_env_ibl.ktx");
|
||||
await viewer.loadGltf("assets/FlightHelmet.gltf", "assets");
|
||||
await viewer.updateViewportAndCameraProjection(
|
||||
width.toDouble(), height.toDouble());
|
||||
await viewer.setPostProcessing(true);
|
||||
await viewer.setRendering(true);
|
||||
|
||||
while (true) {
|
||||
await Future.delayed(Duration(milliseconds: 16));
|
||||
}
|
||||
print("Finisehd!");
|
||||
}
|
||||
@@ -1,249 +0,0 @@
|
||||
let buildArgsList;
|
||||
|
||||
// `modulePromise` is a promise to the `WebAssembly.module` object to be
|
||||
// instantiated.
|
||||
// `importObjectPromise` is a promise to an object that contains any additional
|
||||
// imports needed by the module that aren't provided by the standard runtime.
|
||||
// The fields on this object will be merged into the importObject with which
|
||||
// the module will be instantiated.
|
||||
// This function returns a promise to the instantiated module.
|
||||
export const instantiate = async (modulePromise, importObjectPromise) => {
|
||||
let dartInstance;
|
||||
|
||||
function stringFromDartString(string) {
|
||||
const totalLength = dartInstance.exports.$stringLength(string);
|
||||
let result = '';
|
||||
let index = 0;
|
||||
while (index < totalLength) {
|
||||
let chunkLength = Math.min(totalLength - index, 0xFFFF);
|
||||
const array = new Array(chunkLength);
|
||||
for (let i = 0; i < chunkLength; i++) {
|
||||
array[i] = dartInstance.exports.$stringRead(string, index++);
|
||||
}
|
||||
result += String.fromCharCode(...array);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function stringToDartString(string) {
|
||||
const length = string.length;
|
||||
let range = 0;
|
||||
for (let i = 0; i < length; i++) {
|
||||
range |= string.codePointAt(i);
|
||||
}
|
||||
if (range < 256) {
|
||||
const dartString = dartInstance.exports.$stringAllocate1(length);
|
||||
for (let i = 0; i < length; i++) {
|
||||
dartInstance.exports.$stringWrite1(dartString, i, string.codePointAt(i));
|
||||
}
|
||||
return dartString;
|
||||
} else {
|
||||
const dartString = dartInstance.exports.$stringAllocate2(length);
|
||||
for (let i = 0; i < length; i++) {
|
||||
dartInstance.exports.$stringWrite2(dartString, i, string.charCodeAt(i));
|
||||
}
|
||||
return dartString;
|
||||
}
|
||||
}
|
||||
|
||||
// Prints to the console
|
||||
function printToConsole(value) {
|
||||
if (typeof dartPrint == "function") {
|
||||
dartPrint(value);
|
||||
return;
|
||||
}
|
||||
if (typeof console == "object" && typeof console.log != "undefined") {
|
||||
console.log(value);
|
||||
return;
|
||||
}
|
||||
if (typeof print == "function") {
|
||||
print(value);
|
||||
return;
|
||||
}
|
||||
|
||||
throw "Unable to print message: " + js;
|
||||
}
|
||||
|
||||
// Converts a Dart List to a JS array. Any Dart objects will be converted, but
|
||||
// this will be cheap for JSValues.
|
||||
function arrayFromDartList(constructor, list) {
|
||||
const length = dartInstance.exports.$listLength(list);
|
||||
const array = new constructor(length);
|
||||
for (let i = 0; i < length; i++) {
|
||||
array[i] = dartInstance.exports.$listRead(list, i);
|
||||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
buildArgsList = function(list) {
|
||||
const dartList = dartInstance.exports.$makeStringList();
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
dartInstance.exports.$listAdd(dartList, stringToDartString(list[i]));
|
||||
}
|
||||
return dartList;
|
||||
}
|
||||
|
||||
// A special symbol attached to functions that wrap Dart functions.
|
||||
const jsWrappedDartFunctionSymbol = Symbol("JSWrappedDartFunction");
|
||||
|
||||
function finalizeWrapper(dartFunction, wrapped) {
|
||||
wrapped.dartFunction = dartFunction;
|
||||
wrapped[jsWrappedDartFunctionSymbol] = true;
|
||||
return wrapped;
|
||||
}
|
||||
|
||||
// Imports
|
||||
const dart2wasm = {
|
||||
|
||||
_18: f => finalizeWrapper(f,x0 => dartInstance.exports._18(f,x0)),
|
||||
_19: f => finalizeWrapper(f,x0 => dartInstance.exports._19(f,x0)),
|
||||
_75: (x0,x1) => x0.getElementById(x1),
|
||||
_76: f => finalizeWrapper(f,x0 => dartInstance.exports._76(f,x0)),
|
||||
_77: (x0,x1,x2) => x0.addEventListener(x1,x2),
|
||||
_78: f => finalizeWrapper(f,x0 => dartInstance.exports._78(f,x0)),
|
||||
_79: f => finalizeWrapper(f,x0 => dartInstance.exports._79(f,x0)),
|
||||
_1499: (x0,x1) => x0.width = x1,
|
||||
_1501: (x0,x1) => x0.height = x1,
|
||||
_1878: () => globalThis.window,
|
||||
_1920: x0 => x0.innerWidth,
|
||||
_1921: x0 => x0.innerHeight,
|
||||
_6854: () => globalThis.document,
|
||||
_12721: () => globalThis.createBoolCallback(),
|
||||
_12722: () => globalThis.createVoidPointerCallback(),
|
||||
_12723: () => globalThis.createVoidCallback(),
|
||||
_12727: v => stringToDartString(v.toString()),
|
||||
_12743: () => {
|
||||
let stackString = new Error().stack.toString();
|
||||
let frames = stackString.split('\n');
|
||||
let drop = 2;
|
||||
if (frames[0] === 'Error') {
|
||||
drop += 1;
|
||||
}
|
||||
return frames.slice(drop).join('\n');
|
||||
},
|
||||
_12762: s => stringToDartString(JSON.stringify(stringFromDartString(s))),
|
||||
_12763: s => printToConsole(stringFromDartString(s)),
|
||||
_12777: (ms, c) =>
|
||||
setTimeout(() => dartInstance.exports.$invokeCallback(c),ms),
|
||||
_12781: (c) =>
|
||||
queueMicrotask(() => dartInstance.exports.$invokeCallback(c)),
|
||||
_12783: (a, i) => a.push(i),
|
||||
_12794: a => a.length,
|
||||
_12796: (a, i) => a[i],
|
||||
_12797: (a, i, v) => a[i] = v,
|
||||
_12799: a => a.join(''),
|
||||
_12809: (s, p, i) => s.indexOf(p, i),
|
||||
_12812: (o, start, length) => new Uint8Array(o.buffer, o.byteOffset + start, length),
|
||||
_12813: (o, start, length) => new Int8Array(o.buffer, o.byteOffset + start, length),
|
||||
_12814: (o, start, length) => new Uint8ClampedArray(o.buffer, o.byteOffset + start, length),
|
||||
_12815: (o, start, length) => new Uint16Array(o.buffer, o.byteOffset + start, length),
|
||||
_12816: (o, start, length) => new Int16Array(o.buffer, o.byteOffset + start, length),
|
||||
_12817: (o, start, length) => new Uint32Array(o.buffer, o.byteOffset + start, length),
|
||||
_12818: (o, start, length) => new Int32Array(o.buffer, o.byteOffset + start, length),
|
||||
_12821: (o, start, length) => new Float32Array(o.buffer, o.byteOffset + start, length),
|
||||
_12822: (o, start, length) => new Float64Array(o.buffer, o.byteOffset + start, length),
|
||||
_12827: (o) => new DataView(o.buffer, o.byteOffset, o.byteLength),
|
||||
_12831: Function.prototype.call.bind(Object.getOwnPropertyDescriptor(DataView.prototype, 'byteLength').get),
|
||||
_12832: (b, o) => new DataView(b, o),
|
||||
_12834: Function.prototype.call.bind(DataView.prototype.getUint8),
|
||||
_12836: Function.prototype.call.bind(DataView.prototype.getInt8),
|
||||
_12838: Function.prototype.call.bind(DataView.prototype.getUint16),
|
||||
_12840: Function.prototype.call.bind(DataView.prototype.getInt16),
|
||||
_12842: Function.prototype.call.bind(DataView.prototype.getUint32),
|
||||
_12844: Function.prototype.call.bind(DataView.prototype.getInt32),
|
||||
_12850: Function.prototype.call.bind(DataView.prototype.getFloat32),
|
||||
_12852: Function.prototype.call.bind(DataView.prototype.getFloat64),
|
||||
_12873: o => o === undefined,
|
||||
_12874: o => typeof o === 'boolean',
|
||||
_12875: o => typeof o === 'number',
|
||||
_12877: o => typeof o === 'string',
|
||||
_12880: o => o instanceof Int8Array,
|
||||
_12881: o => o instanceof Uint8Array,
|
||||
_12882: o => o instanceof Uint8ClampedArray,
|
||||
_12883: o => o instanceof Int16Array,
|
||||
_12884: o => o instanceof Uint16Array,
|
||||
_12885: o => o instanceof Int32Array,
|
||||
_12886: o => o instanceof Uint32Array,
|
||||
_12887: o => o instanceof Float32Array,
|
||||
_12888: o => o instanceof Float64Array,
|
||||
_12889: o => o instanceof ArrayBuffer,
|
||||
_12890: o => o instanceof DataView,
|
||||
_12891: o => o instanceof Array,
|
||||
_12892: o => typeof o === 'function' && o[jsWrappedDartFunctionSymbol] === true,
|
||||
_12896: (l, r) => l === r,
|
||||
_12897: o => o,
|
||||
_12898: o => o,
|
||||
_12899: o => o,
|
||||
_12900: b => !!b,
|
||||
_12901: o => o.length,
|
||||
_12904: (o, i) => o[i],
|
||||
_12905: f => f.dartFunction,
|
||||
_12906: l => arrayFromDartList(Int8Array, l),
|
||||
_12907: l => arrayFromDartList(Uint8Array, l),
|
||||
_12908: l => arrayFromDartList(Uint8ClampedArray, l),
|
||||
_12909: l => arrayFromDartList(Int16Array, l),
|
||||
_12910: l => arrayFromDartList(Uint16Array, l),
|
||||
_12911: l => arrayFromDartList(Int32Array, l),
|
||||
_12912: l => arrayFromDartList(Uint32Array, l),
|
||||
_12913: l => arrayFromDartList(Float32Array, l),
|
||||
_12914: l => arrayFromDartList(Float64Array, l),
|
||||
_12915: (data, length) => {
|
||||
const view = new DataView(new ArrayBuffer(length));
|
||||
for (let i = 0; i < length; i++) {
|
||||
view.setUint8(i, dartInstance.exports.$byteDataGetUint8(data, i));
|
||||
}
|
||||
return view;
|
||||
},
|
||||
_12916: l => arrayFromDartList(Array, l),
|
||||
_12917: stringFromDartString,
|
||||
_12918: stringToDartString,
|
||||
_12921: l => new Array(l),
|
||||
_12925: (o, p) => o[p],
|
||||
_12929: o => String(o),
|
||||
_12930: (p, s, f) => p.then(s, f),
|
||||
_12949: (o, p) => o[p]
|
||||
};
|
||||
|
||||
const baseImports = {
|
||||
dart2wasm: dart2wasm,
|
||||
|
||||
|
||||
Math: Math,
|
||||
Date: Date,
|
||||
Object: Object,
|
||||
Array: Array,
|
||||
Reflect: Reflect,
|
||||
};
|
||||
|
||||
const jsStringPolyfill = {
|
||||
"charCodeAt": (s, i) => s.charCodeAt(i),
|
||||
"compare": (s1, s2) => {
|
||||
if (s1 < s2) return -1;
|
||||
if (s1 > s2) return 1;
|
||||
return 0;
|
||||
},
|
||||
"concat": (s1, s2) => s1 + s2,
|
||||
"equals": (s1, s2) => s1 === s2,
|
||||
"fromCharCode": (i) => String.fromCharCode(i),
|
||||
"length": (s) => s.length,
|
||||
"substring": (s, a, b) => s.substring(a, b),
|
||||
};
|
||||
|
||||
dartInstance = await WebAssembly.instantiate(await modulePromise, {
|
||||
...baseImports,
|
||||
...(await importObjectPromise),
|
||||
"wasm:js-string": jsStringPolyfill,
|
||||
});
|
||||
|
||||
return dartInstance;
|
||||
}
|
||||
|
||||
// Call the main function for the instantiated module
|
||||
// `moduleInstance` is the instantiated dart2wasm module
|
||||
// `args` are any arguments that should be passed into the main function.
|
||||
export const invoke = (moduleInstance, ...args) => {
|
||||
const dartMain = moduleInstance.exports.$getMain();
|
||||
const dartArgs = buildArgsList(args);
|
||||
moduleInstance.exports.$invokeMain(dartMain, dartArgs);
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,127 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="thermion_dart.js"></script>
|
||||
<style>
|
||||
html, body {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
canvas {
|
||||
position:absolute;
|
||||
left:0;
|
||||
right:0;
|
||||
top:0;
|
||||
bottom:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<script type="module">
|
||||
window.resolveCallback = (cb, data) => {
|
||||
const fn = window.df.wasmTable.get(cb);
|
||||
if(data) {
|
||||
fn(data);
|
||||
} else {
|
||||
fn();
|
||||
}
|
||||
}
|
||||
window.createVoidCallback = () => {
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = () => {
|
||||
try {
|
||||
res({});
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = window.df.addFunction(callback, 'v');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
window.createIntCallback = () => {
|
||||
let res;
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = (val) => {
|
||||
try {
|
||||
res(val);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = window.df.addFunction(callback, 'vi');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
window.createVoidPointerCallback = () => {
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = (voidPtr) => {
|
||||
try {
|
||||
res(voidPtr);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = window.df.addFunction(callback, 'vi');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
window.createBoolCallback = () => {
|
||||
let res; //placeholder for resolver callback, outside of promise
|
||||
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
res = resolve;
|
||||
});
|
||||
try {
|
||||
const callback = (val) => {
|
||||
try {
|
||||
res(val);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
const fnPtr = window.df.addFunction(callback, 'vi');
|
||||
return [promise, fnPtr];
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
const df = await thermion_dart();
|
||||
window.df = df;
|
||||
|
||||
const dartModulePromise = WebAssembly.compileStreaming(fetch('example_web.wasm'));
|
||||
const imports = {"thermion_dart":df};
|
||||
const dart2wasm_runtime = await import('./example_web.mjs');
|
||||
const moduleInstance = await dart2wasm_runtime.instantiate(dartModulePromise, imports);
|
||||
window.example = moduleInstance;
|
||||
await dart2wasm_runtime.invoke(moduleInstance);
|
||||
|
||||
</script>
|
||||
<body>
|
||||
<canvas id="canvas"></canvas>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.js
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.wasm
|
||||
@@ -1 +0,0 @@
|
||||
../../../native/web/build/build/out/dart_filament.worker.js
|
||||
@@ -1,17 +0,0 @@
|
||||
name: example_web
|
||||
description: A sample command-line application.
|
||||
version: 1.0.0
|
||||
# repository: https://github.com/my_org/my_repo
|
||||
|
||||
environment:
|
||||
sdk: ^3.3.0
|
||||
|
||||
# Add regular dependencies here.
|
||||
dependencies:
|
||||
thermion_dart:
|
||||
path: ../../
|
||||
ffi:
|
||||
|
||||
dev_dependencies:
|
||||
lints: ^3.0.0
|
||||
test: ^1.24.0
|
||||
@@ -1,8 +0,0 @@
|
||||
import 'package:example_web/example_web.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
test('calculate', () {
|
||||
expect(calculate(), 42);
|
||||
});
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"flutterSdkVersion": "3.16.0-0.2.pre",
|
||||
"flavors": {}
|
||||
}
|
||||
30
examples/flutter/example/.gitattributes
vendored
30
examples/flutter/example/.gitattributes
vendored
@@ -1,30 +0,0 @@
|
||||
assets/lit_opaque_43.uberz filter=lfs diff=lfs merge=lfs -text
|
||||
assets/BusterDrone filter=lfs diff=lfs merge=lfs -text
|
||||
assets/FlightHelmet filter=lfs diff=lfs merge=lfs -text
|
||||
assets/lit_opaque_32.uberz filter=lfs diff=lfs merge=lfs -text
|
||||
windows/lib/**/*.* filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/12_Settonemappingtolinear.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/3_loadIBL.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/6_zoomin.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/13_Movecameratoasset.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/14_movecamerato.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/7_rotate.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/9_transformtounitcube.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/0_fresh.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/10_setshapespositionto.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/2_loadskybox.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/4_Renderingfalse.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/8_pan.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/11_Disablefrustumculling.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/15_setcameratofirstcamerainshapesGLB.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/1_createviewerdefaultubershader.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/5_loadshapesGLB.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/16_resize.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/3_loadskybox.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/4_loadIBL.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/19_resize.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/17_resize.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/2_Renderingfalse.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/18_resize.png filter=lfs diff=lfs merge=lfs -text
|
||||
integration_test/goldens/ios/diffs filter=lfs diff=lfs merge=lfs -text
|
||||
50
examples/flutter/example/.gitignore
vendored
50
examples/flutter/example/.gitignore
vendored
@@ -1,50 +0,0 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
**/ios/Flutter/.last_build_id
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/build/
|
||||
|
||||
# Web related
|
||||
|
||||
# Symbolication related
|
||||
app.*.symbols
|
||||
|
||||
# Obfuscation related
|
||||
app.*.map.json
|
||||
|
||||
# Android Studio will place build artifacts here
|
||||
/android/app/debug
|
||||
/android/app/profile
|
||||
/android/app/release
|
||||
|
||||
/android/.cxx/**/*
|
||||
|
||||
# fvm
|
||||
.fvm/flutter_sdk
|
||||
@@ -1,30 +0,0 @@
|
||||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: "12d54de962782853206992fedce29723fcb4a95b"
|
||||
channel: "master"
|
||||
|
||||
project_type: app
|
||||
|
||||
# Tracks metadata for the flutter migrate command
|
||||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: 12d54de962782853206992fedce29723fcb4a95b
|
||||
base_revision: 12d54de962782853206992fedce29723fcb4a95b
|
||||
- platform: macos
|
||||
create_revision: 12d54de962782853206992fedce29723fcb4a95b
|
||||
base_revision: 12d54de962782853206992fedce29723fcb4a95b
|
||||
|
||||
# User provided section
|
||||
|
||||
# List of Local paths (relative to this file) that should be
|
||||
# ignored by the migrate tool.
|
||||
#
|
||||
# Files that are not part of the templates will be ignored by default.
|
||||
unmanaged_files:
|
||||
- 'lib/main.dart'
|
||||
- 'ios/Runner.xcodeproj/project.pbxproj'
|
||||
@@ -1,21 +0,0 @@
|
||||
# thermion_flutter_example
|
||||
|
||||
Demonstrates how to use the thermion_flutter plugin.
|
||||
|
||||
## Linux
|
||||
|
||||
export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:/usr/lib64/pkgconfig/
|
||||
export CPLUS_INCLUDE_PATH=/usr/include/gtk-3.0/:/usr/include/pango-1.0/:/usr/include/harfbuzz:/usr/include/cairo/:/usr/include/gdk-pixbuf-2.0/:/usr/include/atk-1.0/
|
||||
|
||||
## Getting Started
|
||||
|
||||
This project is a starting point for a Flutter application.
|
||||
|
||||
A few resources to get you started if this is your first Flutter project:
|
||||
|
||||
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
|
||||
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
|
||||
|
||||
For help getting started with Flutter, view our
|
||||
[online documentation](https://flutter.dev/docs), which offers tutorials,
|
||||
samples, guidance on mobile development, and a full API reference.
|
||||
@@ -1,29 +0,0 @@
|
||||
# This file configures the analyzer, which statically analyzes Dart code to
|
||||
# check for errors, warnings, and lints.
|
||||
#
|
||||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
||||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
||||
# invoked from the command line by running `flutter analyze`.
|
||||
|
||||
# The following line activates a set of recommended lints for Flutter apps,
|
||||
# packages, and plugins designed to encourage good coding practices.
|
||||
include: package:flutter_lints/flutter.yaml
|
||||
|
||||
linter:
|
||||
# The lint rules applied to this project can be customized in the
|
||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||
# included above or to enable additional rules. A list of all available lints
|
||||
# and their documentation is published at
|
||||
# https://dart-lang.github.io/linter/lints/index.html.
|
||||
#
|
||||
# Instead of disabling a lint rule for the entire project in the
|
||||
# section below, it can also be suppressed for a single line of code
|
||||
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||
# producing the lint.
|
||||
rules:
|
||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
13
examples/flutter/example/android/.gitignore
vendored
13
examples/flutter/example/android/.gitignore
vendored
@@ -1,13 +0,0 @@
|
||||
gradle-wrapper.jar
|
||||
/.gradle
|
||||
/captures/
|
||||
/gradlew
|
||||
/gradlew.bat
|
||||
/local.properties
|
||||
GeneratedPluginRegistrant.java
|
||||
|
||||
# Remember to never publicly share your keystore.
|
||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||
key.properties
|
||||
**/*.keystore
|
||||
**/*.jks
|
||||
@@ -1,51 +0,0 @@
|
||||
plugins {
|
||||
id "com.android.application"
|
||||
id "kotlin-android"
|
||||
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
||||
id "dev.flutter.flutter-gradle-plugin"
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "app.polyvox.example"
|
||||
compileSdkVersion 34
|
||||
ndkVersion "25.2.9519653"
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId = "app.polyvox.example"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
||||
minSdk = 30
|
||||
targetSdk = 31
|
||||
versionCode = flutter.versionCode
|
||||
versionName = flutter.versionName
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig = signingConfigs.debug
|
||||
shrinkResources false
|
||||
minifyEnabled false
|
||||
}
|
||||
debug {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'net.java.dev.jna:jna:5.10.0@aar'
|
||||
}
|
||||
|
||||
flutter {
|
||||
source = "../.."
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
</manifest>
|
||||
@@ -1,45 +0,0 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application
|
||||
android:label="example"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:taskAffinity=""
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
<!-- Required to query activities that can process text, see:
|
||||
https://developer.android.com/training/package-visibility and
|
||||
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
|
||||
|
||||
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
||||
<data android:mimeType="text/plain"/>
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
@@ -1,5 +0,0 @@
|
||||
package app.polyvox.example
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity()
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="?android:colorBackground" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Modify this file to customize your launch splash screen -->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@android:color/white" />
|
||||
|
||||
<!-- You can insert your own image assets here -->
|
||||
<!-- <item>
|
||||
<bitmap
|
||||
android:gravity="center"
|
||||
android:src="@mipmap/launch_image" />
|
||||
</item> -->
|
||||
</layer-list>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 544 B |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user