Bevy 0.17 Migration Final PR (#76)

* Get bevy 0.17 compiling and running (#72)

* get bevy 0.17 compiling and running

* try to fix CI breaking from const assertion for client/server features

* fix `bin` -> `lib` for `shared` in CI

* typo

* fix some collider issues (#73)

* Physics/controller improvements (#74)

* trying to fix physics prediction

* fixed prediction desync

* substantial controller improvements

* Finish off main bevy 0.17 migration (#75)

* fix lookdir issues
- airplane moving backwards
- player model facing backwards
- camera was technically backwards the whole time, and player models were facing the right way; camera is now facing forwards
- firing without a target now respects lookdir

* fix aim targeting

* migrate to bevy_trenchbroom 0.10 crates release

* fixed colliders not being adjusted out of worldspace

* predict platforms to stop constant rollbacks while riding them

* fix key/head drop visuals not working

* Fix key/head drop random initial force

* fixed static head drops duplicating

* fix platform velocity inheritance

* fix thrown projectiles not autorotating

* fix inconsistent explosion animations

* update avian3d to 0.4.1

* fix controller snapping to fixed angle upon switching heads

* clean up commented code

* fix broken physics positions

* Clean comments, fix warnings (#77)

* clean comments, fix warnings

* fix missing import

* steamworks 162 libs

* fix mouselook

---------

Co-authored-by: extrawurst <mail@rusticorn.com>
This commit is contained in:
PROMETHIA-27
2025-11-15 09:16:38 -05:00
committed by GitHub
parent ad1b7446e1
commit b83e506a4d
75 changed files with 2514 additions and 1831 deletions

View File

@@ -1,6 +1,6 @@
use crate::{GameState, global_observer, loading_assets::UIAssets, utils::billboards::Billboard};
use bevy::prelude::*;
use bevy_sprite3d::{Sprite3dBuilder, Sprite3dParams};
use bevy_sprite3d::Sprite3d;
use ops::sin;
#[derive(Component, Reflect)]
@@ -25,10 +25,9 @@ fn move_marker(mut query: Query<&mut Transform, With<TargetMarker>>, time: Res<T
}
fn marker_event(
trigger: Trigger<MarkerEvent>,
trigger: On<MarkerEvent>,
mut commands: Commands,
assets: Res<UIAssets>,
mut sprite_params: Sprite3dParams,
marker: Query<Entity, With<TargetMarker>>,
) {
for m in marker.iter() {
@@ -45,14 +44,16 @@ fn marker_event(
Billboard::All,
TargetMarker,
Transform::default(),
Sprite3dBuilder {
image: assets.head_selector.clone(),
Sprite3d {
pixels_per_metre: 30.,
alpha_mode: AlphaMode::Blend,
unlit: true,
..default()
}
.bundle(&mut sprite_params),
},
Sprite {
image: assets.head_selector.clone(),
..default()
},
))
.id();

View File

@@ -2,16 +2,12 @@ mod marker;
mod target_ui;
use crate::{
GameState,
head::ActiveHead,
heads_database::HeadsDatabase,
hitpoints::Hitpoints,
physics_layers::GameLayer,
player::{Player, PlayerBodyMesh},
tb_entities::EnemySpawn,
GameState, control::ControlState, head::ActiveHead, heads_database::HeadsDatabase,
hitpoints::Hitpoints, physics_layers::GameLayer, player::Player, tb_entities::EnemySpawn,
};
use avian3d::prelude::*;
use bevy::prelude::*;
use lightyear::prelude::input::native::ActionState;
use marker::MarkerEvent;
use serde::{Deserialize, Serialize};
use std::f32::consts::PI;
@@ -74,20 +70,20 @@ fn head_change(
fn update_player_aim(
mut commands: Commands,
potential_targets: Query<(Entity, &Transform), With<Hitpoints>>,
player_rot: Query<(&Transform, &GlobalTransform), With<PlayerBodyMesh>>,
mut player_aim: Query<(Entity, &AimState, &mut AimTarget, &Children), With<Player>>,
mut player_aim: Query<
(
Entity,
&AimState,
&mut AimTarget,
&GlobalTransform,
&ActionState<ControlState>,
),
With<Player>,
>,
spatial_query: SpatialQuery,
) {
for (player, state, mut aim_target, children) in player_aim.iter_mut() {
let player_rot_child = children
.iter()
.find(|&child| player_rot.contains(child))
.expect("expected child with PlayerBodyMesh");
let (player_pos, player_forward) = player_rot
.get(player_rot_child)
.map(|(t, global)| (global.translation(), t.forward()))
.unwrap();
for (player, state, mut aim_target, global_tf, actions) in player_aim.iter_mut() {
let (player_pos, player_forward) = (global_tf.translation(), actions.look_dir);
let mut new_target = None;
let mut target_distance = f32::MAX;
@@ -97,7 +93,7 @@ fn update_player_aim(
continue;
}
let delta = player_pos - t.translation;
let delta = t.translation - player_pos;
let distance = delta.length();
@@ -191,9 +187,9 @@ fn line_of_sight(
) -> bool {
if let Some(_hit) = spatial_query.cast_shape(
&Collider::sphere(0.1),
player_pos + -delta.normalize() + (Vec3::Y * 2.),
player_pos + delta.normalize() + (Vec3::Y * 2.),
Quat::default(),
Dir3::new(-delta).unwrap(),
Dir3::new(delta).unwrap(),
&ShapeCastConfig {
max_distance: distance * 0.98,
compute_contact_on_penetration: false,