作業メモ:bevy 0.5 ⇒ 0.6
let mut app = App::build();
let mut app = App::new();
.system()
を全て削除。
.add_startup_system( spawn_camera.system() )
.add_startup_system( spawn_camera )
Struct bevy::prelude::Visible
が
Struct bevy::prelude::Visibility
へ
変更されている。
pub struct Visible {
pub is_visible: bool,
pub is_transparent: bool,
}
pub struct Visibility {
pub is_visible: bool,
}
コンポーネントの宣言には#[ derive( Component ) ]
が必須になった。
pub struct MessageDemo;
#[ derive( Component ) ]
pub struct MessageDemo;
single_mut()
はget_single_mut()
へ名前が変わった。
- 同様に
single()
もget_single()
へ名前変更 -
single_mut()
とsingle()
はResult型を返さなくなりPanicする
pub fn single(
&self
) -> Result<<<Q as WorldQuery>::Fetch as Fetch<'_>>::Item, QuerySingleError>
pub fn single_mut(
&mut self
) -> Result<<<Q as WorldQuery>::Fetch as Fetch<'_>>::Item, QuerySingleError>
pub fn single(
&'s self
) -> <<Q as WorldQuery>::ReadOnlyFetch as Fetch<'w, 's>>::Item
pub fn single_mut(
&mut self
) -> <<Q as WorldQuery>::Fetch as Fetch<'_, '_>>::Item
pub fn get_single(
&'s self
) -> Result<<<Q as WorldQuery>::ReadOnlyFetch as Fetch<'w, 's>>::Item, QuerySingleError>
pub fn get_single_mut(
&mut self
) -> Result<<<Q as WorldQuery>::Fetch as Fetch<'_, '_>>::Item, QuerySingleError>
Enum bevy::window::WindowMode
のFullscreen
関係が変更されている。
pub enum WindowMode {
Windowed,
BorderlessFullscreen,
Fullscreen {
use_size: bool,
},
}
pub enum WindowMode {
Windowed,
BorderlessFullscreen,
SizedFullscreen,
Fullscreen,
}
AppBuilder
がApp
へ変更されている。
impl Plugin for MyPlugin
{ fn build( &self, app: &mut AppBuilder ) { ... }
}
impl Plugin for MyPlugin
{ fn build( &self, app: &mut App ) { ... }
}
Struct bevy::prelude::TextBundle
のメンバーである
pub visible: Visible,
が
pub visibility: Visibility,
へ
変更されている。
demo_text.visible.is_visible = false;
demo_text.visibility.is_visible = false;
Struct bevy::prelude::SpriteBundle
と
Struct bevy::prelude::Sprite
が変更されている。
-
Sprite::new()
が無くなっている - 色の指定が
SpriteBundle { material: }
からSprite { color: }
へ移され、Assets<ColorMaterial>
が不要になった
fn sprite_preloading_anime_tile
( ( x, y ): ( f32, f32 ),
color_matl: &mut ResMut<Assets<ColorMaterial>>,
) -> SpriteBundle
{ let position = Vec3::new( x, y, SPRITE_TILE_DEPTH );
let square = Vec2::new( SPRITE_TILE_PIXEL, SPRITE_TILE_PIXEL );
SpriteBundle
{ material : color_matl.add( SPRITE_TILE_COLOR.into() ),
transform: Transform::from_translation( position ),
sprite : Sprite::new( square ),
..Default::default()
}
}
fn sprite_preloading_anime_tile
( ( x, y ): ( f32, f32 ),
) -> SpriteBundle
{ let position = Vec3::new( x, y, SPRITE_TILE_DEPTH );
let square = Vec2::new( SPRITE_TILE_PIXEL, SPRITE_TILE_PIXEL );
SpriteBundle
{ transform: Transform::from_translation( position ),
sprite : Sprite
{ color: SPRITE_TILE_COLOR.into(),
custom_size: Some( square ),
..Default::default()
},
..Default::default()
}
}
.for_each_mut()
を生やすQuery
にmut
が必要になった。
fn move_preload_anime_tile
( q: Query< &mut Transform >,
:
)
{ :
q.for_each_mut( | ( mut t ) | { ... } );
:
}
fn move_preload_anime_tile
( mut q: Query< &mut Transform >, // ここに mut が必要
:
)
{ :
q.for_each_mut( | ( mut t ) | { ... } );
:
}
bevy 0.6に対応したクレートbevy_prototype_lyon = "0.4.0"
で
Struct bevy_prototype_lyon::geometry::GeometryBuilder::build_as()
の
第二引数colors
が無くなった。
pub fn build_as(
shape: &impl Geometry,
colors: ShapeColors,
mode: DrawMode,
transform: Transform
) -> ShapeBundle
pub fn build_as(
shape: &impl Geometry,
mode: DrawMode,
transform: Transform
) -> ShapeBundle
1つ上のbevy_prototype_lyon = "0.4.0"
のbuild_as()
の続き。
色の指定が第二引数mode
の中(FillMode
の中)に移されていた。
GeometryBuilder::build_as
( &shapes::Circle { radius: SPRITE_DOT_RAIDUS, ..shapes::Circle::default() },
ShapeColors::new( SPRITE_DOT_COLOR ),
DrawMode::Fill( FillOptions::default() ),
Transform::from_translation( position ),
)
GeometryBuilder::build_as
( &shapes::Circle { radius: SPRITE_DOT_RAIDUS, ..shapes::Circle::default() },
DrawMode::Fill
( FillMode
{ options: FillOptions::default(),
color: SPRITE_DOT_COLOR,
}
),
Transform::from_translation( position ),
)
QuerySet
はQuery
ではなくQueryState
で組むようになった。
pub fn detect_collision
( mut q_set: QuerySet
<( Query<( &mut Player, &mut Transform )>,
Query<( &mut Chaser, &mut Transform )>,
)>,
)
{...}
pub fn detect_collision
( mut q_set: QuerySet
<( QueryState<( &mut Player, &mut Transform )>,
QueryState<( &mut Chaser, &mut Transform )>,
)>,
)
{...}
1つ上のQuerySet
の続き。0.6には以下が無くなった。
bevy::ecs::system::QuerySet::q0_mut()
bevy::ecs::system::QuerySet::q1_mut()
bevy::ecs::system::QuerySet::q2_mut()
bevy::ecs::system::QuerySet::q3_mut()
しかし名前に_mut
がついていないq0()
q1()
q2()
q3()
で同じ効果が得られる。
※コンパイラと殴り合いが少し発生したが、和解はすぐ可能だった
pub fn detect_collision
( mut q_set: QuerySet
<( Query<( &mut Player, &mut Transform )>,
Query<( &mut Chaser, &mut Transform )>,
)>,
)
{
:
let ( mut player, mut transform ) = q_set.q0_mut().iter_mut().next().unwrap();
let ( p_grid_x, p_grid_y ) = player.grid_position;
:
}
pub fn detect_collision
( mut q_set: QuerySet
<( QueryState<( &mut Player, &mut Transform )>,
QueryState<( &mut Chaser, &mut Transform )>,
)>,
)
{
:
let mut q0 = q_set.q0(); //ここをletで束縛しないといけない
let ( mut player, mut transform ) = q0.iter_mut().next().unwrap();
let ( p_grid_x, p_grid_y ) = player.grid_position;
:
}
bevy 0.6 からは bevy_webgl2 に頼らなくてもWASMに変換できるようになった。
https://github.com/mrk-its/bevy_webgl2_app_template をテンプレートに使う
cargo build --target wasm32-unknown-unknown
buildの結果 ./target/wasm32-unknown-unknown/release/xxx.wasm が出力されたら、
wasm-bindgen --out-dir ./out --target web --no-typescript ./target/wasm32-unknown-unknown/release/xxx.wasm
すると ./out/xxx_bg.wasm と ./out/xxx.js が出力される。
index.html等から ./out/xxx.js を呼び出せば ./out/xxx_bg.wasm を実行できる(ハズ)。
Struct bevy::math::Vec2::from_slice_unaligned()
の名前が変わっている。
- 他にも名前が変更されたものがあった(
Vec2::write_to_slice_unaligned()
等)
pub fn from_slice_unaligned(slice: &[f32]) -> Vec2
pub fn from_slice(slice: &[f32]) -> Vec2
WASMで動くようになったのは嬉しいけどフレーム落ちがすごいなぁ!