diff options
| author | megamage <none@none.none> | 2011-11-28 14:19:29 -0500 |
|---|---|---|
| committer | megamage <none@none.none> | 2011-11-28 14:19:29 -0500 |
| commit | 1f70fd2851c52d7bbfeb58af8180cf3ad39af290 (patch) | |
| tree | 2bd57bec0e654a21bc9a23b19cb3341e18155fa8 /src/server/game/Entities/DynamicObject | |
| parent | 81fea2d7b51549c340866050f93e3780503112f7 (diff) | |
Delete DynamicObject if AddToMap fails.
Diffstat (limited to 'src/server/game/Entities/DynamicObject')
| -rwxr-xr-x | src/server/game/Entities/DynamicObject/DynamicObject.cpp | 8 | ||||
| -rwxr-xr-x | src/server/game/Entities/DynamicObject/DynamicObject.h | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index 4fc463e6e88..30afd43cf14 100755 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -79,7 +79,7 @@ void DynamicObject::RemoveFromWorld() } } -bool DynamicObject::Create(uint32 guidlow, Unit* caster, uint32 spellId, Position const& pos, float radius, bool active, DynamicObjectType type) +bool DynamicObject::CreateDynamicObject(uint32 guidlow, Unit* caster, uint32 spellId, Position const& pos, float radius, bool active, DynamicObjectType type) { SetMap(caster->GetMap()); Relocate(pos); @@ -106,6 +106,12 @@ bool DynamicObject::Create(uint32 guidlow, Unit* caster, uint32 spellId, Positio SetUInt32Value(DYNAMICOBJECT_CASTTIME, getMSTime()); m_isWorldObject = active; + if (active) + setActive(true); //must before add to map to be put in world container + + if (!GetMap()->AddToMap(this)) + return false; + return true; } diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.h b/src/server/game/Entities/DynamicObject/DynamicObject.h index 419aaf9e83b..c178fe98d14 100755 --- a/src/server/game/Entities/DynamicObject/DynamicObject.h +++ b/src/server/game/Entities/DynamicObject/DynamicObject.h @@ -41,7 +41,7 @@ class DynamicObject : public WorldObject, public GridObject<DynamicObject> void AddToWorld(); void RemoveFromWorld(); - bool Create(uint32 guidlow, Unit* caster, uint32 spellId, Position const& pos, float radius, bool active, DynamicObjectType type); + bool CreateDynamicObject(uint32 guidlow, Unit* caster, uint32 spellId, Position const& pos, float radius, bool active, DynamicObjectType type); void Update(uint32 p_time); void Remove(); void SetDuration(int32 newDuration); |
