(
ctx: &mut ScriptContext<'_, API>,
)
| 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 | |
| 131 | pub 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); |
no test coverage detected