Make colliders children of the map.
This commit is contained in:
parent
22abe7462e
commit
00458f1835
34
src/map.rs
34
src/map.rs
|
@ -216,18 +216,15 @@ fn spawn_colliders(
|
||||||
let id = commands
|
let id = commands
|
||||||
.spawn_bundle(ColliderBundle {
|
.spawn_bundle(ColliderBundle {
|
||||||
shape: ColliderShape::cuboid(0.5, 0.5),
|
shape: ColliderShape::cuboid(0.5, 0.5),
|
||||||
|
position: Vec2::new(x as f32 + 0.5, y as f32 + 0.5).into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(ColliderParent {
|
|
||||||
handle: map_entity.handle(),
|
|
||||||
pos_wrt_parent: Vec2::new(x as f32 + 0.5, y as f32 + 0.5)
|
|
||||||
.into(),
|
|
||||||
})
|
|
||||||
.insert(MapObstruction)
|
.insert(MapObstruction)
|
||||||
.id();
|
.id();
|
||||||
if tile.blocks_visibility() {
|
if tile.blocks_visibility() {
|
||||||
commands.entity(id).insert(BlocksVisibility::default());
|
commands.entity(id).insert(BlocksVisibility::default());
|
||||||
}
|
}
|
||||||
|
commands.entity(map_entity).push_children(&[id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -314,17 +311,15 @@ fn spawn_colliders(
|
||||||
let id = commands
|
let id = commands
|
||||||
.spawn_bundle(ColliderBundle {
|
.spawn_bundle(ColliderBundle {
|
||||||
shape: ColliderShape::cuboid(half_width, half_height),
|
shape: ColliderShape::cuboid(half_width, half_height),
|
||||||
|
position: Vec2::new(x, y).into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(ColliderParent {
|
|
||||||
handle: map_entity.handle(),
|
|
||||||
pos_wrt_parent: Vec2::new(x, y).into(),
|
|
||||||
})
|
|
||||||
.insert(MapObstruction)
|
.insert(MapObstruction)
|
||||||
.id();
|
.id();
|
||||||
if map.at(x as usize, y as usize).blocks_visibility() {
|
if map.at(x as usize, y as usize).blocks_visibility() {
|
||||||
commands.entity(id).insert(BlocksVisibility::default());
|
commands.entity(id).insert(BlocksVisibility::default());
|
||||||
}
|
}
|
||||||
|
commands.entity(map_entity).push_children(&[id]);
|
||||||
bottom_left = None;
|
bottom_left = None;
|
||||||
bottom_right = None;
|
bottom_right = None;
|
||||||
}
|
}
|
||||||
|
@ -337,19 +332,18 @@ fn spawn_colliders(
|
||||||
(room.height() / 2) as f32 + 0.5,
|
(room.height() / 2) as f32 + 0.5,
|
||||||
);
|
);
|
||||||
let position = Vec2::new(room.center().x() + 0.5, room.center().y() + 0.5).into();
|
let position = Vec2::new(room.center().x() + 0.5, room.center().y() + 0.5).into();
|
||||||
commands
|
let id = commands
|
||||||
.spawn_bundle(ColliderBundle {
|
.spawn_bundle(ColliderBundle {
|
||||||
collider_type: ColliderType::Sensor,
|
collider_type: ColliderType::Sensor,
|
||||||
shape: shape.clone(),
|
shape: shape.clone(),
|
||||||
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
||||||
|
position,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(ColliderParent {
|
|
||||||
handle: map_entity.handle(),
|
|
||||||
pos_wrt_parent: position,
|
|
||||||
})
|
|
||||||
.insert(shape.compute_aabb(&position))
|
.insert(shape.compute_aabb(&position))
|
||||||
.insert(Area);
|
.insert(Area)
|
||||||
|
.id();
|
||||||
|
commands.entity(map_entity).push_children(&[id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -418,20 +412,18 @@ fn spawn_portal_colliders(
|
||||||
for (map_entity, spawn_colliders) in map.iter() {
|
for (map_entity, spawn_colliders) in map.iter() {
|
||||||
if **spawn_colliders {
|
if **spawn_colliders {
|
||||||
for (portal_entity, coordinates) in portals.iter() {
|
for (portal_entity, coordinates) in portals.iter() {
|
||||||
|
let position = Vec2::new(coordinates.x() + 0.5, coordinates.y() + 0.5).into();
|
||||||
commands
|
commands
|
||||||
.entity(portal_entity)
|
.entity(portal_entity)
|
||||||
.insert_bundle(ColliderBundle {
|
.insert_bundle(ColliderBundle {
|
||||||
collider_type: ColliderType::Sensor,
|
collider_type: ColliderType::Sensor,
|
||||||
shape: ColliderShape::cuboid(0.5, 0.5),
|
shape: ColliderShape::cuboid(0.5, 0.5),
|
||||||
|
position,
|
||||||
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
flags: ActiveEvents::INTERSECTION_EVENTS.into(),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})
|
})
|
||||||
.insert(ColliderPositionSync::Discrete)
|
.insert(ColliderPositionSync::Discrete);
|
||||||
.insert(ColliderParent {
|
commands.entity(map_entity).push_children(&[portal_entity]);
|
||||||
handle: map_entity.handle(),
|
|
||||||
pos_wrt_parent: Vec2::new(coordinates.x() + 0.5, coordinates.y() + 0.5)
|
|
||||||
.into(),
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user