Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
raycast.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2016 juhdanad, Daniel Juhasz <juhdanad@gmail.com>
4
5#pragma once
6
7#include <queue>
8#include "voxelalgorithms.h"
9#include "util/pointedthing.h"
10
13{
14 bool operator() (const PointedThing &pt1, const PointedThing &pt2) const;
15};
16
19{
20public:
26 RaycastState(const core::line3d<f32> &shootline, bool objects_pointable,
27 bool liquids_pointable, const std::optional<Pointabilities> &pointabilities);
28
30 core::line3d<f32> m_shootline;
35
40 std::priority_queue<PointedThing, std::vector<PointedThing>, RaycastSort> m_found;
41
44 const std::optional<Pointabilities> m_pointabilities;
45
47 core::aabbox3d<s16> m_search_range { 0, 0, 0, 0, 0, 0 };
48
51};
52
63bool boxLineCollision(const aabb3f &box, v3f start, v3f dir,
64 v3f *collision_point, v3f *collision_normal);
65
66bool boxLineCollision(const aabb3f &box, v3f box_rotation,
67 v3f start, v3f dir,
68 v3f *collision_point, v3f *collision_normal, v3f *raw_collision_normal);
static v2f dir(const v2f &pos_dist)
Definition camera.cpp:207
Describes the state of a raycast.
Definition raycast.h:19
v3s16 m_previous_node
Previous tested node during the raycast.
Definition raycast.h:34
core::aabbox3d< s16 > m_search_range
The code needs to search these nodes around the center node.
Definition raycast.h:47
std::priority_queue< PointedThing, std::vector< PointedThing >, RaycastSort > m_found
Definition raycast.h:40
core::line3d< f32 > m_shootline
Shootline of the raycast.
Definition raycast.h:30
bool m_initialization_needed
If true, the Environment will initialize this state.
Definition raycast.h:50
bool m_objects_pointable
Definition raycast.h:42
bool m_liquids_pointable
Definition raycast.h:43
voxalgo::VoxelLineIterator m_iterator
Iterator to store the progress of the raycast.
Definition raycast.h:32
const std::optional< Pointabilities > m_pointabilities
Definition raycast.h:44
RaycastState(const core::line3d< f32 > &shootline, bool objects_pointable, bool liquids_pointable, const std::optional< Pointabilities > &pointabilities)
Definition raycast.cpp:45
core::aabbox3d< f32 > aabb3f
Definition irr_aabb3d.h:11
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
core::vector3df v3f
Definition irr_v3d.h:11
bool boxLineCollision(const aabb3f &box, v3f start, v3f dir, v3f *collision_point, v3f *collision_normal)
Definition raycast.cpp:58
An active object or node which is selected by a ray on the map.
Definition pointedthing.h:22
Sorts PointedThings based on their distance.
Definition raycast.h:13
bool operator()(const PointedThing &pt1, const PointedThing &pt2) const
Definition raycast.cpp:11
Definition voxelalgorithms.h:73