diff --git a/src/modules/sbstudio/plugin/model/safety_check.py b/src/modules/sbstudio/plugin/model/safety_check.py index 342f8e17..4c482882 100644 --- a/src/modules/sbstudio/plugin/model/safety_check.py +++ b/src/modules/sbstudio/plugin/model/safety_check.py @@ -470,3 +470,10 @@ def _refresh_overlay(self) -> None: ) overlay.markers = markers + + +def get_proximity_warning_threshold(context: Context) -> float: + """Shortcut to return the current proximity warning threshold, irrespectively + of whether proximity warnings are enabled or not. + """ + return float(context.scene.skybrush.safety_check.proximity_warning_threshold) diff --git a/src/modules/sbstudio/plugin/operators/land.py b/src/modules/sbstudio/plugin/operators/land.py index 36e1464a..8359eb41 100644 --- a/src/modules/sbstudio/plugin/operators/land.py +++ b/src/modules/sbstudio/plugin/operators/land.py @@ -8,6 +8,7 @@ from sbstudio.plugin.api import get_api from sbstudio.plugin.constants import Collections from sbstudio.plugin.model.formation import create_formation +from sbstudio.plugin.model.safety_check import get_proximity_warning_threshold from sbstudio.plugin.utils.evaluator import create_position_evaluator from .base import StoryboardOperator @@ -108,10 +109,9 @@ def _run(self, storyboard, *, context) -> bool: # Ask the API to figure out the start times and durations for each drone # TODO(ntamas): spindown time! fps = context.scene.render.fps - min_distance = context.scene.skybrush.safety_check.proximity_warning_threshold delays, durations = get_api().plan_landing( source, - min_distance=min_distance, + min_distance=get_proximity_warning_threshold(context), velocity=self.velocity, target_altitude=self.altitude, spindown_time=self.spindown_time, diff --git a/src/modules/sbstudio/plugin/operators/reorder_formation_markers.py b/src/modules/sbstudio/plugin/operators/reorder_formation_markers.py index b469d56c..2ee9f90b 100644 --- a/src/modules/sbstudio/plugin/operators/reorder_formation_markers.py +++ b/src/modules/sbstudio/plugin/operators/reorder_formation_markers.py @@ -8,6 +8,7 @@ from bpy.props import EnumProperty +from sbstudio.plugin.model.safety_check import get_proximity_warning_threshold from sbstudio.plugin.utils.collections import sort_collection from sbstudio.plugin.utils.evaluator import create_position_evaluator @@ -132,9 +133,7 @@ def _execute_on_formation_ENSURE_SAFETY_DISTANCE( skipped: List[int] = [] result: List[int] = [] - dist_threshold: float = ( - context.scene.skybrush.safety_check.proximity_warning_threshold - ) + dist_threshold: float = get_proximity_warning_threshold(context) while queue: # Reset the mask diff --git a/src/modules/sbstudio/plugin/operators/return_to_home.py b/src/modules/sbstudio/plugin/operators/return_to_home.py index 6db9b64f..b1939a7e 100644 --- a/src/modules/sbstudio/plugin/operators/return_to_home.py +++ b/src/modules/sbstudio/plugin/operators/return_to_home.py @@ -6,6 +6,7 @@ from sbstudio.plugin.constants import Collections from sbstudio.plugin.model.formation import create_formation +from sbstudio.plugin.model.safety_check import get_proximity_warning_threshold from .base import StoryboardOperator from .takeoff import create_helper_formation_for_takeoff_and_landing @@ -91,7 +92,7 @@ def _run(self, storyboard, *, context) -> bool: frame=first_frame, base_altitude=self.altitude, layer_height=self.altitude_shift, - min_distance=context.scene.skybrush.safety_check.proximity_warning_threshold, + min_distance=get_proximity_warning_threshold(context), ) diffs = [ diff --git a/src/modules/sbstudio/plugin/operators/takeoff.py b/src/modules/sbstudio/plugin/operators/takeoff.py index 3a52a117..923eb69a 100644 --- a/src/modules/sbstudio/plugin/operators/takeoff.py +++ b/src/modules/sbstudio/plugin/operators/takeoff.py @@ -3,11 +3,11 @@ from bpy.props import BoolProperty, FloatProperty, IntProperty from bpy.types import Context, Object from math import ceil -from typing import List from sbstudio.plugin.api import get_api from sbstudio.plugin.constants import Collections from sbstudio.plugin.model.formation import create_formation +from sbstudio.plugin.model.safety_check import get_proximity_warning_threshold from sbstudio.plugin.model.storyboard import Storyboard from sbstudio.plugin.utils.evaluator import create_position_evaluator @@ -107,7 +107,7 @@ def _run(self, storyboard: Storyboard, *, context) -> bool: frame=self.start_frame, base_altitude=self.altitude, layer_height=self.altitude_shift, - min_distance=context.scene.skybrush.safety_check.proximity_warning_threshold, + min_distance=get_proximity_warning_threshold(context), ) # Calculate the Z distance to travel for each drone