move grid material instantiation to GridOverlay
This commit is contained in:
@@ -534,12 +534,6 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
||||
return instance;
|
||||
}
|
||||
|
||||
Material? _gridMaterial;
|
||||
Future<Material> get gridMaterial async {
|
||||
_gridMaterial ??= FFIMaterial(Material_createGridMaterial(engine), this);
|
||||
return _gridMaterial!;
|
||||
}
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
|
||||
@@ -1,14 +1,27 @@
|
||||
import 'package:thermion_dart/src/bindings/bindings.dart';
|
||||
import 'package:thermion_dart/src/filament/src/implementation/ffi_asset.dart';
|
||||
import 'package:thermion_dart/src/filament/src/implementation/ffi_filament_app.dart';
|
||||
import 'package:thermion_dart/src/filament/src/implementation/ffi_material.dart';
|
||||
import 'package:thermion_dart/thermion_dart.dart';
|
||||
|
||||
class GridOverlay extends FFIAsset {
|
||||
|
||||
GridOverlay(super.asset, super.app, super.animationManager);
|
||||
|
||||
static Future<GridOverlay> create(FFIFilamentApp app, Pointer<TAnimationManager> animationManager) async {
|
||||
final gridMaterial = await app.gridMaterial;
|
||||
final asset = await withPointerCallback<TSceneAsset>((cb) => SceneAsset_createGridRenderThread(app.engine, gridMaterial.pointer, cb));
|
||||
return GridOverlay(asset, app, animationManager);
|
||||
static GridOverlay? _overlay;
|
||||
static Material? _gridMaterial;
|
||||
|
||||
static Future<GridOverlay> create(
|
||||
FFIFilamentApp app, Pointer<TAnimationManager> animationManager) async {
|
||||
if (_overlay == null) {
|
||||
_gridMaterial ??= FFIMaterial(Material_createGridMaterial(app.engine), app);
|
||||
|
||||
final asset = await withPointerCallback<TSceneAsset>((cb) =>
|
||||
SceneAsset_createGridRenderThread(
|
||||
app.engine, _gridMaterial!.getNativeHandle(), cb));
|
||||
|
||||
_overlay = GridOverlay(asset, app, animationManager);
|
||||
var materialInstance = await _overlay!.getMaterialInstanceAt();
|
||||
await materialInstance.setParameterFloat3("gridColor", 0.1, 0.1, 0.1);
|
||||
}
|
||||
return _overlay!;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user