Skip to content

Commit fa37cee

Browse files
authored
Merge pull request #54 from CleanCut/bevy-0.8
Update to bevy-0.8 and bevy_prototype_lyon 0.6
2 parents f1f8152 + cd42641 commit fa37cee

File tree

10 files changed

+36
-28
lines changed

10 files changed

+36
-28
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<!-- next-header -->
22
## [Unreleased] - ReleaseDate
33

4+
## Improved
5+
6+
- Updated to `bevy 0.8` and `bevy_prototype_lyon 0.6` under the hood, which resolves the occasional stuttering problem.
7+
8+
49
## [5.1.0] - 2022-06-18
510

611
### Improved

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ exclude = [
2121
]
2222

2323
[dependencies]
24-
bevy = { version = "0.7.0", default-features = false, features = [
24+
bevy = { version = "0.8.0", default-features = false, features = [
2525
"bevy_audio",
2626
"bevy_gilrs",
2727
"bevy_gltf",
@@ -33,7 +33,7 @@ bevy = { version = "0.7.0", default-features = false, features = [
3333
"x11",
3434
"vorbis",
3535
] }
36-
bevy_prototype_lyon = "0.5"
36+
bevy_prototype_lyon = "0.6"
3737
ron = "0.7"
3838
serde = { version = "1.0", features = [ "derive" ] }
3939

examples/keyboard_events.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn logic(game_state: &mut Engine, _: &mut ()) {
2929
if let KeyboardInput {
3030
scan_code: _,
3131
key_code: Some(key_code),
32-
state: ElementState::Pressed,
32+
state: ButtonState::Pressed,
3333
} = keyboard_event
3434
{
3535
// Handle various keypresses. The extra keys are for the Dvorak keyboard layout. ;-)

examples/level_creator.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ fn logic(engine: &mut Engine, game_state: &mut GameState) {
100100
state,
101101
} = keyboard_event
102102
{
103-
if *state == ElementState::Pressed {
103+
if *state == ButtonState::Pressed {
104104
match key_code {
105105
KeyCode::Z | KeyCode::Semicolon => {
106106
print_level = true;
@@ -184,7 +184,7 @@ fn logic(engine: &mut Engine, game_state: &mut GameState) {
184184
}
185185
// Handle rotation via mouse clicks
186186
for mouse_button_input in &engine.mouse_button_events {
187-
if mouse_button_input.state != ElementState::Pressed {
187+
if mouse_button_input.state != ButtonState::Pressed {
188188
break;
189189
}
190190
let rotate_amount = if game_state.shift_pressed {

examples/mouse_events.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn logic(engine: &mut Engine, _: &mut ()) {
4242
if let Some(sprite) = engine.sprites.get_mut("Race Car") {
4343
// Use mouse button events to rotate. Every click rotates the sprite by a fixed amount
4444
for mouse_button_input in &engine.mouse_button_events {
45-
if mouse_button_input.state != ElementState::Pressed {
45+
if mouse_button_input.state != ButtonState::Pressed {
4646
break;
4747
}
4848
match mouse_button_input.button {

examples/music_sampler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn logic(engine: &mut Engine, game_state: &mut GameState) {
2424
let mut should_play_new_song = false;
2525
// Play a new song because a key was pressed
2626
for ev in engine.keyboard_events.drain(..) {
27-
if ev.state != ElementState::Pressed {
27+
if ev.state != ButtonState::Pressed {
2828
continue;
2929
}
3030
game_state.music_index = (game_state.music_index + 1) % MusicPreset::variant_iter().count();

src/game.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
use bevy::{
22
app::AppExit,
3-
core::Time,
4-
input::system::exit_on_esc_system,
53
prelude::{
6-
debug, App, AssetServer, Color, Commands, Component, DefaultPlugins, Entity, EventReader,
7-
EventWriter, HorizontalAlign, OrthographicCameraBundle, ParallelSystemDescriptorCoercion,
4+
debug, App, AssetServer, Camera2dBundle, Color, Commands, Component, DefaultPlugins,
5+
Entity, EventReader, EventWriter, HorizontalAlign, ParallelSystemDescriptorCoercion,
86
ParamSet, Query, Res, ResMut, SpriteBundle, Text as BevyText, Text2dBundle, TextAlignment,
97
TextStyle, Transform, Vec2, VerticalAlign, Windows,
108
},
9+
render::texture::ImageSettings,
10+
time::Time,
1111
utils::HashMap,
12+
window::close_on_esc,
1213
};
1314
use bevy_prototype_lyon::prelude::*;
1415
use std::{
@@ -209,18 +210,18 @@ pub fn add_texts(commands: &mut Commands, asset_server: &Res<AssetServer>, engin
209210
let text_string = text.value.clone();
210211
let font_path = text.font.clone();
211212
commands.spawn().insert(text).insert_bundle(Text2dBundle {
212-
text: BevyText::with_section(
213+
text: BevyText::from_section(
213214
text_string,
214215
TextStyle {
215216
font: asset_server.load(font_path.as_str()),
216217
font_size,
217218
color: Color::WHITE,
218219
},
219-
TextAlignment {
220-
vertical: VerticalAlign::Center,
221-
horizontal: HorizontalAlign::Center,
222-
},
223-
),
220+
)
221+
.with_alignment(TextAlignment {
222+
vertical: VerticalAlign::Center,
223+
horizontal: HorizontalAlign::Center,
224+
}),
224225
transform,
225226
..Default::default()
226227
});
@@ -230,12 +231,13 @@ pub fn add_texts(commands: &mut Commands, asset_server: &Res<AssetServer>, engin
230231
/// system - update current window dimensions in the engine, because people resize windows
231232
#[doc(hidden)]
232233
pub fn update_window_dimensions(windows: Res<Windows>, mut engine: ResMut<Engine>) {
233-
// Unwrap: If we can't access the primary window...there's no point to running Rusty Engine
234-
let window = windows.get_primary().unwrap();
235-
let screen_dimensions = Vec2::new(window.width(), window.height());
236-
if screen_dimensions != engine.window_dimensions {
237-
engine.window_dimensions = screen_dimensions;
238-
debug!("Set window dimensions: {}", engine.window_dimensions);
234+
// It's possible to not have window dimensions for the first frame or two
235+
if let Some(window) = windows.get_primary() {
236+
let screen_dimensions = Vec2::new(window.width(), window.height());
237+
if screen_dimensions != engine.window_dimensions {
238+
engine.window_dimensions = screen_dimensions;
239+
debug!("Set window dimensions: {}", engine.window_dimensions);
240+
}
239241
}
240242
}
241243

@@ -296,11 +298,12 @@ impl<S: Send + Sync + 'static> Game<S> {
296298
pub fn run(&mut self, initial_game_state: S) {
297299
self.app
298300
.insert_resource::<WindowDescriptor>(self.window_descriptor.clone())
301+
.insert_resource(ImageSettings::default_nearest())
299302
.insert_resource::<S>(initial_game_state);
300303
self.app
301304
// Built-ins
302305
.add_plugins(DefaultPlugins)
303-
.add_system(exit_on_esc_system)
306+
.add_system(close_on_esc)
304307
// External Plugins
305308
.add_plugin(ShapePlugin) // bevy_prototype_lyon, for displaying sprite colliders
306309
// Rusty Engine Plugins
@@ -319,7 +322,7 @@ impl<S: Send + Sync + 'static> Game<S> {
319322
self.app
320323
.world
321324
.spawn()
322-
.insert_bundle(OrthographicCameraBundle::new_2d());
325+
.insert_bundle(Camera2dBundle::default());
323326
let engine = std::mem::take(&mut self.engine);
324327
self.app.insert_resource(engine);
325328
let logic_functions = std::mem::take(&mut self.logic_functions);

src/mouse.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use bevy::{prelude::*, utils::HashSet};
77
pub use bevy::{
88
input::{
99
mouse::{MouseButton, MouseButtonInput, MouseMotion, MouseWheel},
10-
ElementState,
10+
ButtonState,
1111
},
1212
window::CursorMoved,
1313
};

tutorial/src/110-keyboard-events.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ for keyboard_event in game_state.keyboard_events.drain(..) {
1111
if let KeyboardInput {
1212
scan_code: _,
1313
key_code: Some(key_code),
14-
state: ElementState::Pressed,
14+
state: ButtonState::Pressed,
1515
} = keyboard_event
1616
{
1717
match key_code {

tutorial/src/120-mouse-events.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ You usually want to use [mouse state](115-mouse-state.md) for mouse buttons, whi
1111

1212
```rust,ignored
1313
for mouse_button_input in &engine.mouse_button_events {
14-
if mouse_button_input.state != ElementState::Pressed {
14+
if mouse_button_input.state != ButtonState::Pressed {
1515
break;
1616
}
1717
match mouse_button_input.button {

0 commit comments

Comments
 (0)