[Scummvm-git-logs] scummvm master -> 9c4907479abd5bc82d353dca0da2805620dac7af

mgerhardy martin.gerhardy at gmail.com
Mon Aug 16 15:15:58 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
9c4907479a TWINE: merged projection methods


Commit: 9c4907479abd5bc82d353dca0da2805620dac7af
    https://github.com/scummvm/scummvm/commit/9c4907479abd5bc82d353dca0da2805620dac7af
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-08-16T17:15:42+02:00

Commit Message:
TWINE: merged projection methods

Changed paths:
    engines/twine/holomap.cpp
    engines/twine/renderer/renderer.cpp
    engines/twine/renderer/renderer.h


diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index dbe349ffaa..b50a638a4d 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -188,7 +188,7 @@ void Holomap::prepareHolomapPolygons() {
 				_holomapSort[holomapSortArrayIdx].projectedPosIdx = _projectedSurfaceIndex;
 				++holomapSortArrayIdx;
 			}
-			const IVec3 &projPos = _engine->_renderer->projectHolomapPositionOnScreen(destPos);
+			const IVec3 &projPos = _engine->_renderer->projectPositionOnScreen(destPos);
 			_projectedSurfacePositions[_projectedSurfaceIndex].x1 = projPos.x;
 			_projectedSurfacePositions[_projectedSurfaceIndex].y1 = projPos.y;
 			rotation += ANGLE_11_25;
@@ -196,7 +196,7 @@ void Holomap::prepareHolomapPolygons() {
 		}
 		IVec3* vec = &_holomapSurface[holomapSurfaceArrayIdx++];
 		const IVec3 &destPos = _engine->_renderer->getBaseRotationPosition(vec->x, vec->y, vec->z);
-		const IVec3 &projPos = _engine->_renderer->projectHolomapPositionOnScreen(destPos);
+		const IVec3 &projPos = _engine->_renderer->projectPositionOnScreen(destPos);
 		_projectedSurfacePositions[_projectedSurfaceIndex].x1 = projPos.x;
 		_projectedSurfacePositions[_projectedSurfaceIndex].y1 = projPos.y;
 		rotation += ANGLE_11_25;
diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index 2662f1d7ed..ad228e999e 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -65,30 +65,6 @@ void Renderer::init(int32 w, int32 h) {
 	_holomap_polytab_1_3_ptr = _holomap_polytab_1_3;
 }
 
-IVec3 Renderer::projectHolomapPositionOnScreen(const IVec3 &pos) {
-	int32 x = pos.x;
-	int32 y = pos.y;
-	int32 z = pos.z;
-	if (_isUsingOrthoProjection) {
-		_projPos.x = ((x - z) * 24) / BRICK_SIZE + _orthoProjPos.x;
-		_projPos.y = (x + z) * 12 + y * -30 + _orthoProjPos.y;
-		return _projPos;
-	}
-	const int32 cz = _baseRotPos.z - z;
-	if (cz < 0) {
-		_projPos.x = 0;
-		_projPos.y = 0;
-		return _projPos;
-	}
-	int32 posZ = cz + _cameraDepthOffset;
-	if (posZ <= 0 || 0x7FFF < posZ) {
-		posZ = 0x7FFF;
-	}
-	_projPos.y = _orthoProjPos.y - (_cameraScaleZ * y) / posZ;
-	_projPos.x = ((_cameraScaleY * x) / posZ) + _orthoProjPos.x;
-	return _projPos;
-}
-
 IVec3 &Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) {
 	if (_isUsingOrthoProjection) {
 		_projPos.x = ((cX - cZ) * 24) / BRICK_SIZE + _orthoProjPos.x;
@@ -97,19 +73,19 @@ IVec3 &Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) {
 		return _projPos;
 	}
 
-	cX -= _baseRotPos.x;
-	cY -= _baseRotPos.y;
-	cZ -= _baseRotPos.z;
-
-	if (cZ < 0) {
+	if (_baseRotPos.z - cZ < 0) {
 		_projPos.x = 0;
 		_projPos.y = 0;
 		_projPos.z = 0;
 		return _projPos;
 	}
 
+	cX -= _baseRotPos.x;
+	cY -= _baseRotPos.y;
+	cZ = _baseRotPos.z - cZ;
+
 	int32 posZ = cZ + _cameraDepthOffset;
-	if (posZ < 0) {
+	if (posZ <= 0) {
 		posZ = 0x7FFF;
 	}
 
diff --git a/engines/twine/renderer/renderer.h b/engines/twine/renderer/renderer.h
index 5e9b61d51e..dbaf8544a3 100644
--- a/engines/twine/renderer/renderer.h
+++ b/engines/twine/renderer/renderer.h
@@ -232,7 +232,6 @@ public:
 
 	IVec3 &projectPositionOnScreen(int32 cX, int32 cY, int32 cZ);
 
-	IVec3 projectHolomapPositionOnScreen(const IVec3& pos);
 	void setCameraPosition(int32 x, int32 y, int32 depthOffset, int32 scaleY, int32 scaleZ);
 	void setCameraAngle(int32 transPosX, int32 transPosY, int32 transPosZ, int32 rotPosX, int32 rotPosY, int32 rotPosZ, int32 param6);
 	IVec3 updateCameraAnglePositions(int zShift = 0);




More information about the Scummvm-git-logs mailing list