Commit Graph

54 Commits

Author SHA1 Message Date
jackpoz c4cce31a13 Core/Misc: Fix linux build 2019-08-18 11:15:54 +02:00
jackpoz 5a98022649 Core/MMaps: Fix mobs evading when target is out of MMap meshes
Fix mobs evading when target is out of MMap meshes causes by an overzealous check added in c602220e02 when trying to fix an infinite loop in Recast.
If the target is outside of the MMap mesh (for example very close to a wall which is an un-walkable area with current TrinityCore settings and that might be changed in the future) Detour will not be able to find the height of the poly and getPolyHeight() will return DT_FAILURE | DT_INVALID_PARAM . Most of the time this is ok and can be ignored and it's still better than having the Unit evade.
Fix #23613
2019-08-18 11:08:06 +02:00
jackpoz 386b5a6fd9 Core/MMaps: Simplify d182e5f7e7 and handle PATHFIND_INCOMPLETE in ChaseMovementGenerator as "cannot reach the target" 2019-04-12 23:56:29 +02:00
jackpoz d182e5f7e7 Core/MMaps: Fallback to shortcut for flying units if Detour returned an incomplete path.
Fallback to shortcut for flying units if Detour returned an incomplete path. This is needed when a flying unit should fly to the floor below to reach the target, but since Recastnavigation doesn't support "jumping down" the unit would not find a path to the target.
2019-04-12 23:23:31 +02:00
Jeremy 9fcbd8f15d Core/Movement: Fix some undermap issues with random movement/fear/blink (#22937)
* Core/Movement:
- Only move to point if there is a path that is not a shortcut (which will make the unit move through terrain)
- Added new function to check if there is a vmap floor without search distance
- Units that can fly, are underground but far above the vmap floor will stay underground (bronze drakes in tanaris)
- Don't remove PATHFIND_SHORTCUT from path type in some cases

* Core/Object: Ignore UpdateAllowedPositionZ for flying units.

- This will make flying units go through mountains instead of going to the top and back to the bottom to reach you.

* Core/Object: Revert some changes and let MovePositionToFirstCollision deal with a position without ground

* Missing groundZ change for objects on transport

* use CanFly instead of IsFlying
2019-04-07 20:15:40 +02:00
jackpoz 696039cfed Core/MMaps: MMaps logs cleanup
Move MMaps related logs from "maps" category to "maps.mmaps".
Remove newlines in logs, the log system already takes care of newlines.
2019-03-03 16:54:19 +01:00
jackpoz c602220e02 Core/MMaps: Fix infinite loop in Detour
Fix another infinite loop in Detour caused by degenerated triangles.
Check the result of some previously ignored Detour calls.
Update recastnavigation to 3a619d773deb7e3a15ee215217c825995fe71312 and apply some more custom changes
2019-03-02 19:53:46 +01:00
Shauren 7b561373a8 Tools/mmaps_generator: Give land priority during area merges over liquids
Closes #21700

(cherry picked from commit edb2b16f54)
2019-02-23 22:00:05 +01:00
jackpoz c8ec2dd95d Core/MMaps: Fix infinite loop in Detour
Fix an infinite loop in Detour happening in Dalaran Sewers.
This is more of an emergency patch until we figure out why dtNodes have a circular reference (A -> B -> C -> A) happening quite often in this place
2019-02-06 19:32:31 +01:00
Treeston fcfcb0eb6f Happy New Year, folks. It's 2019! 2019-01-01 15:45:25 +01:00
Shauren d9a2177e9c Core/Movement: Removed unneccessary z position adjustment
Closes #21872
2018-05-04 15:36:14 +02:00
Shauren b9c6bbb51d Core/Maps: Adjusted logic in GetFullTerrainStatusForPosition to closer match what the client does regarding being inside WMOs
Closes #21625
Closes #21624
Closes #21516
2018-04-07 21:36:15 +02:00
Treeston 2a84562dc8 Core/Movement: Replace old TargetedMovementGenerator into ChaseMovementGenerator and FollowMovementGenerator, full rewrite for both.
- Chase to angle is now functional. Pets use this to chase behind the target. Closes #19925.
- Chase to arbitrary range interval works. Not used anywhere, but you can technically make hunter-like mobs.
- Pets now follow the hunter cleanly and without stutter stepping. Also fix some other things. Closes #8924.
2018-04-06 18:09:55 +02:00
tkrokli f6b6f57a6d Update copyright note for 2018
Best wishes for the new year.
2018-01-01 01:55:29 +01:00
Jeremy e42903ec16 Core/Entities: Fix some weird movement due to los issues (#21125)
* Core/Entities: Fix some weird movement due to los issues
- Made LoS check use collisionHeight instead of midsection. Value was too low.
- Gnomes will now have a breath bar more quickly than for example a tauren.
- Changes have been made to checking for ground z as well, some tweeking might be needed but removed most of the scattered +2.0f/+0.5f/we
* Add 0.05f to isInAir check in Creature::UpdateMovementFlags
2017-12-29 22:32:07 +01:00
ariel- 85a7d5ce9a Core: ported headers cleanup from master branch 2017-06-19 23:20:06 -03:00
Treeston f6c849729b [3.3.5] Get zone/area IDs from vmap data in the liquid update (#19840)
* Add new method Map::getFullVMapDataForPosition to get area info and liquid info in a single vmap lookup
* Use this lookup in Map:: relocation methods to update m_areaId and m_zoneId fields on WorldObject
* Adjust GetZoneId/GetAreaId on WorldObject to always return these cached fields
* Clean up liquid state handling on Unit and Player
* Hand floor's Z coord up through GetFullTerrainStatusForPosition, use it to update a new field in WorldObject, and use that to feed a new GetFloorZ call on WorldObject.

Closes #16489
2017-06-08 00:25:06 +02:00
Shauren e0cc650ea9 And another typo fix 2016-07-06 10:29:33 +02:00
Aokromes fda9f1a136 Core/Mmaps: Charge ignoring z position of target (#17516)
* Core/Mmaps: Charge ignoring z position of target

By cemak closes #15011
2016-07-06 10:23:12 +02:00
Duarte Duarte 3ae1016082 Implement real time statistic visualization (#16956)
Docs at https://trinitycore.atlassian.net/wiki/display/tc/Monitoring+a+TrinityCore+server

* Common/Graphs: Initial proof of concept

* Move influx db code to its own class

* Reuse the same socket

* Allow to log values of different categories

* Allow to log events

* Pass the timestamp to influxdb

* Send events in batches

* Send data async

* Log server shutdown.
Fix memory leak.

* Allow to enable/disable Stats in the settings and at runtime

* Read interval between each batch send from config

* Add InfluxDB connection info to configs

* Move each event category to its own table

* Log pathfinding queries

* Move categories table initialization to constructor using enum as key to avoid assigning the table name to the wrong enum value

* Log player login/logout events.
Pass the hostname correctly in the HTTP request.

* Fix linux build

* Handle "Connection: close" HTTP header, reconnecting on next scheduled send.
Disable StatsLogger if connection fails, logging the error.

* Add an enum for categories of logged values, it's still possible to pass a string instead of the enum.

* Don't log the whole batchedData when InfluxDB returns an error, it's too long and unreadable on console.

* Allow to call a function at a specified interval in thread-safe World::Update() context to log data like player count.

* Log map tile load/unload

* Core/StatsLogger: Allow logging more value types other than ints

https://docs.influxdata.com/influxdb/v0.10/write_protocols/write_syntax/

* Fix a typo in string escape of StatsLogger

* Yet more fixes to the escaping in FormatInfluxDBValue

* DB/Gameobject: Fix respawn time of few Quest GameObjects

By Tauriella, closes #16701

* DB/Misc: Fix some engrish

By tkrokli closes #16648

* Tools/MMaps: Add format library linking to mmaps_generator

(Very) partial cherry pick of ed75b0649a

* Core/StatsLogger: Simplify code

Convert values and categories arrays to maps initialized in-place
Remove constructor and destructor

* Core/StatsLogger: Add realm name to the event and value tags

* Log amount of processed packet of each session

* Apply recent singleton changes to sStatsLogger too

* Fix influxdb data format if no realm name is present

* Remove unneeded newlines from request body, fixes response 400 from InfluxDB 0.10

* Rename Reporting folder to Metric

* Rename StatsLogger to Metric

* Rename InfluxDB configs to Metric

* Add Grafana dashboards

* Add a random annoying macro

* Move string formatting to Metric::SendBatch(), reducing performance footprint of Metric::LogEvent() and Metric::LogValue()

* Update grafana graphs refresing tags on load and showing now-15m data, refreshing every minute. These settings can be modified in grafana.

* Rename MetricData fields

* Contrib/Grafana: Rename dashboard files

* Contrib/Grafana: Replace hardcoded Windows/Ubuntu realm names by the default, Trinity

* Config/Worldserver: Add missing section to the index

* Contrib/Grafana: Add singlestat panels with current online players, update diff averages (1 min, 5 mins and 15 mins)

http://i.imgur.com/Zi8lfvS.png

* Core/Metric: Replace the enums MetricEventCategory and MetricValueCategory by strings

For the sake of simplicity and less recompile time when adding new metrics, similar to how TC_LOG_* works

* Contrib/Grafana: Display the current number of online players and not its average

Closes #15075
2016-06-04 11:23:29 +01:00
pete318 dcb7082277 Map local guids 6.x -> 3.3.35:
Implemented:
  https://github.com/TrinityCore/TrinityCore/commit/ca83e14f8b141fab0a13e08f48fca6c1ace0c4c7
  https://github.com/TrinityCore/TrinityCore/commit/ee1c1b97be4492ecabe8b15ea6323fc37e4eaa8c
  https://github.com/TrinityCore/TrinityCore/commit/18e4ab6911468b829b0fc768e532a770263c3717
  https://github.com/TrinityCore/TrinityCore/commit/bf37446b3c2ed73b4d3aa9e227d3eff5c53b378b
  https://github.com/TrinityCore/TrinityCore/commit/cb854a2b7bb7bd96cf9c4d1daf3789f797bf4db8

* This adds separate (per map) guid sequences depending on object type
* Ported map object container from cmangos/mangos-wotlk@a2d396e
* Added type container visitor for TypeUnorderedMapContainer
* Implemented helper function to erase unique pairs from multimap containers
* Moved object storage of all objects except players and transports to map level
* Added containers linking database spawn id with creature/gameobject in world
* Renamed DBTableGuid to spawnId
* Added a separate spawn id sequence generator for creatures and gameobjects - this will be used in db tables
* Moved building SMSG_UPDATE_OBJECT - updatefields changes broadcast to map update
* Added new function to return but not increment guid
* Adjusted .debug loadcells to show low guid in map before/after load
* Added debug messages for creature spawn/destroy, for map guid debugging
* Store all Gameobjects and Creatures added to OutdoorPvP, so the callback script can be removed when OutdoorPvP instance is destroyed.
2015-09-22 21:33:57 +02:00
Shauren b4adf3f5dd Core/Misc: Fixing warnings detected by Visual Studio 2015 compiler
(cherry picked from commit a22e4e121a)

Conflicts:
	cmake/compiler/msvc/settings.cmake
	src/server/game/DataStores/DBCStores.cpp
	src/server/game/Entities/GameObject/GameObject.cpp
	src/server/game/Entities/Object/Object.cpp
	src/server/game/Entities/Object/Object.h
	src/server/game/Entities/Pet/Pet.cpp
	src/server/game/Entities/Player/Player.cpp
	src/server/game/Entities/Unit/Unit.cpp
	src/server/game/Garrison/Garrison.cpp
	src/server/game/Garrison/GarrisonMgr.cpp
	src/server/game/Globals/ObjectMgr.cpp
	src/server/game/Globals/ObjectMgr.h
	src/server/game/Guilds/GuildMgr.cpp
	src/server/game/Handlers/CharacterHandler.cpp
	src/server/game/Handlers/QueryHandler.cpp
	src/server/game/Handlers/QuestHandler.cpp
	src/server/game/Handlers/SpellHandler.cpp
	src/server/game/Server/Packets/ChannelPackets.h
	src/server/game/Server/Packets/PartyPackets.cpp
	src/server/game/Server/WorldSession.h
	src/server/game/Spells/Spell.cpp
	src/server/game/Spells/SpellInfo.cpp
	src/server/game/Spells/SpellScript.cpp
	src/server/scripts/Commands/cs_list.cpp
2015-07-24 11:51:48 +01:00
jackpoz e5258f92c8 Core/Spells: Normalize Z for last point in a charge path
Normalize the new point that 124398feef adds to a charge path.
2015-07-05 11:49:05 +02:00
jackpoz dfa556aaa2 Core/Dependencies: Update recast
Update recast to https://github.com/memononen/recastnavigation/commit/1dd5cf1883d61e723fef3d4957cf758c50e7a52b
Fix 2 warnings.

These changes have no effect on MMAPs and it's not needed to re-extact them.
2015-06-28 21:20:01 +02:00
Shauren 67f9d916cb Build: Fixed game & collision depending on each other for linking 2014-10-09 23:01:31 +02:00
Shauren 7532864264 Buildsystem/MSVC: Warning fixes
C4800 'type' : forcing value to bool 'true' or 'false' (performance warning)
C4127 conditional expression is constant
2014-07-17 15:42:57 +02:00
Subv dfdc19f3bc Merge branch master into boost
Conflicts:
               BattlegroundMgr.h
2014-07-13 16:52:38 -05:00
Trisjdc 124398feef Core/Spells: Improve charge path logic, get a point to the target and then reduce it by the necessary distance 2014-07-04 22:22:28 +01:00
jackpoz d5d2805771 Core/MMAPs: Replace an assert with error log
Replace an assert in PathGenerator::BuildPolyPath() about invalid poly reference with an error log.
Fixes #11493 .
2014-02-27 21:03:57 +01:00
jackpoz 272009ebee Core/MMAPs: Add support for raycast
Add an optional parameter "straightLine" to PathGenerator::CalculatePath() which will use raycast instead of path finding and will return only complete path from start to end position.
Implement this new type of path in SPELL_EFFECT_CHARGE , fixing strange behaviors when using Charge with mmaps enabled.
2014-02-24 21:01:50 +01:00
jackpoz f7bc86a17c Core/MMAPs: Update recast
Update recast from https://github.com/memononen/recastnavigation/commit/1be9de72d87dcfdecf6bea30f5461745f7d7afe6 to https://github.com/memononen/recastnavigation/commit/740a7ba51600a3c87ce5667ae276a38284a1ce75 .
This differs from https://github.com/TrinityCore/TrinityCore/commit/aa645683b8b25bfb35cb977678daf5c56c1531e6 because it includes a fix https://github.com/memononen/recastnavigation/commit/77ebf643531c90ea712b496e23c48f0b0671f43d which correctly extract tile connections when using rcMergePolyMeshes(), used by mmaps_generator.
MMAPs version is now set to 5.

Re-extract MMAPs using mmaps_generator , any old extracted MMAPs will not work.
2014-02-23 12:39:16 +01:00
jackpoz 006d72a828 Core/MMAPS: Fix invisible wall issue in MMAPS.
Fix invisible wall issues in MMAPS caused by tile connections not being extracted correctly.
This reverts aa645683b8 and restores an old version of recastnavigation, most likely https://github.com/memononen/recastnavigation/commit/1be9de72d87dcfdecf6bea30f5461745f7d7afe6 .

Re-extracting MMAPS is required.
2014-02-13 22:19:56 +01:00
jackpoz 04cc51a6cf Core/Misc: Fix some static analysis issues
Fix some static analysis issues, mostly false positive about fields not initialized in the constructor. It's good practice anyway to always initialize them.
2013-12-01 16:19:30 +01:00
Spp 94e2b9332a Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger names are case-sensitive) 2013-11-08 10:50:51 +01:00
jackpoz 6f9851ec13 Core/PathGenerator: Fix conditional jump on uninitialized value
Fix conditional jump on uninitialized value in PathGenerator::GetNavTerrain() by checking the result of getLiquidStatus() before accessing the LiquidData, uninitialized in case there's no water at all.

Valgrind log:
 Conditional jump or move depends on uninitialised value(s)
  at : PathGenerator::GetNavTerrain(float, float, float) (PathGenerator.cpp:553)
  by : PathGenerator::UpdateFilter() (PathGenerator.cpp:542)
  by : PathGenerator::CreateFilter() (PathGenerator.cpp:530)
  by : PathGenerator::PathGenerator(Unit const*) (PathGenerator.cpp:46)
  by : Spell::Spell(Unit*, SpellInfo const*, TriggerCastFlags, unsigned long, bool) (Spell.cpp:493)
  by : Unit::CastSpell(SpellCastTargets const&, SpellInfo const*, CustomSpellValues const*, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:846)
  by : Unit::CastSpell(Unit*, SpellInfo const*, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:882)
  by : Unit::CastSpell(Unit*, unsigned int, TriggerCastFlags, Item*, AuraEffect const*, unsigned long) (Unit.cpp:870)
  by : Unit::CastSpell(Unit*, unsigned int, bool, Item*, AuraEffect const*, unsigned long) (Unit.cpp:858)
  by : Player::SendInitialPacketsAfterAddToMap() (Player.cpp:22580)
  by : WorldSession::HandleMoveWorldportAckOpcode() (MovementHandler.cpp:121)
  by : WorldSession::HandleMoveWorldportAckOpcode(WorldPacket&) (MovementHandler.cpp:37)
2013-09-21 10:58:21 +02:00
kaelima aa645683b8 Core/MMAPS: Update recastnavigation!
* Complete changelog can be found at http://code.google.com/p/recastnavigation/
* Adjusted a few config values

Important:
* New mmaps extraction is required
* Folder size will be increased
2013-06-17 05:11:56 +02:00
Malcrom 66978cfc3b Core: Some function renaming. 2013-06-11 19:54:27 -02:30
Spp 00c1168897 Core/Misc: Remove trailing whitespace, compile warnings and minor cosmetic changes 2013-05-21 08:37:28 +02:00
Spp d1677b2db0 Core/Logging: Performance-related tweaks to logging system
All sLog->out* functions (except outCommand atm) are replaced with TC_LOG_* macros.
    Memleak fix
2013-05-13 15:07:36 +02:00
Spp 243c325ca4 Core: Declare some functions const and remove use of "using" directive in a couple of files 2013-05-13 15:04:05 +02:00
Nefarion 49fd11ab5a First step of comment style refactoring to doxygen-style. 2013-03-08 21:55:37 +01:00
Nay 6fc17c6b1e Core: Fix compile warnings 2013-01-22 19:34:27 +00:00
kaelima 677ee02b8e Core/Movement: MovementGenerator fixes.
- vmap height search in FleeingMovementGenerator and ConfusedMovementGenerator (until we can search for a nearby position properly) Should solve #7704, needs testing
- Removed some unused code in CalculatePath and TargetedMovementGenerator. Ty faramir118
- Allow players to charge through slime and lava liquids. Closes #7967
2012-11-07 16:42:22 +01:00
Nay 4c3266c7af Tools&Core: Whitespace cleanup
No one likes whitespace, right?
2012-09-30 15:52:10 +01:00
Subv 5c9e917e5e Core/MMaps: Removed an incorrect call to GetHeight
Tools/MeshExtractor: Fixed a crash caused by calling fclose in a NULL stream
2012-09-29 16:19:33 -05:00
Subv 8966347a41 Core/MMaps: Added a little workaround to prevent the crash.
ref issue #7631
2012-09-09 15:14:02 -05:00
kaelima 2e80503283 Typo 2012-09-07 12:54:54 +02:00
kaelima a2d533752c Core/MMaps: Add several safety checks to confirm a valid path generation.
- Address some issues in TargetMovementGenerator. Thanks Chevron
2012-09-07 04:21:11 +02:00
Venugh e7c0d8bef0 Core/MMaps: Applied Trinity Codestyle to PathGenerator. 2012-09-05 23:47:02 +02:00
Subv 593f08609f Core/Mmaps: Fixed a mistake in BuildPolyPath which could cause swimming creatures to bug in the navmesh generation. 2012-09-05 15:32:35 -05:00