work in progress platform

This commit is contained in:
2025-03-08 23:25:51 +01:00
parent 75f7b1c7b3
commit 6bbc718eba
4 changed files with 54 additions and 10 deletions

51
src/platforms.rs Normal file
View File

@@ -0,0 +1,51 @@
use crate::tb_entities::Platform;
use bevy::{math::ops::sin, prelude::*};
use bevy_trenchbroom::class::Target;
#[derive(Component, Reflect, Default, Debug)]
#[reflect(Component)]
struct ActivePlatform {
pub start: Vec3,
pub target: Vec3,
}
pub fn plugin(app: &mut App) {
app.register_type::<ActivePlatform>();
app.add_systems(Update, (init, move_active));
}
fn init(
mut commands: Commands,
uninit_platforms: Query<
(Entity, &Target, &Transform),
(Without<ActivePlatform>, With<Platform>),
>,
// targets: Query<(&PlatformTarget, &Transform)>,
) {
for (e, _target, transform) in uninit_platforms.iter() {
// let Some(target) = targets
// .iter()
// .find(|(t, _)| t.targetname == target.target.clone().unwrap_or_default())
// .map(|(_, t)| *t)
// else {
// continue;
// };
let platform = ActivePlatform {
start: transform.translation,
target: transform.translation + Vec3::new(0., 20., 0.),
};
info!("platform: {:?}", platform);
commands.entity(e).insert(platform);
}
}
fn move_active(time: Res<Time>, mut platforms: Query<(&mut Transform, &mut ActivePlatform)>) {
for (mut transform, active) in platforms.iter_mut() {
let t = (sin(time.elapsed_secs() * 0.5) + 1.) / 2.;
transform.translation = active.start.lerp(active.target, t);
}
}