Skip to content

Commit

Permalink
fix selection order bug
Browse files Browse the repository at this point in the history
  • Loading branch information
mi-sts committed May 25, 2024
1 parent c84285f commit 445bce2
Showing 1 changed file with 38 additions and 27 deletions.
65 changes: 38 additions & 27 deletions src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt
Original file line number Diff line number Diff line change
Expand Up @@ -209,39 +209,50 @@ class SceneCanvas : OpenGLCanvas() {
var clickedLandmarkLayerState: LayerState? = null
var clickedLandmarkUID = 0L

interactingVisualizationFrame.layers.forEach { layer ->
if (!layer.settings.enabled) {
return@forEach
}

when (layer) {
is Layer.PointLayer -> {
val clickedLandmark = getClickedPointLandmark(layer, frameInteractionPixel) ?: return@forEach
clickedLandmarkLayerState = clickedLandmark.layerState
clickedLandmarkUID = clickedLandmark.uid
}
is Layer.LineLayer -> {
val clickedLandmark = getClickedLineLandmark(layer, frameInteractionPixel) ?: return@forEach
clickedLandmarkLayerState = clickedLandmark.layerState
clickedLandmarkUID = clickedLandmark.uid
run clickHandler@{
interactingVisualizationFrame.layers.forEach { layer ->
if (!layer.settings.enabled) {
return@forEach
}
is Layer.PlanesLayer -> {
clickedLandmarkUID =
getClickedPlaneUID(layer, frameInteractionPixel, true) ?: return@forEach
clickedLandmarkLayerState = layer.layerState

when (layer) {
is Layer.PointLayer -> {
val clickedLandmark = getClickedPointLandmark(layer, frameInteractionPixel) ?: return@forEach
clickedLandmarkLayerState = clickedLandmark.layerState
clickedLandmarkUID = clickedLandmark.uid
return@clickHandler
}

is Layer.LineLayer -> {
val clickedLandmark = getClickedLineLandmark(layer, frameInteractionPixel) ?: return@forEach
clickedLandmarkLayerState = clickedLandmark.layerState
clickedLandmarkUID = clickedLandmark.uid
return@clickHandler
}

is Layer.PlanesLayer -> {
clickedLandmarkUID =
getClickedPlaneUID(layer, frameInteractionPixel, true) ?: return@forEach
clickedLandmarkLayerState = layer.layerState
return@clickHandler
}
}
}
}

if (clickedLandmarkLayerState == null) {
interactingVisualizationFrame.layers.filterIsInstance<Layer.PlanesLayer>().asReversed().forEach { layer ->
if (!layer.settings.enabled) {
return@forEach
}

clickedLandmarkUID =
getClickedPlaneUID(layer, frameInteractionPixel, false) ?: return@forEach
clickedLandmarkLayerState = layer.layerState
run clickHandler@{
interactingVisualizationFrame.layers.filterIsInstance<Layer.PlanesLayer>().asReversed()
.forEach { layer ->
if (!layer.settings.enabled) {
return@forEach
}

clickedLandmarkUID =
getClickedPlaneUID(layer, frameInteractionPixel, false) ?: return@forEach
clickedLandmarkLayerState = layer.layerState
return@clickHandler
}
}
}

Expand Down

0 comments on commit 445bce2

Please sign in to comment.