[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