diff --git a/OpenTESArena/src/Collision/CollisionChunkManager.cpp b/OpenTESArena/src/Collision/CollisionChunkManager.cpp index 6b16a4072..9e0adb383 100644 --- a/OpenTESArena/src/Collision/CollisionChunkManager.cpp +++ b/OpenTESArena/src/Collision/CollisionChunkManager.cpp @@ -89,8 +89,13 @@ void CollisionChunkManager::populateChunk(int index, double ceilingScale, const const bool voxelHasCollision = voxelTraitsDef.hasCollision(); collisionChunk.enabledColliders.set(x, y, z, voxelHasCollision); + bool isTriggerVoxel = false; VoxelTriggerDefID triggerDefID; - const bool isTriggerVoxel = voxelChunk.tryGetTriggerDefID(x, y, z, &triggerDefID); + if (voxelChunk.tryGetTriggerDefID(x, y, z, &triggerDefID)) + { + const VoxelTriggerDefinition &voxelTriggerDef = voxelChunk.getTriggerDef(triggerDefID); + isTriggerVoxel = voxelTriggerDef.hasValidDef(); + } bool isInteriorLevelChangeVoxel = false; VoxelTransitionDefID transitionDefID; @@ -170,8 +175,13 @@ void CollisionChunkManager::updateDirtyVoxels(const ChunkInt2 &chunkPos, double collisionChunk.physicsBodyIDs.set(x, y, z, Physics::INVALID_BODY_ID); } + bool isTriggerVoxel = false; VoxelTriggerDefID triggerDefID; - const bool isTriggerVoxel = voxelChunk.tryGetTriggerDefID(x, y, z, &triggerDefID); + if (voxelChunk.tryGetTriggerDefID(x, y, z, &triggerDefID)) + { + const VoxelTriggerDefinition &voxelTriggerDef = voxelChunk.getTriggerDef(triggerDefID); + isTriggerVoxel = voxelTriggerDef.hasValidDef(); + } bool isInteriorLevelChangeVoxel = false; VoxelTransitionDefID transitionDefID; diff --git a/OpenTESArena/src/Voxels/VoxelTriggerDefinition.cpp b/OpenTESArena/src/Voxels/VoxelTriggerDefinition.cpp index dc46fd95c..d8675d2aa 100644 --- a/OpenTESArena/src/Voxels/VoxelTriggerDefinition.cpp +++ b/OpenTESArena/src/Voxels/VoxelTriggerDefinition.cpp @@ -38,3 +38,8 @@ bool VoxelTriggerDefinition::hasTextDef() const { return !this->text.text.empty(); } + +bool VoxelTriggerDefinition::hasValidDef() const +{ + return this->hasSoundDef() || this->hasTextDef(); +} diff --git a/OpenTESArena/src/Voxels/VoxelTriggerDefinition.h b/OpenTESArena/src/Voxels/VoxelTriggerDefinition.h index 4f882185f..6cfcc86d0 100644 --- a/OpenTESArena/src/Voxels/VoxelTriggerDefinition.h +++ b/OpenTESArena/src/Voxels/VoxelTriggerDefinition.h @@ -35,6 +35,7 @@ struct VoxelTriggerDefinition bool hasSoundDef() const; bool hasTextDef() const; + bool hasValidDef() const; }; #endif