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

aquadran noreply at scummvm.org
Sun Dec 26 17:46:06 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:
9ae57ad4c1 GRIM: EMI: Use new math vector and matrix multiplication


Commit: 9ae57ad4c131083d3c7277366fa1bc9a898aacbd
    https://github.com/scummvm/scummvm/commit/9ae57ad4c131083d3c7277366fa1bc9a898aacbd
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2021-12-26T18:45:59+01:00

Commit Message:
GRIM: EMI: Use new math vector and matrix multiplication

Changed paths:
    engines/grim/emi/costume/emihead.cpp
    engines/grim/emi/emi.cpp
    engines/grim/emi/modelemi.cpp
    engines/grim/emi/sound/track.cpp


diff --git a/engines/grim/emi/costume/emihead.cpp b/engines/grim/emi/costume/emihead.cpp
index 4d12f225a2..2275493d8d 100644
--- a/engines/grim/emi/costume/emihead.cpp
+++ b/engines/grim/emi/costume/emihead.cpp
@@ -69,8 +69,8 @@ void EMIHead::lookAt(bool entering, const Math::Vector3d &point, float rate, con
 		Math::Vector3d modelFront(0, 0, 1);
 		Math::Vector3d modelUp(0, 1, 0);
 
-		joint->_absMatrix.inverseRotate(&modelFront);
-		joint->_absMatrix.inverseRotate(&modelUp);
+		modelFront = modelFront * joint->_absMatrix.getRotation();
+		modelUp = modelUp * joint->_absMatrix.getRotation();
 
 		// Generate a world-space look at matrix.
 		Math::Matrix4 lookAtTM;
diff --git a/engines/grim/emi/emi.cpp b/engines/grim/emi/emi.cpp
index 897f1e4ca4..25dabf2951 100644
--- a/engines/grim/emi/emi.cpp
+++ b/engines/grim/emi/emi.cpp
@@ -315,8 +315,8 @@ bool EMIEngine::compareActor(const Actor *x, const Actor *y) {
 
 		Math::Vector3d xp(x->getWorldPos() - setup->_pos);
 		Math::Vector3d yp(y->getWorldPos() - setup->_pos);
-		camRot.inverseRotate(&xp);
-		camRot.inverseRotate(&yp);
+		xp = xp * camRot.getRotation();
+		yp = yp * camRot.getRotation();
 
 		if (fabs(xp.z() - yp.z()) < 0.001f) {
 			return x->getId() < y->getId();
diff --git a/engines/grim/emi/modelemi.cpp b/engines/grim/emi/modelemi.cpp
index 116a3cda26..4ba64b46a4 100644
--- a/engines/grim/emi/modelemi.cpp
+++ b/engines/grim/emi/modelemi.cpp
@@ -249,12 +249,12 @@ void EMIModel::prepareForRender() {
 
 		Math::Vector3d vert = _vertices[boneVert];
 		vert -= bindPose.getPosition();
-		bindPose.inverseRotate(&vert);
+		vert = vert * bindPose.getRotation();
 		jointMatrix.transform(&vert, true);
 		_drawVertices[boneVert] += vert * _boneInfos[i]._weight;
 
 		Math::Vector3d normal = _normals[boneVert];
-		bindPose.inverseRotate(&normal);
+		normal = normal * bindPose.getRotation();
 		jointMatrix.transform(&normal, false);
 		_drawNormals[boneVert] += normal * _boneInfos[i]._weight;
 	}
diff --git a/engines/grim/emi/sound/track.cpp b/engines/grim/emi/sound/track.cpp
index 1b798405e3..90b848b8ce 100644
--- a/engines/grim/emi/sound/track.cpp
+++ b/engines/grim/emi/sound/track.cpp
@@ -94,7 +94,7 @@ void SoundTrack::updatePosition() {
 	Math::Matrix4 worldRot = setup->_rot;
 	Math::Vector3d relPos = (_pos - setup->_pos);
 	Math::Vector3d p(relPos);
-	worldRot.inverseRotate(&p);
+	p = p * worldRot.getRotation();
 	float angle = atan2(p.x(), p.z());
 	float pan = sin(angle);
 	_balance = (int)(pan * 127.0f);




More information about the Scummvm-git-logs mailing list