[Scummvm-git-logs] scummvm master -> a0262ed13b2f27bbb243f1bde63cf944b3b2f199
mgerhardy
noreply at scummvm.org
Mon Nov 29 15:12:26 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
097e5ac448 TWINE: debug command to disable scene rendering
7488c05c11 TWINE: use IVec3
a0262ed13b TWINE: Rendering artifacts if 3d model is clipped
Commit: 097e5ac4482f9678ccf75a2717f2c66f0ea6676f
https://github.com/scummvm/scummvm/commit/097e5ac4482f9678ccf75a2717f2c66f0ea6676f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-29T01:59:08+01:00
Commit Message:
TWINE: debug command to disable scene rendering
Changed paths:
engines/twine/debugger/console.cpp
engines/twine/debugger/console.h
engines/twine/debugger/debug_grid.h
engines/twine/scene/grid.cpp
diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index dbe078a7b8..dfe303946b 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -56,6 +56,7 @@ TwinEConsole::TwinEConsole(TwinEEngine *engine) : _engine(engine), GUI::Debugger
registerCmd("toggle_clips", WRAP_METHOD(TwinEConsole, doToggleClipRendering));
registerCmd("toggle_freecamera", WRAP_METHOD(TwinEConsole, doToggleFreeCamera));
registerCmd("toggle_scenechanges", WRAP_METHOD(TwinEConsole, doToggleSceneChanges));
+ registerCmd("toggle_scenerendering", WRAP_METHOD(TwinEConsole, doToggleSceneRendering));
registerCmd("scene_actor", WRAP_METHOD(TwinEConsole, doSkipSceneActorsBut));
registerCmd("hero_pos", WRAP_METHOD(TwinEConsole, doSetHeroPosition));
registerCmd("set_life", WRAP_METHOD(TwinEConsole, doSetLife));
@@ -156,6 +157,11 @@ bool TwinEConsole::doToggleSceneChanges(int argc, const char **argv) {
return true;
}
+bool TwinEConsole::doToggleSceneRendering(int argc, const char **argv) {
+ TOGGLE_DEBUG(_engine->_debugGrid->_disableGridRendering, "scene rendering\n")
+ return true;
+}
+
bool TwinEConsole::doSetInventoryFlag(int argc, const char **argv) {
if (argc <= 1) {
debugPrintf("Expected to get a inventory flag index as first parameter\n");
diff --git a/engines/twine/debugger/console.h b/engines/twine/debugger/console.h
index 2ea8092961..57e0330265 100644
--- a/engines/twine/debugger/console.h
+++ b/engines/twine/debugger/console.h
@@ -58,6 +58,7 @@ private:
bool doToggleScenePatches(int argc, const char **argv);
bool doToggleFreeCamera(int argc, const char **argv);
bool doToggleSceneChanges(int argc, const char **argv);
+ bool doToggleSceneRendering(int argc, const char **argv);
bool doSkipSceneActorsBut(int argc, const char **argv);
bool doSetGameFlag(int argc, const char **argv);
bool doSetInventoryFlag(int argc, const char **argv);
diff --git a/engines/twine/debugger/debug_grid.h b/engines/twine/debugger/debug_grid.h
index b530dd269a..7e3f63646b 100644
--- a/engines/twine/debugger/debug_grid.h
+++ b/engines/twine/debugger/debug_grid.h
@@ -38,6 +38,7 @@ public:
bool _useFreeCamera = false;
bool _canChangeScenes = false;
+ bool _disableGridRendering = false;
/** Change scenario camera positions */
void changeGridCamera();
diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 4c3234d1e3..1be6b1abe0 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -67,6 +67,9 @@ void Grid::init(int32 w, int32 h) {
}
void Grid::copyGridMask(int32 index, int32 x, int32 y, const Graphics::ManagedSurface &buffer) {
+ if (_engine->_debugGrid->_disableGridRendering) {
+ return;
+ }
uint8 *ptr = _brickMaskTable[index];
int32 left = x + *(ptr + 2);
@@ -495,6 +498,9 @@ bool Grid::drawSprite(int32 posX, int32 posY, const SpriteData &ptr, int spriteI
// WARNING: Rewrite this function to have better performance
bool Grid::drawBrickSprite(int32 index, int32 posX, int32 posY, const uint8 *ptr, bool isSprite) {
+ if (_engine->_debugGrid->_disableGridRendering) {
+ return false;
+ }
if (!_engine->_interface->_clip.isValidRect()) {
return false;
}
Commit: 7488c05c11e75573ff8c0b1c790e51dc55231a2e
https://github.com/scummvm/scummvm/commit/7488c05c11e75573ff8c0b1c790e51dc55231a2e
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-29T02:04:43+01:00
Commit Message:
TWINE: use IVec3
Changed paths:
engines/twine/scene/gamestate.cpp
diff --git a/engines/twine/scene/gamestate.cpp b/engines/twine/scene/gamestate.cpp
index 1a6f00c41e..f185f97432 100644
--- a/engines/twine/scene/gamestate.cpp
+++ b/engines/twine/scene/gamestate.cpp
@@ -316,16 +316,15 @@ void GameState::processFoundItem(InventoryItems item) {
_engine->saveFrontBuffer();
- const int32 itemCameraX = _engine->_grid->_newCamera.x * BRICK_SIZE;
- const int32 itemCameraY = _engine->_grid->_newCamera.y * BRICK_HEIGHT;
- const int32 itemCameraZ = _engine->_grid->_newCamera.z * BRICK_SIZE;
+ IVec3 itemCamera;
+ itemCamera.x = _engine->_grid->_newCamera.x * BRICK_SIZE;
+ itemCamera.y = _engine->_grid->_newCamera.y * BRICK_HEIGHT;
+ itemCamera.z = _engine->_grid->_newCamera.z * BRICK_SIZE;
BodyData &bodyData = _engine->_resources->_bodyData[_engine->_scene->_sceneHero->_entity];
- const int32 bodyX = _engine->_scene->_sceneHero->_pos.x - itemCameraX;
- const int32 bodyY = _engine->_scene->_sceneHero->_pos.y - itemCameraY;
- const int32 bodyZ = _engine->_scene->_sceneHero->_pos.z - itemCameraZ;
+ const IVec3 bodyPos = _engine->_scene->_sceneHero->_pos - itemCamera;
Common::Rect modelRect;
- _engine->_renderer->renderIsoModel(bodyX, bodyY, bodyZ, ANGLE_0, ANGLE_45, ANGLE_0, bodyData, modelRect);
+ _engine->_renderer->renderIsoModel(bodyPos, ANGLE_0, ANGLE_45, ANGLE_0, bodyData, modelRect);
_engine->_interface->setClip(modelRect);
const int32 itemX = (_engine->_scene->_sceneHero->_pos.x + BRICK_HEIGHT) / BRICK_SIZE;
@@ -337,7 +336,7 @@ void GameState::processFoundItem(InventoryItems item) {
_engine->_grid->drawOverModelActor(itemX, itemY, itemZ);
- IVec3 &projPos = _engine->_renderer->projectPositionOnScreen(bodyX, bodyY, bodyZ);
+ IVec3 &projPos = _engine->_renderer->projectPositionOnScreen(bodyPos);
projPos.y -= 150;
const int32 boxTopLeftX = projPos.x - 65;
@@ -397,7 +396,7 @@ void GameState::processFoundItem(InventoryItems item) {
}
}
- _engine->_renderer->renderIsoModel(bodyX, bodyY, bodyZ, ANGLE_0, ANGLE_45, ANGLE_0, bodyData, modelRect);
+ _engine->_renderer->renderIsoModel(bodyPos, ANGLE_0, ANGLE_45, ANGLE_0, bodyData, modelRect);
_engine->_interface->setClip(modelRect);
_engine->_grid->drawOverModelActor(itemX, itemY, itemZ);
_engine->_redraw->addRedrawArea(modelRect);
Commit: a0262ed13b2f27bbb243f1bde63cf944b3b2f199
https://github.com/scummvm/scummvm/commit/a0262ed13b2f27bbb243f1bde63cf944b3b2f199
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-29T16:11:36+01:00
Commit Message:
TWINE: Rendering artifacts if 3d model is clipped
https://bugs.scummvm.org/ticket/12020
Changed paths:
engines/twine/renderer/renderer.cpp
diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index bd4cbf2b5d..7389f1aea4 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -1054,7 +1054,7 @@ bool Renderer::prepareCircle(int32 x, int32 y, int32 radius) {
int16 ctop = clip.top;
int16 cbottom = clip.bottom;
- if (left <= cright && bottom >= cleft && right <= cbottom && top >= ctop) {
+ if (left <= cright && right >= cleft && bottom <= cbottom && top >= ctop) {
if (left < cleft) {
left = cleft;
}
More information about the Scummvm-git-logs
mailing list