mod components;
mod resources;

pub use components::*;
pub use resources::*;

use crate::editor_scene::EditorScene;
use crate::project::ProjectState;
use crate::scene_writeback::WritebackState;
use crate::systems::deep_link::DeepLinkState;
use crate::systems::input::ShortcutState;
use crate::systems::perf_test::AutoState;
use crate::systems::project_io::ProjectIoState;
use crate::systems::retained_ui::{UiHandles, UiInteraction};
use crate::undo::{GizmoDragTracker, UndoHistory};
use nightshade::prelude::freecs;

freecs::ecs! {
    EditorWorld {
        loaded_asset: LoadedAsset => LOADED_ASSET,
    }
    Tags {
    }
    Events {
    }
    Resources {
        loading: LoadingState,
        camera: CameraState,
        sun: SunState,
        rotation: RotationState,
        browsers: BrowserState,
        ui: UiState,
        ui_handles: UiHandles,
        ui_interaction: UiInteraction,
        picking: PickingState,
        perf_test: AutoState,
        deep_link: DeepLinkState,
        project: ProjectState,
        editor_scene: EditorScene,
        writeback_state: WritebackState,
        project_io: ProjectIoState,
        shortcuts: ShortcutState,
        undo: UndoHistory,
        gizmo_drag: GizmoDragTracker,
        light_gizmos: LightGizmoState,
        camera_gizmos: CameraGizmoState,
        cutscene_edit: CutsceneEditState,
        skeleton_debug: SkeletonDebugState,
        snap: SnapState,
        mode: ModeState,
        grab: GrabState,
        prefab_instance_links: PrefabInstanceLinks,
        build: BuildState,
        greybox: GreyboxState,
        placement: PlacementState,
        push_pull: PushPullState,
        play: PlayState,
        generation: GenerationSettings,
    }
}
