17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-13 09:40:11 +01:00

Sieć trakcyjna: kotwienia, kotwienie środkowe, parasole i wysięgniki rozstawione, konsole 4890/4690

Sam kod exe z gałęzi siec-trakcyjna od poprzedniego commita (bez testów, notatek i danych z tests/catenary).
Dane (data/traction_*.txt) leżą poza repozytorium.

- kotwienia ciężarowe i stałe (0404/0405, przewody zakotwione osobno, sieci bez własnych danych: network <symbol> as <kod>)
- kotwienie środkowe 0406/0408/0418/0416: lina, V i zaciski na linie nośnej liczonej jak przęsło, obejma 4160 na teownikach
- parasole i wysięgniki rozstawione na konsolach 4890, wysięgi pomocnicze 0167 na belkach 4690, trzeci wysięgnik w osi słupa,
  lina nośna z innego wysięgnika (messenger_from)
- przęsła w nietypowych sytuacjach nie przechodzą na stary wygląd (bez Y, bez wieszaków, lina nad przewodem)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GfTogWDsfCE8RGFGvm2eyp
This commit is contained in:
Claude
2026-10-26 01:12:06 +01:00
parent f30fefd91c
commit 619f048f31
18 changed files with 4237 additions and 285 deletions

View File

@@ -14,10 +14,12 @@ http://mozilla.org/MPL/2.0/.
#pragma once
#include <string>
#include <vector>
#include "rendering/geometrybank.h"
class TTraction;
namespace catenary { struct solid_vertex; }
// ustawienia rysowania sieci, zmieniane z eu07.ini i z panelu ustawień
struct catenary_settings {
@@ -27,7 +29,11 @@ extern catenary_settings CatenarySettings;
// przypisuje przęsłu typ sieci z dopisku "type" i dobiera rozstaw wieszaków; wołane po wczytaniu punktów przęsła.
// pusty symbol albo wyłączone rysowanie wg typu zostawia przęsło rysowane po staremu
void catenary_span_assign( TTraction &Traction, std::string const &Symbol );
// Messenger, Contact: naciąg liny nośnej i przewodów jezdnych w daN zamiast naciągu typu (dopisek "tension"); 0 = jak w typie
// Rope2: końce drugiej liny nośnej podane w wpisie ("rope2 start|end x y z", kotwienie z dwiema liniami): [0] start, [1] koniec,
// Rope2set - które podane
void catenary_span_assign( TTraction &Traction, std::string const &Symbol, double Messenger = 0.0, double Contact = 0.0,
glm::dvec3 const *Rope2 = nullptr, bool const *Rope2set = nullptr );
// symbol typu sieci przypisany przęsłu; pusty gdy brak
std::string catenary_span_symbol( TTraction const &Traction );
// odcinki przęsła policzone wg typu sieci, dopisywane do Vertices; false gdy przęsło ma być narysowane po staremu
@@ -37,6 +43,7 @@ bool catenary_span_lines( TTraction &Traction, gfx::vertex_array &Vertices );
struct catenary_solid {
gfx::geometry_handle wires;
gfx::geometry_handle fittings;
gfx::geometry_handle rope; // bryła dołączona z zewnątrz (lina urządzenia naprężającego na końcu przęsła), stal
};
// bryły tworzone są, gdy kamera jest blisko przęsła, i zwalniane, gdy się oddali
catenary_solid catenary_span_solid( TTraction &Traction, glm::dvec3 const &Camera );
@@ -44,6 +51,9 @@ catenary_solid catenary_span_solid( TTraction &Traction, glm::dvec3 const &Camer
void catenary_span_refresh( TTraction &Traction );
// zwalnia linie i bryły przęsła przed jego usunięciem
void catenary_span_release( TTraction &Traction );
// dołącza do brył przęsła bryłę spoza przęsła (lina kotwienia przy jego końcu; trójkąty w układzie scenerii), rysowaną
// razem z nim z bliska, ze stali. Pusta lista odłącza. false, gdy przęsło nie jest rysowane wg typu sieci
bool catenary_span_attach( TTraction &Traction, std::vector<catenary::solid_vertex> const &Triangles );
// wygląd metalu brył: kolor własny (sRGB), metaliczność, połysk i siła odbicia otoczenia, każde w zakresie 0–1
struct catenary_metal {
@@ -55,3 +65,5 @@ struct catenary_metal {
// wygląd przewodów (Fitting = false) albo osprzętu przęsła o podanym materiale i stanie z wpisu scenerii.
// wartości domyślne można zmienić bez kompilacji plikiem data/traction_materials.txt, czytanym przy pierwszym użyciu
catenary_metal const &catenary_span_metal( TTraction const &Traction, bool Fitting );
// wygląd liny stalowej (cięgło 4490 urządzenia naprężającego)
catenary_metal const &catenary_rope_metal();