diff --git a/.idea/git_toolbox_prj.xml b/.idea/git_toolbox_prj.xml
new file mode 100644
index 0000000..02b915b
--- /dev/null
+++ b/.idea/git_toolbox_prj.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/tileset.png b/assets/tileset.png
new file mode 100644
index 0000000..aeeda09
Binary files /dev/null and b/assets/tileset.png differ
diff --git a/src/helpers/mod.rs b/src/helpers/mod.rs
new file mode 100644
index 0000000..f41981d
--- /dev/null
+++ b/src/helpers/mod.rs
@@ -0,0 +1 @@
+pub mod texture;
\ No newline at end of file
diff --git a/src/helpers/texture.rs b/src/helpers/texture.rs
new file mode 100644
index 0000000..db630c5
--- /dev/null
+++ b/src/helpers/texture.rs
@@ -0,0 +1,20 @@
+use bevy::{prelude::*, render::render_resource::TextureUsages};
+
+pub fn set_texture_filters_to_nearest(
+ mut texture_events: EventReader>,
+ mut textures: ResMut>,
+) {
+ // quick and dirty, run this for all textures anytime a texture is created.
+ for event in texture_events.iter() {
+ match event {
+ AssetEvent::Created { handle } => {
+ if let Some(mut texture) = textures.get_mut(handle) {
+ texture.texture_descriptor.usage = TextureUsages::TEXTURE_BINDING
+ | TextureUsages::COPY_SRC
+ | TextureUsages::COPY_DST;
+ }
+ }
+ _ => (),
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main.rs b/src/main.rs
index e7a11a9..17943ed 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,50 @@
-fn main() {
- println!("Hello, world!");
+use bevy::prelude::*;
+use bevy_ecs_tilemap::prelude::*;
+
+mod helpers;
+
+fn startup(mut commands: Commands, asset_server: Res, mut map_query: MapQuery) {
+ commands.spawn_bundle(OrthographicCameraBundle::new_2d());
+
+ let texture_handle = asset_server.load("tileset.png");
+
+ let map_entity = commands.spawn().id();
+ let mut map = Map::new(0u16, map_entity);
+
+ let (mut layer_builder, layer_entity) = LayerBuilder::::new(
+ &mut commands,
+ LayerSettings::new(
+ MapSize(3, 3),
+ ChunkSize(8, 8),
+ TileSize(8.0, 8.0),
+ TextureSize(24.0, 24.0)
+ ),
+ 0u16,
+ 0u16
+ );
+ layer_builder.set_all(TileBundle::default());
+
+ map_query.build_layer(&mut commands, layer_builder, texture_handle);
+ map.add_layer(&mut commands, 0u16, layer_entity);
+
+ commands
+ .entity(map_entity)
+ .insert(map)
+ .insert(Transform::from_xyz(-128.0, -128.0, 0.0))
+ .insert(GlobalTransform::default());
+}
+
+fn main() {
+ App::new()
+ .insert_resource(WindowDescriptor {
+ width: 1270.0,
+ height: 720.0,
+ title: String::from("Monstrous"),
+ ..Default::default()
+ })
+ .add_plugins(DefaultPlugins)
+ .add_plugin(TilemapPlugin)
+ .add_startup_system(startup)
+ .add_system(helpers::texture::set_texture_filters_to_nearest)
+ .run();
}