fix: fix highlights after first
This commit is contained in:
@@ -5,7 +5,6 @@ import 'package:thermion_dart/src/viewer/src/ffi/src/ffi_material.dart';
|
|||||||
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_viewer_ffi.dart';
|
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_viewer_ffi.dart';
|
||||||
import 'package:thermion_dart/thermion_dart.dart';
|
import 'package:thermion_dart/thermion_dart.dart';
|
||||||
|
|
||||||
|
|
||||||
class FFIAsset extends ThermionAsset {
|
class FFIAsset extends ThermionAsset {
|
||||||
final Pointer<TSceneAsset> pointer;
|
final Pointer<TSceneAsset> pointer;
|
||||||
final Pointer<TSceneManager> sceneManager;
|
final Pointer<TSceneManager> sceneManager;
|
||||||
@@ -122,7 +121,8 @@ class FFIAsset extends ThermionAsset {
|
|||||||
}
|
}
|
||||||
var sourceMaterialInstance = FFIMaterialInstance(
|
var sourceMaterialInstance = FFIMaterialInstance(
|
||||||
RenderableManager_getMaterialInstanceAt(
|
RenderableManager_getMaterialInstanceAt(
|
||||||
renderableManager, targetEntity, 0), sceneManager);
|
renderableManager, targetEntity, 0),
|
||||||
|
sceneManager);
|
||||||
|
|
||||||
await sourceMaterialInstance.setStencilWriteEnabled(true);
|
await sourceMaterialInstance.setStencilWriteEnabled(true);
|
||||||
await sourceMaterialInstance.setDepthWriteEnabled(true);
|
await sourceMaterialInstance.setDepthWriteEnabled(true);
|
||||||
@@ -153,21 +153,23 @@ class FFIAsset extends ThermionAsset {
|
|||||||
.createInstance(materialInstances: [highlightMaterialInstance]);
|
.createInstance(materialInstances: [highlightMaterialInstance]);
|
||||||
_highlight = highlightInstance;
|
_highlight = highlightInstance;
|
||||||
|
|
||||||
var targetHighlightEntity = _highlight!.entity;
|
|
||||||
|
|
||||||
if (entityIndex != null) {
|
|
||||||
var highlightChildEntities = await _highlight!.getChildEntities();
|
|
||||||
targetHighlightEntity = highlightChildEntities[entityIndex!];
|
|
||||||
}
|
|
||||||
|
|
||||||
RenderableManager_setPriority(
|
|
||||||
renderableManager, targetHighlightEntity, 7);
|
|
||||||
RenderableManager_setPriority(renderableManager, targetEntity, 0);
|
|
||||||
|
|
||||||
await highlightMaterialInstance.setStencilReferenceValue(1);
|
await highlightMaterialInstance.setStencilReferenceValue(1);
|
||||||
|
RenderableManager_setPriority(renderableManager, targetEntity, 0);
|
||||||
SceneManager_addToScene(sceneManager, targetHighlightEntity);
|
final transformManager = Engine_getTransformManager(engine);
|
||||||
|
TransformManager_setParent(
|
||||||
|
transformManager, _highlight!.entity, entity, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var targetHighlightEntity = _highlight!.entity;
|
||||||
|
|
||||||
|
if (entityIndex != null) {
|
||||||
|
var highlightChildEntities = await _highlight!.getChildEntities();
|
||||||
|
targetHighlightEntity = highlightChildEntities[entityIndex!];
|
||||||
|
}
|
||||||
|
|
||||||
|
RenderableManager_setPriority(renderableManager, targetHighlightEntity, 7);
|
||||||
|
|
||||||
|
SceneManager_addToScene(sceneManager, targetHighlightEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user