[Scummvm-git-logs] scummvm master -> 80fafcb4fb829592e7997bb5bfc6d00b418fedfc
aquadran
noreply at scummvm.org
Thu May 15 06:30:36 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:
80fafcb4fb WINTERMUTE: Added missing display3DContent()
Commit: 80fafcb4fb829592e7997bb5bfc6d00b418fedfc
https://github.com/scummvm/scummvm/commit/80fafcb4fb829592e7997bb5bfc6d00b418fedfc
Author: PaweÅ KoÅodziejski (aquadran at gmail.com)
Date: 2025-05-15T08:30:32+02:00
Commit Message:
WINTERMUTE: Added missing display3DContent()
Changed paths:
engines/wintermute/ad/ad_scene.cpp
engines/wintermute/ad/ad_scene.h
engines/wintermute/base/gfx/base_renderer3d.cpp
engines/wintermute/base/gfx/base_renderer3d.h
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 8495cbfbd20..40e09743307 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -1313,6 +1313,48 @@ bool AdScene::traverseNodes(bool doUpdate) {
return STATUS_OK;
}
+#ifdef ENABLE_WME3D
+//////////////////////////////////////////////////////////////////////////
+bool AdScene::display3DContent(DXMatrix &viewMat, DXMatrix &projMat) {
+ if (!_geom)
+ return STATUS_FAILED;
+
+ _gameRef->_renderer3D->setup3DCustom(viewMat, projMat);
+
+ // for each layer
+ for (uint32 j = 0; j < _layers.size(); j++) {
+ if (!_layers[j]->_active)
+ continue;
+
+ // render depth info for stencil shadows
+ TShadowType shadowType = _gameRef->getMaxShadowType();
+ if (shadowType >= SHADOW_STENCIL) {
+ _gameRef->renderShadowGeometry();
+ }
+
+
+ // for each node
+ for (uint32 k = 0; k < _layers[j]->_nodes.size(); k++) {
+ AdSceneNode *node = _layers[j]->_nodes[k];
+ if (node->_type == OBJECT_REGION) {
+ if (node->_region->isBlocked())
+ continue;
+ if (node->_region->hasDecoration())
+ continue;
+
+ displayRegionContent(node->_region, true);
+ }
+ } // each node
+
+ // display/update all objects which are off-regions
+ if (_layers[j]->_main) {
+ displayRegionContent(nullptr, true);
+ }
+ } // each layer
+
+ return STATUS_OK;
+}
+#endif
//////////////////////////////////////////////////////////////////////////
bool AdScene::display() {
@@ -3359,7 +3401,7 @@ BaseObject *AdScene::getNodeByName(const char *name) {
for (uint32 j = 0; j < layer->_nodes.size(); j++) {
AdSceneNode *node = layer->_nodes[j];
if ((node->_type == OBJECT_ENTITY && !scumm_stricmp(name, node->_entity->getName())) ||
- (node->_type == OBJECT_REGION && !scumm_stricmp(name, node->_region->getName()))) {
+ (node->_type == OBJECT_REGION && !scumm_stricmp(name, node->_region->getName()))) {
switch (node->_type) {
case OBJECT_ENTITY:
ret = node->_entity;
diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h
index 4ff0dfede61..4149233c517 100644
--- a/engines/wintermute/ad/ad_scene.h
+++ b/engines/wintermute/ad/ad_scene.h
@@ -64,6 +64,9 @@ public:
BaseObject *getPrevAccessObject(BaseObject *currObject);
bool getSceneObjects(BaseArray<AdObject *> &objects, bool interactiveOnly);
bool getRegionObjects(AdRegion *region, BaseArray<AdObject *> &objects, bool interactiveOnly);
+#ifdef ENABLE_WME3D
+ bool display3DContent(DXMatrix &viewMat, DXMatrix &projMat);
+#endif
#ifdef ENABLE_WME3D
bool _2DPathfinding;
diff --git a/engines/wintermute/base/gfx/base_renderer3d.cpp b/engines/wintermute/base/gfx/base_renderer3d.cpp
index 1e348d80287..f50560b3c95 100644
--- a/engines/wintermute/base/gfx/base_renderer3d.cpp
+++ b/engines/wintermute/base/gfx/base_renderer3d.cpp
@@ -116,6 +116,17 @@ bool BaseRenderer3D::setDefaultAmbientLightColor() {
return true;
}
+bool BaseRenderer3D::setup3DCustom(DXMatrix &viewMat, DXMatrix &projMat) {
+ setup3D();
+ _state = RSTATE_3D;
+ if (viewMat)
+ setViewTransform(viewMat);
+ if (projMat)
+ setProjectionTransform(projMat);
+
+ return true;
+}
+
DXViewport BaseRenderer3D::getViewPort() {
return _viewport;
}
diff --git a/engines/wintermute/base/gfx/base_renderer3d.h b/engines/wintermute/base/gfx/base_renderer3d.h
index 87064ea8407..9b53a5190ec 100644
--- a/engines/wintermute/base/gfx/base_renderer3d.h
+++ b/engines/wintermute/base/gfx/base_renderer3d.h
@@ -75,6 +75,7 @@ public:
bool _ambientLightOverride;
//virtual void DumpData(char* Filename);
+ bool setup3DCustom(DXMatrix &viewMat, DXMatrix &projMat);
virtual bool enableShadows() = 0;
virtual bool disableShadows() = 0;
virtual bool stencilSupported() = 0;
More information about the Scummvm-git-logs
mailing list