mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
Enemies are moved along navmesh paths without collision, so a wall only stops them if their path stops at it. dpWorld now keeps a list of such walls, each with the collision filter it blocks with, and cuts a path where it first walks into one (a little short of the wall; a mover inside one can walk out). Which objects block comes from data (dpMovementBlockers::BlockingFilter): - navmesh carvers (navmesh_carver in the level config, which the client reads with add_to_navmesh and carver_only) block every mover; - solid objects whose collision group touches enemies and not players (group 18, e.g. "FV - Enemy Blocking Volume", "PR - Pet Blocker") block what that group touches. dpShapeBox gains SegmentEntry, a segment test against the rotated box. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 lines
485 B
CMake
20 lines
485 B
CMake
set(DPHYSICS_SOURCES "dpCollisionChecks.cpp"
|
|
"dpEntity.cpp"
|
|
"dpCollisionFilter.cpp"
|
|
"dpGrid.cpp"
|
|
"dpKnockback.cpp"
|
|
"dpMovementBlockers.cpp"
|
|
"dpShapeBase.cpp"
|
|
"dpShapeBox.cpp"
|
|
"dpShapeSphere.cpp"
|
|
"dpWorld.cpp")
|
|
|
|
add_library(dPhysics STATIC ${DPHYSICS_SOURCES})
|
|
target_include_directories(dPhysics PUBLIC "."
|
|
"${PROJECT_SOURCE_DIR}/dCommon"
|
|
"${PROJECT_SOURCE_DIR}/dCommon/dEnums"
|
|
)
|
|
target_link_libraries(dPhysics
|
|
PUBLIC Recast Detour glm::glm
|
|
INTERFACE dNavigation dCommon)
|