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

aquadran noreply at scummvm.org
Wed May 21 15:21:45 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:
fcd5b4c1c8 WINTERMUTE: Added rendering waypoint markers in debug scene view


Commit: fcd5b4c1c8ec2fb3087310c5d8580f59562a376d
    https://github.com/scummvm/scummvm/commit/fcd5b4c1c8ec2fb3087310c5d8580f59562a376d
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-05-21T17:21:40+02:00

Commit Message:
WINTERMUTE: Added rendering waypoint markers in debug scene view

Changed paths:
    dists/engine-data/wintermute.zip
    engines/wintermute/ad/ad_scene_geometry.cpp
    engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp


diff --git a/dists/engine-data/wintermute.zip b/dists/engine-data/wintermute.zip
index 924429972b6..400dee9a21f 100644
Binary files a/dists/engine-data/wintermute.zip and b/dists/engine-data/wintermute.zip differ
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 1d8e41610d7..bb3fa89970b 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -479,10 +479,10 @@ float AdSceneGeometry::getHeightAt(DXVector3 pos, float tolerance, bool *intFoun
 	for (uint32 i = 0; i < _planes.size(); i++) {
 		for (int j = 0; j < _planes[i]->_mesh->_numFaces; j++) {
 			if (C3DUtils::intersectTriangle(pos, dir,
-								  _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[0]]._pos,
-								  _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[1]]._pos,
-								  _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[2]]._pos,
-								  &intersection._x, &intersection._y, &intersection._z)) {
+				                        _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[0]]._pos,
+				                        _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[1]]._pos,
+				                        _planes[i]->_mesh->_vertices[_planes[i]->_mesh->_faces[j]._vertices[2]]._pos,
+				                        &intersection._x, &intersection._y, &intersection._z)) {
 				if (intersection._y > pos._y + tolerance) {
 					continue; // only fall down
 				}
@@ -545,12 +545,12 @@ bool AdSceneGeometry::directPathExists(DXVector3 *p1, DXVector3 *p2) {
 
 			if (C3DUtils::pickGetIntersect(*p1, *p2, v0, v1, v2, &intersection, &dist)) {
 				if (C3DUtils::intersectTriangle(*p1, *p1 - *p2, v0, v1, v2,
-				                           &intersection._x, &intersection._y, &intersection._z)) {
+				                                &intersection._x, &intersection._y, &intersection._z)) {
 					return false;
 				}
 
 				if (C3DUtils::intersectTriangle(*p2, *p2 - *p1, v0, v1, v2,
-				                           &intersection._x, &intersection._y, &intersection._z)) {
+				                                &intersection._x, &intersection._y, &intersection._z)) {
 					return false;
 				}
 			}
diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
index ebc11b337bb..7fad6916fc1 100644
--- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
+++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp
@@ -20,8 +20,12 @@
  */
 
 #include "engines/wintermute/ad/ad_block.h"
+#include "engines/wintermute/ad/ad_game.h"
 #include "engines/wintermute/ad/ad_generic.h"
+#include "engines/wintermute/ad/ad_scene.h"
+#include "engines/wintermute/ad/ad_scene_geometry.h"
 #include "engines/wintermute/ad/ad_walkplane.h"
+#include "engines/wintermute/ad/ad_waypoint_group3d.h"
 #include "engines/wintermute/base/base_game.h"
 #include "engines/wintermute/base/gfx/base_image.h"
 #include "engines/wintermute/base/gfx/3dcamera.h"
@@ -874,8 +878,28 @@ void BaseRenderOpenGL3D::renderSceneGeometry(const BaseArray<AdWalkplane *> &pla
 		}
 	}
 
-	// This is delta compared to original sources.
-	glDisable(GL_BLEND);
+	// render waypoints
+	AdScene *scene = ((AdGame *)_gameRef)->_scene;
+	AdSceneGeometry *geom = scene->_geom;
+	if (geom && geom->_wptMarker) {
+		DXMatrix viewMat, projMat, worldMat;
+		DXVector3 vec2d(0.0f, 0.0f, 0.0f);
+
+		getViewTransform(&viewMat);
+		getProjectionTransform(&projMat);
+		DXMatrixIdentity(&worldMat);
+
+		DXViewport vport = getViewPort();
+
+		setup2D();
+
+		for (uint i = 0; i < geom->_waypointGroups.size(); i++) {
+			for (uint j = 0; j < geom->_waypointGroups[i]->_points.size(); j++) {
+				DXVec3Project(&vec2d, geom->_waypointGroups[i]->_points[j], &vport, &projMat, &viewMat, &worldMat);
+				geom->_wptMarker->display(vec2d._x + scene->getOffsetLeft() - _drawOffsetX, vec2d._y + scene->getOffsetTop() - _drawOffsetY);
+			}
+		}
+	}
 
 	glDisable(GL_COLOR_MATERIAL);
 }




More information about the Scummvm-git-logs mailing list