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

Function load_editor_shell

perro_editor/res/scripts/assets/editor_assets.rs:120–159  ·  view source on GitHub ↗
(
    ctx: &mut ScriptContext<'_, API>,
)

Source from the content-addressed store, hash-verified

118 clear_destructive_confirmation(state);
119 state.log = log;
120 });
121
122 add_recent_project(ctx, root_path.to_string_lossy().as_ref());
123 set_project_manager(ctx, false);
124 refresh_all(ctx);
125 if let Some(scene) = initial_scene {
126 open_scene_path(ctx, &scene);
127 }
128 Ok(())
129}
130
131pub fn load_editor_shell<API: ScriptAPI + ?Sized>(
132 ctx: &mut ScriptContext<'_, API>,
133) -> Result<(), String> {
134 let (old, old_picker) = with_state_mut!(ctx.run, EditorState, ctx.id, |state| {
135 let old = state.editor_shell_root;
136 let old_picker = state.inspector_picker_root;
137 state.editor_shell_root = 0;
138 state.inspector_picker_root = 0;
139 state.editor_name_cache_names.clear();
140 state.editor_name_cache_ids.clear();
141 (old, old_picker)
142 })
143 .unwrap_or((0, 0));
144 if old != 0 {
145 let _ = ctx.run.Nodes().remove_node(NodeID::from_u64(old));
146 }
147 if old_picker != 0 {
148 let _ = ctx.run.Nodes().remove_node(NodeID::from_u64(old_picker));
149 }
150
151 let root = ctx
152 .run
153 .Scene()
154 .load(editor_app::EDITOR_SHELL_SCENE.to_string())
155 .map_err(|err| format!("editor shell load fail\n{err}"))?;
156 let _ = ctx.run.Nodes().reparent(ctx.id, root);
157 let picker_root = ctx
158 .run
159 .Scene()
160 .load(editor_app::INSPECTOR_PICKER_SCENE.to_string())
161 .map_err(|err| format!("inspector picker load fail\n{err}"))?;
162 let _ = ctx.run.Nodes().reparent(ctx.id, picker_root);

Callers 1

open_projectFunction · 0.85

Calls 5

NodesMethod · 0.80
SceneMethod · 0.80
remove_nodeMethod · 0.45
loadMethod · 0.45
reparentMethod · 0.45

Tested by

no test coverage detected