pub struct EditorApp {Show 16 fields
camera: Arc<Mutex<EditorCamera>>,
editor_state: Arc<Mutex<EditorState>>,
command_history: Arc<Mutex<CommandHistory>>,
log_handle: Arc<Mutex<Vec<LogEntry>>>,
shell: Option<Arc<Mutex<Box<dyn EditorShell>>>>,
overlay: Option<Arc<Mutex<Box<dyn EditorOverlay>>>>,
raw_window: Option<Arc<Window>>,
monitors: Option<MonitorRegistry>,
agent_registry: Option<Arc<Mutex<AgentRegistry>>>,
dcc_context: Option<Arc<RwLock<DccContext>>>,
last_view_info: Option<ViewInfo>,
input: InputState,
wireframe_enabled: bool,
last_frame_time: Instant,
viewport_override: EditorViewportOverride,
project_vfs: Option<Arc<Mutex<ProjectVfs>>>,
}Fields§
§camera: Arc<Mutex<EditorCamera>>§editor_state: Arc<Mutex<EditorState>>§command_history: Arc<Mutex<CommandHistory>>§log_handle: Arc<Mutex<Vec<LogEntry>>>§shell: Option<Arc<Mutex<Box<dyn EditorShell>>>>§overlay: Option<Arc<Mutex<Box<dyn EditorOverlay>>>>§raw_window: Option<Arc<Window>>Cached Arc<winit::window::Window> retrieved from services in
setup(). Needed because the overlay’s begin_frame and
handle_window_event both expect a winit window reference.
monitors: Option<MonitorRegistry>Live monitor handle exposed by the engine (Phase 2.1). Cloned in
setup from the ServiceRegistry; queried each frame to push
CPU/GPU load, VRAM, draw calls and triangles into
EditorState::status.
agent_registry: Option<Arc<Mutex<AgentRegistry>>>Live agent registry (Phase 2.3). Used by the Control Plane workspace to enumerate agents instead of the previous mock list.
dcc_context: Option<Arc<RwLock<DccContext>>>DCC context handle (Phase 2.2). Locked each frame for the Control Plane summary bar — exposes mode, budget multiplier, hardware load.
last_view_info: Option<ViewInfo>View info computed in before_agents and re-used by
after_agents for gizmo rendering.
input: InputState§wireframe_enabled: boolWhether the wireframe debug overlay is on. Toggled from the command
palette (“Toggle Wireframe”) and pushed into the shared
WireframeConfig each frame in before_agents.
last_frame_time: Instant§viewport_override: EditorViewportOverrideEditor viewport override — read by RenderFlow as fallback when
no active scene Camera exists (i.e. Editing mode). Updated each
frame in before_agents from the editor’s free camera.
project_vfs: Option<Arc<Mutex<ProjectVfs>>>Project-scoped VFS — instantiated in setup once the project
path resolves. All scene I/O, asset enumeration and hot-reload
routes through this. None when the editor was launched without
a project (rare; the hub always passes --project).
Implementations§
Source§impl EditorApp
impl EditorApp
fn cache_services(&mut self, runtime: &Runtime)
Sourcefn scene_layout() -> DockTree
fn scene_layout() -> DockTree
Default Scene arrangement: hierarchy left, inspector right, viewport in the middle, assets and console sharing a dock below it.
Expressed as a sequence of drops because that is exactly what the user would do by hand — which keeps the default honest about what the dock can express.
Sourcefn control_plane_layout() -> DockTree
fn control_plane_layout() -> DockTree
Control Plane is a single full-bleed workspace. The hierarchy and the bottom dock used to stay on screen here with nothing to show, because the old shell could only hide one slot.
fn register_panels(&mut self, runtime: &Runtime)
fn open_cli_project(&mut self, world: &mut GameWorld)
fn tick_state(&mut self, world: &mut GameWorld)
Trait Implementations§
Source§impl AgentProvider for EditorApp
impl AgentProvider for EditorApp
Source§fn register_agents(&self, dcc: &DccService, runtime: &mut Runtime)
fn register_agents(&self, dcc: &DccService, runtime: &mut Runtime)
Source§impl EngineApp for EditorApp
impl EngineApp for EditorApp
Source§fn window_config() -> WindowConfig
fn window_config() -> WindowConfig
Source§fn setup(&mut self, world: &mut GameWorld, runtime: &Runtime)
fn setup(&mut self, world: &mut GameWorld, runtime: &Runtime)
Source§fn update(&mut self, world: &mut GameWorld, inputs: &[InputEvent])
fn update(&mut self, world: &mut GameWorld, inputs: &[InputEvent])
Source§fn on_shutdown(&mut self)
fn on_shutdown(&mut self)
Source§fn intercept_window_event(
&mut self,
event: &dyn Any,
_window: &dyn KhoraWindow,
) -> bool
fn intercept_window_event( &mut self, event: &dyn Any, _window: &dyn KhoraWindow, ) -> bool
InputEvent]. Return true if the event was consumed (e.g., by an
egui overlay) and should NOT be forwarded to game logic. Read moreSource§fn before_frame(
&mut self,
_world: &mut GameWorld,
runtime: &Runtime,
window: &dyn KhoraWindow,
)
fn before_frame( &mut self, _world: &mut GameWorld, runtime: &Runtime, window: &dyn KhoraWindow, )
update.
Use to begin a UI overlay frame (e.g., egui::Context::begin_frame) and
render shell chrome (menus, docks, panels) that produces UI commands.Source§fn before_agents(&mut self, world: &mut GameWorld, runtime: &Runtime)
fn before_agents(&mut self, world: &mut GameWorld, runtime: &Runtime)
begin_frame and before the
scheduler dispatches agents. Use to switch the renderer to an offscreen
viewport target (e.g., set_render_to_viewport(true)).Source§fn after_agents(&mut self, _world: &mut GameWorld, runtime: &Runtime)
fn after_agents(&mut self, _world: &mut GameWorld, runtime: &Runtime)
submit_frame_graph, but
BEFORE the renderer’s end_frame. Use to render gizmos to the offscreen
viewport, switch back to the swapchain (set_render_to_viewport(false)),
and present a UI overlay (render_overlay).Auto Trait Implementations§
impl Freeze for EditorApp
impl !RefUnwindSafe for EditorApp
impl Send for EditorApp
impl Sync for EditorApp
impl Unpin for EditorApp
impl UnsafeUnpin for EditorApp
impl !UnwindSafe for EditorApp
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
impl<F, T, S> SimdInto<T, S> for Fwhere
T: SimdFrom<F, S>,
S: Simd,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.