aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2020-06-17 20:20:26 +0000
committerGitHub <noreply@github.com>2020-06-17 22:20:26 +0200
commit995a443da219ec773febd7dd29d18f3cefaa1f3b (patch)
treeb8ad1302e4d48ccc3354a714388313eef605e749 /src/common
parent1e9c84a3ea0c3f255779eada0d804fab15e2e434 (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.h21
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 */