MCPcopy Create free account
hub / github.com/PerroEngine/Perro / load_preview_scene

Function load_preview_scene

perro_editor/res/scripts/scene/editor_viewport.rs:1283–1375  ·  view source on GitHub ↗
(
    ctx: &mut ScriptContext<'_, API>,
    path: &str,
    doc_text: &str,
    serial: u64,
)

Source from the content-addressed store, hash-verified

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
1305pub 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
1319pub 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
1330pub 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;

Callers 1

rebuild_previewFunction · 0.85

Calls 15

cached_scene_docFunction · 0.85
set_logFunction · 0.85
cached_scene_doc_sharedFunction · 0.85
add_preview_envFunction · 0.85
has_2dFunction · 0.85
has_3dFunction · 0.85
preview_doc_orderFunction · 0.85
preview_runtime_orderFunction · 0.85

Tested by

no test coverage detected