Core/Objects: Added ToWorldObject and ToItem

Port From (https://github.com/TrinityCore/TrinityCore/commit/6f6af6a1a1508508d0e42b90f0acf4f363cf91bd)
This commit is contained in:
hondacrx
2024-03-14 11:26:01 -04:00
parent 4bbf49a17a
commit 9d7a84d3a3
8 changed files with 56 additions and 56 deletions
+14 -4
View File
@@ -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)