better targeting handling
This commit is contained in:
parent
974de97ded
commit
2f65c652c8
|
@ -7,6 +7,7 @@ actor 0 0 0 jupiter
|
|||
rotationx -0.50
|
||||
rotationz -0.28
|
||||
angularmomentum 30 30 30
|
||||
clickable no
|
||||
|
||||
actor 0 593051 0 suit
|
||||
relativeto jupiter
|
||||
|
|
18
src/hud.rs
18
src/hud.rs
|
@ -598,17 +598,20 @@ fn handle_input(
|
|||
ew_togglemusic.send(audio::ToggleMusicEvent());
|
||||
}
|
||||
if mouse_input.just_pressed(settings.key_selectobject) {
|
||||
if q_target.is_empty() {
|
||||
if let Ok(camtrans) = q_camera.get_single() {
|
||||
let objects: Vec<(Entity, &Transform)> = q_objects
|
||||
.iter()
|
||||
.map(|(entity, transform)| (entity, transform))
|
||||
.collect();
|
||||
if let (Some(entity), _dist) = camera::find_closest_target::<Entity>(objects, camtrans) {
|
||||
commands.entity(entity).insert(IsTargeted);
|
||||
let objects: Vec<(Entity, &Transform)> = q_objects.iter().collect();
|
||||
if let (Some(new_target), _dist) = camera::find_closest_target::<Entity>(objects, camtrans) {
|
||||
if let Ok(old_target) = q_target.get_single() {
|
||||
if old_target != new_target {
|
||||
commands.entity(old_target).remove::<IsTargeted>();
|
||||
commands.entity(new_target).insert(IsTargeted);
|
||||
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Click));
|
||||
}
|
||||
}
|
||||
else {
|
||||
commands.entity(new_target).insert(IsTargeted);
|
||||
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Click));
|
||||
}
|
||||
}
|
||||
else {
|
||||
for entity in &q_target {
|
||||
|
@ -617,4 +620,5 @@ fn handle_input(
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue