jackdaw 0.3.0

A 3D level editor built with Bevy
Documentation
mod brp;
mod connection;
pub mod entity_browser;
pub mod panel;
mod registry_fetch;
pub mod remote_inspector;

use bevy::prelude::*;

pub use connection::{ConnectionManager, ConnectionState};

pub struct RemoteConnectionPlugin;

impl Plugin for RemoteConnectionPlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<ConnectionManager>()
            .init_resource::<entity_browser::RemoteSceneCache>()
            .init_resource::<entity_browser::RemoteProxyIndex>()
            .init_resource::<entity_browser::RemoteTreeRowIndex>()
            .init_resource::<entity_browser::RemoteSelection>()
            .init_resource::<entity_browser::RemoteSnapshotPollTimer>()
            .add_systems(
                OnEnter(crate::AppState::Editor),
                entity_browser::setup_remote_name_watcher,
            )
            .add_systems(
                Update,
                (
                    connection::poll_connection_tasks,
                    connection::heartbeat_system,
                    registry_fetch::poll_registry_task,
                    panel::update_connection_status_indicator,
                    entity_browser::snapshot_poll_timer,
                    entity_browser::poll_snapshot_task,
                    entity_browser::cleanup_remote_proxies,
                    remote_inspector::populate_remote_proxy,
                    remote_inspector::build_remote_inspector_displays,
                )
                    .chain()
                    .run_if(in_state(crate::AppState::Editor)),
            )
            .add_observer(panel::on_connection_indicator_click)
            .add_observer(entity_browser::on_remote_tree_node_expanded)
            .add_observer(entity_browser::on_remote_tree_row_clicked);
    }
}