aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/debugger.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2019-01-24 22:56:10 +0100
committerPeter Kohaut2019-01-24 22:59:49 +0100
commit2fd29c5193a0b9e6d3920f0512ce3ca37b00bf7e (patch)
tree77563b1fab1720e4ea892d2202ca4dd7416c260b /engines/bladerunner/debugger.cpp
parent5475bca1e1996977a45c598d61e186f10c407155 (diff)
downloadscummvm-rg350-2fd29c5193a0b9e6d3920f0512ce3ca37b00bf7e.tar.gz
scummvm-rg350-2fd29c5193a0b9e6d3920f0512ce3ca37b00bf7e.tar.bz2
scummvm-rg350-2fd29c5193a0b9e6d3920f0512ce3ca37b00bf7e.zip
BLADERUNNER: Fixed fog rendering
Fogs were not animated. Clean up of the fog calculation routines.
Diffstat (limited to 'engines/bladerunner/debugger.cpp')
-rw-r--r--engines/bladerunner/debugger.cpp81
1 files changed, 55 insertions, 26 deletions
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index b65088c711..996873bb1c 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -61,15 +61,16 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
_isDebuggerOverlay = false;
- _viewSceneObjects = false;
_viewActorsOnly = false;
_viewLights = false;
_viewFogs = false;
+ _viewSceneObjects = false;
+ _viewScreenEffects = false;
+ _viewObstacles = false;
_viewRegions = false;
+ _viewUI = false;
_viewWaypoints = false;
_viewWalkboxes = false;
- _viewObstacles = false;
- _viewUI = false;
_viewZBuffer = false;
registerCmd("anim", WRAP_METHOD(Debugger, cmdAnimation));
@@ -122,53 +123,72 @@ bool Debugger::cmdAnimation(int argc, const char **argv) {
bool Debugger::cmdDraw(int argc, const char **argv) {
if (argc != 2) {
- debugPrintf("Enables debug rendering of scene objects, obstacles, ui elements, zbuffer or disables debug rendering.\n");
- debugPrintf("Usage: %s (obj | reg | lit | fog | way | walk | act | obstacles | ui | zbuf | reset)\n", argv[0]);
+ debugPrintf("Enables debug rendering of actors, screen effect, fogs, lights, scene objects, obstacles, regsions, ui elements, walk boxes, waypoints, zbuffer or disables debug rendering.\n");
+ debugPrintf("Usage: %s (act | eff | fog | lit | obj | obstacles | reg | ui | walk | way | zbuf | reset)\n", argv[0]);
return true;
}
Common::String arg = argv[1];
- if (arg == "obj") {
+ if (arg == "act") {
_viewSceneObjects = !_viewSceneObjects;
- debugPrintf("Drawing scene objects = %i\n", _viewSceneObjects);
- } else if (arg == "reg") {
- _viewRegions = !_viewRegions;
- debugPrintf("Drawing regions = %i\n", _viewRegions);
- } else if (arg == "lit") {
- _viewLights = !_viewLights;
- debugPrintf("Drawing lights = %i\n", _viewLights);
+ _viewActorsOnly = _viewSceneObjects;
+ debugPrintf("Drawing actors = %i\n", _viewSceneObjects);
+ } else if (arg == "eff") {
+ _viewScreenEffects = !_viewScreenEffects;
+ debugPrintf("Drawing screen effects = %i\n", _viewScreenEffects);
} else if (arg == "fog") {
_viewFogs = !_viewFogs;
debugPrintf("Drawing fogs = %i\n", _viewFogs);
- } else if (arg == "way") {
- _viewWaypoints = !_viewWaypoints;
- debugPrintf("Drawing waypoints = %i\n", _viewWaypoints);
- } else if (arg == "walk") {
- _viewWalkboxes = !_viewWalkboxes;
- debugPrintf("Drawing walk boxes = %i\n", _viewWalkboxes);
- } else if (arg == "actors") {
+ } else if (arg == "lit") {
+ _viewLights = !_viewLights;
+ debugPrintf("Drawing lights = %i\n", _viewLights);
+ } else if (arg == "reg") {
+ _viewRegions = !_viewRegions;
+ debugPrintf("Drawing regions = %i\n", _viewRegions);
+ }else if (arg == "obj") {
_viewSceneObjects = !_viewSceneObjects;
- _viewActorsOnly = _viewSceneObjects;
- debugPrintf("Drawing scene actors = %i\n", _viewSceneObjects);
+ debugPrintf("Drawing scene objects = %i\n", _viewSceneObjects);
} else if (arg == "obstacles") {
_viewObstacles = !_viewObstacles;
debugPrintf("Drawing obstacles = %i\n", _viewObstacles);
} else if (arg == "ui") {
_viewUI = !_viewUI;
debugPrintf("Drawing UI elements = %i\n", _viewUI);
+ } else if (arg == "way") {
+ _viewWaypoints = !_viewWaypoints;
+ debugPrintf("Drawing waypoints = %i\n", _viewWaypoints);
+ } else if (arg == "walk") {
+ _viewWalkboxes = !_viewWalkboxes;
+ debugPrintf("Drawing walk boxes = %i\n", _viewWalkboxes);
} else if (arg == "zbuf") {
_viewZBuffer = !_viewZBuffer;
debugPrintf("Drawing Z buffer = %i\n", _viewZBuffer);
} else if (arg == "reset") {
+ _viewActorsOnly = false;
+ _viewScreenEffects = false;
+ _viewFogs = false;
+ _viewLights = false;
+ _viewObstacles = false;
+ _viewRegions = false;
_viewSceneObjects = false;
_viewUI = false;
+ _viewWaypoints = false;
+ _viewWalkboxes = false;
_viewZBuffer = false;
+
+ debugPrintf("Drawing screen effects = %i\n", _viewScreenEffects);
+ debugPrintf("Drawing fogs = %i\n", _viewFogs);
+ debugPrintf("Drawing lights = %i\n", _viewLights);
+ debugPrintf("Drawing obstacles = %i\n", _viewObstacles);
+ debugPrintf("Drawing regions = %i\n", _viewRegions);
debugPrintf("Drawing scene objects = %i\n", _viewSceneObjects);
debugPrintf("Drawing UI elements = %i\n", _viewUI);
+ debugPrintf("Drawing waypoints = %i\n", _viewWaypoints);
+ debugPrintf("Drawing walkboxes = %i\n", _viewWalkboxes);
debugPrintf("Drawing Z buffer = %i\n", _viewZBuffer);
}
- _isDebuggerOverlay = _viewSceneObjects | _viewRegions | _viewLights | _viewFogs | _viewWaypoints | _viewWalkboxes;
+ _isDebuggerOverlay = _viewSceneObjects | _viewScreenEffects | _viewRegions | _viewLights | _viewFogs | _viewWaypoints | _viewWalkboxes;
return true;
}
@@ -650,6 +670,7 @@ bool Debugger::cmdSave(int argc, const char **argv) {
void Debugger::drawDebuggerOverlay() {
if (_viewSceneObjects) drawSceneObjects();
+ if (_viewScreenEffects) drawScreenEffects();
if (_viewLights) drawLights();
if (_viewFogs) drawFogs();
if (_viewRegions) drawRegions();
@@ -760,13 +781,14 @@ void Debugger::drawLights() {
Vector3 posOriginT = _vm->_view->calculateScreenPosition(posOrigin);
Vector3 posTargetT = _vm->_view->calculateScreenPosition(posTarget);
+
_vm->_surfaceFront.drawLine(posOriginT.x, posOriginT.y, posTargetT.x, posTargetT.y, color);
+
_vm->_mainFont->drawColor(light->_name, _vm->_surfaceFront, posOriginT.x, posOriginT.y, color);
}
}
void Debugger::drawFogs() {
- // draw fogs
for (Fog *fog = _vm->_scene->_set->_effects->_fogs; fog != nullptr; fog = fog->_next) {
// Matrix4x3 m = fog->_matrix;
@@ -779,6 +801,10 @@ void Debugger::drawFogs() {
posOrigin.y = posOrigin.z;
posOrigin.z = -t;
+ Vector3 posTarget = m * Vector3(0.0f, 0.0f, -100.0f);
+ t = posTarget.y;
+ posTarget.y = posTarget.z;
+ posTarget.z = -t;
Vector3 size = Vector3(5.0f, 5.0f, 5.0f);
int colorR = (fog->_fogColor.r * 31.0f);
@@ -789,8 +815,11 @@ void Debugger::drawFogs() {
drawBBox(posOrigin - size, posOrigin + size, _vm->_view, &_vm->_surfaceFront, color);
Vector3 posOriginT = _vm->_view->calculateScreenPosition(posOrigin);
- // Vector3 posTargetT = _vm->_view->calculateScreenPosition(posTarget);
- // _vm->_surfaceFront.drawLine(posOriginT.x, posOriginT.y, posTargetT.x, posTargetT.y, color);
+ Vector3 posTargetT = _vm->_view->calculateScreenPosition(posTarget);
+
+ // TODO: draw line only for cone fogs, draw boxes or circles for the other types
+ _vm->_surfaceFront.drawLine(posOriginT.x, posOriginT.y, posTargetT.x, posTargetT.y, color);
+
_vm->_mainFont->drawColor(fog->_name, _vm->_surfaceFront, posOriginT.x, posOriginT.y, color);
}
}