forked from Mirrorlandia_minetest/minetest
Use player as starting point instead of camera when pointing node (#8261)
Same pointing area on both camera modes. This fix is inapplicable for non-crosshair input.
This commit is contained in:
parent
f409f44765
commit
695d9edcd4
@ -2961,10 +2961,15 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
|
|||||||
hlist ? hlist->getItem(0).getDefinition(itemdef_manager) : itemdef_manager->get("");
|
hlist ? hlist->getItem(0).getDefinition(itemdef_manager) : itemdef_manager->get("");
|
||||||
|
|
||||||
v3f player_position = player->getPosition();
|
v3f player_position = player->getPosition();
|
||||||
|
v3f player_eye_position = player->getEyePosition();
|
||||||
v3f camera_position = camera->getPosition();
|
v3f camera_position = camera->getPosition();
|
||||||
v3f camera_direction = camera->getDirection();
|
v3f camera_direction = camera->getDirection();
|
||||||
v3s16 camera_offset = camera->getOffset();
|
v3s16 camera_offset = camera->getOffset();
|
||||||
|
|
||||||
|
if (camera->getCameraMode() == CAMERA_MODE_FIRST)
|
||||||
|
player_eye_position += player->eye_offset_first;
|
||||||
|
else
|
||||||
|
player_eye_position += player->eye_offset_third;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Calculate what block is the crosshair pointing to
|
Calculate what block is the crosshair pointing to
|
||||||
@ -2981,11 +2986,11 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
|
|||||||
core::line3d<f32> shootline;
|
core::line3d<f32> shootline;
|
||||||
|
|
||||||
if (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT) {
|
if (camera->getCameraMode() != CAMERA_MODE_THIRD_FRONT) {
|
||||||
shootline = core::line3d<f32>(camera_position,
|
shootline = core::line3d<f32>(player_eye_position,
|
||||||
camera_position + camera_direction * BS * d);
|
player_eye_position + camera_direction * BS * d);
|
||||||
} else {
|
} else {
|
||||||
// prevent player pointing anything in front-view
|
// prevent player pointing anything in front-view
|
||||||
shootline = core::line3d<f32>(camera_position,camera_position);
|
shootline = core::line3d<f32>(camera_position, camera_position);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_TOUCHSCREENGUI
|
#ifdef HAVE_TOUCHSCREENGUI
|
||||||
|
Loading…
Reference in New Issue
Block a user