mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
[10165] New collission system (vmap) implementation
Important: * You have to re-extract and assemble vmaps * Update your config file, new option 'vmap.enableIndoorCheck' added New features: * Include WMO+DBC area information for correct subarea identification and indoor check * Support for WMO liquid (fishing/swimming in cities, instances and oterh WMO based environments) Technical changes: * New Bounding Interval Hierarchy (BIH) data structure for better performance * Referenced model data for reduced memory usage, needs more files, but reduces overall file size from ~1.9GB to ~550MB Additional Authors: arrai (DBC handling and indoor detection) faramir118 (windows support and bug investigation) And of course thanks Vladimir for a lot of patience and support!
This commit is contained in:
parent
c2bcfd0f18
commit
5e89098a61
57 changed files with 3472 additions and 5694 deletions
|
|
@ -46,9 +46,9 @@
|
|||
#include "BattleGround.h"
|
||||
#include "BattleGroundEY.h"
|
||||
#include "BattleGroundWS.h"
|
||||
#include "VMapFactory.h"
|
||||
#include "Language.h"
|
||||
#include "SocialMgr.h"
|
||||
#include "VMapFactory.h"
|
||||
#include "Util.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "ScriptCalls.h"
|
||||
|
|
@ -7505,7 +7505,8 @@ void Spell::EffectTransmitted(SpellEffectIndex eff_idx)
|
|||
|
||||
if(goinfo->type==GAMEOBJECT_TYPE_FISHINGNODE)
|
||||
{
|
||||
if ( !cMap->IsInWater(fx, fy, fz-0.5f)) // Hack to prevent fishing bobber from failing to land on fishing hole
|
||||
GridMapLiquidData liqData;
|
||||
if ( !cMap->IsInWater(fx, fy, fz + 1.f/* -0.5f */, &liqData)) // Hack to prevent fishing bobber from failing to land on fishing hole
|
||||
{ // but this is not proper, we really need to ignore not materialized objects
|
||||
SendCastResult(SPELL_FAILED_NOT_HERE);
|
||||
SendChannelUpdate(0);
|
||||
|
|
@ -7513,7 +7514,8 @@ void Spell::EffectTransmitted(SpellEffectIndex eff_idx)
|
|||
}
|
||||
|
||||
// replace by water level in this case
|
||||
fz = cMap->GetWaterLevel(fx, fy);
|
||||
//fz = cMap->GetWaterLevel(fx, fy);
|
||||
fz = liqData.level;
|
||||
}
|
||||
// if gameobject is summoning object, it should be spawned right on caster's position
|
||||
else if(goinfo->type==GAMEOBJECT_TYPE_SUMMONING_RITUAL)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue