move grid material instantiation to GridOverlay
This commit is contained in:
@@ -534,12 +534,6 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
|
|||||||
return instance;
|
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_asset.dart';
|
||||||
import 'package:thermion_dart/src/filament/src/implementation/ffi_filament_app.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 {
|
class GridOverlay extends FFIAsset {
|
||||||
|
|
||||||
GridOverlay(super.asset, super.app, super.animationManager);
|
GridOverlay(super.asset, super.app, super.animationManager);
|
||||||
|
|
||||||
static Future<GridOverlay> create(FFIFilamentApp app, Pointer<TAnimationManager> animationManager) async {
|
static GridOverlay? _overlay;
|
||||||
final gridMaterial = await app.gridMaterial;
|
static Material? _gridMaterial;
|
||||||
final asset = await withPointerCallback<TSceneAsset>((cb) => SceneAsset_createGridRenderThread(app.engine, gridMaterial.pointer, cb));
|
|
||||||
return GridOverlay(asset, app, animationManager);
|
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