[Scummvm-git-logs] scummvm master -> e32006cc3be10557a6486f2a4d2b54f9c4d5bb55

aquadran noreply at scummvm.org
Thu Oct 17 12:49:09 UTC 2024


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:
e32006cc3b WINTERMUTE: Synced with original code for convert3DTo2D()


Commit: e32006cc3be10557a6486f2a4d2b54f9c4d5bb55
    https://github.com/scummvm/scummvm/commit/e32006cc3be10557a6486f2a4d2b54f9c4d5bb55
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-17T14:49:03+02:00

Commit Message:
WINTERMUTE: Synced with original code for convert3DTo2D()

Changed paths:
    engines/wintermute/ad/ad_object_3d.cpp


diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index febc4470e65..3146201ef5a 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -127,8 +127,23 @@ bool AdObject3D::update() {
 
 //////////////////////////////////////////////////////////////////////////
 bool AdObject3D::convert3DTo2D(Math::Matrix4 *worldMat, int32 *posX, int32 *posY) {
-	Math::Vector3d origin(0.0f, 0.0f, 0.0f);
-	_gameRef->_renderer3D->project(*worldMat, origin, *posX, *posY);
+	DXMatrix viewMat, projMat, world;
+	DXVector3 vec2d(0.0f, 0.0f, 0.0f);
+	DXVector3 origin(0.0f, 0.0f, 0.0f);
+	Math::Matrix4 view, proj;
+	_gameRef->_renderer3D->getViewTransform(view);
+	_gameRef->_renderer3D->getProjectionTransform(proj);
+	viewMat = DXMatrix(view.getData());
+	projMat = DXMatrix(proj.getData());
+	world = DXMatrix(worldMat->getData());
+	DXMatrixTranspose(&world, &world);
+
+	Rect32 viewport = _gameRef->_renderer3D->getViewPort();
+
+	DXVec3Project(&vec2d, &origin, &viewport, &projMat, &viewMat, &world);
+
+	*posX = vec2d._x + _gameRef->_offsetX - _gameRef->_renderer3D->_drawOffsetX;
+	*posY = vec2d._y + _gameRef->_offsetY - _gameRef->_renderer3D->_drawOffsetY;
 
 	return true;
 }




More information about the Scummvm-git-logs mailing list