Skip to content

Commit b044643

Browse files
committed
refactoring editor state management and event system
1 parent ff7b9f0 commit b044643

44 files changed

Lines changed: 1566 additions & 129 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

crates/bevy_animation_graph_editor/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,9 @@ impl Plugin for AnimationGraphEditorPlugin {
6363
#[cfg(feature = "physics_avian")]
6464
app.add_plugins(avian3d::prelude::PhysicsPlugins::new(FixedPostUpdate));
6565

66-
app.insert_resource(UiState::new())
67-
.insert_resource(PendingActions::default())
66+
UiState::init(app.world_mut());
67+
68+
app.insert_resource(PendingActions::default())
6869
.insert_resource(DirtyAssets::default())
6970
.insert_resource(GraphIndicesMap::default())
7071
.insert_resource(FsmIndicesMap::default())

crates/bevy_animation_graph_editor/src/ui/actions/mod.rs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use std::{any::Any, cmp::Ordering, collections::VecDeque, fmt::Display};
1717
use bevy::{
1818
ecs::{
1919
resource::Resource,
20-
system::{In, IntoSystem, ResMut, SystemInput},
20+
system::{Commands, In, IntoSystem, ResMut, SystemInput},
2121
world::World,
2222
},
2323
log::error,
@@ -29,9 +29,11 @@ use graph::{GraphAction, handle_graph_action};
2929
use saving::{SaveAction, handle_save_action};
3030
use window::WindowAction;
3131

32+
use crate::ui::native_views::EditorViewUiState;
33+
3234
use super::{
3335
UiState,
34-
core::{ViewAction, ViewState},
36+
core::{EditorViewVariant, ViewAction},
3537
windows::WindowId,
3638
};
3739

@@ -98,10 +100,20 @@ pub fn handle_editor_action(world: &mut World, action: EditorAction, ctx: &mut A
98100
}
99101
}
100102

101-
fn handle_view_action(In(view_action): In<ViewAction>, mut ui_state: ResMut<UiState>) {
103+
fn handle_view_action(
104+
In(view_action): In<ViewAction>,
105+
mut ui_state: ResMut<UiState>,
106+
mut commands: Commands,
107+
) {
102108
match view_action {
103109
ViewAction::Close(index) => {
104-
ui_state.views.remove(index);
110+
match ui_state.views.remove(index) {
111+
EditorViewVariant::Legacy(_) => {}
112+
EditorViewVariant::Native(view_state) => {
113+
commands.entity(view_state.entity).despawn();
114+
}
115+
}
116+
105117
if let Some(idx) = ui_state.active_view {
106118
match idx.cmp(&index) {
107119
Ordering::Less => {}
@@ -117,10 +129,13 @@ fn handle_view_action(In(view_action): In<ViewAction>, mut ui_state: ResMut<UiSt
117129
ViewAction::Select(index) => {
118130
ui_state.active_view = Some(index);
119131
}
120-
ViewAction::New(name) => ui_state.views.push(ViewState {
121-
name,
122-
dock_state: DockState::new(vec![]),
123-
}),
132+
ViewAction::New(name) => {
133+
commands.queue(|world: &mut World| {
134+
let view_state = EditorViewUiState::init(world, name, DockState::new(vec![]));
135+
let mut ui_state = world.resource_mut::<UiState>();
136+
ui_state.new_native_view(view_state);
137+
});
138+
}
124139
}
125140
}
126141

crates/bevy_animation_graph_editor/src/ui/actions/saving.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{
22
Cli,
33
ui::{
44
UiState,
5-
core::EguiWindow,
5+
core::{EditorViewVariant, EguiWindow},
66
editor_windows::saving::{SaveWindow, SaveWindowAssetMeta},
77
},
88
};
@@ -364,8 +364,17 @@ pub fn handle_request_save_multiple(
364364

365365
let window_id = ui_state.windows.open(SaveWindow::new(metas));
366366
let window = EguiWindow::DynWindow(window_id);
367-
ui_state.views[active_view_idx]
368-
.dock_state
369-
.add_window(vec![window]);
367+
368+
let UiState { views, .. } = ui_state.into_inner();
369+
370+
match &mut views[active_view_idx] {
371+
EditorViewVariant::Legacy(view_state) => {
372+
view_state.dock_state.add_window(vec![window]);
373+
}
374+
375+
EditorViewVariant::Native(view_state) => {
376+
view_state.dock_state.add_window(vec![window]);
377+
}
378+
}
370379
}
371380
}

0 commit comments

Comments
 (0)