1
2
3use crate::tile_types_config::ClayTilesTypesConfigResource;
4use crate::tile_types_config::ClayTilesConfigResource;
5use crate::tile_types_config::TileTypeConfig;
6use bevy::platform::collections::hash_map::HashMap;
7use crate::tile_types_config::TileTypesConfig;
9use crate::modify_tiles::modify_tiles_plugin;
11use bevy::asset::{AssetPath, LoadState};
14use crate::tiles_config::ClayTilesConfig;
15use crate::tile_edit::tile_edit_plugin;
18
19use crate::clay_tile_block::clay_tile_block_plugin;
20
21use crate::tile_material::TileMaterialExtension;
22use crate::tile_material::TILE_SHADER_HANDLE;
23use bevy::{asset::load_internal_asset, prelude::*};
25
26
27
28 pub mod clay_tile_block;
31 pub mod tile_material;
32 pub mod tiles_config;
33 pub mod tile_types_config;
34 pub mod tile_edit;
35 pub mod pre_mesh;
36 pub mod clay_tile;
37 pub mod modify_tiles;
38
39
40pub struct BevyClayTilesPlugin {
41 pub config: ClayTilesConfig
42}
43
44impl Plugin for BevyClayTilesPlugin {
45 fn build(&self, app: &mut App) {
46
47 app.insert_resource(ClayTilesTypesConfigResource::new(
49 &TileTypesConfig::load_from_file(
50 &format!("assets/{}",AssetPath::from_path( self.config.get_tile_types_config_path() ).path().to_str().unwrap() )
51 ).unwrap()
52
53 ) );
54 app.insert_resource(ClayTilesConfigResource(self.config.clone())) ;
55 load_internal_asset!(
58 app,
59 TILE_SHADER_HANDLE,
60 "shaders/tile.wgsl",
61 Shader::from_wgsl
62 );
63 app.add_plugins(MaterialPlugin::<TileMaterialExtension>::default());
64
65
66 app
77 .add_plugins(clay_tile_block_plugin)
78 .add_plugins(tile_edit_plugin)
79 .add_plugins(modify_tiles_plugin)
80 ;
87
88
89 }
90}
91
92
93