mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
opengl 3.3 renderer switch to core profile, additional train state data exposed to uart interface, minor bug fixes
This commit is contained in:
201
Globals.cpp
201
Globals.cpp
@@ -20,6 +20,7 @@ http://mozilla.org/MPL/2.0/.
|
||||
#include "Logs.h"
|
||||
#include "Console.h"
|
||||
#include "PyInt.h"
|
||||
#include "Timer.h"
|
||||
|
||||
global_settings Global;
|
||||
|
||||
@@ -74,13 +75,21 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
}
|
||||
else if (token == "heightbase")
|
||||
{
|
||||
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> fDistanceFactor;
|
||||
}
|
||||
else if (token == "targetfps")
|
||||
{
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> targetfps;
|
||||
}
|
||||
else if (token == "basedrawrange")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> BaseDrawRange;
|
||||
}
|
||||
else if (token == "fullscreen")
|
||||
{
|
||||
|
||||
Parser.getTokens();
|
||||
Parser >> bFullScreen;
|
||||
}
|
||||
@@ -245,8 +254,10 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
|
||||
Parser.getTokens( 1, false );
|
||||
Parser >> AnisotropicFiltering;
|
||||
if (AnisotropicFiltering < 1.0f)
|
||||
AnisotropicFiltering = 1.0f;
|
||||
}
|
||||
else if( token == "usevbo" )
|
||||
else if( token == "usevbo" )
|
||||
{
|
||||
|
||||
Parser.getTokens();
|
||||
@@ -310,7 +321,17 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
else if( token == "scenario.time.override" ) {
|
||||
// shift (in hours) applied to train timetables
|
||||
Parser.getTokens( 1, false );
|
||||
Parser >> ScenarioTimeOverride;
|
||||
std::string token;
|
||||
Parser >> token;
|
||||
std::istringstream stream(token);
|
||||
if (token.find(':') != -1) {
|
||||
float a, b;
|
||||
char s;
|
||||
stream >> a >> s >> b;
|
||||
ScenarioTimeOverride = a + b / 60.0;
|
||||
}
|
||||
else
|
||||
stream >> ScenarioTimeOverride;
|
||||
ScenarioTimeOverride = clamp( ScenarioTimeOverride, 0.f, 24 * 1439 / 1440.f );
|
||||
}
|
||||
else if( token == "scenario.time.offset" ) {
|
||||
@@ -346,21 +367,21 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
// shadow render toggle
|
||||
Parser.getTokens();
|
||||
Parser >> RenderShadows;
|
||||
}
|
||||
else if( token == "shadowtune" ) {
|
||||
}
|
||||
else if( token == "shadowtune" ) {
|
||||
Parser.getTokens( 4, false );
|
||||
Parser
|
||||
>> shadowtune.map_size
|
||||
>> shadowtune.width
|
||||
>> shadowtune.depth
|
||||
>> shadowtune.distance;
|
||||
}
|
||||
else if( token == "gfx.shadows.cab.range" ) {
|
||||
}
|
||||
else if( token == "gfx.shadows.cab.range" ) {
|
||||
// shadow render toggle
|
||||
Parser.getTokens();
|
||||
Parser >> RenderCabShadowsRange;
|
||||
}
|
||||
else if( token == "gfx.smoke" ) {
|
||||
else if( token == "gfx.smoke" ) {
|
||||
// smoke visualization toggle
|
||||
Parser.getTokens();
|
||||
Parser >> Smoke;
|
||||
@@ -372,8 +393,7 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
Parser >> smokefidelity;
|
||||
SmokeFidelity = clamp( smokefidelity, 1.f, 4.f );
|
||||
}
|
||||
else if (token == "smoothtraction")
|
||||
{
|
||||
else if( token == "smoothtraction" ) {
|
||||
// podwójna jasność ambient
|
||||
Parser.getTokens();
|
||||
Parser >> bSmoothTraction;
|
||||
@@ -385,6 +405,10 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
Parser >> splinefidelity;
|
||||
SplineFidelity = clamp( splinefidelity, 1.f, 4.f );
|
||||
}
|
||||
else if (token == "rendercab") {
|
||||
Parser.getTokens();
|
||||
Parser >> render_cab;
|
||||
}
|
||||
else if( token == "createswitchtrackbeds" ) {
|
||||
// podwójna jasność ambient
|
||||
Parser.getTokens();
|
||||
@@ -403,16 +427,12 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
else if( token == "gfx.reflections.framerate" ) {
|
||||
|
||||
auto const updatespersecond { std::abs( Parser.getToken<double>() ) };
|
||||
ReflectionUpdateInterval = (
|
||||
updatespersecond > 0 ?
|
||||
1.0 / std::min( 30.0, updatespersecond ) :
|
||||
0 );
|
||||
ReflectionUpdateInterval = 1.0 / updatespersecond;
|
||||
}
|
||||
else if (token == "timespeed")
|
||||
{
|
||||
// przyspieszenie czasu, zmienna do testów
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> fTimeSpeed;
|
||||
else if( token == "timespeed" ) {
|
||||
// przyspieszenie czasu, zmienna do testów
|
||||
Parser.getTokens( 1, false );
|
||||
Parser >> fTimeSpeed;
|
||||
}
|
||||
else if (token == "multisampling")
|
||||
{
|
||||
@@ -420,12 +440,6 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> iMultisampling;
|
||||
}
|
||||
else if (token == "glutfont")
|
||||
{
|
||||
// tekst generowany przez GLUT
|
||||
Parser.getTokens();
|
||||
Parser >> bGlutFont;
|
||||
}
|
||||
else if (token == "latitude")
|
||||
{
|
||||
// szerokość geograficzna
|
||||
@@ -577,7 +591,6 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
}
|
||||
else if (token == "brakestep")
|
||||
{
|
||||
// krok zmiany hamulca dla klawiszy [Num3] i [Num9]
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> fBrakeStep;
|
||||
}
|
||||
@@ -617,6 +630,11 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
priority == "lowest" ? 1000 :
|
||||
200 );
|
||||
}
|
||||
else if( token == "python.updatetime" )
|
||||
{
|
||||
Parser.getTokens();
|
||||
Parser >> PythonScreenUpdateRate;
|
||||
}
|
||||
else if( token == "uitextcolor" ) {
|
||||
// color of the ui text. NOTE: will be obsolete once the real ui is in place
|
||||
Parser.getTokens( 3, false );
|
||||
@@ -638,7 +656,8 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
// czy grupować eventy o tych samych nazwach
|
||||
Parser.getTokens();
|
||||
Parser >> InputGamepad;
|
||||
}
|
||||
}
|
||||
#ifdef WITH_UART
|
||||
else if( token == "uart" ) {
|
||||
uart_conf.enable = true;
|
||||
Parser.getTokens( 3, false );
|
||||
@@ -667,6 +686,10 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
>> uart_conf.lvmax
|
||||
>> uart_conf.lvuart;
|
||||
}
|
||||
else if ( token == "uarttachoscale" ) {
|
||||
Parser.getTokens( 1 );
|
||||
Parser >> uart_conf.tachoscale;
|
||||
}
|
||||
else if( token == "uartfeature" ) {
|
||||
Parser.getTokens( 4 );
|
||||
Parser
|
||||
@@ -679,10 +702,126 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
Parser.getTokens( 1 );
|
||||
Parser >> uart_conf.debug;
|
||||
}
|
||||
else if( token == "compresstex" ) {
|
||||
#endif
|
||||
#ifdef USE_EXTCAM_CAMERA
|
||||
else if( token == "extcam.cmd" ) {
|
||||
Parser.getTokens( 1 );
|
||||
Parser >> extcam_cmd;
|
||||
}
|
||||
else if( token == "extcam.rec" ) {
|
||||
Parser.getTokens( 1 );
|
||||
Parser >> extcam_rec;
|
||||
}
|
||||
else if( token == "extcam.res" ) {
|
||||
Parser.getTokens( 2 );
|
||||
Parser >> extcam_res.x >> extcam_res.y;
|
||||
}
|
||||
#endif
|
||||
else if (token == "compresstex") {
|
||||
Parser.getTokens( 1 );
|
||||
Parser >> compress_tex;
|
||||
}
|
||||
else if (token == "gfx.framebuffer.width")
|
||||
{
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> gfx_framebuffer_width;
|
||||
}
|
||||
else if (token == "gfx.framebuffer.height")
|
||||
{
|
||||
Parser.getTokens(1, false);
|
||||
Parser >> gfx_framebuffer_height;
|
||||
}
|
||||
else if (token == "gfx.shadowmap.enabled")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_shadowmap_enabled;
|
||||
}
|
||||
else if (token == "gfx.envmap.enabled")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_envmap_enabled;
|
||||
}
|
||||
else if (token == "gfx.postfx.motionblur.enabled")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_postfx_motionblur_enabled;
|
||||
}
|
||||
else if (token == "gfx.postfx.motionblur.shutter")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_postfx_motionblur_shutter;
|
||||
}
|
||||
else if (token == "gfx.postfx.motionblur.format")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
std::string token;
|
||||
Parser >> token;
|
||||
if (token == "rg16f")
|
||||
gfx_postfx_motionblur_format = GL_RG16F;
|
||||
else if (token == "rg32f")
|
||||
gfx_postfx_motionblur_format = GL_RG32F;
|
||||
}
|
||||
else if (token == "gfx.format.color")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
std::string token;
|
||||
Parser >> token;
|
||||
if (token == "rgb8")
|
||||
gfx_format_color = GL_RGB8;
|
||||
else if (token == "rgb16f")
|
||||
gfx_format_color = GL_RGB16F;
|
||||
else if (token == "rgb32f")
|
||||
gfx_format_color = GL_RGB32F;
|
||||
else if (token == "r11f_g11f_b10f")
|
||||
gfx_format_color = GL_R11F_G11F_B10F;
|
||||
}
|
||||
else if (token == "gfx.format.depth")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
std::string token;
|
||||
Parser >> token;
|
||||
if (token == "z16")
|
||||
gfx_format_depth = GL_DEPTH_COMPONENT16;
|
||||
else if (token == "z24")
|
||||
gfx_format_depth = GL_DEPTH_COMPONENT24;
|
||||
else if (token == "z32")
|
||||
gfx_format_depth = GL_DEPTH_COMPONENT32;
|
||||
else if (token == "z32f")
|
||||
gfx_format_depth = GL_DEPTH_COMPONENT32F;
|
||||
}
|
||||
else if (token == "gfx.skippipeline")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_skippipeline;
|
||||
}
|
||||
else if (token == "gfx.extraeffects")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_extraeffects;
|
||||
}
|
||||
/*
|
||||
else if (token == "gfx.usegles")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_usegles;
|
||||
}
|
||||
*/
|
||||
else if (token == "gfx.shadergamma")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> gfx_shadergamma;
|
||||
}
|
||||
else if (token == "python.mipmaps")
|
||||
{
|
||||
Parser.getTokens(1);
|
||||
Parser >> python_mipmaps;
|
||||
}
|
||||
/*
|
||||
else if (token == "crashdamage") {
|
||||
Parser.getTokens(1);
|
||||
Parser >> crash_damage;
|
||||
}
|
||||
*/
|
||||
} while ((token != "") && (token != "endconfig")); //(!Parser->EndOfFile)
|
||||
// na koniec trochę zależności
|
||||
if (!bLoadTraction) // wczytywanie drutów i słupów
|
||||
@@ -713,7 +852,7 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
if (qp)
|
||||
{ // to poniżej wykonywane tylko raz, jedynie po wczytaniu eu07.ini*/
|
||||
#ifdef _WIN32
|
||||
Console::ModeSet(iFeedbackMode, iFeedbackPort); // tryb pracy konsoli sterowniczej
|
||||
Console::ModeSet(iFeedbackMode, iFeedbackPort); // tryb pracy konsoli sterowniczej
|
||||
#endif
|
||||
/*iFpsRadiusMax = 0.000025 * fFpsRadiusMax *
|
||||
fFpsRadiusMax; // maksymalny promień renderowania 3000.0 -> 225
|
||||
@@ -730,4 +869,4 @@ global_settings::ConfigParse(cParser &Parser) {
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user