Basic tilemap rendering
This commit is contained in:
parent
f1f38ba592
commit
305f8740ab
15
.idea/git_toolbox_prj.xml
generated
Normal file
15
.idea/git_toolbox_prj.xml
generated
Normal 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
BIN
assets/tileset.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 130 B |
1
src/helpers/mod.rs
Normal file
1
src/helpers/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub mod texture;
|
20
src/helpers/texture.rs
Normal file
20
src/helpers/texture.rs
Normal 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;
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
}
|
51
src/main.rs
51
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<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();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user