Migrate to new Rapier.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
12c7759f66
commit
aba63ebb19
|
@ -22,11 +22,15 @@ features = [
|
||||||
"serialize",
|
"serialize",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[dependencies.bevy_rapier2d]
|
||||||
|
git = "https://github.com/dimforge/bevy_rapier"
|
||||||
|
branch = "rapier-master"
|
||||||
|
features = ["simd-stable"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
backtrace = "0.3"
|
backtrace = "0.3"
|
||||||
bevy_input_actionmap = { git = "https://github.com/lightsoutgames/bevy_input_actionmap" }
|
bevy_input_actionmap = { git = "https://github.com/lightsoutgames/bevy_input_actionmap" }
|
||||||
bevy_openal = { git = "https://github.com/lightsoutgames/bevy_openal" }
|
bevy_openal = { git = "https://github.com/lightsoutgames/bevy_openal" }
|
||||||
bevy_rapier2d = { version = "0.12", features = ["serde-serialize", "simd-stable"] }
|
|
||||||
bevy_tts = { git = "https://github.com/lightsoutgames/bevy_tts", default-features = false, features = ["tolk"] }
|
bevy_tts = { git = "https://github.com/lightsoutgames/bevy_tts", default-features = false, features = ["tolk"] }
|
||||||
coord_2d = "0.3"
|
coord_2d = "0.3"
|
||||||
derive_more = "0.99"
|
derive_more = "0.99"
|
||||||
|
@ -40,3 +44,6 @@ rand = "0.8"
|
||||||
sentry = "0.25"
|
sentry = "0.25"
|
||||||
serde = "1"
|
serde = "1"
|
||||||
shadowcast = "0.8"
|
shadowcast = "0.8"
|
||||||
|
|
||||||
|
[patch.crates-io]
|
||||||
|
rapier2d = { git = "https://github.com/dimforge/rapier", rev = "7efcff615e821" }
|
24
src/map.rs
24
src/map.rs
|
@ -239,7 +239,7 @@ fn spawn_colliders<D: 'static + Clone + Default + Send + Sync>(
|
||||||
.remove::<SpawnColliders>()
|
.remove::<SpawnColliders>()
|
||||||
.remove::<SpawnColliderPerTile>()
|
.remove::<SpawnColliderPerTile>()
|
||||||
.insert_bundle(RigidBodyBundle {
|
.insert_bundle(RigidBodyBundle {
|
||||||
body_type: RigidBodyTypeComponent(RigidBodyType::Static),
|
body_type: RigidBodyTypeComponent(RigidBodyType::Fixed),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
if **spawn_collider_per_tile {
|
if **spawn_collider_per_tile {
|
||||||
|
@ -361,7 +361,7 @@ fn spawn_colliders<D: 'static + Clone + Default + Send + Sync>(
|
||||||
.spawn_bundle(ColliderBundle {
|
.spawn_bundle(ColliderBundle {
|
||||||
collider_type: ColliderType::Sensor.into(),
|
collider_type: ColliderType::Sensor.into(),
|
||||||
shape: shape.clone().into(),
|
shape: shape.clone().into(),
|
||||||
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
flags: ActiveEvents::COLLISION_EVENTS.into(),
|
||||||
position,
|
position,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
|
@ -443,7 +443,7 @@ fn spawn_portal_colliders<D: 'static + Clone + Default + Send + Sync>(
|
||||||
collider_type: ColliderTypeComponent(ColliderType::Sensor),
|
collider_type: ColliderTypeComponent(ColliderType::Sensor),
|
||||||
shape: ColliderShape::cuboid(0.5, 0.5).into(),
|
shape: ColliderShape::cuboid(0.5, 0.5).into(),
|
||||||
position,
|
position,
|
||||||
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
flags: ActiveEvents::COLLISION_EVENTS.into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(ColliderPositionSync::Discrete);
|
.insert(ColliderPositionSync::Discrete);
|
||||||
|
@ -454,18 +454,22 @@ fn spawn_portal_colliders<D: 'static + Clone + Default + Send + Sync>(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn area_description(
|
fn area_description(
|
||||||
mut events: EventReader<IntersectionEvent>,
|
mut events: EventReader<CollisionEvent>,
|
||||||
areas: Query<(&Area, Option<&Name>)>,
|
areas: Query<(&Area, Option<&Name>)>,
|
||||||
players: Query<&Player>,
|
players: Query<&Player>,
|
||||||
config: Res<MapConfig>,
|
config: Res<MapConfig>,
|
||||||
mut log: Query<&mut Log>,
|
mut log: Query<&mut Log>,
|
||||||
) {
|
) {
|
||||||
for event in events.iter() {
|
for event in events.iter() {
|
||||||
if let Some((area, other)) =
|
let (entity1, entity2, started) = match event {
|
||||||
target_and_other(event.collider1.entity(), event.collider2.entity(), &|v| {
|
CollisionEvent::Started(collider1, collider2) => {
|
||||||
areas.get(v).is_ok()
|
(collider1.entity(), collider2.entity(), true)
|
||||||
})
|
}
|
||||||
{
|
CollisionEvent::Stopped(collider1, collider2, _) => {
|
||||||
|
(collider1.entity(), collider2.entity(), false)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if let Some((area, other)) = target_and_other(entity1, entity2, &|v| areas.get(v).is_ok()) {
|
||||||
if players.get(other).is_ok() {
|
if players.get(other).is_ok() {
|
||||||
if let Ok((aabb, area_name)) = areas.get(area) {
|
if let Ok((aabb, area_name)) = areas.get(area) {
|
||||||
let name = if let Some(name) = area_name {
|
let name = if let Some(name) = area_name {
|
||||||
|
@ -477,7 +481,7 @@ fn area_description(
|
||||||
};
|
};
|
||||||
if let Some(name) = name {
|
if let Some(name) = name {
|
||||||
if let Ok(mut log) = log.get_single_mut() {
|
if let Ok(mut log) = log.get_single_mut() {
|
||||||
if event.intersecting {
|
if started {
|
||||||
log.push(format!("Entering {name}."));
|
log.push(format!("Entering {name}."));
|
||||||
} else {
|
} else {
|
||||||
log.push(format!("Leaving {name}."));
|
log.push(format!("Leaving {name}."));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user