From 62b272479c724dbca9c3585fbcc6e19e9311b6ca Mon Sep 17 00:00:00 2001 From: firleju Date: Tue, 24 Jan 2017 15:31:06 +0100 Subject: [PATCH 1/4] Dodane pliki solucji --- MaSzyna.sln | 22 +++ Maszyna.vcxproj | 202 +++++++++++++++++++++++ Maszyna.vcxproj.filters | 346 ++++++++++++++++++++++++++++++++++++++++ maszyna.vcxproj.user | 13 ++ 4 files changed, 583 insertions(+) create mode 100644 MaSzyna.sln create mode 100644 Maszyna.vcxproj create mode 100644 Maszyna.vcxproj.filters create mode 100644 maszyna.vcxproj.user diff --git a/MaSzyna.sln b/MaSzyna.sln new file mode 100644 index 00000000..59bb2771 --- /dev/null +++ b/MaSzyna.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40629.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "maszyna", "maszyna.vcxproj", "{8E0232E5-1C67-442F-9E04-45ED2DDFC960}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x86.ActiveCfg = Debug|Win32 + {8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Debug|x86.Build.0 = Debug|Win32 + {8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x86.ActiveCfg = Release|Win32 + {8E0232E5-1C67-442F-9E04-45ED2DDFC960}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Maszyna.vcxproj b/Maszyna.vcxproj new file mode 100644 index 00000000..a07839d8 --- /dev/null +++ b/Maszyna.vcxproj @@ -0,0 +1,202 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8E0232E5-1C67-442F-9E04-45ED2DDFC960} + Win32Proj + 8.1 + + + + Application + true + v140_xp + + + Application + false + v140_xp + + + + + + + + + + + + + eu07++ + $(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\ + E:\Gry\MaSzyna_15_04 + + + eu07++ + $(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\ + $(SolutionDir)bin\ + false + + + + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + Level3 + EditAndContinue + Disabled + $(SolutionDir);$(SolutionDir)console;$(SolutionDir)mczapkie;$(SolutionDir)opengl;$(SolutionDir)python/include;%(AdditionalIncludeDirectories) + Use + true + false + + + MachineX86 + true + Windows + $(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories) + + + + + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + ProgramDatabase + $(SolutionDir);$(SolutionDir)console;$(SolutionDir)mczapkie;$(SolutionDir)opengl;$(SolutionDir)python/include;%(AdditionalIncludeDirectories) + Use + true + + + MachineX86 + true + Windows + true + true + $(DXSKD_DIR)lib/$(PlatformShortName);$(SolutionDir)opengl;$(SolutionDir)python/libs;%(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Maszyna.vcxproj.filters b/Maszyna.vcxproj.filters new file mode 100644 index 00000000..92d7f549 --- /dev/null +++ b/Maszyna.vcxproj.filters @@ -0,0 +1,346 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {d91dfdb6-7d84-4b52-a16a-bad302b45e3c} + + + {fafd38ab-4c2a-48c8-8e66-ad0d928573b3} + + + {2d73d7b2-5252-499c-963a-88fa3cb1af53} + + + {aec51dd3-af67-4f08-9dcb-889f673ad7c9} + + + {36684428-8a48-435f-bca4-a24d9bfe2587} + + + {cdf75bec-91f7-413c-8b57-9e32cba49148} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\opengl + + + Source Files\mczapkie + + + Source Files\mczapkie + + + Source Files\console + + + Source Files\mczapkie + + + Source Files\mczapkie + + + Source Files\mczapkie + + + Source Files\console + + + Source Files + + + Source Files\console + + + + + Header Files\opengl + + + Header Files\opengl + + + Header Files + + + Header Files + + + Header Files + + + Header Files\mczapkie + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\mczapkie + + + Header Files\mczapkie + + + Header Files\mczapkie + + + Header Files\mczapkie + + + Header Files\console + + + Header Files\console + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files\opengl + + + Header Files\console + + + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/maszyna.vcxproj.user b/maszyna.vcxproj.user new file mode 100644 index 00000000..6354dee2 --- /dev/null +++ b/maszyna.vcxproj.user @@ -0,0 +1,13 @@ + + + + E:\Gry\MaSzyna_15_04\eu07++.exe + E:\Gry\MaSzyna_15_04 + WindowsLocalDebugger + + + T:\sources\Projects\maszyna\eu07++.exe + ..\..\Projects\maszyna + WindowsLocalDebugger + + \ No newline at end of file From 28e85e8dc36e256504dd8529246c089b94e3b289 Mon Sep 17 00:00:00 2001 From: firleju Date: Tue, 24 Jan 2017 15:32:41 +0100 Subject: [PATCH 2/4] Poprawiony plik .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9859b01f..3e408e3a 100644 --- a/.gitignore +++ b/.gitignore @@ -67,3 +67,4 @@ Debug/ tmp/ bin/ ipch/ +*.aps From 4ad5ac1b517125bb782f158c898be516c7ddfd6d Mon Sep 17 00:00:00 2001 From: firleju Date: Wed, 25 Jan 2017 16:25:25 +0100 Subject: [PATCH 3/4] Poprawki post-merge. Nowy silnik liczb losowych. Dodane zagubione pliki --- Globals.cpp | 2 ++ Globals.h | 3 +++ Maszyna.vcxproj | 4 ++-- McZapkie/mctools.cpp | 9 ++++++++- McZapkie/mctools.h | 11 +++-------- PyInt.cpp | 2 +- PyInt.h | 2 +- maszyna.vcxproj.user | 3 +-- opengl/glew32.lib | Bin 0 -> 631602 bytes 9 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 opengl/glew32.lib diff --git a/Globals.cpp b/Globals.cpp index 413ad574..0df7de5e 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -184,6 +184,8 @@ bool Global::bDoubleAmbient = false; // podwójna jasność ambient double Global::fTimeSpeed = 1.0; // przyspieszenie czasu, zmienna do testów bool Global::bHideConsole = false; // hunter-271211: ukrywanie konsoli int Global::iBpp = 32; // chyba już nie używa się kart, na których 16bpp coś poprawi +//randomizacja +std::mt19937 Global::random_engine = std::mt19937(std::time(NULL)); // maciek001: konfiguracja wstępna portu COM bool Global::bMWDdebugEnable = false; bool Global::bMWDInputDataEnable = false; diff --git a/Globals.h b/Globals.h index be2db597..91e583b6 100644 --- a/Globals.h +++ b/Globals.h @@ -303,6 +303,9 @@ class Global static TTextSound *tsRadioBusy[10]; // zajętość kanałów radiowych (wskaźnik na odgrywany dźwięk) static int iPoKeysPWM[7]; // numery wejść dla PWM + //randomizacja + static std::mt19937 random_engine; + // metody static void TrainDelete(TDynamicObject *d); static void ConfigParse(cParser &parser); diff --git a/Maszyna.vcxproj b/Maszyna.vcxproj index a07839d8..fd7b39a4 100644 --- a/Maszyna.vcxproj +++ b/Maszyna.vcxproj @@ -37,9 +37,9 @@ - eu07++ + eu07++d $(SolutionDir)tmp\$(PlatformShortName)-$(Configuration)\$(ProjectName)\ - E:\Gry\MaSzyna_15_04 + E:\Gry\MaSzyna_15_04\ eu07++ diff --git a/McZapkie/mctools.cpp b/McZapkie/mctools.cpp index ee5b3ba0..f8b37b60 100644 --- a/McZapkie/mctools.cpp +++ b/McZapkie/mctools.cpp @@ -13,6 +13,7 @@ Copyright (C) 2007-2014 Maciej Cierniak */ #include "stdafx.h" #include "mctools.h" +#include "Globals.h" /*================================================*/ @@ -133,6 +134,12 @@ bool UnSetFlag(int &Flag, int Value) return true; } +inline double Random(double a, double b) +{ + std::uniform_real_distribution<> dis(a, b); + return dis(Global::random_engine); +} + bool FuzzyLogic(double Test, double Threshold, double Probability) { if ((Test > Threshold) && (!DebugModeFlag)) @@ -458,7 +465,7 @@ void ComputeArc(double X0, double Y0, double Xn, double Yn, double R, double L, { double dX; double dY; - double Xc; + double Xc; double Yc; double gamma; double alfa; diff --git a/McZapkie/mctools.h b/McZapkie/mctools.h index 9c0d5174..c88e2ead 100644 --- a/McZapkie/mctools.h +++ b/McZapkie/mctools.h @@ -68,16 +68,11 @@ inline long Round(float f) //return lround(f); } -inline int Random() -{ - std::srand(std::time(NULL)); - return std::rand(); -} +extern double Random(double a, double b); -inline double Random(double a, double b) +inline double Random() { - std::srand(std::time(NULL)); - return a + std::rand() / (float)RAND_MAX * (b - a); + return Random(0.0,1.0); } inline double Random(double b) diff --git a/PyInt.cpp b/PyInt.cpp index c0aa2ddf..190a9737 100644 --- a/PyInt.cpp +++ b/PyInt.cpp @@ -53,7 +53,7 @@ TPythonInterpreter::killInstance() { bool TPythonInterpreter::loadClassFile( std::string const &lookupPath, std::string const &className ) { - std::set::const_iterator it = _classes.find(className); + std::set::const_iterator it = _classes.find(className); if (it == _classes.end()) { FILE *sourceFile = _getFile(lookupPath, className); diff --git a/PyInt.h b/PyInt.h index eb44a58a..9db84b7b 100644 --- a/PyInt.h +++ b/PyInt.h @@ -34,7 +34,7 @@ class TPythonInterpreter static TPythonInterpreter *_instance; int _screenRendererPriority; // std::set _classes; - std::set _classes; + std::set _classes; PyObject *_main; PyObject *_stdErr; // FILE *_getFile(const char *lookupPath, const char *className); diff --git a/maszyna.vcxproj.user b/maszyna.vcxproj.user index 6354dee2..d5e24bd0 100644 --- a/maszyna.vcxproj.user +++ b/maszyna.vcxproj.user @@ -1,8 +1,7 @@  - E:\Gry\MaSzyna_15_04\eu07++.exe - E:\Gry\MaSzyna_15_04 + E:\Gry\MaSzyna_15_04\ WindowsLocalDebugger diff --git a/opengl/glew32.lib b/opengl/glew32.lib new file mode 100644 index 0000000000000000000000000000000000000000..24793a72a5f7573aa111aca87058ebf67f53f448 GIT binary patch literal 631602 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 literal 0 HcmV?d00001 From 0900d93227de8c5d56cdbade55cdf64f350e5133 Mon Sep 17 00:00:00 2001 From: firleju Date: Thu, 26 Jan 2017 06:14:45 +0100 Subject: [PATCH 4/4] =?UTF-8?q?Usuni=C4=99te=20out=5Fof=5Frange=20z=20zapi?= =?UTF-8?q?su=20e3d=20i=20szukania=20eventow=20skanowanych?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ground.cpp | 3 +- Model3d.cpp | 415 ++++++++++++++++++++++++++-------------------------- 2 files changed, 210 insertions(+), 208 deletions(-) diff --git a/Ground.cpp b/Ground.cpp index 456ca379..cc098a48 100644 --- a/Ground.cpp +++ b/Ground.cpp @@ -2234,8 +2234,7 @@ TEvent * TGround::FindEventScan(const string &asEventName) TEvent *e = (TEvent *)sTracks->Find(0, asEventName.c_str()); // wyszukiwanie w drzewie eventów if (e) return e; // jak istnieje, to w porządku - if (asEventName.substr(asEventName.length() - 4, 5) == - ":scan") // jeszcze może być event niejawny + if (asEventName.rfind(":scan") != std::string::npos) // jeszcze może być event niejawny { // no to szukamy komórki pamięci o nazwie zawartej w evencie string n = asEventName.substr(0, asEventName.length() - 5); // do dwukropka if (sTracks->Find(TP_MEMCELL, n.c_str())) // jeśli jest takowa komórka pamięci diff --git a/Model3d.cpp b/Model3d.cpp index a673d700..f70dd091 100644 --- a/Model3d.cpp +++ b/Model3d.cpp @@ -183,7 +183,8 @@ void TSubModel::NameSet(const char *n) // int TSubModel::SeekFaceNormal(DWORD *Masks, int f,DWORD dwMask,vector3 // *pt,GLVERTEX // *Vertices) -int TSubModel::SeekFaceNormal(unsigned int *Masks, int f, unsigned int dwMask, float3 *pt, float8 *Vertices) +int TSubModel::SeekFaceNormal(unsigned int *Masks, int f, unsigned int dwMask, float3 *pt, + float8 *Vertices) { // szukanie punktu stycznego // do (pt), zwraca numer // wierzchołka, a nie trójkąta @@ -210,29 +211,21 @@ float emm2[] = {0, 0, 0, 1}; inline double readIntAsDouble(cParser &parser, int base = 255) { int value = parser.getToken(false); - return ( static_cast(value) / base ); + return (static_cast(value) / base); }; template inline void readColor(cParser &parser, ColorT *color) { - double discard; - parser.getTokens( 4, false ); - parser - >> discard - >> color[ 0 ] - >> color[ 1 ] - >> color[ 2 ]; + double discard; + parser.getTokens(4, false); + parser >> discard >> color[0] >> color[1] >> color[2]; }; inline void readColor(cParser &parser, int &color) { - int r, g, b, discard; - parser.getTokens( 4, false ); - parser - >> discard - >> r - >> g - >> b; + int r, g, b, discard; + parser.getTokens(4, false); + parser >> discard >> r >> g >> b; color = r + (g << 8) + (b << 16); }; /* @@ -245,10 +238,10 @@ inline void readMatrix(cParser& parser,matrix4x4& matrix) */ inline void readMatrix(cParser &parser, float4x4 &matrix) { // Ra: wczytanie transforma - parser.getTokens( 16, false ); - for( int x = 0; x <= 3; ++x ) // wiersze - for( int y = 0; y <= 3; ++y ) // kolumny - parser >> matrix( x )[ y ]; + parser.getTokens(16, false); + for (int x = 0; x <= 3; ++x) // wiersze + for (int y = 0; y <= 3; ++y) // kolumny + parser >> matrix(x)[y]; }; int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) @@ -342,7 +335,7 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) readColor(parser, f4Specular); parser.ignoreTokens(1); // zignorowanie nazwy "SelfIllum:" { - std::string light = parser.getToken(); + std::string light = parser.getToken(); if (light == "true") fLight = 2.0; // zawsze świeci else if (light == "false") @@ -352,40 +345,29 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) }; if (eType == TP_FREESPOTLIGHT) { - if( !parser.expectToken( "nearattenstart:" ) ) { Error( "Model light parse failure!" ); } - std::string discard; - parser.getTokens( 13, false ); - parser - >> fNearAttenStart - >> discard - >> fNearAttenEnd - >> discard - >> bUseNearAtten - >> discard - >> iFarAttenDecay - >> discard - >> fFarDecayRadius - >> discard - >> fCosFalloffAngle // kąt liczony dla średnicy, a nie promienia - >> discard - >> fCosHotspotAngle; // kąt liczony dla średnicy, a nie promienia - fCosFalloffAngle = cos( DegToRad( 0.5 * fCosFalloffAngle ) ); - fCosHotspotAngle = cos( DegToRad( 0.5 * fCosHotspotAngle ) ); + if (!parser.expectToken("nearattenstart:")) + { + Error("Model light parse failure!"); + } + std::string discard; + parser.getTokens(13, false); + parser >> fNearAttenStart >> discard >> fNearAttenEnd >> discard >> bUseNearAtten >> + discard >> iFarAttenDecay >> discard >> fFarDecayRadius >> discard >> + fCosFalloffAngle // kąt liczony dla średnicy, a nie promienia + >> discard >> fCosHotspotAngle; // kąt liczony dla średnicy, a nie promienia + fCosFalloffAngle = cos(DegToRad(0.5 * fCosFalloffAngle)); + fCosHotspotAngle = cos(DegToRad(0.5 * fCosHotspotAngle)); iNumVerts = 1; iFlags |= 0x4010; // rysowane w cyklu nieprzezroczystych, macierz musi // zostać bez zmiany } else if (eType < TP_ROTATOR) { - std::string discard; - parser.getTokens( 5, false ); - parser - >> discard - >> bWire - >> discard - >> fWireSize - >> discard; - Opacity = readIntAsDouble(parser, 100.0f); // wymagane jest 0 dla szyb, 100 idzie w nieprzezroczyste + std::string discard; + parser.getTokens(5, false); + parser >> discard >> bWire >> discard >> fWireSize >> discard; + Opacity = readIntAsDouble(parser, + 100.0f); // wymagane jest 0 dla szyb, 100 idzie w nieprzezroczyste if (Opacity > 1.0) Opacity *= 0.01; // w 2013 był błąd i aby go obejść, trzeba było wpisać 10000.0 if ((Global::iConvertModels & 1) == 0) // dla zgodności wstecz @@ -430,7 +412,7 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) if (texture.find_first_of("/\\") == texture.npos) texture.insert(0, Global::asCurrentTexturePath.c_str()); TextureID = TTexturesManager::GetTextureID( - szTexturePath, const_cast(Global::asCurrentTexturePath.c_str()), texture); + szTexturePath, const_cast(Global::asCurrentTexturePath.c_str()), texture); // TexAlpha=TTexturesManager::GetAlpha(TextureID); // iFlags|=TexAlpha?0x20:0x10; //0x10-nieprzezroczysta, 0x20-przezroczysta if (Opacity < 1.0) // przezroczystość z tekstury brana tylko dla Opacity @@ -448,17 +430,18 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) else iFlags |= 0x10; - std::string discard; - parser.getTokens( 5, false ); - parser - >> discard - >> fSquareMaxDist - >> discard - >> fSquareMinDist - >> discard; + std::string discard; + parser.getTokens(5, false); + parser >> discard >> fSquareMaxDist >> discard >> fSquareMinDist >> discard; - if( fSquareMaxDist >= 0.0 ) { fSquareMaxDist *= fSquareMaxDist; } - else { fSquareMaxDist = 15000 * 15000; }// 15km to więcej, niż się obecnie wyświetla + if (fSquareMaxDist >= 0.0) + { + fSquareMaxDist *= fSquareMaxDist; + } + else + { + fSquareMaxDist = 15000 * 15000; + } // 15km to więcej, niż się obecnie wyświetla fSquareMinDist *= fSquareMinDist; fMatrix = new float4x4(); readMatrix(parser, *fMatrix); // wczytanie transform @@ -468,10 +451,8 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) unsigned int *sg; // maski przynależności trójkątów do powierzchni if (eType < TP_ROTATOR) { // wczytywanie wierzchołków - parser.getTokens( 2, false ); - parser - >> discard - >> token; + parser.getTokens(2, false); + parser >> discard >> token; // Ra 15-01: to wczytać jako tekst - jeśli pierwszy znak zawiera "*", to // dalej będzie nazwa wcześniejszego submodelu, z którego należy wziąć // wierzchołki @@ -516,24 +497,17 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) // czyli nie ma wspólnych // wektorów normalnych } - parser.getTokens( 3, false ); - parser - >> Vertices[i].Point.x - >> Vertices[i].Point.y - >> Vertices[i].Point.z; + parser.getTokens(3, false); + parser >> Vertices[i].Point.x >> Vertices[i].Point.y >> Vertices[i].Point.z; if (maska == -1) { // jeśli wektory normalne podane jawnie - parser.getTokens( 3, false ); - parser - >> Vertices[i].Normal.x - >> Vertices[i].Normal.y - >> Vertices[i].Normal.z; + parser.getTokens(3, false); + parser >> Vertices[i].Normal.x >> Vertices[i].Normal.y >> + Vertices[i].Normal.z; wsp[i] = i; // wektory normalne "są już policzone" } - parser.getTokens( 2, false ); - parser - >> Vertices[i].tu - >> Vertices[i].tv; + parser.getTokens(2, false); + parser >> Vertices[i].tu >> Vertices[i].tv; if (i % 3 == 2) // jeżeli wczytano 3 punkty { if (Vertices[i].Point == Vertices[i - 1].Point || @@ -543,7 +517,8 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) --iNumFaces; // o jeden trójkąt mniej iNumVerts -= 3; // czyli o 3 wierzchołki i -= 3; // wczytanie kolejnego w to miejsce - WriteLog(std::string("Degenerated triangle ignored in: \"") + pName + "\", verticle " + std::to_string(i)); + WriteLog(std::string("Degenerated triangle ignored in: \"") + pName + + "\", verticle " + std::to_string(i)); } if (i > 0) // jeśli pierwszy trójkąt będzie zdegenerowany, to // zostanie usunięty i nie ma co sprawdzać @@ -557,7 +532,8 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) --iNumFaces; // o jeden trójkąt mniej iNumVerts -= 3; // czyli o 3 wierzchołki i -= 3; // wczytanie kolejnego w to miejsce - WriteLog( std::string("Too large triangle ignored in: \"") + pName + "\""); + WriteLog(std::string("Too large triangle ignored in: \"") + pName + + "\""); } } } @@ -612,26 +588,22 @@ int TSubModel::Load(cParser &parser, TModel3d *Model, int Pos, bool dynamic) else if (eType == TP_STARS) { // punkty świecące dookólnie - składnia jak // dla smt_Mesh - std::string discard; - parser.getTokens( 2, false ); - parser - >> discard - >> iNumVerts; + std::string discard; + parser.getTokens(2, false); + parser >> discard >> iNumVerts; // Vertices=new GLVERTEX[iNumVerts]; Vertices = new float8[iNumVerts]; int i, j; for (i = 0; i < iNumVerts; i++) { - if( i % 3 == 0 ) { - parser.ignoreToken(); // maska powierzchni trójkąta - } - parser.getTokens( 5, false ); - parser - >> Vertices[ i ].Point.x - >> Vertices[ i ].Point.y - >> Vertices[ i ].Point.z - >> j // zakodowany kolor - >> discard; + if (i % 3 == 0) + { + parser.ignoreToken(); // maska powierzchni trójkąta + } + parser.getTokens(5, false); + parser >> Vertices[i].Point.x >> Vertices[i].Point.y >> Vertices[i].Point.z >> + j // zakodowany kolor + >> discard; Vertices[i].Normal.x = ((j)&0xFF) / 255.0; // R Vertices[i].Normal.y = ((j >> 8) & 0xFF) / 255.0; // G Vertices[i].Normal.z = ((j >> 16) & 0xFF) / 255.0; // B @@ -677,7 +649,7 @@ int TSubModel::TriangleAdd(TModel3d *m, int tex, int tri) return s->iNumVerts - tri; // zwraca pozycję tych trójkątów w submodelu }; -float8 * TSubModel::TrianglePtr(int tex, int pos, int *la, int *ld, int *ls) +float8 *TSubModel::TrianglePtr(int tex, int pos, int *la, int *ld, int *ls) { // zwraca wskaźnik do wypełnienia tabeli wierzchołków, używane // przy tworzeniu E3D terenu TSubModel *s = this; @@ -876,7 +848,7 @@ int TSubModel::FlagsCheck() // samo pomijanie glBindTexture() nie poprawi wydajności // ale można sprawdzić, czy można w ogóle pominąć kod do tekstur (sprawdzanie // replaceskin) - int i = 0; + int i = 0; if (Child) { // Child jest renderowany po danym submodelu if (Child->TextureID) // o ile ma teksturę @@ -979,12 +951,12 @@ struct ToLower } }; -TSubModel * TSubModel::GetFromName(std::string const &search, bool i) +TSubModel *TSubModel::GetFromName(std::string const &search, bool i) { return GetFromName(search.c_str(), i); }; -TSubModel * TSubModel::GetFromName(char const *search, bool i) +TSubModel *TSubModel::GetFromName(char const *search, bool i) { TSubModel *result; // std::transform(search.begin(),search.end(),search.begin(),ToLower()); @@ -1558,10 +1530,14 @@ void TSubModel::Info() { info->iTexture = ++info->iTotalTextures; // przydzielenie numeru tekstury // w pliku (od 1) - std::string t( pTexture ); - // trim extension - if( t.substr( t.rfind( '.' ) ) == ".tga" ) { t.erase( t.rfind( '.' ) ); } - else if( t.substr( t.rfind( '.' ) ) == ".dds" ) { t.erase( t.rfind( '.' ) ); } + std::string t(pTexture); + // trim extension + size_t kropka = t.rfind('.'); + if (kropka != std::string::npos && + (t.substr(kropka) == ".tga" || t.substr(kropka) == ".dds")) + { + t.erase(t.rfind('.')); + } if (t != std::string(pTexture)) { // jeśli się zmieniło // pName=new char[token.length()+1]; //nie ma sensu skracać tabeli @@ -1621,18 +1597,21 @@ void TSubModel::BinInit(TSubModel *s, float4x4 *m, float8 *v, TStringPack *t, TS { pName = n->String(iName); std::string name(pName); - if( false == name.empty() ) + if (false == name.empty()) { // jeśli dany submodel jest zgaszonym światłem, to // domyślnie go ukrywamy - if( (name.size() >= 8) && (name.substr( 0, 8 ) == "Light_On") ) {// jeśli jest światłem numerowanym - iVisible = 0; // to domyślnie wyłączyć, żeby się nie nakładało z - } + if ((name.size() >= 8) && (name.substr(0, 8) == "Light_On")) + { // jeśli jest światłem numerowanym + iVisible = 0; // to domyślnie wyłączyć, żeby się nie nakładało z + } // obiektem "Light_Off" - else if( dynamic ) {// inaczej wyłączało smugę w latarniach - if( (name.size() >= 3) && (name.substr( name.size() - 3, 3 ) == "_on") ) {// jeśli jest kontrolką w stanie zapalonym - iVisible = 0; // to domyślnie wyłączyć, żeby się nie nakładało z - } - } + else if (dynamic) + { // inaczej wyłączało smugę w latarniach + if ((name.size() >= 3) && (name.substr(name.size() - 3, 3) == "_on")) + { // jeśli jest kontrolką w stanie zapalonym + iVisible = 0; // to domyślnie wyłączyć, żeby się nie nakładało z + } + } // obiektem "_off" } } @@ -1647,7 +1626,7 @@ void TSubModel::BinInit(TSubModel *s, float4x4 *m, float8 *v, TStringPack *t, TS if (tex.find_last_of("/\\") == std::string::npos) tex.insert(0, Global::asCurrentTexturePath); TextureID = TTexturesManager::GetTextureID( - szTexturePath, const_cast(Global::asCurrentTexturePath.c_str()), tex); + szTexturePath, const_cast(Global::asCurrentTexturePath.c_str()), tex); // TexAlpha=TTexturesManager::GetAlpha(TextureID); //zmienna robocza // ustawienie cyklu przezroczyste/nieprzezroczyste zależnie od własności // stałej tekstury @@ -1721,8 +1700,9 @@ float TSubModel::MaxY(const float4x4 &m) return 0; if (!Vertices) return 0; - float y, my = m[0][1] * Vertices[0].Point.x + m[1][1] * Vertices[0].Point.y + - m[2][1] * Vertices[0].Point.z + m[3][1]; + float y, + my = m[0][1] * Vertices[0].Point.x + m[1][1] * Vertices[0].Point.y + + m[2][1] * Vertices[0].Point.z + m[3][1]; for (int i = 1; i < iNumVerts; ++i) { y = m[0][1] * Vertices[i].Point.x + m[1][1] * Vertices[i].Point.y + @@ -1773,7 +1753,7 @@ TModel3d::~TModel3d() // później się jeszcze usuwa obiekt z którego dziedziczymy tabelę VBO }; -TSubModel * TModel3d::AddToNamed(const char *Name, TSubModel *SubModel) +TSubModel *TModel3d::AddToNamed(const char *Name, TSubModel *SubModel) { TSubModel *sm = Name ? GetFromName(Name) : NULL; AddTo(sm, SubModel); // szukanie nadrzędnego @@ -1797,7 +1777,7 @@ void TModel3d::AddTo(TSubModel *tmp, TSubModel *SubModel) iFlags |= 0x0200; // submodele są oddzielne }; -TSubModel * TModel3d::GetFromName(const char *sName) +TSubModel *TModel3d::GetFromName(const char *sName) { // wyszukanie submodelu po nazwie if (!sName) return Root; // potrzebne do terenu z E3D @@ -1822,13 +1802,17 @@ TMaterial* TModel3d::GetMaterialFromName(char *sName) } */ -bool TModel3d::LoadFromFile(std::string const &FileName, bool dynamic) { - // wczytanie modelu z pliku - std::string name = ToLower( FileName ); - // trim extension if needed - if( name.substr( name.rfind( '.' ) ) == ".t3d" ) { name.erase( name.rfind( '.' ) ); } +bool TModel3d::LoadFromFile(std::string const &FileName, bool dynamic) +{ + // wczytanie modelu z pliku + std::string name = ToLower(FileName); + // trim extension if needed + if (name.substr(name.rfind('.')) == ".t3d") + { + name.erase(name.rfind('.')); + } - asBinary = name + ".e3d"; + asBinary = name + ".e3d"; if (FileExists(asBinary)) { LoadFromBinFile(asBinary, dynamic); @@ -1844,9 +1828,11 @@ bool TModel3d::LoadFromFile(std::string const &FileName, bool dynamic) { Init(); // generowanie siatek i zapis E3D } } - bool const result = Root ? (iSubModelsCount > 0) : false; // brak pliku albo problem z wczytaniem - if( false == result ) { - ErrorLog( "Failed to load 3d model \"" + FileName + "\"" ); + bool const result = + Root ? (iSubModelsCount > 0) : false; // brak pliku albo problem z wczytaniem + if (false == result) + { + ErrorLog("Failed to load 3d model \"" + FileName + "\""); } return result; }; @@ -1856,46 +1842,49 @@ void TModel3d::LoadFromBinFile(std::string const &FileName, bool dynamic) WriteLog("Loading - binary model: " + FileName); int i = 0, j, k, ch, size; -/* TFileStream *fs = new TFileStream(AnsiString(FileName), fmOpenRead); + /* TFileStream *fs = new TFileStream(AnsiString(FileName), fmOpenRead); size = fs->Size >> 2; iModel = new int[size]; // ten wskaźnik musi być w modelu, aby zwolnić pamięć fs->Read(iModel, fs->Size); // wczytanie pliku delete fs; -*/ { - std::ifstream file( FileName, std::ios::binary | std::ios::ate ); file.unsetf( std::ios::skipws ); - size = file.tellg(); // ios::ate already positioned us at the end of the file - iModel = new int[ size >> 2 ]; // ten wskaźnik musi być w modelu, aby zwolnić pamięć - file.seekg( 0, std::ios::beg ); // rewind the caret afterwards - file.read( reinterpret_cast(iModel), size ); - } +*/ { + std::ifstream file(FileName, std::ios::binary | std::ios::ate); + file.unsetf(std::ios::skipws); + size = file.tellg(); // ios::ate already positioned us at the end of the file + iModel = new int[size >> 2]; // ten wskaźnik musi być w modelu, aby zwolnić pamięć + file.seekg(0, std::ios::beg); // rewind the caret afterwards + file.read(reinterpret_cast(iModel), size); + } float4x4 *m = NULL; // transformy // zestaw kromek: while ((i << 2) < size) // w pliku może być kilka modeli { ch = iModel[i]; // nazwa kromki j = i + (iModel[i + 1] >> 2); // początek następnej kromki - if( ch == MAKE_ID4('E','3','D','0')) // główna: 'E3D0',len,pod-kromki + if (ch == MAKE_ID4('E', '3', 'D', '0')) // główna: 'E3D0',len,pod-kromki { // tylko tę kromkę znamy, może kiedyś jeszcze DOF się zrobi i += 2; while (i < j) { // przetwarzanie kromek wewnętrznych - ch = iModel[ i ]; // nazwa kromki + ch = iModel[i]; // nazwa kromki k = (iModel[i + 1] >> 2); // długość aktualnej kromki switch (ch) { - case MAKE_ID4('M','D','L','0'): // zmienne modelu: 'E3D0',len,(informacje o modelu) + case MAKE_ID4('M', 'D', 'L', + '0'): // zmienne modelu: 'E3D0',len,(informacje o modelu) break; - case MAKE_ID4('V','N','T','0'): // wierzchołki: 'VNT0',len,(32 bajty na wierzchołek) + case MAKE_ID4('V', 'N', 'T', + '0'): // wierzchołki: 'VNT0',len,(32 bajty na wierzchołek) iNumVerts = (k - 2) >> 3; m_nVertexCount = iNumVerts; m_pVNT = (CVertNormTex *)(iModel + i + 2); break; - case MAKE_ID4('S','U','B','0'): // submodele: 'SUB0',len,(256 bajtów na submodel) + case MAKE_ID4('S', 'U', 'B', '0'): // submodele: 'SUB0',len,(256 bajtów na submodel) iSubModelsCount = (k - 2) / 64; Root = (TSubModel *)(iModel + i + 2); // numery na wskaźniki przetworzymy później break; - case MAKE_ID4('S','U','B','1'): // submodele: 'SUB1',len,(320 bajtów na submodel) + case MAKE_ID4('S', 'U', 'B', '1'): // submodele: 'SUB1',len,(320 bajtów na submodel) iSubModelsCount = (k - 2) / 80; Root = (TSubModel *)(iModel + i + 2); // numery na wskaźniki przetworzymy później @@ -1903,32 +1892,38 @@ void TModel3d::LoadFromBinFile(std::string const &FileName, bool dynamic) ++ch) // trzeba przesunąć bliżej, bo 256 wystarczy MoveMemory(((char *)Root) + 256 * ch, ((char *)Root) + 320 * ch, 256); break; - case MAKE_ID4('T','R','A','0'): // transformy: 'TRA0',len,(64 bajty na transform) + case MAKE_ID4('T', 'R', 'A', '0'): // transformy: 'TRA0',len,(64 bajty na transform) m = (float4x4 *)(iModel + i + 2); // tabela transformów break; - case MAKE_ID4('T','R','A','1'): // transformy: 'TRA1',len,(128 bajtów na transform) + case MAKE_ID4('T', 'R', 'A', + '1'): // transformy: 'TRA1',len,(128 bajtów na transform) m = (float4x4 *)(iModel + i + 2); // tabela transformów for (ch = 0; ch < ((k - 2) >> 1); ++ch) *(((float *)m) + ch) = *(((double *)m) + ch); // przepisanie double do float break; - case MAKE_ID4('I','D','X','1'): // indeksy 1B: 'IDX2',len,(po bajcie na numer wierzchołka) + case MAKE_ID4('I', 'D', 'X', + '1'): // indeksy 1B: 'IDX2',len,(po bajcie na numer wierzchołka) break; - case MAKE_ID4('I','D','X','2'): // indeksy 2B: 'IDX2',len,(po 2 bajty na numer wierzchołka) + case MAKE_ID4('I', 'D', 'X', + '2'): // indeksy 2B: 'IDX2',len,(po 2 bajty na numer wierzchołka) break; - case MAKE_ID4('I','D','X','4'): // indeksy 4B: 'IDX4',len,(po 4 bajty na numer wierzchołka) + case MAKE_ID4('I', 'D', 'X', + '4'): // indeksy 4B: 'IDX4',len,(po 4 bajty na numer wierzchołka) break; - case MAKE_ID4('T','E','X','0'): // tekstury: 'TEX0',len,(łańcuchy zakończone zerem - pliki + case MAKE_ID4('T', 'E', 'X', + '0'): // tekstury: 'TEX0',len,(łańcuchy zakończone zerem - pliki // tekstur) Textures.Init((char *)(iModel + i)); //łącznie z nagłówkiem break; - case MAKE_ID4('T','I','X','0'): // indeks nazw tekstur + case MAKE_ID4('T', 'I', 'X', '0'): // indeks nazw tekstur Textures.InitIndex((int *)(iModel + i)); //łącznie z nagłówkiem break; - case MAKE_ID4('N','A','M','0'): // nazwy: 'NAM0',len,(łańcuchy zakończone zerem - nazwy + case MAKE_ID4('N', 'A', 'M', + '0'): // nazwy: 'NAM0',len,(łańcuchy zakończone zerem - nazwy // submodeli) Names.Init((char *)(iModel + i)); //łącznie z nagłówkiem break; - case MAKE_ID4('N','I','X','0'): // indeks nazw submodeli + case MAKE_ID4('N', 'I', 'X', '0'): // indeks nazw submodeli Names.InitIndex((int *)(iModel + i)); //łącznie z nagłówkiem break; } @@ -1956,7 +1951,7 @@ void TModel3d::LoadFromTextFile(std::string const &FileName, bool dynamic) iFlags |= 0x0200; // wczytano z pliku tekstowego (właścicielami tablic są submodle) cParser parser(FileName, cParser::buffer_FILE); // Ra: tu powinno być "models\\"... TSubModel *SubModel; - std::string token = parser.getToken(); + std::string token = parser.getToken(); iNumVerts = 0; // w konstruktorze to jest while (token != "" || parser.eof()) { @@ -1968,10 +1963,11 @@ void TModel3d::LoadFromTextFile(std::string const &FileName, bool dynamic) break; SubModel = new TSubModel(); iNumVerts += SubModel->Load(parser, this, iNumVerts, dynamic); - SubModel->Parent = - AddToNamed(parent.c_str(), SubModel); // będzie potrzebne do wyliczenia pozycji, np. pantografu + SubModel->Parent = AddToNamed( + parent.c_str(), SubModel); // będzie potrzebne do wyliczenia pozycji, np. pantografu // iSubModelsCount++; - parser.getTokens(); parser >> token; + parser.getTokens(); + parser >> token; } // Ra: od wersji 334 przechylany jest cały model, a nie tylko pierwszy // submodel @@ -2075,59 +2071,66 @@ void TModel3d::SaveToBinFile(char const *FileName) if (nam) nam += 8; len = 8 + sub + tra + vnt + tex + ((-tex) & 3) + nam + ((-nam) & 3); - TSubModel *roboczy = new TSubModel(); // bufor używany do zapisywania - // AnsiString *asN=&roboczy->asName,*asT=&roboczy->asTexture; - // roboczy->FirstInit(); //żeby delete nie usuwało czego nie powinno - /* TFileStream *fs = new TFileStream(AnsiString(FileName), fmCreate); -*/ { - std::ofstream file( FileName, std::ios::binary ); file.unsetf( std::ios::skipws ); - file.write( "E3D0", 4 ); // kromka główna - file.write( reinterpret_cast( &len ), 4 ); + TSubModel *roboczy = new TSubModel(); // bufor używany do zapisywania + // AnsiString *asN=&roboczy->asName,*asT=&roboczy->asTexture; + // roboczy->FirstInit(); //żeby delete nie usuwało czego nie powinno + /* TFileStream *fs = new TFileStream(AnsiString(FileName), fmCreate); +*/ { + std::ofstream file(FileName, std::ios::binary); + file.unsetf(std::ios::skipws); + file.write("E3D0", 4); // kromka główna + file.write(reinterpret_cast(&len), 4); - file.write( "SUB0", 4 ); // dane submodeli - file.write( reinterpret_cast( &sub ), 4 ); - for( i = 0; i < iSubModelsCount; ++i ) { - roboczy->InfoSet( info + i ); - file.write( reinterpret_cast( roboczy ), sizeof( TSubModel ) ); // zapis jednego submodelu - } - if( tra ) { // zapis transformów - file.write( "TRA0", 4 ); // transformy - file.write( reinterpret_cast( &tra ), 4 ); - for( i = 0; i < iSubModelsCount; ++i ) - if( info[ i ].iTransform >= 0 ) - file.write( reinterpret_cast( info[ i ].pSubModel->GetMatrix() ), 16 * 4 ); - } - { // zapis wierzchołków - MakeArray( iNumVerts ); // tworzenie tablic dla VBO - Root->RaArrayFill( m_pVNT ); // wypełnianie tablicy - file.write( "VNT0", 4 ); // wierzchołki - file.write( reinterpret_cast( &vnt ), 4 ); - file.write( reinterpret_cast( m_pVNT ), 32 * iNumVerts ); - } - if( tex ) // może być jeden submodel ze zmienną teksturą i nazwy nie będzie - { // zapis nazw tekstur - file.write( "TEX0", 4 ); // nazwy tekstur - i = ( tex + 3 ) & ~3; // zaokrąglenie w górę - file.write( reinterpret_cast( &i ), 4 ); - file.write( reinterpret_cast( &zero ), 1 ); // ciąg o numerze zero nie jest używany, ma tylko znacznik końca - for( i = 0; i < iSubModelsCount; ++i ) - if( info[ i ].iTextureLen ) - file.write( info[ i ].pSubModel->pTexture, info[ i ].iTextureLen ); - if( ( -tex ) & 3 ) - file.write( reinterpret_cast( &zero ), ( ( -tex ) & 3 ) ); // wyrównanie do wielokrotności 4 bajtów - } - if( nam ) // może być jeden anonimowy submodel w modelu - { // zapis nazw submodeli - file.write( "NAM0", 4 ); // nazwy submodeli - i = ( nam + 3 ) & ~3; // zaokrąglenie w górę - file.write( reinterpret_cast( &i ), 4 ); - for( i = 0; i < iSubModelsCount; ++i ) - if( info[ i ].iNameLen ) - file.write( info[ i ].pSubModel->pName, info[ i ].iNameLen ); - if( ( -nam ) & 3 ) - file.write( reinterpret_cast( &zero ), ( ( -nam ) & 3 ) ); // wyrównanie do wielokrotności 4 bajtów - } - } // file autocloses on getting out of scope + file.write("SUB0", 4); // dane submodeli + file.write(reinterpret_cast(&sub), 4); + for (i = 0; i < iSubModelsCount; ++i) + { + roboczy->InfoSet(info + i); + file.write(reinterpret_cast(roboczy), + sizeof(TSubModel)); // zapis jednego submodelu + } + if (tra) + { // zapis transformów + file.write("TRA0", 4); // transformy + file.write(reinterpret_cast(&tra), 4); + for (i = 0; i < iSubModelsCount; ++i) + if (info[i].iTransform >= 0) + file.write(reinterpret_cast(info[i].pSubModel->GetMatrix()), 16 * 4); + } + { // zapis wierzchołków + MakeArray(iNumVerts); // tworzenie tablic dla VBO + Root->RaArrayFill(m_pVNT); // wypełnianie tablicy + file.write("VNT0", 4); // wierzchołki + file.write(reinterpret_cast(&vnt), 4); + file.write(reinterpret_cast(m_pVNT), 32 * iNumVerts); + } + if (tex) // może być jeden submodel ze zmienną teksturą i nazwy nie będzie + { // zapis nazw tekstur + file.write("TEX0", 4); // nazwy tekstur + i = (tex + 3) & ~3; // zaokrąglenie w górę + file.write(reinterpret_cast(&i), 4); + file.write(reinterpret_cast(&zero), + 1); // ciąg o numerze zero nie jest używany, ma tylko znacznik końca + for (i = 0; i < iSubModelsCount; ++i) + if (info[i].iTextureLen) + file.write(info[i].pSubModel->pTexture, info[i].iTextureLen); + if ((-tex) & 3) + file.write(reinterpret_cast(&zero), + ((-tex) & 3)); // wyrównanie do wielokrotności 4 bajtów + } + if (nam) // może być jeden anonimowy submodel w modelu + { // zapis nazw submodeli + file.write("NAM0", 4); // nazwy submodeli + i = (nam + 3) & ~3; // zaokrąglenie w górę + file.write(reinterpret_cast(&i), 4); + for (i = 0; i < iSubModelsCount; ++i) + if (info[i].iNameLen) + file.write(info[i].pSubModel->pName, info[i].iNameLen); + if ((-nam) & 3) + file.write(reinterpret_cast(&zero), + ((-nam) & 3)); // wyrównanie do wielokrotności 4 bajtów + } + } // file autocloses on getting out of scope // roboczy->FirstInit(); //żeby delete nie usuwało czego nie powinno // roboczy->iFlags=0; //żeby delete nie usuwało czego nie powinno // roboczy->asName)=asN; @@ -2375,7 +2378,7 @@ int TModel3d::TerrainCount() } return i; }; -TSubModel * TModel3d::TerrainSquare(int n) +TSubModel *TModel3d::TerrainSquare(int n) { // pobieranie wskaźnika do submodelu (n) int i = 0; TSubModel *r = Root;