feat: Collision beginning

- Added system for detecting collisions with interactive objects
- Added interactive doors
This commit is contained in:
Alexey 2026-03-16 17:21:10 +03:00
commit 4c23a38b92
5 changed files with 524 additions and 10 deletions

View file

@ -7,9 +7,12 @@ pub mod ui;
mod tests;
use bevy::{prelude::*, ui_widgets::ScrollbarPlugin};
use bevy_rapier2d::{prelude::*, rapier::prelude::IntegrationParameters};
use leafwing_input_manager::prelude::*;
use serde::{Deserialize, Serialize};
pub const PIXELS_PER_METER: f32 = 16.0;
pub struct ExpeditionPlugin;
#[derive(Actionlike, PartialEq, Eq, Hash, Debug, Clone, Reflect, Serialize, Deserialize)]
@ -87,15 +90,30 @@ impl Plugin for ExpeditionPlugin {
input::InputAssetPlugin::<InputAction>::default(),
input::InputAssetPlugin::<UiAction>::default(),
ScrollbarPlugin,
RapierPhysicsPlugin::<()>::default()
.with_custom_initialization(RapierContextInitialization::InitializeDefaultRapierContext {
integration_parameters: IntegrationParameters {
length_unit: PIXELS_PER_METER,
..default()
},
rapier_configuration: RapierConfiguration {
gravity: Vec2::ZERO,
physics_pipeline_active: true,
scaled_shape_subdivision: 10,
force_update_from_transform_changes: false,
},
}),
RapierDebugRenderPlugin::default(),
))
.init_state::<GameState>()
.insert_resource(ui::WindowSize::default())
.add_systems(Startup, (player::setup_player, setup_global))
.add_systems(Startup, (player::setup_player, setup_global, layout::setup_world))
.add_systems(Update, (
player::handle_input,
ui::update_window_size,
ui::handle_input,
insert_entity_name,
layout::detect_interact_collisions,
))
.add_systems(OnEnter(GameState::Inventory), inventory::ui::setup_ui_inventory)
.add_systems(OnExit(GameState::Inventory), inventory::ui::clear_ui_inventory)