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

aquadran noreply at scummvm.org
Sat Oct 19 10:17:43 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:
a97dc34fcd WINTERMUTE: Synced code with original


Commit: a97dc34fcd01e0be8fe56a197e54bea0957bac6d
    https://github.com/scummvm/scummvm/commit/a97dc34fcd01e0be8fe56a197e54bea0957bac6d
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2024-10-19T12:17:38+02:00

Commit Message:
WINTERMUTE: Synced code with original

Changed paths:
    engines/wintermute/ad/ad_object_3d.cpp
    engines/wintermute/ad/ad_scene_geometry.cpp
    engines/wintermute/base/gfx/3dcamera.cpp
    engines/wintermute/base/gfx/xmodel.cpp
    engines/wintermute/math/math_util.cpp


diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index e86c9c6f2b9..9fd095c6a5c 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -617,16 +617,15 @@ bool AdObject3D::getBonePosition2D(const char *boneName, int32 *x, int32 *y) {
 		return false;
 	}
 
-	DXMatrix bonePosMat, worldMatrix = DXMatrix(_worldMatrix);
-	DXMatrixMultiply(&bonePosMat, boneMat, &worldMatrix);
+	DXMatrix bonePosMat;
+	DXMatrixMultiply(&bonePosMat, boneMat, &_worldMatrix);
 
 	DXVector4 vectBone4;
 	DXVector3 vectBone3(0, 0, 0);
 	DXVec3Transform(&vectBone4, &vectBone3, &bonePosMat);
 	DXVector3 vectBone(vectBone4._x, vectBone4._y, vectBone4._z);
 
-	DXVector3 vectBonePos = DXVector3(vectBone4._x, vectBone4._y, vectBone4._z);
-	adGame->_scene->_sceneGeometry->convert3Dto2D(&vectBonePos, x, y);
+	adGame->_scene->_sceneGeometry->convert3Dto2D(&vectBone, x, y);
 	return true;
 }
 
@@ -641,12 +640,11 @@ bool AdObject3D::getBonePosition3D(const char *boneName, DXVector3 *pos, DXVecto
 		return false;
 	}
 
-	DXMatrix bonePosMat, worldMatrix = DXMatrix(_worldMatrix);
-	DXMatrixMultiply(&bonePosMat, boneMat, &worldMatrix);
+	DXMatrix bonePosMat;
+	DXMatrixMultiply(&bonePosMat, boneMat, &_worldMatrix);
 
 	DXVector4 vectBone4;
