Commit Graph

365 Commits

Author SHA1 Message Date
Shauren
865b47efad Core/Networking: Switch to intrusive variant of MPSC queue to halve the number of memory allocations for packet sending (#24659)
(cherry picked from commit f0060496f9)
2022-01-06 19:38:12 +01:00
killerwife
dbb7f65723 Vmap: Introduce skipping of antiportals and unreachable mogp (#26331)
* Vmap: Introduce skipping of antiportals and unreachable mogp

* Reduce differences with master branch

* Update VMAP and MMAP versions

* Update MMAPs version

Co-authored-by: jackpoz <giacomopoz@gmail.com>
(cherry picked from commit d5f1fefe7f)
2022-01-04 20:44:25 +01:00
killerwife
2467f799bb MapExtraction: Fix water height redundancy algorithm ignoring "no water" (#26324)
* MapExtraction: Fix water height redundancy algorithm ignoring "no water"

* Update MMAP_VERSION

* Change map version

Co-authored-by: jackpoz <giacomopoz@gmail.com>
(cherry picked from commit 00da074109)
2022-01-04 20:44:25 +01:00
Giacomo Pozzoni
1ba940b17a Core/Maps: Change .map file version from FourCC to uint32 (#26326)
(cherry picked from commit 42877e75e2)
2022-01-04 20:44:25 +01:00
jackpoz
3820aabcd8 Core/MMAPs: Restore single slope angle of 55°
Re-generating MMAPs IS required.
Partially reverts 995a443da2 .

Having 2 different slope angles of 55° and 85° created too many polygons to fit in the current mmtile structure. This caused some polygons to become disconnected from each other, creating the old "invisible walls" effect. Because of this and because of the performance hit when loading a mmtile caused by the increase of polygon numbers, this commit reverts the recent changes and sets by default the slope angle to 55°.
Feel free to restore the previous behaviour by running .\mmaps_generator --maxAngle 85 --maxAngleNotSteep 55 , specifying the map id as number if a single map should have different slope values.
This is the last commit that will change MMAPs version to force re-generating them. Any future change that will affect only the generation settings will be optional (but recommended).

(cherry picked from commit 3947e4cb57)
2022-01-04 20:44:02 +01:00
jackpoz
ddcbc01a65 Core/MMAPs: Fix small steps being considered as NAV_AREA_GROUND_STEEP
(cherry picked from commit 3ac1992afb)
2022-01-04 20:44:02 +01:00
Giacomo Pozzoni
d58d0e895c 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

(cherry picked from commit 995a443da2)
2022-01-04 20:44:02 +01:00
Shauren
08b5a0586a Core/Util: Added iterator range overload for Trinity::Containers::RandomShuffle 2022-01-03 12:48:40 +01:00
Giacomo Pozzoni
a947ee1912 Core/SAI: Allow SMART_TARGET_ACTION_INVOKER to target GameObjects (#24416)
* Core/SAI: Allow SMART_TARGET_ACTION_INVOKER to target GameObjects

* Include new Coalesce(..) template by @Shauren

(cherry picked from commit 90b00288c2)
2022-01-01 13:06:27 +01:00
Treeston
a6332f5dec Core/Misc: C++17 cleanups, commit 3, the header commit
(cherry picked from commit ca0c50bc45)
2021-12-24 00:37:25 +01:00
Treeston
ea0aa63d96 Core/Misc: C++17 cleanups, commit 2, the advstd commit
(cherry picked from commit 857f8d9231)
2021-12-24 00:37:21 +01:00
Shauren
3ebfa8cc64 Core/PacketIO: Add a validating string helper class for use in packet classes
(cherry picked from commit f2f47f774f)
2021-12-23 23:55:58 +01:00
jackpoz
1fa4403b8c Core/Common: Allow to show a message when aborting
Add a new ABORT_MSG macro that allows to show a formatted message before stopping the executable

(cherry picked from commit 0ddee8a4a0)
2021-12-22 22:54:18 +01:00
daMaex
31efaaac40 Core: build on aarch64 with gcc (#24216)
* build on aarch64 with gcc

* Core/aarch64: readability on preprocessor macro

* Core/aarch64: TC C++ codestyle adjustment

(cherry picked from commit ce449f6b53)
2021-12-22 20:50:53 +01:00
Ujp8LfXBJ6wCPR
43aa763d04 Part1: Modernize codebase with Clang-Tidy range based loops (#24164)
(cherry picked from commit fb75a958f0)
2021-12-22 15:48:01 +01:00
ForesterDev
8c6974bc9f Core/Server: improve timestamp format output for large time values (#24193)
(cherry picked from commit 71a01c75ca)
2021-12-22 14:55:23 +01:00
daMaex
8181177aea Core: Build on ARM64 - Raspberry Pi (preferable 4) (#23885)
* build again on aarch64

* include mm_malloc header instead of defining self

(cherry picked from commit cbe765df7a)
2021-12-22 12:30:00 +01:00
ForesterDev
69f7686050 Core/Server: correct timestamp format for shutdown/restart notification broadcasts (#24181)
* Core/SmartScripts: implement SMART_ACTION_OVERRIDE_LIGHT and SMART_ACTION_OVERRIDE_WEATHER

* Core/Server: correct timestamp format for shutdown/restart notification broadcasts

* remove unexpected changes

* move enum from Common to Util

* Use enum class instead of enum

* Fix width for seconds 0 to 9

(cherry picked from commit 69231581e4)
2021-12-22 01:25:24 +01:00
Shauren
2c78f4dd1f Core/Misc: Resolve c++17 TODOs left in code as comments 2021-12-21 18:29:52 +01:00
Ujp8LfXBJ6wCPR
6229a6ddc1 Remove dependency on undefined behaviour (#24159)
See https://stackoverflow.com/a/4328396
Previous method works but is technically illegal.

(cherry picked from commit b089ed3b75)
2021-12-21 16:36:07 +01:00
Treeston
12f9423efa Common/Encoding: fix Base32 alphabet (oops)
(cherry picked from commit e457b77b4b)
2021-12-19 01:46:30 +01:00
Shauren
b93bf95f2e Core/Random: Refactor random number generation to use std::uniform_*_distribution to restrict result range instead of doing that ourselves
* Seed SFMTRand with more values for its state

(cherry picked from commit 73bc3d8ea4)
2021-12-19 00:13:11 +01:00
daMaex
08b40733a5 Dep/SFMT: updated to newest upstream version from https://github.com/MersenneTwister-Lab/SFMT
* only needed files added
* used CMake and SFMTRand from https://github.com/TrinityCore/TrinityCore/pull/23240 (Thank you Artox)

(cherry picked from commit 4e0279b0e4)
2021-12-19 00:12:41 +01:00
Treeston
0b61c3b7b1 [3.3.5] Core/Authserver: TOTP rewrite: (PR #23633)
- Proper management commands (.account 2fa)
- Secrets can now be encrypted (set TOTPTokenSecret in .conf)
- Secret now stored in binary
- Argon2 and AES primitives
- Base32/64 support

(cherry picked from commit 4211645834)
2021-12-18 20:24:50 +01:00
Treeston
28942db431 Common/Util: Sorry about that unexpected downtime at 3AM last night, everyone. (We call them happy little features.)
(cherry picked from commit a4d5b24874)
2021-12-18 15:33:44 +01:00
Treeston
51fbda4223 Core/Pooling: Quest pooling rewrite: (PR#23627)
- Split quest pooling from PoolMgr (into QuestPoolMgr)
- Proper saving/restoring on server restart
- No more hacking into sObjectMgr to insert/remove available quests

(cherry picked from commit a5e73e41c0)
2021-12-18 15:28:45 +01:00
Treeston
87c2d247d9 Core/Misc: Rewrite some old name handling functions that use raw buffers to no longer be old name handling functions that use raw buffers.
(cherry picked from commit 309851ea24)
2021-12-18 11:25:59 +01:00
Treeston
3388cea685 Core/Misc: Remove Trinity::Containers::Size (duplicate of advstd::size)
(cherry picked from commit f1d9a36c5f)
2021-12-17 21:57:41 +01:00
Treeston
3269c42789 Core/AI: No longer do strange things when told to enter evade mode while there's no need to do so, typically by terrible legacy code.
(cherry picked from commit 163f44c1b0)
2021-12-17 21:50:47 +01:00
Giacomo Pozzoni
493fe066f6 Core/Misc: Handle timezones for hour-specific events specifieds in worldserver.conf (#23540)
* Core/Misc: Handle timezones for hour-specific events specifieds in worldserver.conf

* Handle Respawn.RestartQuietTime too

* Handle XP.Boost.Daymask too

* Core/Misc: Code cleanup

* Core/Misc: Code cleanup

* Update Util.cpp

* Update boosted_xp.cpp

(cherry picked from commit aeddd417c4)
2021-12-16 22:35:44 +01:00
Treeston
611ddfee3c build fix after d1dc0e2
(cherry picked from commit c0f8e8535a)
2021-12-16 22:16:07 +01:00
Shauren
a937767289 Core/Misc: Exclude boost 1.78 and newer from boost_1_73_process_windows_nopch hack 2021-12-08 19:02:59 +01:00
jackpoz
49414acaef Core/CrashHandler: Remove sensitive data from crashlogs
(cherry picked from commit 25bcb1a0b2)
(cherry picked from commit 37478c5ac1)
2021-12-02 00:39:28 +01:00
jackpoz
dc2fed13c8 Shared/Metric: Fix a rare memory leak
Fix a memory leak in Metric happening only when enabling/disabling Metric from configs at runtime, leaking the metric added between last SendBatch() call and the ScheduleSend() call in the same function. The only way to reproduce this is to actually freeze the thread calling SendBatch(), disable metric, reload config, unfreeze the thread.

(cherry picked from commit 0d1ff7446d)
2021-12-02 00:39:20 +01:00
jackpoz
5600316c9f Core/Calendar: Improve calendar timezone handling
Improve calendar timezone handling by at least creating events with the correct time if both client and server are in the same timezone. There is currently no information received from the client about in which timezone it is.

(cherry picked from commit b33934f6ce)
2021-12-01 00:46:05 +01:00
Chaouki Dhib
c19a4db1c1 Core/Movement: Add time synchronisation (#18189)
(cherry picked from commit 975f1e364a)
2021-11-30 22:11:36 +01:00
jackpoz
43a41caafb Core/Misc: Fix GCC 8 warnings
(cherry picked from commit 1d04a3b216)
2021-11-24 23:40:15 +01:00
Shauren
c14cf5a892 Core/Misc: Added lambda support to EventProcessor
Closes #22909

(cherry picked from commit 813f693768)
2021-11-23 23:01:47 +01:00
Giacomo Pozzoni
24f9b41622 Shared/Utilities: Handle string format exceptions
Handle StringFormat() exceptions in case of malformed string format to avoid causing unhandled exception crashes

(cherry picked from commit c79811de4f)
2021-11-23 22:48:28 +01:00
jackpoz
cb8b637061 Dep/Recast: Update recastnavigation to 14b2631527
Rebuilding mmaps IS required

(cherry picked from commit 5ff88ea04a)
2021-11-22 00:17:11 +01:00
jackpoz
e9e3d2d69d Core/Utils: Handle UTF-8 conversion errors
Replace the output string when a UTF-8 conversion error happen with an error message instead of using an empty string, swallowing any message that the caller wanted to log.

(cherry picked from commit bdb7e6e5e8)
2021-11-21 14:38:29 +01:00
Treeston
549d5fea31 Core/Utils: some code style adjustments, 6d6077e follow-up
(cherry picked from commit 4c3af3b636)
2021-11-16 21:05:35 +01:00
Treeston
4f8fd56903 Core/Utils: Fix Unicode handling
(cherry picked from commit 6d6077e36f)
2021-11-16 21:04:53 +01:00
jackpoz
9dcbccce26 Core/Misc: Fix vsnprintf usage in ASSERT()
Fix vsnprintf to follow standard definition and not some old VC++ behavior, not requiring to include the '\0' character in the count parameter

(cherry picked from commit eee1f2cadf)
2021-11-16 20:37:27 +01:00
Giacomo Pozzoni
d5c41d23e6 Core/Misc: Log more information in asserts (#22783)
* Core/Misc: Log more information in asserts

Add a new function GetDebugInfos() to types that could trigger an ASSERT() to easily include more useful information in crashlogs.
This is an initial commit that requires many more commits to implement the new GetDebugInfos() function in all required types.
If the type doesn't have the function, the global default one is picked which doesn't log anything.

* Core/Misc: Fix dynamic build

Add missing attribute for dynamic build

* Core/Misc: Fix gcc/clang build

* Core/Misc: Rename GetDebugInfos() to GetDebugInfo()

* Core/Misc: Fix FormatAssertionMessage() adding an extra '\0'

* Core/Misc: Add GetDebugInfo support to Unit

* Core/Misc: Add GetDebugInfo support to Creature

* Core/Misc: Add more info to GetDebugInfo for Creature

* Core/Misc: Add GetDebugInfo support to GameObject

* Core/Misc: Add GetDebugInfo support to Player

* Core/Misc: Add more GetDebugInfo info

* Core/Misc: Add GetDebugInfo support to Item

* Core/Misc: Add GetDebugInfo support to Bag

* Core/Misc: Add GetDebugInfo support to Transport

* Core/Misc: Add GetDebugInfo support to TempSummon, Minion, Guardian, Pet

* Core/Misc: Add GetDebugInfo support to Map, InstanceMap

* Core/Misc: Add GetDebugInfo support to Spell

* Core/Misc: Fix build warning

* Core/Misc: Add GetDebugInfo support to Aura

* Core/Misc: Add GetDebugInfo support to UnitAI

(cherry picked from commit 9a924fb9d5)
2021-11-16 20:36:58 +01:00
Warpten
1d4efe2986 Fix invalid arguments to string format in Trinity::Fatal
Isn't whatever is used nowadays to make this stuff safe supposed to prevent this sort of stuff?

(cherry picked from commit 9bf69b3849)
2021-11-15 21:34:44 +01:00
Treeston
c977087d58 Core/Misc: Partial merge of 3.3.5-dbedit:
- Added SmartEnum.h for enum iteration, stringification, and more, courtesy of krabicezpapundeklu/smart_enum
- Moved a bunch of enums in SharedDefines.h to the new system
- Miscellaneous utility methods ported

Core/Util: Redesign SmartEnum to properly work for large
 enums (>64 entries) and play nice with IDEs (PR #22768)

(cherry picked from commit 338e8ba0fe)
(cherry picked from commit f7ca0877a3)
(cherry picked from commit 207093475a)
(cherry picked from commit ee68cf3392)
(cherry picked from commit c16d461e16)
(cherry picked from commit f6b0d99e2c)
(cherry picked from commit bc1f456125)
2021-11-15 21:34:03 +01:00
Treeston
12e76f085f Core/Misc: Add a missing include of Windows.h to Errors.cpp
(that last one wasn't me!)

(cherry picked from commit 1dc675f0a1)
2021-11-12 00:16:29 +01:00
Shauren
270db9a352 Core/DataStores: Add a bit more info to db2 file loader sign check assertions 2021-11-04 22:27:28 +01:00
Shauren
8866065117 Core/Misc: FIx a GCC warning 2021-10-31 01:39:10 +02:00