scion 0.6.0

Game making library on top of wgpu, winit, legion
Documentation
use crate::core::package::Package;
use crate::core::state::GameState;
use crate::legion::{Resources, World};

use crate::core::components::material::Material;
use crate::core::components::ui::ui_image::UiImage;
use crate::core::components::ui::ui_text::{UiText, UiTextImage};
use crate::core::resources::asset_manager::AssetManager;
use crate::core::resources::audio::Audio;
use crate::core::resources::events::topic::TopicConfiguration;
use crate::core::resources::events::Events;
use crate::core::resources::inputs::inputs_controller::InputsController;
use crate::core::resources::time::{Time, TimerType, Timers};
use crate::core::scene::SceneController;
use crate::ScionBuilder;
use animations_system::animation_executer_system;
use asset_ref_resolver_system::{asset_ref_resolver_system, MaterialAssetResolverFn};
use collider_systems::{compute_collisions_system, debug_colliders_system};
use default_camera_system::{camera_dpi_system, default_camera_system};
use hide_propagation_system::{hide_propagated_deletion_system, hide_propagation_system};
use hierarchy_system::children_manager_system;
use missing_ui_component_system::missing_ui_component_system;
use parent_transform_system::{dirty_child_system, dirty_transform_system};
use ui_text_system::ui_text_bitmap_update_system;

pub(crate) mod animations_system;
pub(crate) mod asset_ref_resolver_system;
pub(crate) mod collider_systems;
pub(crate) mod default_camera_system;
pub(crate) mod hide_propagation_system;
pub(crate) mod hierarchy_system;
pub(crate) mod missing_ui_component_system;
pub(crate) mod parent_transform_system;
pub(crate) mod ui_text_system;

pub(crate) struct InternalPackage;
impl Package for InternalPackage {
    fn prepare(&self, _world: &mut World, resources: &mut Resources) {
        let mut events = Events::default();
        events
            .create_topic("Inputs", TopicConfiguration::default())
            .expect("Error while creating topic for inputs event");

        let mut timers = Timers::default();

        if cfg!(feature = "hot-reload") {
            let _res = timers.add_timer("hot-reload-timer", TimerType::Cyclic, 5.);
        }

        resources.insert(Time::default());
        resources.insert(events);
        resources.insert(timers);
        resources.insert(AssetManager::default());
        resources.insert(InputsController::default());
        resources.insert(GameState::default());
        resources.insert(SceneController::default());
        resources.insert(Audio::default());
    }

    fn load(self, builder: ScionBuilder) -> ScionBuilder {
        builder
            .with_system(default_camera_system())
            .with_system(camera_dpi_system())
            .with_system(ui_text_bitmap_update_system())
            .with_system(debug_colliders_system())
            .with_flush()
            .with_system(children_manager_system())
            .with_system(hide_propagated_deletion_system())
            .with_flush()
            .with_system(hide_propagation_system())
            .with_system(missing_ui_component_system::<UiImage>())
            .with_system(missing_ui_component_system::<UiTextImage>())
            .with_system(missing_ui_component_system::<UiText>())
            .with_system(asset_ref_resolver_system::<Material, MaterialAssetResolverFn>())
            .with_system(animation_executer_system())
            .with_flush()
            .with_system(dirty_child_system())
            .with_flush()
            .with_system(dirty_transform_system())
            .with_system(compute_collisions_system())
            .with_flush()
    }
}