higher quality map

This commit is contained in:
milek7
2019-02-19 01:19:11 +01:00
parent 81101ae7b0
commit 5b32b4e926
4 changed files with 33 additions and 3 deletions

View File

@@ -521,3 +521,18 @@ bool TSegment::RenderLoft( gfx::vertex_array &Output, Math3D::vector3 const &Ori
return true;
};
void TSegment::render_lines(std::vector<gfx::basic_vertex> &out, float quality) const
{
float step = 1.0f / iSegCount / quality;
float x;
glm::vec3 previous = FastGetPoint(0.0);
for (x = step; x <= 1.0f; x += step) {
out.push_back(gfx::basic_vertex(previous, glm::vec3(0.0f), glm::vec2(0.0f)));
previous = glm::vec3(FastGetPoint(x));
out.push_back(gfx::basic_vertex(previous, glm::vec3(0.0f), glm::vec2(0.0f)));
}
}

View File

@@ -129,6 +129,9 @@ public:
int
RaSegCount() const {
return ( fTsBuffer.empty() ? 1 : iSegCount ); };
void
render_lines(std::vector<gfx::basic_vertex> &out, float quality) const;
};
//---------------------------------------------------------------------------

View File

@@ -1133,8 +1133,20 @@ void TTrack::create_map_geometry(std::vector<gfx::basic_vertex> &Bank)
if (iCategoryFlag != 1)
return; // only tracks for now
for (auto &v : endpoints())
Bank.push_back(gfx::basic_vertex(glm::vec3(v), glm::vec3(0.0f), glm::vec2(0.0f)));
switch (eType)
{
case tt_Normal:
case tt_Table:
Segment->render_lines(Bank, 1.0f);
break;
case tt_Switch:
case tt_Cross:
SwitchExtension->Segments[0]->render_lines(Bank, 1.0f);
SwitchExtension->Segments[1]->render_lines(Bank, 1.0f);
break;
default:
break;
}
}
// wypełnianie tablic VBO

View File

@@ -232,7 +232,7 @@ void ui::map_panel::render_contents()
glm::vec2 ndc_pos = surface_pos / surface_size * 2.0f - 1.0f;
glm::vec3 world_pos = glm::inverse(transform) * glm::vec4(ndc_pos.x, 0.0f, -ndc_pos.y, 1.0f);
std::vector<TEventLauncher *> launchers = simulation::Events.find_eventlaunchers(glm::vec2(world_pos.x, world_pos.z), 10.0f);
std::vector<TEventLauncher *> launchers = simulation::Events.find_eventlaunchers(glm::vec2(world_pos.x, world_pos.z), 0.01f / zoom);
for (auto launcher : launchers) {
command_relay relay;