work in progress platform
This commit is contained in:
51
src/platforms.rs
Normal file
51
src/platforms.rs
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user