[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