mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#include "stdafx.h"
|
|
#include "widgets/map_objects.h"
|
|
#include "simulation/simulation.h"
|
|
#include "vehicle/DynObj.h"
|
|
|
|
map::objects map::Objects;
|
|
|
|
map::sorted_object_list map::objects::find_in_range(glm::vec3 from, float distance)
|
|
{
|
|
sorted_object_list items;
|
|
|
|
float max_distance2 = distance * distance;
|
|
|
|
for (auto const entry : entries)
|
|
{
|
|
glm::vec3 entry_location = entry->location;
|
|
glm::vec3 search_point = from;
|
|
|
|
if (glm::isnan(from.y))
|
|
{
|
|
entry_location.y = 0.0f;
|
|
search_point.y = 0.0f;
|
|
}
|
|
|
|
float dist = glm::distance2(entry_location, search_point);
|
|
if (dist < max_distance2)
|
|
{
|
|
items.emplace(dist, std::move(entry));
|
|
}
|
|
}
|
|
|
|
for (TDynamicObject *dynobj : simulation::Vehicles.sequence()) {
|
|
if (!dynobj->Controller || dynobj->Prev())
|
|
continue;
|
|
|
|
glm::vec3 entry_location = dynobj->GetPosition();
|
|
glm::vec3 search_point = from;
|
|
|
|
if (glm::isnan(from.y))
|
|
{
|
|
entry_location.y = 0.0f;
|
|
search_point.y = 0.0f;
|
|
}
|
|
|
|
float dist = glm::distance2(entry_location, search_point);
|
|
if (dist < max_distance2)
|
|
{
|
|
auto entry = std::make_shared<map::vehicle>();
|
|
entry->dynobj = dynobj;
|
|
entry->name = dynobj->name();
|
|
items.emplace(dist, std::move(entry));
|
|
}
|
|
}
|
|
|
|
return items;
|
|
}
|