From 85f32250b18ecfce722c33720a92cd30b76b5481 Mon Sep 17 00:00:00 2001 From: Dietrich Date: Wed, 21 Dec 2022 11:08:04 +0100 Subject: [PATCH] updated examples for simpler interface --- examples/koch.rs | 22 ++++++---------------- examples/stern.rs | 36 ++++++++++++++++++++++++++++++++++++ src/main.rs | 24 +++++++++++++----------- 3 files changed, 55 insertions(+), 27 deletions(-) create mode 100644 examples/stern.rs diff --git a/examples/koch.rs b/examples/koch.rs index 8a50a50..f123ce2 100644 --- a/examples/koch.rs +++ b/examples/koch.rs @@ -23,32 +23,22 @@ fn setup(mut commands: Commands) { let mut turtle = get_a_turtle(); turtle.set_speed(1); for _x in 0..3 { - koch(4, &mut turtle); - let mut left = turtle.create_plan(); - left.right(120); - turtle.extend_plan(left); + koch(3, &mut turtle); + turtle.right(120); } commands.spawn((turtle, Egon {})); } fn koch(depth: u32, turtle: &mut AnimatedTurtle) { if depth == 0 { - let mut forward = turtle.create_plan(); - forward.forward(10); - turtle.extend_plan(forward) + turtle.forward(10); } else { koch(depth - 1, turtle); - let mut left = turtle.create_plan(); - left.left(60); - turtle.extend_plan(left); + turtle.left(60); koch(depth - 1, turtle); - let mut right = turtle.create_plan(); - right.right(120); - turtle.extend_plan(right); + turtle.right(120); koch(depth - 1, turtle); - let mut left = turtle.create_plan(); - left.left(60); - turtle.extend_plan(left); + turtle.left(60); koch(depth - 1, turtle); } } diff --git a/examples/stern.rs b/examples/stern.rs new file mode 100644 index 0000000..5e14ea4 --- /dev/null +++ b/examples/stern.rs @@ -0,0 +1,36 @@ +use bevy::prelude::*; +use bevy_inspector_egui::Inspectable; +use turtle_lib::builders::{CurvedMovement, DirectionalMovement}; +use turtle_lib::turtle_bundle::AnimatedTurtle; +use turtle_lib::{get_a_turtle, TurtlePlugin}; + +use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; + +#[derive(Component, Inspectable)] +struct Egon {} + +fn main() { + App::new() + .add_plugin(TurtlePlugin) + .add_startup_system(setup) + //.add_system(plan) + .add_plugin(LogDiagnosticsPlugin::default()) + .add_plugin(FrameTimeDiagnosticsPlugin::default()) + .run(); +} + +fn setup(mut commands: Commands) { + let mut turtle = get_a_turtle(); + turtle.set_speed(500); + stern(&mut turtle); + commands.spawn((turtle, Egon {})); +} + +fn stern(turtle: &mut AnimatedTurtle) { + for _ in 0..5 { + turtle.forward(200); + turtle.circle(10, 72); + turtle.circle_right(5, 360); + turtle.circle(10, 72); + } +} diff --git a/src/main.rs b/src/main.rs index 6408c79..11e8ee7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use bevy::prelude::*; use bevy_inspector_egui::Inspectable; -use turtle_lib::builders::Turnable; +use turtle_lib::builders::{CurvedMovement, DirectionalMovement, Turnable}; use turtle_lib::{get_a_turtle, TurtlePlugin}; use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; @@ -20,17 +20,19 @@ fn main() { fn setup(mut commands: Commands) { let mut turtle = get_a_turtle(); - let mut p = turtle.create_plan(); + turtle.set_speed(1000); + turtle.circle(50, 90); + turtle.circle_right(50, 180); + turtle.circle(50, 90); for x in 0..1999 { - p.forward(x.into()); - p.right(45.into()); - p.forward(30.into()); - p.left((90 + x).into()); - p.forward(30.into()); - p.right(45.into()); - p.forward(x.into()); - p.left(91.into()); + turtle.forward(x); + turtle.right(45); + turtle.forward(30); + turtle.left(90 + x); + turtle.forward(30); + turtle.right(45); + turtle.forward(x); + turtle.left(91); } - turtle.apply_plan(p); commands.spawn((turtle, Egon {})); }