[Scummvm-git-logs] scummvm master -> 17a920936de9c76f7738a145325b8feea40be8af
aquadran
noreply at scummvm.org
Fri Sep 5 16:25:32 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
17a920936d WINTERMUTE: Synced with original code
Commit: 17a920936de9c76f7738a145325b8feea40be8af
https://github.com/scummvm/scummvm/commit/17a920936de9c76f7738a145325b8feea40be8af
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-09-05T18:25:28+02:00
Commit Message:
WINTERMUTE: Synced with original code
Changed paths:
engines/wintermute/base/gfx/base_image.cpp
engines/wintermute/base/gfx/base_image.h
engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
engines/wintermute/base/gfx/opengl/meshx_opengl_shader.h
engines/wintermute/base/gfx/xfile.cpp
engines/wintermute/base/gfx/xfile.h
engines/wintermute/base/gfx/xframe_node.cpp
engines/wintermute/base/gfx/xframe_node.h
engines/wintermute/base/gfx/xmesh.cpp
engines/wintermute/base/gfx/xmesh.h
engines/wintermute/base/gfx/xmodel.cpp
engines/wintermute/base/gfx/xmodel.h
diff --git a/engines/wintermute/base/gfx/base_image.cpp b/engines/wintermute/base/gfx/base_image.cpp
index a0c3cd6fb22..c7c34673028 100644
--- a/engines/wintermute/base/gfx/base_image.cpp
+++ b/engines/wintermute/base/gfx/base_image.cpp
@@ -96,7 +96,7 @@ bool BaseImage::loadFile(const Common::String &filename) {
}
//////////////////////////////////////////////////////////////////////////
-bool BaseImage::saveBMPFile(const Common::String &filename) const {
+bool BaseImage::saveBMPFile(const char *filename) const {
Common::WriteStream *stream = openSfmFileForWrite(filename);
if (stream) {
bool ret = writeBMPToStream(stream);
diff --git a/engines/wintermute/base/gfx/base_image.h b/engines/wintermute/base/gfx/base_image.h
index 119089f3002..b0d0a292154 100644
--- a/engines/wintermute/base/gfx/base_image.h
+++ b/engines/wintermute/base/gfx/base_image.h
@@ -59,7 +59,7 @@ public:
return _paletteCount;
}
bool writeBMPToStream(Common::WriteStream *stream) const;
- bool saveBMPFile(const Common::String &filename) const;
+ bool saveBMPFile(const char *filename) const;
void copyFrom(const Graphics::Surface *surface, int newWidth = 0, int newHeight = 0, byte flip = 0);
private:
Common::String _filename;
diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
index b20b29bca67..94979cd469d 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.cpp
@@ -56,7 +56,7 @@ XMeshOpenGLShader::~XMeshOpenGLShader() {
glDeleteBuffers(1, &_indexBuffer);
}
-bool XMeshOpenGLShader::loadFromXData(const Common::String &filename, XFileData *xobj) {
+bool XMeshOpenGLShader::loadFromXData(const char *filename, XFileData *xobj) {
if (XMesh::loadFromXData(filename, xobj)) {
uint32 *indexData = (uint32 *)_blendedMesh->getIndexBuffer().ptr();
uint32 indexDataSize = _blendedMesh->getIndexBuffer().size() / sizeof(uint32);
diff --git a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.h b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.h
index 5aa5dfc3d30..e89be3cddaf 100644
--- a/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.h
+++ b/engines/wintermute/base/gfx/opengl/meshx_opengl_shader.h
@@ -44,7 +44,7 @@ public:
XMeshOpenGLShader(BaseGame *inGame, OpenGL::Shader *shader, OpenGL::Shader *flatShadowShader);
~XMeshOpenGLShader() override;
- bool loadFromXData(const Common::String &filename, XFileData *xobj) override;
+ bool loadFromXData(const char *filename, XFileData *xobj) override;
bool render(XModel *model) override;
bool renderFlatShadowModel(uint32 shadowColor) override;
bool update(FrameNode *parentFrame) override;
diff --git a/engines/wintermute/base/gfx/xfile.cpp b/engines/wintermute/base/gfx/xfile.cpp
index fc95906fb98..c08136ba5f8 100644
--- a/engines/wintermute/base/gfx/xfile.cpp
+++ b/engines/wintermute/base/gfx/xfile.cpp
@@ -51,7 +51,7 @@ bool XFile::closeFile() {
}
//////////////////////////////////////////////////////////////////////////
-bool XFile::openFile(const Common::String &filename) {
+bool XFile::openFile(const char *filename) {
closeFile();
// load file
@@ -71,13 +71,13 @@ bool XFile::openFile(const Common::String &filename) {
bool res = _xfile->load(buffer, size);
delete[] buffer;
if (!res) {
- BaseEngine::LOG(0, "Error loading X file '%s'", filename.c_str());
+ BaseEngine::LOG(0, "Error loading X file '%s'", filename);
return false;
}
// create enum object
if (!res || !_xfile->createEnumObject(_xenum)) {
- BaseEngine::LOG(res, "Error creating XFile enum object for '%s'", filename.c_str());
+ BaseEngine::LOG(res, "Error creating XFile enum object for '%s'", filename);
closeFile();
return false;
}
diff --git a/engines/wintermute/base/gfx/xfile.h b/engines/wintermute/base/gfx/xfile.h
index 6c349dc797d..453fc2ee07a 100644
--- a/engines/wintermute/base/gfx/xfile.h
+++ b/engines/wintermute/base/gfx/xfile.h
@@ -38,7 +38,7 @@ public:
XFile(BaseGame *inGame);
virtual ~XFile();
- bool openFile(const Common::String &filename);
+ bool openFile(const char *filename);
bool closeFile();
XFileEnumObject getEnum() {
diff --git a/engines/wintermute/base/gfx/xframe_node.cpp b/engines/wintermute/base/gfx/xframe_node.cpp
index b61223e013c..fb2ffdce475 100644
--- a/engines/wintermute/base/gfx/xframe_node.cpp
+++ b/engines/wintermute/base/gfx/xframe_node.cpp
@@ -97,7 +97,7 @@ void FrameNode::setTransformation(int slot, DXVector3 pos, DXVector3 scale, DXQu
}
//////////////////////////////////////////////////////////////////////////
-bool FrameNode::loadFromXData(const Common::String &filename, XModel *model, XFileData *xobj) {
+bool FrameNode::loadFromXData(const char *filename, XModel *model, XFileData *xobj) {
_game->miniUpdate();
bool res = true;
@@ -175,7 +175,7 @@ bool FrameNode::loadFromXData(const Common::String &filename, XModel *model, XFi
return true;
}
-bool FrameNode::mergeFromXData(const Common::String &filename, XModel *model, XFileData *xobj) {
+bool FrameNode::mergeFromXData(const char *filename, XModel *model, XFileData *xobj) {
bool res = true;
// get the type of the object
diff --git a/engines/wintermute/base/gfx/xframe_node.h b/engines/wintermute/base/gfx/xframe_node.h
index d0da55cb4f6..510a55f336b 100644
--- a/engines/wintermute/base/gfx/xframe_node.h
+++ b/engines/wintermute/base/gfx/xframe_node.h
@@ -53,8 +53,8 @@ public:
bool renderFlatShadowModel(uint32 shadowColor);
bool updateShadowVol(ShadowVolume *shadow, DXMatrix *modelMat, DXVector3 *light, float extrusionDepth);
- bool loadFromXData(const Common::String &filename, XModel *model, XFileData *xobj);
- bool mergeFromXData(const Common::String &filename, XModel *model, XFileData *xobj);
+ bool loadFromXData(const char *filename, XModel *model, XFileData *xobj);
+ bool mergeFromXData(const char *filename, XModel *model, XFileData *xobj);
bool findBones(FrameNode *rootFrame);
FrameNode *findFrame(const char *frameName);
DXMatrix *getCombinedMatrix();
diff --git a/engines/wintermute/base/gfx/xmesh.cpp b/engines/wintermute/base/gfx/xmesh.cpp
index 321862690f3..c2e8d40a391 100644
--- a/engines/wintermute/base/gfx/xmesh.cpp
+++ b/engines/wintermute/base/gfx/xmesh.cpp
@@ -67,7 +67,7 @@ XMesh::~XMesh() {
}
//////////////////////////////////////////////////////////////////////////
-bool XMesh::loadFromXData(const Common::String &filename, XFileData *xobj) {
+bool XMesh::loadFromXData(const char *filename, XFileData *xobj) {
// get name
if (!XModel::loadName(this, xobj)) {
BaseEngine::LOG(0, "Error loading mesh name");
diff --git a/engines/wintermute/base/gfx/xmesh.h b/engines/wintermute/base/gfx/xmesh.h
index 8bc455f47fa..73363841762 100644
--- a/engines/wintermute/base/gfx/xmesh.h
+++ b/engines/wintermute/base/gfx/xmesh.h
@@ -51,7 +51,7 @@ public:
XMesh(BaseGame *inGame);
virtual ~XMesh();
- virtual bool loadFromXData(const Common::String &filename, XFileData *xobj);
+ virtual bool loadFromXData(const char *filename, XFileData *xobj);
bool findBones(FrameNode *rootFrame);
virtual bool update(FrameNode *parentFrame);
virtual bool render(XModel *model) = 0;
diff --git a/engines/wintermute/base/gfx/xmodel.cpp b/engines/wintermute/base/gfx/xmodel.cpp
index 602c9c43d89..5a8cbbe5f5f 100644
--- a/engines/wintermute/base/gfx/xmodel.cpp
+++ b/engines/wintermute/base/gfx/xmodel.cpp
@@ -114,7 +114,7 @@ void XModel::cleanup(bool complete) {
}
//////////////////////////////////////////////////////////////////////////
-bool XModel::loadFromFile(const Common::String &filename, XModel *parentModel) {
+bool XModel::loadFromFile(const char *filename, XModel *parentModel) {
cleanup(false);
XFile *xfile = new XFile(_game);
@@ -129,7 +129,7 @@ bool XModel::loadFromFile(const Common::String &filename, XModel *parentModel) {
bool res = xfile->openFile(filename);
if (!res) {
delete xfile;
- BaseEngine::LOG(0, "Error loading X file: %s", filename.c_str());
+ BaseEngine::LOG(0, "Error loading X file: %s", filename);
return false;
}
@@ -145,13 +145,13 @@ bool XModel::loadFromFile(const Common::String &filename, XModel *parentModel) {
res = _rootFrame->loadFromXData(filename, this, &xobj);
if (!res) {
- BaseEngine::LOG(0, "Error loading top level object from '%s'", filename.c_str());
+ BaseEngine::LOG(0, "Error loading top level object from '%s'", filename);
break;
}
}
if (!_rootFrame->hasChildren()) {
- BaseEngine::LOG(0, "Error getting any top level objects in '%s'", filename.c_str());
+ BaseEngine::LOG(0, "Error getting any top level objects in '%s'", filename);
res = false;
}
@@ -164,7 +164,8 @@ bool XModel::loadFromFile(const Common::String &filename, XModel *parentModel) {
_channels[i] = new AnimationChannel(_game, this);
}
- setFilename(filename.c_str());
+ if (_filename != filename)
+ BaseUtils::setString(&_filename, filename);
delete xfile;
@@ -172,7 +173,7 @@ bool XModel::loadFromFile(const Common::String &filename, XModel *parentModel) {
}
//////////////////////////////////////////////////////////////////////////
-bool XModel::mergeFromFile(const Common::String &filename) {
+bool XModel::mergeFromFile(const char *filename) {
if (!_rootFrame) {
BaseEngine::LOG(0, "Error: XModel::mergeFromFile called on an empty model");
return false;
@@ -200,7 +201,7 @@ bool XModel::mergeFromFile(const Common::String &filename) {
res = _rootFrame->mergeFromXData(filename, this, &xobj);
if (!res) {
- BaseEngine::LOG(0, "Error loading top level object from '%s'", filename.c_str());
+ BaseEngine::LOG(0, "Error loading top level object from '%s'", filename);
break;
}
}
@@ -212,14 +213,15 @@ bool XModel::mergeFromFile(const Common::String &filename) {
// remember path for save/load purposes
bool found = false;
for (int32 i = 0; i < _mergedModels.getSize(); ++i) {
- if (scumm_stricmp(_mergedModels[i], filename.c_str()) == 0) {
+ if (scumm_stricmp(_mergedModels[i], filename) == 0) {
found = true;
break;
}
}
if (!found) {
- char *path = new char[filename.size() + 1];
- Common::strcpy_s(path, filename.size() + 1, filename.c_str());
+ size_t filenameSize = strlen(filename) + 1;
+ char *path = new char[filenameSize];
+ Common::strcpy_s(path, filenameSize, filename);
_mergedModels.add(path);
}
@@ -229,7 +231,7 @@ bool XModel::mergeFromFile(const Common::String &filename) {
}
//////////////////////////////////////////////////////////////////////////
-bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
+bool XModel::loadAnimationSet(const char *filename, XFileData *xobj) {
bool res = true;
// create the animation set object
@@ -280,7 +282,7 @@ bool XModel::loadAnimationSet(const Common::String &filename, XFileData *xobj) {
}
//////////////////////////////////////////////////////////////////////////
-bool XModel::loadAnimation(const Common::String &filename, XFileData *xobj, AnimationSet *parentAnimSet) {
+bool XModel::loadAnimation(const char *filename, XFileData *xobj, AnimationSet *parentAnimSet) {
// if no parent anim set is specified, create one
bool newAnimSet = false;
if (parentAnimSet == nullptr) {
diff --git a/engines/wintermute/base/gfx/xmodel.h b/engines/wintermute/base/gfx/xmodel.h
index 76bf4c6bdca..a7fc701aed6 100644
--- a/engines/wintermute/base/gfx/xmodel.h
+++ b/engines/wintermute/base/gfx/xmodel.h
@@ -152,7 +152,7 @@ private:
effectFileName = nullptr;
persistMgr->transferCharPtr(TMEMBER(effectFileName));
- delete[] effectFileName;
+ SAFE_DELETE_ARRAY(effectFileName);
} else {
persistMgr->transferCharPtr(TMEMBER(_effectFile));
}
@@ -189,11 +189,11 @@ public:
XModel *_parentModel{};
- bool loadFromFile(const Common::String &filename, XModel *parentModel = nullptr);
- bool mergeFromFile(const Common::String &filename);
+ bool loadFromFile(const char *filename, XModel *parentModel = nullptr);
+ bool mergeFromFile(const char *filename);
- bool loadAnimationSet(const Common::String &filename, XFileData *xobj);
- bool loadAnimation(const Common::String &filename, XFileData *xobj, AnimationSet *parentAnimSet = nullptr);
+ bool loadAnimationSet(const char *filename, XFileData *xobj);
+ bool loadAnimation(const char *filename, XFileData *xobj, AnimationSet *parentAnimSet = nullptr);
bool update() override;
bool render();
More information about the Scummvm-git-logs
mailing list