Start implementing resource changes
This commit is contained in:
parent
fa35adbcc7
commit
d8bebf69df
8 changed files with 20 additions and 11 deletions
|
@ -6,7 +6,7 @@ use super::vulkancore::VulkanCore;
|
|||
|
||||
#[cfg(feature = "sound")]
|
||||
use audio::SoundHandler;
|
||||
use ecs::World;
|
||||
use ecs::{Resource, World, resources::Resource as ResourceTrait};
|
||||
|
||||
use crate::prelude::*;
|
||||
use anyhow::Result;
|
||||
|
@ -22,6 +22,7 @@ use std::rc::Rc;
|
|||
use std::sync::{Arc, Mutex, MutexGuard, RwLock, RwLockReadGuard, RwLockWriteGuard};
|
||||
use std::time::{Duration, Instant};
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct Context {
|
||||
core: VulkanCore,
|
||||
pub(crate) presentation: PresentationCore,
|
||||
|
@ -59,7 +60,7 @@ impl Context {
|
|||
|
||||
pub fn next_frame<'a, C, F>(&mut self, world: &mut World, mut f: F) -> Result<bool>
|
||||
where
|
||||
C: Send + Sync + 'static,
|
||||
C: ResourceTrait + Send + Sync + 'static,
|
||||
F: FnMut(&mut World, &mut C, Event<'_>) -> Result<()> + Send + Sync + 'a,
|
||||
{
|
||||
let render_core = self.render_core.clone();
|
||||
|
|
|
@ -3,11 +3,13 @@ use crate::prelude::*;
|
|||
use anyhow::Result;
|
||||
use asset::*;
|
||||
use assetpath::AssetPath;
|
||||
use ecs::Resource;
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, RwLock};
|
||||
use std::thread;
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct AssetManager {
|
||||
gltf_directory: AssetPath,
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ use super::engine_settings::EngineSettings;
|
|||
use anyhow::Result;
|
||||
use assetpath::AssetPath;
|
||||
use context::prelude::cgmath::vec3;
|
||||
use ecs::{Resource, resources::Resource as ResourceTrait};
|
||||
|
||||
use crate::assets::asset_manager::AssetManager;
|
||||
use crate::prelude::*;
|
||||
|
@ -13,6 +14,7 @@ use crate::prelude::*;
|
|||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct GuiHandlerRenderer;
|
||||
|
||||
impl TScene for GuiHandlerRenderer {
|
||||
|
@ -44,12 +46,13 @@ impl TScene for GuiHandlerRenderer {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct Engine {
|
||||
pub(crate) resource_base_path: String,
|
||||
}
|
||||
|
||||
impl Engine {
|
||||
pub fn new<T: EventConsumer>(
|
||||
pub fn new<T: ResourceTrait + EventConsumer>(
|
||||
#[allow(unused)] mut create_info: EngineCreateInfo<'_>,
|
||||
world: &mut WorldBuilder,
|
||||
) -> Result<()> {
|
||||
|
@ -248,7 +251,7 @@ impl Engine {
|
|||
}
|
||||
|
||||
impl Engine {
|
||||
fn main_system<T: EventConsumer>(world: &mut World) -> Result<bool> {
|
||||
fn main_system<T: ResourceTrait + EventConsumer>(world: &mut World) -> Result<bool> {
|
||||
let gui_handler = world.resources.get_mut_unchecked::<GuiHandler>();
|
||||
let input_map = world.resources.get_unchecked::<InputMap>();
|
||||
let context = world.resources.get_unchecked::<Context>();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::prelude::*;
|
||||
use anyhow::Result;
|
||||
use ecs::Resource;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -31,6 +32,7 @@ pub trait EventConsumer: Send + Sync + 'static {
|
|||
fn event(&mut self, world: &mut World, event: EngineEvent<'_>) -> Result<()>;
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct InputMap {
|
||||
pub direction_mapping: HashMap<Keycode, GuiDirection>,
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use anyhow::{Result, bail};
|
||||
use assetpath::AssetPath;
|
||||
use ecs::Resource;
|
||||
|
||||
use crate::prelude::*;
|
||||
|
||||
|
@ -71,7 +72,7 @@ pub struct AssetDirectories {
|
|||
pub tile_file_directory: AssetPath,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Resource)]
|
||||
pub struct EngineSettings {
|
||||
current_controller_type: RwLock<Option<ControllerType>>,
|
||||
|
||||
|
|
|
@ -67,10 +67,9 @@ impl Location {
|
|||
Ok(entity.get_component_mut::<Self>()?)
|
||||
}
|
||||
|
||||
pub fn setup(mut multi_mut: MultiMut<'_>) -> Result<()> {
|
||||
let location = multi_mut.get::<Location>()?;
|
||||
let draw = multi_mut.get::<Draw>().ok();
|
||||
let audio = multi_mut.get::<Audio>().ok();
|
||||
pub fn setup(entity: &mut EntityObject) -> Result<()> {
|
||||
let (location, draw, audio): (&mut Location, &mut Draw, &mut Audio) =
|
||||
entity.get_components_mut()?;
|
||||
|
||||
if let Some(draw) = draw {
|
||||
location.set_draw_callback(draw);
|
||||
|
|
|
@ -23,6 +23,7 @@ use std::time::Instant;
|
|||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
#[derive(Resource)]
|
||||
pub struct Scene {
|
||||
screen_width: f32,
|
||||
screen_height: f32,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use ecs::World;
|
||||
use ecs::{World, resources::Resource};
|
||||
use ui::prelude::*;
|
||||
use vulkan_rs::prelude::*;
|
||||
|
||||
|
@ -11,7 +11,7 @@ use std::sync::Arc;
|
|||
|
||||
use crate::prelude::*;
|
||||
|
||||
pub trait TScene: Send + Sync + 'static {
|
||||
pub trait TScene: Resource + Send + Sync + 'static {
|
||||
fn process(
|
||||
&mut self,
|
||||
buffer_recorder: &mut CommandBufferRecorder<'_>,
|
||||
|
|
Loading…
Reference in a new issue