Compare commits
1
Commits
master
...
153a793ebe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
153a793ebe |
@@ -109,6 +109,7 @@ impl FighterDebugRowKind {
|
||||
enum DebugFlag {
|
||||
Network,
|
||||
Ecb,
|
||||
BlastZones,
|
||||
StageCollision,
|
||||
AnimationBones,
|
||||
AttackHitboxes,
|
||||
@@ -150,6 +151,10 @@ const FIGHTER_MENU: &[DebugMenuEntry] = &[
|
||||
label: "ECB",
|
||||
flag: DebugFlag::Ecb,
|
||||
},
|
||||
DebugMenuEntry::Toggle {
|
||||
label: "Blast Zones",
|
||||
flag: DebugFlag::BlastZones,
|
||||
},
|
||||
DebugMenuEntry::Toggle {
|
||||
label: "Animation bones",
|
||||
flag: DebugFlag::AnimationBones,
|
||||
@@ -243,6 +248,7 @@ pub struct DebugSettings {
|
||||
pub frame_stepping: bool,
|
||||
pub network: bool,
|
||||
pub ecb: bool,
|
||||
pub blast_zones: bool,
|
||||
pub stage_collision: bool,
|
||||
pub animation_bones: bool,
|
||||
pub attack_hitboxes: bool,
|
||||
@@ -264,6 +270,7 @@ impl Default for DebugSettings {
|
||||
frame_stepping: false,
|
||||
network: false,
|
||||
ecb: false,
|
||||
blast_zones: true,
|
||||
stage_collision: false,
|
||||
animation_bones: false,
|
||||
attack_hitboxes: false,
|
||||
@@ -328,6 +335,7 @@ impl DebugSettings {
|
||||
match flag {
|
||||
DebugFlag::Network => self.network,
|
||||
DebugFlag::Ecb => self.ecb,
|
||||
DebugFlag::BlastZones => self.blast_zones,
|
||||
DebugFlag::StageCollision => self.stage_collision,
|
||||
DebugFlag::AnimationBones => self.animation_bones,
|
||||
DebugFlag::AttackHitboxes => self.attack_hitboxes,
|
||||
@@ -342,6 +350,7 @@ impl DebugSettings {
|
||||
match flag {
|
||||
DebugFlag::Network => self.network = !self.network,
|
||||
DebugFlag::Ecb => self.ecb = !self.ecb,
|
||||
DebugFlag::BlastZones => self.blast_zones = !self.blast_zones,
|
||||
DebugFlag::StageCollision => self.stage_collision = !self.stage_collision,
|
||||
DebugFlag::AnimationBones => self.animation_bones = !self.animation_bones,
|
||||
DebugFlag::AttackHitboxes => self.attack_hitboxes = !self.attack_hitboxes,
|
||||
@@ -884,6 +893,10 @@ pub fn stage_collision_enabled(settings: Res<DebugSettings>) -> bool {
|
||||
settings.stage_collision
|
||||
}
|
||||
|
||||
pub fn blast_zones_enabled(settings: Res<DebugSettings>) -> bool {
|
||||
settings.blast_zones
|
||||
}
|
||||
|
||||
pub fn animation_bones_enabled(settings: Res<DebugSettings>) -> bool {
|
||||
settings.animation_bones
|
||||
}
|
||||
|
||||
+29
-1
@@ -1,6 +1,12 @@
|
||||
use bevy::{color::palettes::css::RED, prelude::*};
|
||||
|
||||
use crate::stage::line::StageCollision;
|
||||
use crate::{
|
||||
match_loading::MatchConfig,
|
||||
stage::{
|
||||
line::StageCollision,
|
||||
manifest::{StageManifest, StageManifestRegistry},
|
||||
},
|
||||
};
|
||||
|
||||
pub fn debug_draw_scene(mut gizmos: Gizmos, stage_collision: Res<StageCollision>) {
|
||||
for poly in stage_collision.stage_polys.iter() {
|
||||
@@ -16,3 +22,25 @@ pub fn debug_draw_scene(mut gizmos: Gizmos, stage_collision: Res<StageCollision>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn debug_draw_blast_zones(
|
||||
mut gizmos: Gizmos,
|
||||
stage_registry: Res<StageManifestRegistry>,
|
||||
stage_manifests: Res<Assets<StageManifest>>,
|
||||
match_config: Res<MatchConfig>,
|
||||
) {
|
||||
let Some(stage_manifest_handle) = stage_registry.get(match_config.stage) else {
|
||||
return;
|
||||
};
|
||||
|
||||
let Some(stage_manifest) = stage_manifests.get(&stage_manifest_handle) else {
|
||||
return;
|
||||
};
|
||||
|
||||
let top_left = stage_manifest.blast_zone_top_left.to_vec2();
|
||||
let bottom_right = stage_manifest.blast_zone_bottom_right.to_vec2();
|
||||
let center = (top_left + bottom_right) / 2.0;
|
||||
let size = (bottom_right - top_left).abs();
|
||||
|
||||
gizmos.rect(Vec3::new(center.x, center.y, 0.0), size, bevy::color::palettes::css::BLUE);
|
||||
}
|
||||
|
||||
@@ -7,14 +7,10 @@ use strum::IntoEnumIterator;
|
||||
use strum_macros::EnumIter;
|
||||
|
||||
use crate::{
|
||||
AppState,
|
||||
game_settings::GameSettings,
|
||||
math::vec::FGVec2,
|
||||
stage::{
|
||||
AppState, game_settings::GameSettings, math::{vec::FGVec2}, stage::{
|
||||
StagePoly,
|
||||
line::{StageCollision, StagePolyLineSegmentType, StagePolyType},
|
||||
},
|
||||
texture_reference::TextureReference,
|
||||
}, texture_reference::TextureReference,
|
||||
};
|
||||
use bevy::prelude::*;
|
||||
|
||||
@@ -87,6 +83,11 @@ pub struct StageManifest {
|
||||
pub icon: TextureReference,
|
||||
pub camera: StageCameraProfile,
|
||||
pub polygons: Vec<StagePolyDefinition>,
|
||||
|
||||
#[reflect(ignore)]
|
||||
pub blast_zone_top_left: FGVec2,
|
||||
#[reflect(ignore)]
|
||||
pub blast_zone_bottom_right: FGVec2,
|
||||
}
|
||||
|
||||
#[derive(Resource)]
|
||||
|
||||
+8
-3
@@ -10,7 +10,7 @@ pub mod scene;
|
||||
|
||||
pub use line::{StagePlaneIntersectResult, StagePoly};
|
||||
|
||||
use crate::stage::{line::StageCollision, manifest::StageCameraProfile};
|
||||
use crate::{match_loading::MatchConfig, stage::{line::StageCollision, manifest::StageCameraProfile}};
|
||||
|
||||
/// Owns the stage geometry: which scene gets spawned and how it is drawn.
|
||||
#[derive(Default)]
|
||||
@@ -20,9 +20,14 @@ impl Plugin for StagePlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_systems(
|
||||
Update,
|
||||
debug::debug_draw_scene
|
||||
(
|
||||
(debug::debug_draw_scene
|
||||
.run_if(resource_exists::<line::StageCollision>)
|
||||
.run_if(crate::debug_tools::stage_collision_enabled),
|
||||
.run_if(crate::debug_tools::stage_collision_enabled)),
|
||||
(debug::debug_draw_blast_zones
|
||||
.run_if(resource_exists::<MatchConfig>)
|
||||
.run_if(crate::debug_tools::blast_zones_enabled),),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user