[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