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

mduggan noreply at scummvm.org
Fri Mar 3 22:49:09 UTC 2023


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e8e4277c89 TETRAEDGE: Fix which objects receive shadows in Syberia 2
d62bc71330 TETRAEDGE: Fix some y position updates in Syberia 2
a589c11f50 TETRAEDGE: Fix direction of character heads in Syberia 2
bbddfaca81 TETRAEDGE: Fix invertNormals code for Syberia 2


Commit: e8e4277c89c0c34391a47aefca71d8a2a92d3d3f
    https://github.com/scummvm/scummvm/commit/e8e4277c89c0c34391a47aefca71d8a2a92d3d3f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-04T07:48:41+09:00

Commit Message:
TETRAEDGE: Fix which objects receive shadows in Syberia 2

Changed paths:
    engines/tetraedge/game/characters_shadow_opengl.cpp
    engines/tetraedge/game/characters_shadow_tinygl.cpp
    engines/tetraedge/game/in_game_scene.cpp
    engines/tetraedge/game/in_game_scene.h


diff --git a/engines/tetraedge/game/characters_shadow_opengl.cpp b/engines/tetraedge/game/characters_shadow_opengl.cpp
index d472b654634..33bcb1f2bb7 100644
--- a/engines/tetraedge/game/characters_shadow_opengl.cpp
+++ b/engines/tetraedge/game/characters_shadow_opengl.cpp
@@ -131,7 +131,10 @@ void CharactersShadowOpenGL::draw(InGameScene *scene) {
 	glEnable(GL_BLEND);
 	renderer->setCurrentColor(scene->shadowColor());
 
-	for (TeIntrusivePtr<TeModel> model : scene->zoneModels()) {
+	Common::Array<TeIntrusivePtr<TeModel>> &models =
+			(g_engine->gameType() == TetraedgeEngine::kSyberia ?
+					scene->zoneModels() : scene->shadowReceivingObjects());
+	for (TeIntrusivePtr<TeModel> model : models) {
 		if (model->meshes().size() > 0 && model->meshes()[0]->materials().empty()) {
 			model->meshes()[0]->defaultMaterial(TeIntrusivePtr<Te3DTexture>());
 			model->meshes()[0]->materials()[0]._isShadowTexture = true;
diff --git a/engines/tetraedge/game/characters_shadow_tinygl.cpp b/engines/tetraedge/game/characters_shadow_tinygl.cpp
index 5b3a1c5b29d..6d62fdd4fa4 100644
--- a/engines/tetraedge/game/characters_shadow_tinygl.cpp
+++ b/engines/tetraedge/game/characters_shadow_tinygl.cpp
@@ -120,7 +120,10 @@ void CharactersShadowTinyGL::draw(InGameScene *scene) {
 	tglEnable(TGL_BLEND);
 	renderer->setCurrentColor(scene->shadowColor());
 
-	for (TeIntrusivePtr<TeModel> model : scene->zoneModels()) {
+	Common::Array<TeIntrusivePtr<TeModel>> &models =
+			(g_engine->gameType() == TetraedgeEngine::kSyberia ?
+					scene->zoneModels() : scene->shadowReceivingObjects());
+	for (TeIntrusivePtr<TeModel> model : models) {
 		if (model->meshes().size() > 0 && model->meshes()[0]->materials().empty()) {
 			model->meshes()[0]->defaultMaterial(TeIntrusivePtr<Te3DTexture>());
 			model->meshes()[0]->materials()[0]._isShadowTexture = true;
diff --git a/engines/tetraedge/game/in_game_scene.cpp b/engines/tetraedge/game/in_game_scene.cpp
index 79ec072f5fd..931098da4ed 100644
--- a/engines/tetraedge/game/in_game_scene.cpp
+++ b/engines/tetraedge/game/in_game_scene.cpp
@@ -1297,6 +1297,8 @@ bool InGameScene::loadShadowReceivingObject(const Common::String &name, const Co
 		mesh->setIndex(i, file.readUint16LE());
 	}
 
+	file.close();
+
 	_shadowReceivingObjects.push_back(model);
 	return true;
 }
diff --git a/engines/tetraedge/game/in_game_scene.h b/engines/tetraedge/game/in_game_scene.h
index a13f11c1916..1498d9c56ac 100644
--- a/engines/tetraedge/game/in_game_scene.h
+++ b/engines/tetraedge/game/in_game_scene.h
@@ -264,6 +264,7 @@ public:
 	TeIntrusivePtr<TeBezierCurve> curve() { return _curve; }
 	void setCurve(TeIntrusivePtr<TeBezierCurve> &c) { _curve = c; }
 	Common::Array<TeIntrusivePtr<TeModel>> &zoneModels() { return _zoneModels; }
+	Common::Array<TeIntrusivePtr<TeModel>> &shadowReceivingObjects() { return _shadowReceivingObjects; }
 	Common::Array<TeRectBlocker> &rectBlockers() { return _rectBlockers; }
 	Common::Array<TeBlocker> &blockers() { return _blockers; }
 	Common::Array<Object3D *> object3Ds() { return _object3Ds; }


Commit: d62bc713300db899d44ca1e8ef837ff76ce5fd17
    https://github.com/scummvm/scummvm/commit/d62bc713300db899d44ca1e8ef837ff76ce5fd17
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-04T07:48:41+09:00

Commit Message:
TETRAEDGE: Fix some y position updates in Syberia 2

Changed paths:
    engines/tetraedge/game/character.cpp


diff --git a/engines/tetraedge/game/character.cpp b/engines/tetraedge/game/character.cpp
index 7b317a4b741..2dd9a212d92 100644
--- a/engines/tetraedge/game/character.cpp
+++ b/engines/tetraedge/game/character.cpp
@@ -610,13 +610,13 @@ bool Character::onModelAnimationFinished() {
 	Game *game = g_engine->getGame();
 	bool isWalkAnim = false;
 	if (game->scene()._character == this) {
-		// TODO: check if this logic matches..
 		for (const auto &walkSettings : _characterSettings._walkSettings) {
-			isWalkAnim |= (walkSettings._key.contains("Walk") || walkSettings._key.contains("Jog"));
-			isWalkAnim |= (walkSettings._value._walkParts[0]._file == animfile
-						|| walkSettings._value._walkParts[1]._file == animfile
-						|| walkSettings._value._walkParts[2]._file == animfile
-						|| walkSettings._value._walkParts[3]._file == animfile);
+			if (walkSettings._key.contains("Walk") || walkSettings._key.contains("Jog")) {
+				isWalkAnim |= (walkSettings._value._walkParts[0]._file.contains(animfile)
+							 || walkSettings._value._walkParts[1]._file.contains(animfile)
+							 || walkSettings._value._walkParts[2]._file.contains(animfile)
+							 || walkSettings._value._walkParts[3]._file.contains(animfile));
+			}
 		}
 		isWalkAnim |= animfile.contains(_characterSettings._idleAnimFileName);
 	} else {


Commit: a589c11f500a3a8c8f24031f20cf6fda733c53ce
    https://github.com/scummvm/scummvm/commit/a589c11f500a3a8c8f24031f20cf6fda733c53ce
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-04T07:48:41+09:00

Commit Message:
TETRAEDGE: Fix direction of character heads in Syberia 2

Changed paths:
    engines/tetraedge/game/in_game_scene.cpp


diff --git a/engines/tetraedge/game/in_game_scene.cpp b/engines/tetraedge/game/in_game_scene.cpp
index 931098da4ed..9b69000e778 100644
--- a/engines/tetraedge/game/in_game_scene.cpp
+++ b/engines/tetraedge/game/in_game_scene.cpp
@@ -1672,6 +1672,8 @@ void InGameScene::update() {
 		}
 		if (_character->charLookingAt()) {
 			TeVector3f32 targetpos = _character->charLookingAt()->_model->position();
+			if (g_engine->gameType() == TetraedgeEngine::kSyberia2)
+				targetpos = targetpos * _character->lastHeadBoneTrans();
 			if (_character->lookingAtTallThing())
 				targetpos.y() += 17;
 			TeVector2f32 headRot(getHeadHorizontalRotation(_character, targetpos),
@@ -1688,8 +1690,12 @@ void InGameScene::update() {
 	for (Character *c : _characters) {
 		if (c->charLookingAt()) {
 			TeVector3f32 targetpos = c->charLookingAt()->_model->position();
-			if (c->lookingAtTallThing())
-				targetpos.y() += 17;
+			if (g_engine->gameType() == TetraedgeEngine::kSyberia) {
+				if (c->lookingAtTallThing())
+					targetpos.y() += 17;
+			} else {
+				targetpos = targetpos * c->lastHeadBoneTrans();
+			}
 			TeVector2f32 headRot(getHeadHorizontalRotation(c, targetpos),
 					getHeadVerticalRotation(c, targetpos));
 			float hangle = headRot.getX() * 180.0f / M_PI;


Commit: bbddfaca8159ae1da365ec5e38c6f9b4539a5137
    https://github.com/scummvm/scummvm/commit/bbddfaca8159ae1da365ec5e38c6f9b4539a5137
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-04T07:48:41+09:00

Commit Message:
TETRAEDGE: Fix invertNormals code for Syberia 2

Changed paths:
    engines/tetraedge/te/te_model.cpp


diff --git a/engines/tetraedge/te/te_model.cpp b/engines/tetraedge/te/te_model.cpp
index 22e46373fda..c5508697cf3 100644
--- a/engines/tetraedge/te/te_model.cpp
+++ b/engines/tetraedge/te/te_model.cpp
@@ -138,13 +138,13 @@ TeTRS TeModel::getBone(TeIntrusivePtr<TeModelAnimation> anim, uint num) {
 }
 
 void TeModel::invertNormals() {
-	for (auto &mesh : meshes()) {
-		for (uint i = 0; i < mesh->numIndexes() / 3; i++) {
+	for (auto &mesh : _meshes) {
+		for (uint i = 0; i < mesh->numIndexes() / 3; i += 3) {
 			// Swap order of verticies in each triangle.
-			uint idx0 = mesh->index(i);
-			uint idx2 = mesh->index(i + 2);
-			mesh->setIndex(i, idx2);
-			mesh->setIndex(i + 2, idx0);
+			uint idx0 = mesh->index(i * 3);
+			uint idx2 = mesh->index(i * 3 + 2);
+			mesh->setIndex(i * 3, idx2);
+			mesh->setIndex(i * 3 + 2, idx0);
 		}
 		for (uint i = 0; i < mesh->numVerticies(); i++) {
 			mesh->setNormal(i, -mesh->normal(i));




More information about the Scummvm-git-logs mailing list