mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 22:09:19 +02:00
changed map colors
This commit is contained in:
@@ -878,6 +878,10 @@ global_settings::ConfigParse(cParser &Parser) {
|
|||||||
|
|
||||||
extra_viewports.push_back(conf);
|
extra_viewports.push_back(conf);
|
||||||
}
|
}
|
||||||
|
else if (token == "map.highlightdistance") {
|
||||||
|
Parser.getTokens(1);
|
||||||
|
Parser >> map_highlight_distance;
|
||||||
|
}
|
||||||
} while ((token != "") && (token != "endconfig")); //(!Parser->EndOfFile)
|
} while ((token != "") && (token != "endconfig")); //(!Parser->EndOfFile)
|
||||||
// na koniec trochę zależności
|
// na koniec trochę zależności
|
||||||
if (!bLoadTraction) // wczytywanie drutów i słupów
|
if (!bLoadTraction) // wczytywanie drutów i słupów
|
||||||
|
|||||||
@@ -207,6 +207,8 @@ struct global_settings {
|
|||||||
bool gfx_shadergamma = false;
|
bool gfx_shadergamma = false;
|
||||||
bool gfx_usegles = false;
|
bool gfx_usegles = false;
|
||||||
|
|
||||||
|
float map_highlight_distance = 3000.0f;
|
||||||
|
|
||||||
struct extraviewport_config {
|
struct extraviewport_config {
|
||||||
std::string monitor;
|
std::string monitor;
|
||||||
int width, height;
|
int width, height;
|
||||||
|
|||||||
36
Track.cpp
36
Track.cpp
@@ -1188,6 +1188,18 @@ TTrack *TTrack::Next(TTrack *visitor) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double TTrack::ActiveLength() {
|
||||||
|
if (eType == tt_Normal) {
|
||||||
|
return Segment->GetLength();
|
||||||
|
} else if (eType == tt_Switch) {
|
||||||
|
if (GetSwitchState() == 0)
|
||||||
|
return SwitchExtension->Segments[0]->GetLength();
|
||||||
|
else
|
||||||
|
return SwitchExtension->Segments[1]->GetLength();
|
||||||
|
}
|
||||||
|
return 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
void TTrack::get_map_active_paths(map_colored_paths &handles)
|
void TTrack::get_map_active_paths(map_colored_paths &handles)
|
||||||
{
|
{
|
||||||
if (iCategoryFlag != 1)
|
if (iCategoryFlag != 1)
|
||||||
@@ -1199,34 +1211,48 @@ void TTrack::get_map_active_paths(map_colored_paths &handles)
|
|||||||
else
|
else
|
||||||
handles.switches.push_back(SwitchExtension->map_geometry[1]);
|
handles.switches.push_back(SwitchExtension->map_geometry[1]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTrack::get_map_future_paths(map_colored_paths &handles) {
|
||||||
|
if (iCategoryFlag != 1)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!Dynamics.empty()) {
|
if (!Dynamics.empty()) {
|
||||||
handles.occupied.push_back(extra_map_geometry);
|
if (eType == tt_Switch) {
|
||||||
|
if (GetSwitchState() == 0)
|
||||||
|
handles.occupied.push_back(SwitchExtension->map_geometry[0]);
|
||||||
|
else
|
||||||
|
handles.occupied.push_back(SwitchExtension->map_geometry[1]);
|
||||||
|
} else if (eType == tt_Normal) {
|
||||||
|
handles.occupied.push_back(extra_map_geometry);
|
||||||
|
}
|
||||||
|
|
||||||
static int stamp = 0;
|
static int stamp = 0;
|
||||||
stamp++;
|
stamp++;
|
||||||
|
|
||||||
int limit = 15;
|
float distance = Global.map_highlight_distance;
|
||||||
TTrack *track = trPrev;
|
TTrack *track = trPrev;
|
||||||
TTrack *visitor = this;
|
TTrack *visitor = this;
|
||||||
|
|
||||||
while (limit-- > 0 && track && track->iterate_stamp != stamp) {
|
while (distance > 0.0f && track && track->iterate_stamp != stamp) {
|
||||||
handles.future.push_back(track->extra_map_geometry);
|
handles.future.push_back(track->extra_map_geometry);
|
||||||
track->iterate_stamp = stamp;
|
track->iterate_stamp = stamp;
|
||||||
|
distance -= track->ActiveLength();
|
||||||
|
|
||||||
TTrack *tmp = track;
|
TTrack *tmp = track;
|
||||||
track = track->Next(visitor);
|
track = track->Next(visitor);
|
||||||
visitor = tmp;
|
visitor = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
limit = 15;
|
distance = Global.map_highlight_distance;
|
||||||
stamp++;
|
stamp++;
|
||||||
track = trNext;
|
track = trNext;
|
||||||
visitor = this;
|
visitor = this;
|
||||||
|
|
||||||
while (limit-- > 0 && track && track->iterate_stamp != stamp) {
|
while (distance > 0.0f && track && track->iterate_stamp != stamp) {
|
||||||
handles.future.push_back(track->extra_map_geometry);
|
handles.future.push_back(track->extra_map_geometry);
|
||||||
track->iterate_stamp = stamp;
|
track->iterate_stamp = stamp;
|
||||||
|
distance -= track->ActiveLength();
|
||||||
|
|
||||||
TTrack *tmp = track;
|
TTrack *tmp = track;
|
||||||
track = track->Next(visitor);
|
track = track->Next(visitor);
|
||||||
|
|||||||
4
Track.h
4
Track.h
@@ -279,10 +279,12 @@ public:
|
|||||||
gfx::geometrybank_handle extra_map_geometry; // handle for map highlighting
|
gfx::geometrybank_handle extra_map_geometry; // handle for map highlighting
|
||||||
|
|
||||||
TTrack *Next(TTrack *visitor);
|
TTrack *Next(TTrack *visitor);
|
||||||
|
double ActiveLength();
|
||||||
|
|
||||||
void create_geometry( gfx::geometrybank_handle const &Bank ); // wypełnianie VBO
|
void create_geometry( gfx::geometrybank_handle const &Bank ); // wypełnianie VBO
|
||||||
void create_map_geometry(std::vector<gfx::basic_vertex> &Bank, const gfx::geometrybank_handle Extra);
|
void create_map_geometry(std::vector<gfx::basic_vertex> &Bank, const gfx::geometrybank_handle Extra);
|
||||||
void get_map_active_paths(map_colored_paths &handles);
|
void get_map_active_paths(map_colored_paths &handles);
|
||||||
|
void get_map_future_paths(map_colored_paths &handles);
|
||||||
glm::vec3 get_nearest_point(const glm::dvec3 &point) const;
|
glm::vec3 get_nearest_point(const glm::dvec3 &point) const;
|
||||||
void RenderDynSounds(); // odtwarzanie dźwięków pojazdów jest niezależne od ich wyświetlania
|
void RenderDynSounds(); // odtwarzanie dźwięków pojazdów jest niezależne od ich wyświetlania
|
||||||
|
|
||||||
|
|||||||
@@ -2,14 +2,7 @@
|
|||||||
|
|
||||||
layout(location = 0) out vec4 out_color;
|
layout(location = 0) out vec4 out_color;
|
||||||
|
|
||||||
vec3 hsv2rgb(vec3 c)
|
|
||||||
{
|
|
||||||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
|
||||||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
|
||||||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
out_color = vec4(hsv2rgb(vec3(time, 1.0, 1.0)), 1.0f);
|
out_color = vec4(scene_extra, 1.0f);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,6 +96,10 @@ void ui::map_panel::render_map_texture(glm::mat4 transform, glm::vec2 surface_si
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (TTrack *track : simulation::Paths.sequence()) {
|
||||||
|
track->get_map_future_paths(m_colored_paths);
|
||||||
|
}
|
||||||
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
if (Global.iMultisampling)
|
if (Global.iMultisampling)
|
||||||
{
|
{
|
||||||
@@ -113,19 +117,23 @@ void ui::map_panel::render_map_texture(glm::mat4 transform, glm::vec2 surface_si
|
|||||||
glViewport(0, 0, surface_size.x, surface_size.y);
|
glViewport(0, 0, surface_size.x, surface_size.y);
|
||||||
|
|
||||||
scene_ubs.projection = transform;
|
scene_ubs.projection = transform;
|
||||||
scene_ubs.time = 0.5f; // color is stuffed in time variable
|
scene_ubs.scene_extra = glm::vec3(0.5f);
|
||||||
scene_ubo->update(scene_ubs);
|
scene_ubo->update(scene_ubs);
|
||||||
scene_ubo->bind_uniform();
|
scene_ubo->bind_uniform();
|
||||||
|
|
||||||
GfxRenderer.Draw_Geometry(m_section_handles.begin(), m_section_handles.end());
|
GfxRenderer.Draw_Geometry(m_section_handles.begin(), m_section_handles.end());
|
||||||
|
|
||||||
glLineWidth(2.0f);
|
scene_ubs.scene_extra = glm::vec3(0.7f, 0.7f, 0.0f);
|
||||||
|
scene_ubo->update(scene_ubs);
|
||||||
|
GfxRenderer.Draw_Geometry(m_colored_paths.future.begin(), m_colored_paths.future.end());
|
||||||
|
|
||||||
scene_ubs.time = 0.27f; // color is stuffed in time variable
|
glLineWidth(3.0f);
|
||||||
|
scene_ubs.scene_extra = glm::vec3(0.0f, 1.0f, 0.0f);
|
||||||
scene_ubo->update(scene_ubs);
|
scene_ubo->update(scene_ubs);
|
||||||
GfxRenderer.Draw_Geometry(m_colored_paths.switches.begin(), m_colored_paths.switches.end());
|
GfxRenderer.Draw_Geometry(m_colored_paths.switches.begin(), m_colored_paths.switches.end());
|
||||||
GfxRenderer.Draw_Geometry(m_colored_paths.future.begin(), m_colored_paths.future.end());
|
|
||||||
scene_ubs.time = 1.0f; // color is stuffed in time variable
|
glLineWidth(1.5f);
|
||||||
|
scene_ubs.scene_extra = glm::vec3(1.0f, 0.0f, 0.0f);
|
||||||
scene_ubo->update(scene_ubs);
|
scene_ubo->update(scene_ubs);
|
||||||
GfxRenderer.Draw_Geometry(m_colored_paths.occupied.begin(), m_colored_paths.occupied.end());
|
GfxRenderer.Draw_Geometry(m_colored_paths.occupied.begin(), m_colored_paths.occupied.end());
|
||||||
|
|
||||||
@@ -135,7 +143,6 @@ void ui::map_panel::render_map_texture(glm::mat4 transform, glm::vec2 surface_si
|
|||||||
scene_ubs.scene_extra = glm::vec3(1.0f / (surface_size / 200.0f), 1.0f);
|
scene_ubs.scene_extra = glm::vec3(1.0f / (surface_size / 200.0f), 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
scene_ubs.time = 1.0f;
|
|
||||||
scene_ubo->update(scene_ubs);
|
scene_ubo->update(scene_ubs);
|
||||||
GfxRenderer.Draw_Geometry(simulation::Region->get_map_poi_geometry());
|
GfxRenderer.Draw_Geometry(simulation::Region->get_map_poi_geometry());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user