(
ctx: &mut ScriptContext<'_, API>,
path: &str,
doc_text: &str,
serial: u64,
)
| 1281 | set_viewport_stream_camera(ctx, "viewport_stream_2d", NodeID::nil()); |
| 1282 | set_viewport_stream_camera(ctx, "viewport_stream_3d", NodeID::nil()); |
| 1283 | if camera_2d != 0 { |
| 1284 | let _ = with_node_mut!(ctx.run, Camera2D, NodeID::from_u64(camera_2d), |node| { |
| 1285 | node.active = false |
| 1286 | }); |
| 1287 | } |
| 1288 | if camera_3d != 0 { |
| 1289 | let _ = with_node_mut!(ctx.run, Camera3D, NodeID::from_u64(camera_3d), |node| { |
| 1290 | node.active = false |
| 1291 | }); |
| 1292 | } |
| 1293 | if root != 0 { |
| 1294 | let root = NodeID::from_u64(root); |
| 1295 | let _ = with_base_node_mut!(ctx.run, UiNode, root, |node| { |
| 1296 | node.visible = false; |
| 1297 | node.input_enabled = false; |
| 1298 | }); |
| 1299 | let _ = with_base_node_mut!(ctx.run, Node2D, root, |node| node.visible = false); |
| 1300 | let _ = with_base_node_mut!(ctx.run, Node3D, root, |node| node.visible = false); |
| 1301 | let _ = ctx.run.Nodes().remove_node(root); |
| 1302 | } |
| 1303 | } |
| 1304 | |
| 1305 | pub fn preview_node_for_key<API: ScriptAPI + ?Sized>( |
| 1306 | ctx: &mut ScriptContext<'_, API>, |
| 1307 | key: u32, |
| 1308 | ) -> Option<NodeID> { |
| 1309 | with_state!(ctx.run, EditorState, ctx.id, |state| { |
| 1310 | state |
| 1311 | .preview_node_keys |
| 1312 | .iter() |
| 1313 | .position(|item| *item == key) |
| 1314 | .and_then(|idx| state.preview_node_ids.get(idx).copied()) |
| 1315 | .map(NodeID::from_u64) |
| 1316 | }).unwrap_or_default() |
| 1317 | } |
| 1318 | |
| 1319 | pub fn sync_selected_preview_field<API: ScriptAPI + ?Sized>( |
| 1320 | ctx: &mut ScriptContext<'_, API>, |
| 1321 | field: &str, |
| 1322 | value: &SceneValue, |
| 1323 | ) -> bool { |
| 1324 | let Some(key) = with_state!(ctx.run, EditorState, ctx.id, |state| state.selected_key).unwrap_or_default() else { |
| 1325 | return false; |
| 1326 | }; |
| 1327 | sync_preview_field_for_key(ctx, key, field, value) |
| 1328 | } |
| 1329 | |
| 1330 | pub fn sync_preview_field_for_key<API: ScriptAPI + ?Sized>( |
| 1331 | ctx: &mut ScriptContext<'_, API>, |
| 1332 | key: u32, |
| 1333 | field: &str, |
| 1334 | value: &SceneValue, |
| 1335 | ) -> bool { |
| 1336 | let Some(node_type) = with_state!(ctx.run, EditorState, ctx.id, |state| { |
| 1337 | let node = cached_scene_node(&state.doc_text, key)?; |
| 1338 | Some(node.data.node_type) |
| 1339 | }).unwrap_or_default() else { |
| 1340 | return false; |
no test coverage detected