aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/scene_objects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/scene_objects.cpp')
-rw-r--r--engines/bladerunner/scene_objects.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/engines/bladerunner/scene_objects.cpp b/engines/bladerunner/scene_objects.cpp
index c55097358d..b66467e859 100644
--- a/engines/bladerunner/scene_objects.cpp
+++ b/engines/bladerunner/scene_objects.cpp
@@ -86,7 +86,7 @@ bool SceneObjects::remove(int sceneObjectId) {
if (i == -1) {
return false;
}
-
+ _sceneObjects[i]._present = 0;
int j;
for (j = 0; j < _count; ++j) {
if (_sceneObjectsSortedByDistance[j] == i) {
@@ -107,7 +107,7 @@ int SceneObjects::findByXYZ(int *isClickable, int *isObstacle, int *isTarget, fl
*isTarget = 0;
for (int i = 0; i < _count; ++i) {
- assert(_sceneObjectsSortedByDistance[i] < _count);
+ assert(_sceneObjectsSortedByDistance[i] < SCENE_OBJECTS_COUNT);
SceneObject &sceneObject = _sceneObjects[_sceneObjectsSortedByDistance[i]];
@@ -171,8 +171,10 @@ bool SceneObjects::existsOnXZ(int exceptSceneObjectId, float x, float z, bool a5
int SceneObjects::findById(int sceneObjectId) {
for (int i = 0; i < _count; ++i) {
- if (_sceneObjects[i]._present && _sceneObjects[i]._sceneObjectId == sceneObjectId) {
- return i;
+ int j = this->_sceneObjectsSortedByDistance[i];
+
+ if (_sceneObjects[j]._present && _sceneObjects[j]._sceneObjectId == sceneObjectId) {
+ return j;
}
}
return -1;