Skip to content

Commit

Permalink
Removed renderer references in physics ray casting.
Browse files Browse the repository at this point in the history
Used to be for pixel-perfect selection with alpha-tested textures.
  • Loading branch information
afritz1 committed Jul 27, 2024
1 parent a31a8c7 commit 3470001
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 21 deletions.
30 changes: 15 additions & 15 deletions OpenTESArena/src/Collision/Physics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ namespace Physics
bool testEntitiesInVoxel(const CoordDouble3 &rayCoord, const VoxelDouble3 &rayDirection,
const VoxelDouble3 &flatForward, const VoxelDouble3 &flatRight, const VoxelDouble3 &flatUp,
const VoxelInt3 &voxel, const ChunkEntityMap &chunkEntityMap, const EntityChunkManager &entityChunkManager,
const EntityDefinitionLibrary &entityDefLibrary, const Renderer &renderer, Physics::Hit &hit)
const EntityDefinitionLibrary &entityDefLibrary, Physics::Hit &hit)
{
// Use a separate hit variable so we can determine whether an entity was closer.
Physics::Hit entityHit;
Expand Down Expand Up @@ -500,7 +500,7 @@ namespace Physics
void rayCastInternal(const CoordDouble3 &rayCoord, const VoxelDouble3 &rayDirection, const VoxelDouble3 &cameraForward,
double ceilingScale, const VoxelChunkManager &voxelChunkManager, const EntityChunkManager &entityChunkManager,
const CollisionChunkManager &collisionChunkManager, bool includeEntities, const EntityDefinitionLibrary &entityDefLibrary,
const Renderer &renderer, std::vector<ChunkEntityMap> &chunkEntityMaps, Physics::Hit &hit)
std::vector<ChunkEntityMap> &chunkEntityMaps, Physics::Hit &hit)
{
// Each flat shares the same axes. Their forward direction always faces opposite to the camera direction.
const VoxelDouble3 flatForward = VoxelDouble3(-cameraForward.x, 0.0, -cameraForward.z).normalized();
Expand Down Expand Up @@ -616,7 +616,7 @@ namespace Physics
const ChunkEntityMap &chunkEntityMap = Physics::getOrAddChunkEntityMap(currentChunk, rayCoord,
ceilingScale, voxelChunkManager, entityChunkManager, entityDefLibrary, chunkEntityMaps);
success |= Physics::testEntitiesInVoxel(rayCoord, rayDirection, flatForward, flatRight, flatUp,
rayVoxel, chunkEntityMap, entityChunkManager, entityDefLibrary, renderer, hit);
rayVoxel, chunkEntityMap, entityChunkManager, entityDefLibrary, hit);
}

if (success)
Expand Down Expand Up @@ -758,7 +758,7 @@ namespace Physics
const ChunkEntityMap &chunkEntityMap = Physics::getOrAddChunkEntityMap(savedVoxelCoord.chunk, rayCoord,
ceilingScale, voxelChunkManager, entityChunkManager, entityDefLibrary, chunkEntityMaps);
success |= Physics::testEntitiesInVoxel(rayCoord, rayDirection, flatForward, flatRight, flatUp,
savedVoxelCoord.voxel, chunkEntityMap, entityChunkManager, entityDefLibrary, renderer, hit);
savedVoxelCoord.voxel, chunkEntityMap, entityChunkManager, entityDefLibrary, hit);
}

