mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
properly use the target vs pickup range, in choosing the interactable. when finding the target_entity, use the proper limited dist range (cast_dist) with the proper upper bounds.
This commit is contained in:
parent
5c66f73bb4
commit
42d5836cfa
@ -1,6 +1,8 @@
|
|||||||
// The limit on distance between the entity and a collectible (squared)
|
// The limit on distance between the entity and a collectible (squared)
|
||||||
pub const MAX_PICKUP_RANGE: f32 = 5.0;
|
pub const MAX_PICKUP_RANGE: f32 = 5.0;
|
||||||
pub const MAX_MOUNT_RANGE: f32 = 14.0;
|
pub const MAX_MOUNT_RANGE: f32 = 14.0;
|
||||||
|
/// Max distance an entity can be "targeted"
|
||||||
|
pub const MAX_TARGET_RANGE: f32 = 300.0;
|
||||||
|
|
||||||
pub const GRAVITY: f32 = 25.0;
|
pub const GRAVITY: f32 = 25.0;
|
||||||
pub const FRIC_GROUND: f32 = 0.15;
|
pub const FRIC_GROUND: f32 = 0.15;
|
||||||
|
@ -6,7 +6,7 @@ use super::target::{self, Target};
|
|||||||
use client::Client;
|
use client::Client;
|
||||||
use common::{
|
use common::{
|
||||||
comp,
|
comp,
|
||||||
consts::MAX_PICKUP_RANGE,
|
consts::{MAX_PICKUP_RANGE, MAX_TARGET_RANGE},
|
||||||
terrain::Block,
|
terrain::Block,
|
||||||
util::find_dist::{Cube, Cylinder, FindDist},
|
util::find_dist::{Cube, Cylinder, FindDist},
|
||||||
vol::ReadVol,
|
vol::ReadVol,
|
||||||
@ -62,7 +62,7 @@ pub(super) fn select_interactable(
|
|||||||
|
|
||||||
if let Some(interactable) = entity_target
|
if let Some(interactable) = entity_target
|
||||||
.and_then(|t| {
|
.and_then(|t| {
|
||||||
if t.distance < MAX_PICKUP_RANGE {
|
if t.distance < MAX_TARGET_RANGE {
|
||||||
let entity = t.kind.0;
|
let entity = t.kind.0;
|
||||||
Some(Interactable::Entity(entity))
|
Some(Interactable::Entity(entity))
|
||||||
} else {
|
} else {
|
||||||
|
@ -5,7 +5,7 @@ use vek::*;
|
|||||||
use client::{self, Client};
|
use client::{self, Client};
|
||||||
use common::{
|
use common::{
|
||||||
comp,
|
comp,
|
||||||
consts::MAX_PICKUP_RANGE,
|
consts::{MAX_PICKUP_RANGE, MAX_TARGET_RANGE},
|
||||||
terrain::Block,
|
terrain::Block,
|
||||||
util::find_dist::{Cylinder, FindDist},
|
util::find_dist::{Cylinder, FindDist},
|
||||||
vol::ReadVol,
|
vol::ReadVol,
|
||||||
@ -35,8 +35,6 @@ impl<T> Target<T> {
|
|||||||
pub fn position_int(self) -> Vec3<i32> { self.position.map(|p| p.floor() as i32) }
|
pub fn position_int(self) -> Vec3<i32> { self.position.map(|p| p.floor() as i32) }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Max distance an entity can be "targeted"
|
|
||||||
const MAX_TARGET_RANGE: f32 = 300.0;
|
|
||||||
/// Calculate what the cursor is pointing at within the 3d scene
|
/// Calculate what the cursor is pointing at within the 3d scene
|
||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
pub(super) fn targets_under_cursor(
|
pub(super) fn targets_under_cursor(
|
||||||
@ -168,7 +166,7 @@ pub(super) fn targets_under_cursor(
|
|||||||
|
|
||||||
let seg_ray = LineSegment3 {
|
let seg_ray = LineSegment3 {
|
||||||
start: cam_pos,
|
start: cam_pos,
|
||||||
end: cam_pos + cam_dir * shortest_cam_dist,
|
end: cam_pos + cam_dir * cast_dist,
|
||||||
};
|
};
|
||||||
// TODO: fuzzy borders
|
// TODO: fuzzy borders
|
||||||
let entity_target = nearby
|
let entity_target = nearby
|
||||||
|
Loading…
Reference in New Issue
Block a user