Refactor syncback logic for camera removal handling

- Simplified the logic for removing the current camera by using a default value for sync_current_camera, improving code readability.
- Enhanced the handling of camera references within the syncback loop, ensuring that the camera is only removed when explicitly set to do so.
- Updated comments for clarity on the default behavior regarding camera removal in the syncback process.
This commit is contained in:
Joe 2026-02-01 20:21:24 -06:00
parent fe2bf358e7
commit 44344f4014

View file

@ -174,21 +174,25 @@ pub fn syncback_loop_with_stats(
} }
// Handle removing the current camera. // Handle removing the current camera.
if let Some(syncback_rules) = &project.syncback_rules { // syncCurrentCamera defaults to false, meaning we remove the camera by default
if !syncback_rules.sync_current_camera.unwrap_or_default() { let sync_current_camera = project
log::debug!("Removing CurrentCamera from new DOM"); .syncback_rules
let mut camera_ref = None; .as_ref()
for child_ref in new_tree.root().children() { .and_then(|s| s.sync_current_camera)
let inst = new_tree.get_by_ref(*child_ref).unwrap(); .unwrap_or(false);
if inst.class == "Workspace" { if !sync_current_camera {
camera_ref = inst.properties.get(&ustr("CurrentCamera")); log::debug!("Removing CurrentCamera from new DOM");
break; let mut camera_ref = None;
} for child_ref in new_tree.root().children() {
let inst = new_tree.get_by_ref(*child_ref).unwrap();
if inst.class == "Workspace" {
camera_ref = inst.properties.get(&ustr("CurrentCamera"));
break;
} }
if let Some(Variant::Ref(camera_ref)) = camera_ref { }
if new_tree.get_by_ref(*camera_ref).is_some() { if let Some(Variant::Ref(camera_ref)) = camera_ref {
new_tree.destroy(*camera_ref); if new_tree.get_by_ref(*camera_ref).is_some() {
} new_tree.destroy(*camera_ref);
} }
} }
} }