[Scummvm-git-logs] scummvm master -> 61f9a69add7fa80a54b94358410666922a678a97
aquadran
noreply at scummvm.org
Sun Oct 27 16:09:25 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:
61f9a69add WINTERMUTE: Small sync with original code
Commit: 61f9a69add7fa80a54b94358410666922a678a97
https://github.com/scummvm/scummvm/commit/61f9a69add7fa80a54b94358410666922a678a97
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2024-10-27T17:09:20+01:00
Commit Message:
WINTERMUTE: Small sync with original code
Changed paths:
engines/wintermute/ad/ad_game.cpp
engines/wintermute/ad/ad_game.h
engines/wintermute/ad/ad_object_3d.cpp
engines/wintermute/ad/ad_path3d.h
engines/wintermute/ad/ad_scene.cpp
engines/wintermute/ad/ad_scene_geometry.cpp
engines/wintermute/base/gfx/3dcamera.cpp
engines/wintermute/base/gfx/3dcamera.h
engines/wintermute/base/gfx/3dlight.cpp
engines/wintermute/base/gfx/3dmesh.h
engines/wintermute/base/gfx/xmodel.cpp
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index 790cfe0d976..5ec70c45d24 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -2529,15 +2529,17 @@ bool AdGame::getLayerSize(int *layerWidth, int *layerHeight, Rect32 *viewport, b
// WME pre-1.7 expects the camera to only view the top-left part of the scene
*layerWidth = _gameRef->_renderer->getWidth();
*layerHeight = _gameRef->_renderer->getHeight();
- if (_gameRef->_editorResolutionWidth > 0)
- *layerWidth = _gameRef->_editorResolutionWidth;
- if (_gameRef->_editorResolutionHeight > 0)
- *layerHeight = _gameRef->_editorResolutionHeight;
} else
#endif
{
*layerWidth = _scene->_mainLayer->_width;
*layerHeight = _scene->_mainLayer->_height;
+#ifdef ENABLE_WME3D
+ if (_gameRef->_editorResolutionWidth > 0)
+ *layerWidth = _gameRef->_editorResolutionWidth;
+ if (_gameRef->_editorResolutionHeight > 0)
+ *layerHeight = _gameRef->_editorResolutionHeight;
+#endif
}
return true;
} else
diff --git a/engines/wintermute/ad/ad_game.h b/engines/wintermute/ad/ad_game.h
index 65d186e640e..42a367c8a69 100644
--- a/engines/wintermute/ad/ad_game.h
+++ b/engines/wintermute/ad/ad_game.h
@@ -56,7 +56,17 @@ public:
bool displayDebugInfo() override;
+ virtual bool getLayerSize(int *layerWidth, int *layerHeight, Rect32 *viewport, bool *customViewport) override;
+
+#ifdef ENABLE_WME3D
+ uint32 getAmbientLightColor() override;
+
+ bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end) override;
+
virtual bool renderShadowGeometry() override;
+ TShadowType getMaxShadowType(BaseObject *object) override;
+#endif
+
bool addSpeechDir(const char *dir);
bool removeSpeechDir(const char *dir);
@@ -98,15 +108,6 @@ public:
TTalkSkipButton _talkSkipButton;
TVideoSkipButton _videoSkipButton;
- virtual bool getLayerSize(int *layerWidth, int *layerHeight, Rect32 *viewport, bool *customViewport) override;
-#ifdef ENABLE_WME3D
- uint32 getAmbientLightColor() override;
-
- TShadowType getMaxShadowType(BaseObject *object) override;
-
- bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end) override;
-#endif
-
bool getVersion(byte *verMajor, byte *verMinor, byte *extMajor, byte *extMinor) const override;
bool scheduleChangeScene(const char *filename, bool fadeIn);
void setPrevSceneName(const char *name);
@@ -120,7 +121,6 @@ public:
bool showCursor() override;
TGameStateEx _stateEx;
-
bool displaySentences(bool frozen);
void addSentence(AdSentence *sentence);
bool changeScene(const char *filename, bool fadeIn);
diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index eb4ae83637d..05ca4ca89ba 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -96,6 +96,7 @@ bool AdObject3D::addIgnoredLight(char *lightName) {
bool AdObject3D::removeIgnoredLight(char *lightName) {
for (uint32 i = 0; i < _ignoredLights.size(); i++) {
if (scumm_stricmp(_ignoredLights[i], lightName) == 0) {
+ delete[] _ignoredLights[i];
_ignoredLights.remove_at(i);
return true;
}
diff --git a/engines/wintermute/ad/ad_path3d.h b/engines/wintermute/ad/ad_path3d.h
index 61fb4f22fab..3b98a9a0008 100644
--- a/engines/wintermute/ad/ad_path3d.h
+++ b/engines/wintermute/ad/ad_path3d.h
@@ -38,6 +38,7 @@ namespace Wintermute {
class AdPath3D : public BaseClass {
public:
+ DECLARE_PERSISTENT(AdPath3D, BaseClass)
DXVector3 *getCurrent();
DXVector3 *getNext();
DXVector3 *getFirst();
@@ -50,8 +51,6 @@ public:
bool _ready;
BaseArray<DXVector3 *> _points;
int32 _currIndex;
-
- DECLARE_PERSISTENT(AdPath3D, BaseClass)
};
} // namespace Wintermute
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 6617bf3ff43..a57d035031c 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -217,6 +217,7 @@ void AdScene::cleanup() {
_gameRef->unregisterObject(_objects[i]);
}
_objects.clear();
+
#ifdef ENABLE_WME3D
delete _geom;
_geom = nullptr;
@@ -1267,6 +1268,7 @@ bool AdScene::traverseNodes(bool doUpdate) {
}
}
break;
+
default:
error("AdScene::TraverseNodes - Unhandled enum");
break;
@@ -2017,8 +2019,7 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
const char *nodeName = stack->pop()->getString();
if (_geom) {
- bool ret = _geom->isNodeEnabled(nodeName);
- stack->pushBool(ret);
+ stack->pushBool(_geom->isNodeEnabled(nodeName));
} else {
stack->pushBool(false);
}
@@ -2073,8 +2074,7 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
const char *lightName = stack->pop()->getString();
if (_geom) {
- bool res = _geom->isLightEnabled(lightName);
- stack->pushBool(res);
+ stack->pushBool(_geom->isLightEnabled(lightName));
} else {
stack->pushBool(false);
}
@@ -3667,6 +3667,7 @@ bool AdScene::getSceneObjects(BaseArray<AdObject *> &objects, bool interactiveOn
//if (regionObj.size() > 0) Objects.Append(RegionObj);
}
break;
+
default:
debugC(kWintermuteDebugGeneral, "AdScene::GetSceneObjects - Unhandled enum");
break;
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 1a2e9f159de..39fa3760641 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -217,7 +217,7 @@ bool AdSceneGeometry::loadFile(const char *filename) {
return false;
} else {
plane->_mesh->computeNormals();
- plane->_mesh->fillVertexBuffer(0xD00000FF); // original 0x700000FF
+ plane->_mesh->fillVertexBuffer(0x700000FF);
plane->_receiveShadows = extNode->_receiveShadows;
_planes.add(plane);
}
@@ -236,7 +236,7 @@ bool AdSceneGeometry::loadFile(const char *filename) {
return false;
} else {
block->_mesh->computeNormals();
- block->_mesh->fillVertexBuffer(0xD0FF0000); // original 0x70FF0000
+ block->_mesh->fillVertexBuffer(0x70FF0000);
block->_receiveShadows = extNode->_receiveShadows;
_blocks.add(block);
}
@@ -272,7 +272,7 @@ bool AdSceneGeometry::loadFile(const char *filename) {
return false;
} else {
generic->_mesh->computeNormals();
- generic->_mesh->fillVertexBuffer(0xD000FF00); // original 0x7000FF00
+ generic->_mesh->fillVertexBuffer(0x7000FF00);
generic->_receiveShadows = extNode->_receiveShadows;
_generics.add(generic);
}
@@ -987,7 +987,7 @@ bool AdSceneGeometry::enableLights(DXVector3 point, BaseArray<char *> &ignoreLig
if (_lights[i]->_isAvailable) {
if (_lights[i]->_active) {
_gameRef->_renderer3D->lightEnable(i, _lights[i]->_active);
- ++numActiveLights;
+ numActiveLights++;
}
}
}
diff --git a/engines/wintermute/base/gfx/3dcamera.cpp b/engines/wintermute/base/gfx/3dcamera.cpp
index 3e6540333f2..35ab9deccf3 100644
--- a/engines/wintermute/base/gfx/3dcamera.cpp
+++ b/engines/wintermute/base/gfx/3dcamera.cpp
@@ -41,7 +41,7 @@ namespace Wintermute {
//////////////////////////////////////////////////////////////////////////
Camera3D::Camera3D(BaseGame *inGame) : BaseNamedObject(inGame) {
- _pos = DXVector3(0.0f, 0.0f, 0.0f);
+ _position = DXVector3(0.0f, 0.0f, 0.0f);
_target = DXVector3(0.0f, 0.0f, 0.0f);
_bank = 0.0f;
_fov = _origFov = degToRad(45.0f);
@@ -62,14 +62,14 @@ bool Camera3D::getViewMatrix(DXMatrix *viewMatrix) {
DXVec3TransformCoord(&up, &up, &rot);
}
- DXMatrixLookAtLH(viewMatrix, &_pos, &_target, &up);
+ DXMatrixLookAtLH(viewMatrix, &_position, &_target, &up);
return true;
}
//////////////////////////////////////////////////////////////////////////
void Camera3D::setupPos(DXVector3 pos, DXVector3 target, float bank) {
- _pos = pos;
+ _position = pos;
_target = target;
_bank = bank;
}
@@ -79,23 +79,23 @@ void Camera3D::rotateView(float x, float y, float z) {
DXVector3 vVector; // Vector for the position/view.
// Get our view vector (The direciton we are facing)
- vVector = _target - _pos; // This gets the direction of the view
+ vVector = _target - _position; // This gets the direction of the view
// Rotate the view along the desired axis
if (x) {
// Rotate the view vector up or down, then add it to our position
- _target._z = (float)(_pos._z + sin(x) * vVector._y + cos(x) * vVector._z);
- _target._y = (float)(_pos._y + cos(x) * vVector._y - sin(x) * vVector._z);
+ _target._z = (float)(_position._z + sin(x) * vVector._y + cos(x) * vVector._z);
+ _target._y = (float)(_position._y + cos(x) * vVector._y - sin(x) * vVector._z);
}
if (y) {
// Rotate the view vector right or left, then add it to our position
- _target._z = (float)(_pos._z + sin(y) * vVector._x + cos(y) * vVector._z);
- _target._x = (float)(_pos._x + cos(y) * vVector._x - sin(y) * vVector._z);
+ _target._z = (float)(_position._z + sin(y) * vVector._x + cos(y) * vVector._z);
+ _target._x = (float)(_position._x + cos(y) * vVector._x - sin(y) * vVector._z);
}
if (z) {
// Rotate the view vector diagnally right or diagnally down, then add it to our position
- _target._x = (float)(_pos._x + sin(z) * vVector._y + cos(z) * vVector._x);
- _target._y = (float)(_pos._y + cos(z) * vVector._y - sin(z) * vVector._x);
+ _target._x = (float)(_position._x + sin(z) * vVector._y + cos(z) * vVector._x);
+ _target._y = (float)(_position._y + cos(z) * vVector._y - sin(z) * vVector._x);
}
}
@@ -104,10 +104,10 @@ void Camera3D::move(float speed) {
DXVector3 vector; // Init a vector for our view
// Get our view vector (The direciton we are facing)
- vector = _target - _pos; // This gets the direction of the view
+ vector = _target - _position; // This gets the direction of the view
- _pos._x += vector._x * speed; // Add our acceleration to our position's X
- _pos._z += vector._z * speed; // Add our acceleration to our position's Z
+ _position._x += vector._x * speed; // Add our acceleration to our position's X
+ _position._z += vector._z * speed; // Add our acceleration to our position's Z
_target._x += vector._x * speed; // Add our acceleration to our view's X
_target._z += vector._z * speed; // Add our acceleration to our view's Z
}
diff --git a/engines/wintermute/base/gfx/3dcamera.h b/engines/wintermute/base/gfx/3dcamera.h
index ccc11e2e906..142d02f98d1 100644
--- a/engines/wintermute/base/gfx/3dcamera.h
+++ b/engines/wintermute/base/gfx/3dcamera.h
@@ -44,7 +44,7 @@ public:
Camera3D(BaseGame *inGame);
virtual ~Camera3D();
- DXVector3 _pos;
+ DXVector3 _position;
DXVector3 _target;
float _bank;
float _fov;
diff --git a/engines/wintermute/base/gfx/3dlight.cpp b/engines/wintermute/base/gfx/3dlight.cpp
index 7dbb5dd23aa..c0f395e4770 100644
--- a/engines/wintermute/base/gfx/3dlight.cpp
+++ b/engines/wintermute/base/gfx/3dlight.cpp
@@ -81,8 +81,8 @@ bool Light3D::getViewMatrix(DXMatrix *viewMatrix) {
//////////////////////////////////////////////////////////////////////////
bool Light3D::persist(BasePersistenceManager *persistMgr) {
- persistMgr->transferBool("_active", &_active);
- persistMgr->transferUint32("_diffuseColor", &_diffuseColor);
+ persistMgr->transferBool(TMEMBER(_active));
+ persistMgr->transferUint32(TMEMBER(_diffuseColor));
return true;
}
diff --git a/engines/wintermute/base/gfx/3dmesh.h b/engines/wintermute/base/gfx/3dmesh.h
index e9810d3903a..3e3dc1eff31 100644
--- a/engines/wintermute/base/gfx/3dmesh.h
+++ b/engines/wintermute/base/gfx/3dmesh.h
@@ -60,8 +60,8 @@ public:
void cleanup();
Mesh3DS(BaseGame *inGame);
virtual ~Mesh3DS();
- bool fillVertexBuffer(uint32 color);
virtual void fillVertexBuffer() = 0;
+ bool fillVertexBuffer(uint32 color);
virtual void render() = 0;
Face3D *_faces;
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 151ff0449d3..29acad2c3de 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -232,6 +232,7 @@ bool XModel::mergeFromFile(const Common::String &filename) {
bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
bool res = true;
+ // create the animation set object
AnimationSet *animSet = new AnimationSet(_gameRef, this);
res = loadName(animSet, xobj);
if (!res) {
@@ -746,8 +747,8 @@ bool XModel::parseAnim(byte *buffer) {
//////////////////////////////////////////////////////////////////////////
bool XModel::parseEvent(AnimationSet *anim, byte *buffer) {
TOKEN_TABLE_START(commands)
- TOKEN_TABLE(NAME)
- TOKEN_TABLE(FRAME)
+ TOKEN_TABLE(NAME)
+ TOKEN_TABLE(FRAME)
TOKEN_TABLE_END
byte *params;
More information about the Scummvm-git-logs
mailing list