[Scummvm-git-logs] scummvm master -> 9dafe5109c2a55c0a69049207f8cb6b18735b9b8

elasota noreply at scummvm.org
Sun Jul 31 20:48:19 UTC 2022


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:
9dafe5109c MTROPOLIS: Use the rect of mToon frames for collision instead of the entire element size


Commit: 9dafe5109c2a55c0a69049207f8cb6b18735b9b8
    https://github.com/scummvm/scummvm/commit/9dafe5109c2a55c0a69049207f8cb6b18735b9b8
Author: elasota (ejlasota at gmail.com)
Date: 2022-07-31T16:45:56-04:00

Commit Message:
MTROPOLIS: Use the rect of mToon frames for collision instead of the entire element size

Changed paths:
    engines/mtropolis/elements.cpp
    engines/mtropolis/elements.h
    engines/mtropolis/runtime.cpp
    engines/mtropolis/runtime.h


diff --git a/engines/mtropolis/elements.cpp b/engines/mtropolis/elements.cpp
index 8f82d82027d..564d25ecb5a 100644
--- a/engines/mtropolis/elements.cpp
+++ b/engines/mtropolis/elements.cpp
@@ -1282,6 +1282,12 @@ bool MToonElement::isMouseCollisionAtPoint(int32 relativeX, int32 relativeY) con
 	return false;
 }
 
+Common::Rect MToonElement::getRelativeCollisionRect() const {
+	Common::Rect colRect = _metadata->frames[_renderedFrame].rect;
+	colRect.translate(_rect.left, _rect.top);
+	return colRect;
+}
+
 VThreadState MToonElement::startPlayingTask(const StartPlayingTaskData &taskData) {
 	if (_rateTimes100000 < 0)
 		_cel = _playRange.max;
diff --git a/engines/mtropolis/elements.h b/engines/mtropolis/elements.h
index 787f09314ae..94044aa0e95 100644
--- a/engines/mtropolis/elements.h
+++ b/engines/mtropolis/elements.h
@@ -223,6 +223,8 @@ public:
 
 	bool isMouseCollisionAtPoint(int32 relativeX, int32 relativeY) const override;
 
+	Common::Rect getRelativeCollisionRect() const override;
+
 #ifdef MTROPOLIS_DEBUG_ENABLE
 	const char *debugGetTypeName() const override { return "mToon Element"; }
 	SupportStatus debugGetSupportStatus() const override { return kSupportStatusDone; }
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index 2d0fd6062b4..795ec139cd5 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -5716,7 +5716,7 @@ void Runtime::recursiveFindColliders(Structural *structural, size_t sceneStackDe
 			// isRoot = Is a scene, and colliding with scenes is not allowed
 			if (!isRoot && visual->isVisible()) {
 				ColliderInfo colliderInfo;
-				colliderInfo.absRect = rect;
+				colliderInfo.absRect = visual->getRelativeCollisionRect();
 				colliderInfo.absRect.translate(parentOriginX, parentOriginY);
 				colliderInfo.element = visual;
 				colliderInfo.layer = visual->getLayer();
@@ -7506,6 +7506,10 @@ const Common::Rect &VisualElement::getRelativeRect() const {
 	return _rect;
 }
 
+Common::Rect VisualElement::getRelativeCollisionRect() const {
+	return getRelativeRect();
+}
+
 void VisualElement::setRelativeRect(const Common::Rect &rect) {
 	_rect = rect;
 }
diff --git a/engines/mtropolis/runtime.h b/engines/mtropolis/runtime.h
index ae4f58ccb9f..f4ed53d5b36 100644
--- a/engines/mtropolis/runtime.h
+++ b/engines/mtropolis/runtime.h
@@ -2558,6 +2558,7 @@ public:
 	Common::Point getParentOrigin() const;
 	Common::Point getGlobalPosition() const;
 	const Common::Rect &getRelativeRect() const;
+	virtual Common::Rect getRelativeCollisionRect() const;
 
 	void setRelativeRect(const Common::Rect &rect);
 




More information about the Scummvm-git-logs mailing list