Core/Objects: Added ToWorldObject and ToItem
Port From (https://github.com/TrinityCore/TrinityCore/commit/6f6af6a1a1508508d0e42b90f0acf4f363cf91bd)
This commit is contained in:
@@ -59,8 +59,9 @@ namespace Game.Entities
|
||||
if (IsInWorld)
|
||||
{
|
||||
Log.outFatal(LogFilter.Misc, "WorldObject.Dispose() {0} deleted but still in world!!", GetGUID().ToString());
|
||||
if (IsTypeMask(TypeMask.Item))
|
||||
Log.outFatal(LogFilter.Misc, "Item slot {0}", ((Item)this).GetSlot());
|
||||
Item item = ToItem();
|
||||
if (item != null)
|
||||
Log.outFatal(LogFilter.Misc, "Item slot {0}", item.GetSlot());
|
||||
Cypher.Assert(false);
|
||||
}
|
||||
|
||||
@@ -3016,7 +3017,8 @@ namespace Game.Entities
|
||||
if (!player.HaveAtClient(this))
|
||||
continue;
|
||||
|
||||
if (IsTypeMask(TypeMask.Unit) && (ToUnit().GetCharmerGUID() == player.GetGUID()))// @todo this is for puppet
|
||||
Unit unit = ToUnit();
|
||||
if (unit != null && unit.GetCharmerGUID() == player.GetGUID())// @todo this is for puppet
|
||||
continue;
|
||||
|
||||
DestroyForPlayer(player);
|
||||
@@ -3088,6 +3090,7 @@ namespace Game.Entities
|
||||
public bool IsDestroyedObject() { return _isDestroyedObject; }
|
||||
public void SetDestroyedObject(bool destroyed) { _isDestroyedObject = destroyed; }
|
||||
|
||||
public bool IsWorldObject() { return IsTypeMask(TypeMask.WorldObject); }
|
||||
public bool IsCreature() { return GetTypeId() == TypeId.Unit; }
|
||||
public bool IsPlayer() { return GetTypeId() == TypeId.Player; }
|
||||
public bool IsGameObject() { return GetTypeId() == TypeId.GameObject; }
|
||||
@@ -3097,6 +3100,7 @@ namespace Game.Entities
|
||||
public bool IsAreaTrigger() { return GetTypeId() == TypeId.AreaTrigger; }
|
||||
public bool IsConversation() { return GetTypeId() == TypeId.Conversation; }
|
||||
public bool IsSceneObject() { return GetTypeId() == TypeId.SceneObject; }
|
||||
public bool IsItem() { return GetTypeId() == TypeId.Item; }
|
||||
|
||||
public Creature ToCreature() { return IsCreature() ? (this as Creature) : null; }
|
||||
public Player ToPlayer() { return IsPlayer() ? (this as Player) : null; }
|
||||
@@ -3107,6 +3111,7 @@ namespace Game.Entities
|
||||
public AreaTrigger ToAreaTrigger() { return IsAreaTrigger() ? (this as AreaTrigger) : null; }
|
||||
public Conversation ToConversation() { return IsConversation() ? (this as Conversation) : null; }
|
||||
public SceneObject ToSceneObject() { return IsSceneObject() ? (this as SceneObject) : null; }
|
||||
public Item ToItem() { return IsItem() ? (this as Item) : null; }
|
||||
|
||||
public virtual uint GetLevelForTarget(WorldObject target) { return 1; }
|
||||
|
||||
@@ -3448,7 +3453,12 @@ namespace Game.Entities
|
||||
{
|
||||
float newZ = GetMapHeight(x, y, z);
|
||||
if (newZ > MapConst.InvalidHeight)
|
||||
z = newZ + (IsUnit() ? ToUnit().GetHoverOffset() : 0.0f);
|
||||
{
|
||||
z = newZ;
|
||||
Unit unit = ToUnit();
|
||||
if (unit != null)
|
||||
z += ToUnit().GetHoverOffset();
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateAllowedPositionZ(float x, float y, ref float z)
|
||||
|
||||
Reference in New Issue
Block a user