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

View File

@@ -860,13 +860,4 @@
( 1792 5376 128 ) ( 1793 5376 128 ) ( 1792 5376 129 ) blue-metal [ -1 0 0 32 ] [ 0 0 -1 -32 ] 90 1 1 ( 1792 5376 128 ) ( 1793 5376 128 ) ( 1792 5376 129 ) blue-metal [ -1 0 0 32 ] [ 0 0 -1 -32 ] 90 1 1
( 1792 5312 128 ) ( 1792 5312 129 ) ( 1792 5313 128 ) blue-metal [ 0 1 0 -32 ] [ 0 0 -1 -32 ] 180 1 1 ( 1792 5312 128 ) ( 1792 5312 129 ) ( 1792 5313 128 ) blue-metal [ 0 1 0 -32 ] [ 0 0 -1 -32 ] 180 1 1
} }
// brush 1
{
( 1776 5184 128 ) ( 1776 5185 128 ) ( 1776 5184 129 ) __TB_empty [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 1776 5120 128 ) ( 1776 5120 129 ) ( 1777 5120 128 ) __TB_empty [ 1 0 0 0 ] [ 0 0 -1 0 ] 270 1 1
( 1776 5184 128 ) ( 1777 5184 128 ) ( 1776 5185 128 ) __TB_empty [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 5264 144 ) ( 1792 5265 144 ) ( 1793 5264 144 ) __TB_empty [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 1792 5376 144 ) ( 1793 5376 144 ) ( 1792 5376 145 ) __TB_empty [ -1 0 0 0 ] [ 0 0 -1 0 ] 270 1 1
( 1792 5264 144 ) ( 1792 5264 145 ) ( 1792 5265 144 ) __TB_empty [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
} }

View File

@@ -3,6 +3,7 @@ mod camera;
mod cash; mod cash;
mod gates; mod gates;
mod heads_ui; mod heads_ui;
mod platforms;
mod player; mod player;
mod tb_entities; mod tb_entities;
@@ -66,6 +67,7 @@ fn main() {
app.add_plugins(player::plugin); app.add_plugins(player::plugin);
app.add_plugins(heads_ui::plugin); app.add_plugins(heads_ui::plugin);
app.add_plugins(gates::plugin); app.add_plugins(gates::plugin);
app.add_plugins(platforms::plugin);
app.insert_resource(AmbientLight { app.insert_resource(AmbientLight {
color: Color::WHITE, color: Color::WHITE,

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);
}
}

View File

@@ -60,7 +60,7 @@ pub struct Platform;
#[reflect(Component)] #[reflect(Component)]
#[require(Transform)] #[require(Transform)]
pub struct PlatformTarget { pub struct PlatformTarget {
targetname: String, pub targetname: String,
} }
#[derive(PointClass, Component, Reflect, Default)] #[derive(PointClass, Component, Reflect, Default)]