Skip to main content

Crate suon_movement

Crate suon_movement 

Source
Expand description

Movement systems for stepping and teleporting entities across the Suon world.

This crate owns intent-driven movement behaviors that update suon_position::position::Position and record suon_position::previous_position::PreviousPosition so downstream crates can react consistently to movement.

§Modules

§Examples

use bevy::prelude::*;
use suon_chunk::{Chunk, ChunkPlugin, chunks::Chunks};
use suon_movement::prelude::{MovementPlugins, StepIntent};
use suon_position::{direction::Direction, floor::Floor, position::Position};

let mut app = App::new();
app.add_plugins(MinimalPlugins);
app.add_plugins(ChunkPlugin);
app.add_plugins(MovementPlugins);

let chunk = app.world_mut().spawn(Chunk).id();
app.insert_resource(Chunks::from_iter([
    (Position { x: 1, y: 1 }, chunk),
    (Position { x: 2, y: 1 }, chunk),
]));

let entity = app.world_mut().spawn((Position { x: 1, y: 1 }, Floor { z: 0 })).id();
app.world_mut().trigger(StepIntent {
    to: Direction::East,
    entity,
});
app.update();

assert_eq!(
    *app.world().get::<Position>(entity).unwrap(),
    Position { x: 2, y: 1 }
);

Modules§

prelude

Structs§

MovementPlugins