-	DXVector3 vectBone3(offset->_x, offset->_x, offset->_y);
-	DXVec3Transform(&vectBone4, &vectBone3, &bonePosMat);
+	DXVec3Transform(&vectBone4, offset, &bonePosMat);
 
 	pos->_x = vectBone4._x;
 	pos->_y = vectBone4._y;
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 3e6b14f4902..f4407d45cef 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -673,8 +673,6 @@ bool AdSceneGeometry::convert2Dto3D(int x, int y, DXVector3 *pos) {
 	vPickRayOrig._y = m.matrix._42;
 	vPickRayOrig._z = m.matrix._43;
 
-	DXVector3 pickRayDir = DXVector3(vPickRayDir);
-	DXVector3 pickRayOrig = DXVector3(vPickRayOrig);
 
 	bool intFound = false;
 	float minDist = FLT_MAX;
@@ -689,7 +687,7 @@ bool AdSceneGeometry::convert2Dto3D(int x, int y, DXVector3 *pos) {
 			DXVector3 v1(vp1[0], vp1[1], vp1[2]);
 			DXVector3 v2(vp2[0], vp2[1], vp2[2]);
 
-			if (intersectTriangle(pickRayOrig, pickRayDir, v0, v1, v2, &intersection._x, &intersection._y, &intersection._z)) {
+			if (intersectTriangle(vPickRayOrig, vPickRayDir, v0, v1, v2, &intersection._x, &intersection._y, &intersection._z)) {
 				ray = intersection - vPickRayOrig;
 				float dist = DXVec3Length(&ray);
 
diff --git a/engines/wintermute/base/gfx/3dcamera.cpp b/engines/wintermute/base/gfx/3dcamera.cpp
index c4d195fdad6..ab01a048755 100644
--- a/engines/wintermute/base/gfx/3dcamera.cpp
+++ b/engines/wintermute/base/gfx/3dcamera.cpp
@@ -62,11 +62,7 @@ bool Camera3D::getViewMatrix(DXMatrix *viewMatrix) {
 		DXVec3TransformCoord(&up, &up, &rot);
 	}
 
-	DXVector3 position = DXVector3(_position);
-	DXVector3 target = DXVector3(_target);
-	DXMatrix view = DXMatrix(*viewMatrix);
-	DXMatrixLookAtRH(&view, &position, &target, &up);
-	*viewMatrix = view;
+	DXMatrixLookAtRH(viewMatrix, &_position, &_target, &up);
 
 	return true;
 }
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 92214590771..fa12db8b382 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -572,8 +572,8 @@ bool XModel::isTransparentAt(int x, int y) {
 	vec._z =  -1.0f;
 
 	// Get the inverse view matrix
-	DXMatrix m, viewMatrix = DXMatrix(_lastViewMat);
-	DXMatrixInverse(&m, nullptr, &viewMatrix);
+	DXMatrix m;
+	DXMatrixInverse(&m, nullptr, &_lastViewMat);
 
 	// Transform the screen space pick ray into 3D space
 	pickRayDir._x  = vec._x * m.matrix._11 + vec._y * m.matrix._21 + vec._z * m.matrix._31;
@@ -585,8 +585,7 @@ bool XModel::isTransparentAt(int x, int y) {
 
 	// transform to model space
 	DXVector3 end = pickRayOrig + pickRayDir;
-	DXMatrix worldMatrix = DXMatrix(_lastWorldMat);
-	DXMatrixInverse(&m, nullptr, &worldMatrix);
+	DXMatrixInverse(&m, nullptr, &_lastWorldMat);
 	DXMatrixTranspose(&m, &m);
 	DXVec3TransformCoord(&pickRayOrig, &pickRayOrig, &m);
 	DXVec3TransformCoord(&end, &end, &m);
diff --git a/engines/wintermute/math/math_util.cpp b/engines/wintermute/math/math_util.cpp
index 71db48d6dfd..791578e6930 100644
--- a/engines/wintermute/math/math_util.cpp
+++ b/engines/wintermute/math/math_util.cpp
@@ -54,15 +54,9 @@ float MathUtil::roundUp(float val) {
 
 #ifdef ENABLE_WME3D
 
-bool intersectTriangle(const DXVector3 &origin, const DXVector3 &direction,
-                       DXVector3 &vp0, DXVector3 &vp1, DXVector3 &vp2,
-                       float *t, float *u, float *v) {
-	DXVector3 v0 = DXVector3(vp0._x, vp0._y, vp0._z);
-	DXVector3 v1 = DXVector3(vp1._x, vp1._y, vp1._z);
-	DXVector3 v2 = DXVector3(vp2._x, vp2._y, vp2._z);
-	DXVector3 orig = DXVector3(origin._x, origin._y, origin._z);
-	DXVector3 dir = DXVector3(direction._x, direction._y, direction._z);
-
+bool intersectTriangle(const DXVector3 &orig, const DXVector3 &dir,
+					   DXVector3 &v0, DXVector3 &v1, DXVector3 &v2,
+					   float *t, float *u, float *v) {
 	// Find vectors for two edges sharing vert0
 	DXVector3 edge1 = v1 - v0;
 	DXVector3 edge2 = v2 - v0;
@@ -113,15 +107,9 @@ bool intersectTriangle(const DXVector3 &origin, const DXVector3 &direction,
 	return true;
 }
 
-bool pickGetIntersect(const DXVector3 lineS, const DXVector3 lineE,
-					  const DXVector3 vp0, const DXVector3 vp1, const DXVector3 vp2,
+bool pickGetIntersect(DXVector3 lineStart, DXVector3 lineEnd,
+                      DXVector3 v0, DXVector3 v1, DXVector3 v2,
 					  DXVector3 *intersection, float *distance) {
-	DXVector3 v0 = DXVector3(vp0._x, vp0._y, vp0._z);
-	DXVector3 v1 = DXVector3(vp1._x, vp1._y, vp1._z);
-	DXVector3 v2 = DXVector3(vp2._x, vp2._y, vp2._z);
-	DXVector3 lineStart = DXVector3(lineS._x, lineS._y, lineS._z);
-	DXVector3 lineEnd = DXVector3(lineE._x, lineE._y, lineE._z);
-
 	// compute plane's normal
 	DXVector3 vertex;
 	DXVector3 normal;




More information about the Scummvm-git-logs mailing list