[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