37 #include "math/sphere.h" 46 #include <unordered_map> 63 class COldModelManager;
74 struct ModelShadowSpot;
199 std::vector<VertexTex2> vertices;
200 unsigned int staticBufferId;
201 bool updateStaticBuffer;
210 , updateStaticBuffer(
false)
224 std::vector<EngineBaseObjDataTier> next;
227 const std::string& tex2Name =
"")
244 int totalTriangles = 0;
252 std::vector<EngineBaseObjTexTier>
next;
254 inline void LoadDefault()
269 int baseObjRank = -1;
271 bool visible =
false;
273 bool drawWorld =
false;
275 bool drawFront =
false;
281 float distance = 0.0f;
285 float transparency = 0.0f;
329 float intensity = 0.0f;
362 float drawRadius = 0.0f;
405 float intensity = 0.0f;
409 float drawRadius = 0.0f;
411 float drawIntensity = 0.0f;
417 char* table =
nullptr;
431 ENG_TEX_MAPPING_X = 1,
432 ENG_TEX_MAPPING_Y = 2,
433 ENG_TEX_MAPPING_Z = 3,
434 ENG_TEX_MAPPING_1X = 4,
435 ENG_TEX_MAPPING_1Y = 5,
436 ENG_TEX_MAPPING_1Z = 6
512 , iconShadow(iconShadow)
626 void SetDevice(
CDevice* device);
659 void ResetAfterVideoConfigChanged();
667 bool ProcessEvent(
const Event& event);
674 void WriteScreenShot(
const std::string& fileName);
678 void SetPause(
bool pause);
684 void SetShowStats(
bool show);
690 void SetRenderEnable(
bool enable);
692 void SetRenderInterface(
bool enable);
693 bool GetRenderInterface();
697 void SetScreenshotMode(
bool screenshotMode);
698 bool GetScreenshotMode();
720 void AddStatisticTriangle(
int count);
722 int GetStatisticTriangle();
728 void SetTimerDisplay(
const std::string& text);
744 void DeleteStaticMesh(
int meshHandle);
750 const Math::Matrix& GetStaticMeshWorldMatrix(
int meshHandle);
753 void SetStaticMeshTransparency(
int meshHandle,
float value);
761 int CreateBaseObject();
763 void DeleteBaseObject(
int baseObjRank);
765 void DeleteAllBaseObjects();
768 void CopyBaseObject(
int sourceBaseObjRank,
int destBaseObjRank);
771 void AddBaseObjTriangles(
int baseObjRank,
const std::vector<Gfx::ModelTriangle>& triangles);
781 void DebugObject(
int objRank);
786 void DeleteAllObjects();
788 void DeleteObject(
int objRank);
791 void SetObjectBaseRank(
int objRank,
int baseObjRank);
793 int GetObjectBaseRank(
int objRank);
803 void SetObjectTransform(
int objRank,
const Math::Matrix& transform);
805 void GetObjectTransform(
int objRank,
Math::Matrix& transform);
809 void SetObjectDrawWorld(
int objRank,
bool draw);
811 void SetObjectDrawFront(
int objRank,
bool draw);
814 void SetObjectTransparency(
int objRank,
float value);
820 int GetObjectTotalTriangles(
int objRank);
824 int state, std::string tex1Name, std::string tex2Name);
827 int GetPartialTriangles(
int objRank,
float percent,
int maxCount,
828 std::vector<EngineTriangle>& triangles);
831 void ChangeSecondTexture(
int objRank,
const std::string& tex2Name);
834 void ChangeTextureMapping(
int objRank,
const Material& mat,
int state,
835 const std::string& tex1Name,
const std::string& tex2Name,
837 float au,
float bu,
float av,
float bv);
840 void TrackTextureMapping(
int objRank,
const Material& mat,
int state,
841 const std::string& tex1Name,
const std::string& tex2Name,
843 float pos,
float factor,
float tl,
float ts,
float tt);
850 void CreateShadowSpot(
int objRank);
852 void DeleteShadowSpot(
int objRank);
855 void SetObjectShadowSpotHide(
int objRank,
bool hide);
858 void SetObjectShadowSpotPos(
int objRank,
const Math::Vector& pos);
859 void SetObjectShadowSpotAngle(
int objRank,
float angle);
860 void SetObjectShadowSpotRadius(
int objRank,
float radius);
861 void SetObjectShadowSpotIntensity(
int objRank,
float intensity);
862 void SetObjectShadowSpotHeight(
int objRank,
float height);
863 void UpdateObjectShadowSpotNormal(
int objRank);
867 void SetHighlightRank(
int* rankList);
872 void DeleteAllGroundSpots();
874 int CreateGroundSpot();
876 void DeleteGroundSpot(
int rank);
879 void SetObjectGroundSpotPos(
int rank,
const Math::Vector& pos);
881 void SetObjectGroundSpotRadius(
int rank,
float radius);
882 void SetObjectGroundSpotColor(
int rank,
const Color& color);
883 void SetObjectGroundSpotMinMax(
int rank,
float min,
float max);
884 void SetObjectGroundSpotSmooth(
int rank,
float smooth);
889 float delay1,
float delay2,
float delay3,
890 int dx,
int dy,
char* table);
892 void DeleteGroundMark(
int rank);
901 void SetState(
int state,
const Color& color =
Color(1.0f, 1.0f, 1.0f, 1.0f));
904 void SetMaterial(
const Material& mat);
911 Texture LoadTexture(
const std::string& name);
917 bool LoadAllTextures();
921 bool ChangeTextureColor(
const std::string& texName,
922 const std::string& srcName,
925 float tolerance1,
float tolerance2,
928 float shift = 0.0f,
bool hsv =
false);
929 bool ChangeTextureColor(
const std::string& texName,
932 float tolerance1,
float tolerance2,
935 float shift = 0.0f,
bool hsv =
false);
940 bool SetTexture(
const std::string& name,
int stage = 0);
942 void SetTexture(
const Texture& tex,
int stage = 0);
945 void DeleteTexture(
const std::string& texName);
947 void DeleteTexture(
const Texture& tex);
950 void CreateOrUpdateTexture(
const std::string& texName,
CImage* img);
953 void FlushTextureCache();
956 void SetTerrainVision(
float vision);
963 void SetFocus(
float focus);
970 void SetDirty(
bool mode);
977 void SetFog(
bool mode);
982 void SetSecondTexture(
const std::string& texNum);
984 const std::string& GetSecondTexture();
988 void SetRankView(
int rank);
994 void SetDrawWorld(
bool draw);
997 void SetDrawFront(
bool draw);
1000 void SetAmbientColor(
const Color& color,
int rank = 0);
1002 Color GetAmbientColor(
int rank = 0);
1006 void SetWaterAddColor(
const Color& color);
1008 Color GetWaterAddColor();
1012 void SetFogColor(
const Color& color,
int rank = 0);
1014 Color GetFogColor(
int rank = 0);
1021 void SetDeepView(
float length,
int rank = 0,
bool ref=
false);
1022 float GetDeepView(
int rank = 0);
1030 void SetFogStart(
float start,
int rank = 0);
1031 float GetFogStart(
int rank = 0);
1038 bool full =
false,
bool scale =
false);
1039 void GetBackground(std::string& name,
Color& up,
Color& down,
1041 bool& full,
bool& scale);
1045 void SetForegroundName(
const std::string& name);
1047 void SetOverFront(
bool front);
1054 void SetParticleDensity(
float value);
1055 float GetParticleDensity();
1059 float ParticleAdapt(
float factor);
1064 void SetClippingDistance(
float value);
1065 float GetClippingDistance();
1071 void SetTextureFilterMode(
TexFilter value);
1078 void SetTextureMipmapLevel(
int value);
1079 int GetTextureMipmapLevel();
1085 void SetTextureAnisotropyLevel(
int value);
1086 int GetTextureAnisotropyLevel();
1092 bool IsShadowMappingSupported();
1093 void SetShadowMapping(
bool value);
1094 bool GetShadowMapping();
1095 void SetShadowMappingOffscreen(
bool value);
1096 bool GetShadowMappingOffscreen();
1097 void SetShadowMappingOffscreenResolution(
int resolution);
1098 int GetShadowMappingOffscreenResolution();
1099 bool IsShadowMappingQualitySupported();
1100 void SetShadowMappingQuality(
bool value);
1101 bool GetShadowMappingQuality();
1102 void SetTerrainShadows(
bool value);
1103 bool GetTerrainShadows();
1109 void SetShadowColor(
float value);
1110 float GetShadowColor();
1116 void SetShadowRange(
float value);
1117 float GetShadowRange();
1123 void SetMultiSample(
int value);
1124 int GetMultiSample();
1128 void SetBackForce(
bool present);
1130 bool GetBackForce();
1136 void SetLightMode(
bool present);
1137 bool GetLightMode();
1144 void SetEditIndentMode(
bool autoIndent);
1145 bool GetEditIndentMode();
1152 void SetEditIndentValue(
int value);
1153 int GetEditIndentValue();
1157 void SetTracePrecision(
float factor);
1159 float GetTracePrecision();
1182 void UpdateMatProj();
1187 void ClearDisplayCrashSpheres();
1188 void AddDisplayCrashSpheres(
const std::vector<Math::Sphere>& crashSpheres);
1194 void RenderShadowMap();
1196 void UseShadowMapping(
bool enable);
1198 void UseMSAA(
bool enable);
1202 void DrawInterface();
1205 void UpdateGroundSpotTextures();
1208 void DrawShadowSpots();
1210 void DrawBackground();
1212 void DrawBackgroundGradient(
const Color& up,
const Color& down);
1214 void DrawBackgroundImage();
1218 void DrawForegroundImage();
1220 void DrawOverColor();
1222 void DrawHighlight();
1231 void DrawCrashSpheres();
1237 const Material& material,
int state);
1243 bool IsVisible(
int objRank);
1259 void ComputeDistance();
1262 void UpdateGeometry();
1268 void UpdateStaticBuffers();
1270 void AddBaseObjTriangles(
int baseObjRank,
const std::vector<VertexTex2>& vertices,
1271 const Material& material,
int state,
1272 std::string tex1Name, std::string tex2Name);
1278 std::unique_ptr<CImage> img;
1279 std::string fileName;
1281 static void WriteScreenShotThread(std::unique_ptr<WriteScreenShotData> data);
1284 void ReloadAllTextures();
1292 std::unique_ptr<COldModelManager> m_modelManager;
1293 std::unique_ptr<CText> m_text;
1294 std::unique_ptr<CLightManager> m_lightMan;
1295 std::unique_ptr<CParticle> m_particle;
1296 std::unique_ptr<CWater> m_water;
1297 std::unique_ptr<CCloud> m_cloud;
1298 std::unique_ptr<CLightning> m_lightning;
1299 std::unique_ptr<CPlanet> m_planet;
1300 std::unique_ptr<CPyroManager> m_pyroManager;
1364 Color m_ambientColor[2];
1365 Color m_backColor[2];
1366 Color m_fogColor[2];
1367 float m_deepView[2];
1368 float m_fogStart[2];
1369 Color m_waterAddColor;
1370 int m_statisticTriangle;
1372 bool m_updateGeometry;
1373 bool m_updateStaticBuffers;
1374 bool m_firstGroundSpot;
1375 std::string m_secondTex;
1376 bool m_backgroundFull;
1377 bool m_backgroundScale;
1378 std::string m_backgroundName;
1380 Color m_backgroundColorUp;
1381 Color m_backgroundColorDown;
1382 Color m_backgroundCloudUp;
1383 Color m_backgroundCloudDown;
1387 std::string m_foregroundName;
1391 float m_terrainVision;
1393 float m_tracePrecision;
1397 float m_particleDensity;
1398 float m_clippingDistance;
1400 bool m_editIndentMode;
1401 int m_editIndentValue;
1406 int m_highlightRank[100];
1465 std::string m_lastTexture[2];
1473 bool m_debugDumpLights;
1474 bool m_debugCrashSpheres =
false;
1476 std::string m_timerText;
1478 std::unordered_map<std::string, int> m_staticMeshBaseObjects;
1480 std::vector<Math::Sphere> m_displayCrashSpheres;
1483 bool m_pause =
false;
bool m_highlight
Highlight visible?
Definition: engine.h:1408
std::string tex1Name
1st texture
Definition: engine.h:163
Edit (I-beam)
Definition: engine.h:451
Normal shadow.
Definition: engine.h:301
Resize horizontally.
Definition: engine.h:463
CSingleton base class for singletons.
Math::Matrix m_matProj
Projection matrix for 3D scene.
Definition: engine.h:1321
Light texture (ambient max)
Definition: engine.h:100
Small cross.
Definition: engine.h:455
Fixed.
Definition: engine.h:381
Busy.
Definition: engine.h:449
Math::Matrix m_matProjInterface
Projection matrix for 2D interface.
Definition: engine.h:1339
Terrain.
Definition: engine.h:176
Math::Point hotPoint
Hot point.
Definition: engine.h:502
Math::Vector pos
Position for the shadow.
Definition: engine.h:356
Scroll down.
Definition: engine.h:477
EngineRenderState mode2
Mode to render 2nd image in.
Definition: engine.h:500
int m_multisample
Number of samples for multisample rendering.
Definition: engine.h:1440
Vertex with secondary texture coordinates.
Definition: vertex.h:113
void LoadDefault()
Loads default values.
Definition: engine.h:288
Material m_lastMaterial
Last material.
Definition: engine.h:1467
float m_shadowRange
Shadow range.
Definition: engine.h:1438
std::vector< EngineBaseObjTexTier > next
Next tier (Tex)
Definition: engine.h:252
Object doesn't exist.
Definition: engine.h:174
Tier 2 of base object tree (textures)
Definition: engine.h:218
Texture using alpha channel.
Definition: engine.h:132
Crossed out sign.
Definition: engine.h:459
int m_textureMipmapLevel
Requested texture mipmap level.
Definition: engine.h:1422
Double-sided face.
Definition: engine.h:114
Math::Vector m_lookatPt
Camera target.
Definition: engine.h:1360
TextureCreateParams m_terrainTexParams
Create params for terrain textures.
Definition: engine.h:1420
Math::Vector drawPos
Position of the shadow drawn.
Definition: engine.h:360
float m_highlightTime
Time counter for highlight animation.
Definition: engine.h:1410
EngineObjectType
Class of graphics engine object.
Definition: engine.h:171
bool m_qualityShadows
true enables higher quality shadows
Definition: engine.h:1432
Definition: engine.h:1276
Number of items in enum.
Definition: engine.h:482
Point struct and related functions.
4x4 matrix
Definition: matrix.h:65
Larger crosshair.
Definition: engine.h:479
Math::Vector bboxMin
Bounding box min (origin 0,0,0 always included)
Definition: engine.h:246
Part 4.
Definition: engine.h:112
std::string m_error
Last encountered error.
Definition: engine.h:1303
TextureCreateParams m_defaultTexParams
Default texture create params.
Definition: engine.h:1418
Math::Matrix m_shadowBias
Texture bias for sampling shadow maps.
Definition: engine.h:1334
std::vector< EngineShadow > m_shadowSpots
Shadow list.
Definition: engine.h:1351
Always use 2nd floor texturing.
Definition: engine.h:118
bool m_renderInterface
Render / hide the UI?
Definition: engine.h:1315
Definition: singleton.h:30
Increase.
Definition: engine.h:379
Manager for static models.
Definition: oldmodelmanager.h:54
Fixed object type metal.
Definition: engine.h:186
Texture m_miceTexture
Texture with mouse cursors.
Definition: engine.h:1454
Math::Vector m_eyePt
Location of camera.
Definition: engine.h:1358
Texture struct and related enums.
EngineRenderState
Render state of graphics engine.
Definition: engine.h:85
Math::Point m_mouseSize
Size of mouse cursor.
Definition: engine.h:1456
int icon1
Index of texture element for 1st image.
Definition: engine.h:492
Normal opaque materials.
Definition: engine.h:88
std::set< std::string > m_texBlacklist
Blacklist map of textures.
Definition: engine.h:1449
Scroll to the left.
Definition: engine.h:471
Manager for dynamic lights in 3D scene.
Definition: lightman.h:146
bool m_render
Rendering enabled?
Definition: engine.h:1313
Material of a surface.
Definition: material.h:45
bool m_shadowMapping
true if shadow mapping enabled
Definition: engine.h:1426
Mode for rendering text.
Definition: engine.h:126
Resize vertically.
Definition: engine.h:465
A triangle drawn by the graphics engine.
Definition: engine.h:154
float m_shadowColor
Shadow color.
Definition: engine.h:1436
Fixed object.
Definition: engine.h:178
Color color
Color of the shadow.
Definition: engine.h:348
Math::Vector pos
Position of the shadow.
Definition: engine.h:321
Mesh data saved in model file.
Definition: model_mesh.h:35
Cloud layer renderer.
Definition: cloud.h:54
Lightning effect renderer.
Definition: lightning.h:55
Fixed object type quartz.
Definition: engine.h:184
float m_focus
Camera angle for 3D scene.
Definition: engine.h:1325
Particle engine.
Definition: particle.h:223
Math::Vector drawPos
Draw position for marks.
Definition: engine.h:407
Color m_lastColor
Last color set with render state.
Definition: engine.h:1463
The transparent texture (black = no)
Definition: engine.h:90
Type of shadow drawn by the graphics engine.
A spot (large shadow) drawn on the ground by the graphics engine.
Definition: engine.h:343
The transparent color (white = no)
Definition: engine.h:124
Math::Vector pos
Position for marks.
Definition: engine.h:401
Definition: pyro_manager.h:41
Color structs and related functions.
TODO: ?
Definition: engine.h:303
Decrease.
Definition: engine.h:383
Planet manager.
Definition: planet.h:49
Resize diagonally bottom-left to top-right.
Definition: engine.h:467
Scroll to the right.
Definition: engine.h:473
The transparent color (black = no)
Definition: engine.h:122
Part 2.
Definition: engine.h:108
Only opaque color, no texture, blending, etc.
Definition: engine.h:130
Parameters for texture creation.
Definition: texture.h:155
Material material
Material.
Definition: engine.h:159
std::string tex2Name
2nd texture
Definition: engine.h:165
Hand.
Definition: engine.h:453
Matrix struct and related functions.
int state
Render state.
Definition: engine.h:161
VertexTex2 triangle[3]
Triangle vertices.
Definition: engine.h:157
2D point
Definition: point.h:50
int icon2
Index of texture element for 2nd image.
Definition: engine.h:494
Image loaded from file.
Definition: image.h:54
bool m_offscreenShadowRendering
true enables offscreen shadow rendering
Definition: engine.h:1428
Main application.
Definition: app.h:180
Math::Matrix m_matViewInterface
View matrix for 2D interface.
Definition: engine.h:1341
Shadow drawn by the graphics engine.
Definition: engine.h:310
bool m_terrainShadows
true enables casting shadows by terrain
Definition: engine.h:1434
Math::Vector bboxMax
bounding box max (origin 0,0,0 always included)
Definition: engine.h:248
Null phase.
Definition: engine.h:377
EngineGroundMark m_groundMark
Ground mark.
Definition: engine.h:1355
Math::IntPoint m_size
Current size of viewport window.
Definition: engine.h:1344
Part 3.
Definition: engine.h:110
Terrain loader/generator and manager.
Definition: terrain.h:145
std::vector< EngineObject > m_objects
Object parameters.
Definition: engine.h:1349
Resize diagonally top-left to bottom-right.
Definition: engine.h:469
The transparent diffuse color.
Definition: engine.h:94
EngineMouseType
Type of mouse cursor displayed in-game.
Definition: engine.h:444
Namespace for (new) graphics code.
Definition: app.h:49
EngineRenderState mode1
Mode to render 1st image in.
Definition: engine.h:498
Vector struct and related functions.
The graphics engine.
Definition: engine.h:619
Normal cursor (arrow)
Definition: engine.h:447
Math::Matrix m_shadowViewMat
View matrix for rendering shadow maps.
Definition: engine.h:1330
Double white texturing.
Definition: engine.h:104
Object drawn by the graphics engine.
Definition: engine.h:264
Math::Matrix m_shadowTextureMat
Texture matrix for rendering shadow maps.
Definition: engine.h:1332
EngineMouseType m_mouseType
Type of mouse cursor.
Definition: engine.h:1458
EngineTriangleType
Type of triangles drawn for engine objects.
Definition: engine.h:142
Info about a texture.
Definition: texture.h:256
bool m_screenshotMode
Screenshot mode?
Definition: engine.h:1318
Math::Vector normal
Normal to the terrain.
Definition: engine.h:323
Math::Matrix m_shadowProjMat
Projection matrix for rendering shadow maps.
Definition: engine.h:1328
Math::Matrix m_matWorldInterface
World matrix for 2D interface.
Definition: engine.h:1337
int m_lastState
Last engine render state (-1 at the beginning of frame)
Definition: engine.h:1461
Information about mouse cursor.
Definition: engine.h:489
A single triangle in mesh as saved in model file.
Definition: model_triangle.h:60
Math::Matrix transform
Transformation matrix.
Definition: engine.h:279
bool m_interfaceMode
True when drawing 2D UI.
Definition: engine.h:1470
Moving object.
Definition: engine.h:180
Image using alpha channel.
Definition: engine.h:116
Water manager/renderer.
Definition: water.h:72
Only opaque texture, no blending, etc.
Definition: engine.h:128
TexFilter
General texture filtering mode.
Definition: texture.h:62
std::map< std::string, Texture > m_texNameMap
Map of loaded textures (by name)
Definition: engine.h:1443
Resize.
Definition: engine.h:461
EngineTextureMapping
Type of texture mapping.
Definition: engine.h:429
Text rendering engine.
Definition: text.h:233
3D (3x1) vector
Definition: vector.h:53
int iconShadow
Shadow texture part.
Definition: engine.h:496
Tier 3 of object tree (data)
Definition: engine.h:194
Math::Matrix m_matView
View matrix for 3D scene.
Definition: engine.h:1323
Platform-specific utils.
Definition: system.h:91
std::vector< EngineGroundSpot > m_groundSpots
Ground spot list.
Definition: engine.h:1353
Definition: system_linux.h:31
Part of a moving object.
Definition: engine.h:182
Surfaces.
Definition: engine.h:147
A mark on ground drawn by the graphics engine.
Definition: engine.h:390
2D Point with integer coords
Definition: intpoint.h:39
Color with transparency.
Definition: engine.h:134
std::map< Texture, std::string > m_revTexNameMap
Reverse map of loaded textures (by texture)
Definition: engine.h:1445
RGBA color.
Definition: color.h:39
Triangles.
Definition: engine.h:145
bool m_showStats
Whether to show stats (FPS, etc)
Definition: engine.h:1311
std::vector< EngineBaseObject > m_baseObjects
Base objects (also level 1 tier list)
Definition: engine.h:1347
Scroll up.
Definition: engine.h:475
Shadow spot data as saved in model file.
Definition: model_shadow_spot.h:29
Event sent by system, interface or game.
Definition: event.h:699
int m_textureAnisotropy
Requested texture anisotropy level.
Definition: engine.h:1424
Texture borders with solid color.
Definition: engine.h:98
The transparent texture (white = no)
Definition: engine.h:92
TODO: ?
Definition: engine.h:457
EngineGroundMarkPhase
Phase of life of an EngineGroundMark.
Definition: engine.h:374
Sound plugin interface.
Definition: sound.h:60
Causes the fog.
Definition: engine.h:120
Part 1 (no change in. MOD!)
Definition: engine.h:106
Abstract interface of graphics device.
Definition: device.h:323
Double black texturing.
Definition: engine.h:102
Texture wrap.
Definition: engine.h:96
int m_offscreenShadowRenderingResolution
Offscreen shadow rendering resolution.
Definition: engine.h:1430