bonsai bcf v3 - fix issue activating camera in some cases

This commit is contained in:
Andrej730
2024-10-28 20:07:04 +05:00
parent 4c3bb54f98
commit fd6a541689
2 changed files with 26 additions and 10 deletions
+5 -10
View File
@@ -1378,16 +1378,14 @@ class ActivateBcfViewpoint(bpy.types.Operator):
def set_view_setup_hints(
self, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler, context: bpy.types.Context
) -> None:
if viewpoint.visualization_info.components.view_setup_hints:
if not viewpoint.visualization_info.components.view_setup_hints.spaces_visible:
# TODO: handle view_setup_hints.openings_visible
# should we reload elements with/without opening applied here or ...?
if view_setup_hints := tool.Bcf.get_viewpoint_view_setup_hints(viewpoint):
pass
if not view_setup_hints.spaces_visible:
self.hide_spaces(context)
if viewpoint.visualization_info.components.view_setup_hints.openings_visible is not None:
self.set_openings_visibility(
viewpoint.visualization_info.components.view_setup_hints.openings_visible, context
)
else:
self.hide_spaces(context)
self.set_openings_visibility(False, context)
def hide_spaces(self, context: bpy.types.Context) -> None:
old = context.area.type
@@ -1397,9 +1395,6 @@ class ActivateBcfViewpoint(bpy.types.Operator):
bpy.ops.object.hide_view_set()
context.area.type = old
def set_openings_visibility(self, is_visible, context):
pass # We no longer have an openings collection
def set_selection(self, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler) -> None:
selected_global_ids = viewpoint.get_selected_guids()
if selected_global_ids is None:
+21
View File
@@ -21,12 +21,17 @@ import bonsai.core.tool
import bonsai.tool as tool
import bpy
import bcf.v2.model
import bcf.v2.model.visinfo
import bcf.v2.topic
import bcf.v3.model
import bcf.v3.model.visinfo
import bcf.v3.topic
import bcf.agnostic.model
import bcf.agnostic.topic
import bcf.agnostic.visinfo
from typing import Any, Union, TypeVar, TypeGuard, Optional
@@ -260,3 +265,19 @@ class Bcf(bonsai.core.tool.Bcf):
bitmaps = viewpoint.visualization_info.bitmaps
bitmaps = bitmaps.bitmap if bitmaps else []
return bitmaps
@classmethod
def get_viewpoint_view_setup_hints(
cls, viewpoint: bcf.agnostic.visinfo.VisualizationInfoHandler
) -> Union[bcf.v2.model.visinfo.ViewSetupHints, bcf.v3.model.visinfo.ViewSetupHints, None]:
components = viewpoint.visualization_info.components
if not components:
return None
if isinstance(components, bcf.v2.model.visinfo.Components):
return components.view_setup_hints
visibility = components.visibility
if not visibility:
return None
return visibility.view_setup_hints