1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Expose getPointedThing to Lua

This commit introduces Raycast, a Lua user object, which can be
used to perform a raycast on the map. The ray is continuable, so one can
also get hidden nodes (for example to see trough glass).
This commit is contained in:
Dániel Juhász 2016-07-23 21:11:20 +02:00 committed by paramat
parent a80ecbee1e
commit 3caad3f3c9
25 changed files with 671 additions and 313 deletions

View file

@ -1407,6 +1407,8 @@ VoxelLineIterator::VoxelLineIterator(const v3f &start_position, const v3f &line_
m_line_vector(line_vector)
{
m_current_node_pos = floatToInt(m_start_position, 1);
m_start_node_pos = m_current_node_pos;
m_last_index = getIndex(floatToInt(start_position + line_vector, 1));
if (m_line_vector.X > 0) {
m_next_intersection_multi.X = (floorf(m_start_position.X - 0.5) + 1.5
@ -1440,14 +1442,11 @@ VoxelLineIterator::VoxelLineIterator(const v3f &start_position, const v3f &line_
m_intersection_multi_inc.Z = -1 / m_line_vector.Z;
m_step_directions.Z = -1;
}
m_has_next = (m_next_intersection_multi.X <= 1)
|| (m_next_intersection_multi.Y <= 1)
|| (m_next_intersection_multi.Z <= 1);
}
void VoxelLineIterator::next()
{
m_current_index++;
if ((m_next_intersection_multi.X < m_next_intersection_multi.Y)
&& (m_next_intersection_multi.X < m_next_intersection_multi.Z)) {
m_next_intersection_multi.X += m_intersection_multi_inc.X;
@ -1459,10 +1458,13 @@ void VoxelLineIterator::next()
m_next_intersection_multi.Z += m_intersection_multi_inc.Z;
m_current_node_pos.Z += m_step_directions.Z;
}
}
m_has_next = (m_next_intersection_multi.X <= 1)
|| (m_next_intersection_multi.Y <= 1)
|| (m_next_intersection_multi.Z <= 1);
s16 VoxelLineIterator::getIndex(v3s16 voxel){
return
abs(voxel.X - m_start_node_pos.X) +
abs(voxel.Y - m_start_node_pos.Y) +
abs(voxel.Z - m_start_node_pos.Z);
}
} // namespace voxalgo