mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-29 17:27:30 +01:00
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
70 lines
3.8 KiB
C++
70 lines
3.8 KiB
C++
/*
|
||
This Source Code Form is subject to the
|
||
terms of the Mozilla Public License, v.
|
||
2.0. If a copy of the MPL was not
|
||
distributed with this file, You can
|
||
obtain one at
|
||
http://mozilla.org/MPL/2.0/.
|
||
*/
|
||
|
||
// Przęsło sieci trakcyjnej rysowane wg typu sieci: powiązanie TTraction z katalogiem typów i solverem.
|
||
// Cały stan potrzebny do tego trzymany jest w strukturze catenary_span, do której TTraction ma tylko wskaźnik,
|
||
// żeby zmiany w tej części nie wymagały ruszania nagłówka Traction.h
|
||
|
||
#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 {
|
||
float solid_range { 150.f }; // zasięg rysowania przewodów, lin i uchwytów jako brył [m]; 0 wyłącza bryły
|
||
};
|
||
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
|
||
// 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
|
||
bool catenary_span_lines( TTraction &Traction, gfx::vertex_array &Vertices );
|
||
// bryły przęsła do oglądania z bliska: przewody i liny w prawdziwej grubości oraz osprzęt (bryły zastępcze w miejscach połączeń).
|
||
// osobno, bo rysowane są z różnych materiałów; pusty uchwyt oznacza, że nie ma czego rysować
|
||
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 );
|
||
// przęsło po zmianie sąsiadów (np. w edytorze): linie liczone od nowa, bryły zrobią się od nowa
|
||
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 {
|
||
float color[ 3 ];
|
||
float metalness;
|
||
float gloss;
|
||
float reflection;
|
||
};
|
||
// 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();
|