Basic tilemap rendering

This commit is contained in:
Gender Shrapnel 2022-05-13 00:36:25 +02:00
parent f1f38ba592
commit 305f8740ab
5 changed files with 85 additions and 2 deletions

15
.idea/git_toolbox_prj.xml generated Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GitToolBoxProjectSettings">
<option name="commitMessageIssueKeyValidationOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
<option name="commitMessageValidationEnabledOverride">
<BoolValueOverride>
<option name="enabled" value="true" />
</BoolValueOverride>
</option>
</component>
</project>

BIN
assets/tileset.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

1
src/helpers/mod.rs Normal file
View File

@ -0,0 +1 @@
pub mod texture;

20
src/helpers/texture.rs Normal file
View File

@ -0,0 +1,20 @@
use bevy::{prelude::*, render::render_resource::TextureUsages};
pub fn set_texture_filters_to_nearest(
mut texture_events: EventReader<AssetEvent<Image>>,
mut textures: ResMut<Assets<Image>>,
) {
// 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;
}
}
_ => (),
}
}
}

View File

@ -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<AssetServer>, 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::<TileBundle>::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();
}