aboutsummaryrefslogtreecommitdiff
path: root/plugins/glues/gravity_movement
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/glues/gravity_movement')
-rw-r--r--plugins/glues/gravity_movement/Cargo.toml9
-rw-r--r--plugins/glues/gravity_movement/src/lib.rs29
2 files changed, 38 insertions, 0 deletions
diff --git a/plugins/glues/gravity_movement/Cargo.toml b/plugins/glues/gravity_movement/Cargo.toml
new file mode 100644
index 0000000..4b5790c
--- /dev/null
+++ b/plugins/glues/gravity_movement/Cargo.toml
@@ -0,0 +1,9 @@
+[package]
+name = "ch-gravity-movement"
+version.workspace = true
+edition.workspace = true
+
+[dependencies]
+bevy.workspace = true
+ch-movement.workspace = true
+ch-gravity.workspace = true
diff --git a/plugins/glues/gravity_movement/src/lib.rs b/plugins/glues/gravity_movement/src/lib.rs
new file mode 100644
index 0000000..da31061
--- /dev/null
+++ b/plugins/glues/gravity_movement/src/lib.rs
@@ -0,0 +1,29 @@
+//! CH Glue - Gravity & Movement
+//!
+//! This module provides the glue layer for the Gravity and Movement modules.
+
+#![deny(missing_docs)]
+
+use bevy::{
+ app::{FixedUpdate, Plugin},
+ ecs::system::{Query, Res},
+};
+use ch_gravity::Gravity;
+use ch_movement::{Movement, Velocity};
+
+/// Cigarette Hacker gravity movement glue
+pub struct CHGravityMovementGluePlugin;
+
+impl Plugin for CHGravityMovementGluePlugin {
+ fn build(&self, app: &mut bevy::app::App) {
+ app.add_systems(FixedUpdate, apply_gravity_to_movement);
+ }
+}
+
+fn apply_gravity_to_movement(mut query: Query<(&mut Velocity, &Movement)>, gravity: Res<Gravity>) {
+ for (mut velocity, _movement) in query.iter_mut() {
+ velocity.x += gravity.x;
+ velocity.y += gravity.y;
+ velocity.z += gravity.z;
+ }
+}