[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