if (success)
Expand Down Expand Up @@ -835,7 +835,7 @@ void Physics::Hit::setT(double t)
bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirection, double ceilingScale,
const VoxelDouble3 &cameraForward, bool includeEntities, const VoxelChunkManager &voxelChunkManager,
const EntityChunkManager &entityChunkManager, const CollisionChunkManager &collisionChunkManager,
const EntityDefinitionLibrary &entityDefLibrary, const Renderer &renderer, Physics::Hit &hit)
const EntityDefinitionLibrary &entityDefLibrary, Physics::Hit &hit)
{
// Set the hit distance to max. This will ensure that if we don't hit a voxel but do hit an
// entity, the distance can still be used.
Expand All @@ -858,13 +858,13 @@ bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirec
{
Physics::rayCastInternal<true, true, true>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
else
{
Physics::rayCastInternal<true, true, false>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
}
else
Expand All @@ -873,13 +873,13 @@ bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirec
{
Physics::rayCastInternal<true, false, true>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
else
{
Physics::rayCastInternal<true, false, false>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
}
}
Expand All @@ -891,13 +891,13 @@ bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirec
{
Physics::rayCastInternal<false, true, true>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
else
{
Physics::rayCastInternal<false, true, false>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
}
else
Expand All @@ -906,13 +906,13 @@ bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirec
{
Physics::rayCastInternal<false, false, true>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
else
{
Physics::rayCastInternal<false, false, false>(rayStart, rayDirection, cameraForward, ceilingScale,
voxelChunkManager, entityChunkManager, collisionChunkManager, includeEntities, entityDefLibrary,
renderer, chunkEntityMaps, hit);
chunkEntityMaps, hit);
}
}
}
Expand All @@ -924,9 +924,9 @@ bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirec
bool Physics::rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirection,
const VoxelDouble3 &cameraForward, bool includeEntities, const VoxelChunkManager &voxelChunkManager,
const EntityChunkManager &entityChunkManager, const CollisionChunkManager &collisionChunkManager,
const EntityDefinitionLibrary &entityDefLibrary, const Renderer &renderer, Physics::Hit &hit)
const EntityDefinitionLibrary &entityDefLibrary, Physics::Hit &hit)
{
constexpr double ceilingScale = 1.0;
return Physics::rayCast(rayStart, rayDirection, ceilingScale, cameraForward, includeEntities, voxelChunkManager,
entityChunkManager, collisionChunkManager, entityDefLibrary, renderer, hit);
entityChunkManager, collisionChunkManager, entityDefLibrary, hit);
}
5 changes: 2 additions & 3 deletions OpenTESArena/src/Collision/Physics.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include "../Entities/EntityInstance.h"
#include "../Math/Vector2.h"
#include "../Math/Vector3.h"
#include "../Rendering/Renderer.h"
#include "../Voxels/VoxelUtils.h"

class CollisionChunkManager;
Expand Down Expand Up @@ -67,11 +66,11 @@ namespace Physics
bool rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirection, double ceilingScale,
const VoxelDouble3 &cameraForward, bool includeEntities, const VoxelChunkManager &voxelChunkManager,
const EntityChunkManager &entityChunkManager, const CollisionChunkManager &collisionChunkManager,
const EntityDefinitionLibrary &entityDefLibrary, const Renderer &renderer, Physics::Hit &hit);
const EntityDefinitionLibrary &entityDefLibrary, Physics::Hit &hit);
bool rayCast(const CoordDouble3 &rayStart, const VoxelDouble3 &rayDirection, const VoxelDouble3 &cameraForward,
bool includeEntities, const VoxelChunkManager &voxelChunkManager, const EntityChunkManager &entityChunkManager,
const CollisionChunkManager &collisionChunkManager, const EntityDefinitionLibrary &entityDefLibrary,
const Renderer &renderer, Physics::Hit &hit);
Physics::Hit &hit);
};

#endif
2 changes: 1 addition & 1 deletion OpenTESArena/src/GameLogic/PlayerLogicController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@ void PlayerLogicController::handleScreenToWorldInteraction(Game &game, const Int
Physics::Hit hit;
const bool success = Physics::rayCast(rayStart, rayDirection, ceilingScale, cameraDirection,
includeEntities, voxelChunkManager, entityChunkManager, collisionChunkManager,
EntityDefinitionLibrary::getInstance(), game.getRenderer(), hit);
EntityDefinitionLibrary::getInstance(), hit);

// See if the ray hit anything.
if (success)
Expand Down
4 changes: 2 additions & 2 deletions OpenTESArena/src/Interface/GameWorldUiView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ void GameWorldUiView::DEBUG_ColorRaycastPixel(Game &game)
Physics::Hit hit;
const bool success = Physics::rayCast(rayStart, rayDirection, ceilingScale, cameraDirection,
includeEntities, voxelChunkManager, entityChunkManager, collisionChunkManager,
EntityDefinitionLibrary::getInstance(), renderer, hit);
EntityDefinitionLibrary::getInstance(), hit);

if (success)
{
Expand Down Expand Up @@ -602,7 +602,7 @@ void GameWorldUiView::DEBUG_PhysicsRaycast(Game &game)
constexpr bool includeEntities = true;
Physics::Hit hit;
const bool success = Physics::rayCast(rayStart, rayDirection, ceilingScale, cameraDirection, includeEntities,
voxelChunkManager, entityChunkManager, collisionChunkManager, entityDefLibrary, renderer, hit);
voxelChunkManager, entityChunkManager, collisionChunkManager, entityDefLibrary, hit);

std::string text;
if (success)
Expand Down

0 comments on commit 3470001

Please sign in to comment.