1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Allow rotating entity selectionboxes (#12379)

This commit is contained in:
Lars Müller 2022-10-30 16:53:14 +01:00 committed by GitHub
parent b829231992
commit 077627181e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 271 additions and 58 deletions

View file

@ -1771,16 +1771,27 @@ void ServerEnvironment::getSelectedActiveObjects(
continue;
v3f pos = obj->getBasePosition();
aabb3f offsetted_box(selection_box.MinEdge + pos,
selection_box.MaxEdge + pos);
v3f rel_pos = shootline_on_map.start - pos;
v3f current_intersection;
v3s16 current_normal;
if (boxLineCollision(offsetted_box, shootline_on_map.start, line_vector,
&current_intersection, &current_normal)) {
v3f current_normal;
v3f current_raw_normal;
ObjectProperties *props = obj->accessObjectProperties();
bool collision;
UnitSAO* usao = dynamic_cast<UnitSAO*>(obj);
if (props->rotate_selectionbox && usao != nullptr) {
collision = boxLineCollision(selection_box, usao->getTotalRotation(),
rel_pos, line_vector, &current_intersection, &current_normal, &current_raw_normal);
} else {
collision = boxLineCollision(selection_box, rel_pos, line_vector,
&current_intersection, &current_normal);
current_raw_normal = current_normal;
}
if (collision) {
current_intersection += pos;
objects.emplace_back(
(s16) obj->getId(), current_intersection, current_normal,
(s16) obj->getId(), current_intersection, current_normal, current_raw_normal,
(current_intersection - shootline_on_map.start).getLengthSQ());
}
}