diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-06-17 20:20:26 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-17 22:20:26 +0200 |
| commit | 995a443da219ec773febd7dd29d18f3cefaa1f3b (patch) | |
| tree | b8ad1302e4d48ccc3354a714388313eef605e749 /src/common | |
| parent | 1e9c84a3ea0c3f255779eada0d804fab15e2e434 (diff) | |
Handle different slopes in mmaps (#24765)
* Tools/MMAPs: Remove input argument --maxAngle
Remove input argument --maxAngle . This should be just hardcoded in MapBuilder::GetMapSpecificConfig() so all settings are easily found in the same place instead of being spread around.
* Tools/MMAPs: Add new area type NAV_AREA_GROUND_STEEP
Add new area type NAV_AREA_GROUND_STEEP for ground with slope in the range (55, 70] .
NAV_AREA_GROUND is used for ground with range [0, 55] .
NAV_AREA_GROUND_STEEP takes priority over NAV_AREA_GROUND.
* Tools/MMAPs: Fix NAV_GROUND_STEEP flag not being saved in the mmtile
* Core/PathFinding: Implement NAV_GROUND_STEEP flag
Implement NAV_GROUND_STEEP flag, used only by Creatures that are in combat or evading.
* Distinguish between RC_WALKABLE_AREA and NAV_AREA_GROUND.
* Allow mobs in combat to walk on steeps up to 80°
* Allow mobs in combat to walk on steeps up to 85°.
Disable rcFilterLedgeSpans() filter as it removed long steep spans.
* Increase cost of steep spans to try making creatures walk around obstacles instead of walking on them
* Revert last commit
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/Collision/Maps/MapDefines.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/common/Collision/Maps/MapDefines.h b/src/common/Collision/Maps/MapDefines.h index d433b381cc8..dbd3d63c828 100644 --- a/src/common/Collision/Maps/MapDefines.h +++ b/src/common/Collision/Maps/MapDefines.h @@ -22,7 +22,7 @@ #include "DetourNavMesh.h" const uint32 MMAP_MAGIC = 0x4d4d4150; // 'MMAP' -#define MMAP_VERSION 10 +#define MMAP_VERSION 11 struct MmapTileHeader { @@ -51,17 +51,22 @@ enum NavArea NAV_AREA_EMPTY = 0, // areas 1-60 will be used for destructible areas (currently skipped in vmaps, WMO with flag 1) // ground is the highest value to make recast choose ground over water when merging surfaces very close to each other (shallow water would be walkable) - NAV_AREA_GROUND = 63, - NAV_AREA_WATER = 62, - NAV_AREA_MAGMA_SLIME = 61 // don't need to differentiate between them + NAV_AREA_GROUND_STEEP = 11, + NAV_AREA_GROUND = 10, + NAV_AREA_WATER = 9, + NAV_AREA_MAGMA_SLIME = 8, // don't need to differentiate between them + NAV_AREA_MAX_VALUE = NAV_AREA_GROUND_STEEP, + NAV_AREA_MIN_VALUE = NAV_AREA_MAGMA_SLIME, + NAV_AREA_ALL_MASK = 0x3F // max allowed value }; enum NavTerrainFlag { - NAV_EMPTY = 0x00, - NAV_GROUND = 1 << (63 - NAV_AREA_GROUND), - NAV_WATER = 1 << (63 - NAV_AREA_WATER), - NAV_MAGMA_SLIME = 1 << (63 - NAV_AREA_MAGMA_SLIME) + NAV_EMPTY = 0x00, + NAV_GROUND_STEEP = 1 << (NAV_AREA_MAX_VALUE - NAV_AREA_GROUND_STEEP), + NAV_GROUND = 1 << (NAV_AREA_MAX_VALUE - NAV_AREA_GROUND), + NAV_WATER = 1 << (NAV_AREA_MAX_VALUE - NAV_AREA_WATER), + NAV_MAGMA_SLIME = 1 << (NAV_AREA_MAX_VALUE - NAV_AREA_MAGMA_SLIME) }; #endif /* _MAPDEFINES_H */ |
