Core/Scenes: Implemented spell created SceneObjects
Port From (https://github.com/TrinityCore/TrinityCore/commit/d7302ffd1499433fef2cc4e824ae9443c3d2c79f)
This commit is contained in:
@@ -292,6 +292,7 @@ namespace Game.Maps
|
||||
visitor.Visit(_container.dynamicObjects);
|
||||
visitor.Visit(_container.corpses);
|
||||
visitor.Visit(_container.areaTriggers);
|
||||
visitor.Visit(_container.sceneObjects);
|
||||
visitor.Visit(_container.conversations);
|
||||
visitor.Visit(_container.worldObjects);
|
||||
break;
|
||||
@@ -349,7 +350,7 @@ namespace Game.Maps
|
||||
MultiTypeContainer _objects;
|
||||
|
||||
/// <summary>
|
||||
/// Holds all Grid objects - GameObjects, Creatures(except pets), DynamicObject, Corpse(Bones), AreaTrigger, Conversation
|
||||
/// Holds all Grid objects - GameObjects, Creatures(except pets), DynamicObject, Corpse(Bones), AreaTrigger, Conversation, SceneObject
|
||||
/// </summary>
|
||||
MultiTypeContainer _container;
|
||||
}
|
||||
@@ -379,6 +380,9 @@ namespace Game.Maps
|
||||
case TypeId.AreaTrigger:
|
||||
areaTriggers.Add((AreaTrigger)obj);
|
||||
break;
|
||||
case TypeId.SceneObject:
|
||||
sceneObjects.Add((SceneObject)obj);
|
||||
break;
|
||||
case TypeId.Conversation:
|
||||
conversations.Add((Conversation)obj);
|
||||
break;
|
||||
@@ -408,6 +412,9 @@ namespace Game.Maps
|
||||
case TypeId.AreaTrigger:
|
||||
areaTriggers.Remove((AreaTrigger)obj);
|
||||
break;
|
||||
case TypeId.SceneObject:
|
||||
sceneObjects.Remove((SceneObject)obj);
|
||||
break;
|
||||
case TypeId.Conversation:
|
||||
conversations.Remove((Conversation)obj);
|
||||
break;
|
||||
@@ -447,6 +454,7 @@ namespace Game.Maps
|
||||
public List<Corpse> corpses = new();
|
||||
public List<DynamicObject> dynamicObjects = new();
|
||||
public List<AreaTrigger> areaTriggers = new();
|
||||
public List<SceneObject> sceneObjects = new();
|
||||
public List<Conversation> conversations = new();
|
||||
public List<GameObject> gameObjects = new();
|
||||
public List<WorldObject> worldObjects = new();
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace Game.Maps
|
||||
public virtual void Visit(IList<WorldObject> objs) { }
|
||||
public virtual void Visit(IList<Creature> objs) { }
|
||||
public virtual void Visit(IList<AreaTrigger> objs) { }
|
||||
public virtual void Visit(IList<SceneObject> objs) { }
|
||||
public virtual void Visit(IList<Conversation> objs) { }
|
||||
public virtual void Visit(IList<GameObject> objs) { }
|
||||
public virtual void Visit(IList<DynamicObject> objs) { }
|
||||
@@ -66,6 +67,7 @@ namespace Game.Maps
|
||||
public void Visit(IList<WorldObject> collection) { _notifier.Visit(collection); }
|
||||
public void Visit(IList<Creature> creatures) { _notifier.Visit(creatures); }
|
||||
public void Visit(IList<AreaTrigger> areatriggers) { _notifier.Visit(areatriggers); }
|
||||
public void Visit(IList<SceneObject> sceneObjects) { _notifier.Visit(sceneObjects); }
|
||||
public void Visit(IList<Conversation> conversations) { _notifier.Visit(conversations); }
|
||||
public void Visit(IList<GameObject> gameobjects) { _notifier.Visit(gameobjects); }
|
||||
public void Visit(IList<DynamicObject> dynamicobjects) { _notifier.Visit(dynamicobjects); }
|
||||
@@ -767,6 +769,19 @@ namespace Game.Maps
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<SceneObject> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
|
||||
return;
|
||||
|
||||
for (var i = 0; i < objs.Count; ++i)
|
||||
{
|
||||
SceneObject sceneObject = objs[i];
|
||||
if (sceneObject.IsInPhase(_searcher))
|
||||
i_do.Invoke(sceneObject);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<Conversation> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
|
||||
@@ -1129,6 +1144,29 @@ namespace Game.Maps
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<SceneObject> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
|
||||
return;
|
||||
|
||||
// already found
|
||||
if (i_object)
|
||||
return;
|
||||
|
||||
for (var i = 0; i < objs.Count; ++i)
|
||||
{
|
||||
SceneObject sceneObject = objs[i];
|
||||
if (!sceneObject.IsInPhase(_searcher))
|
||||
continue;
|
||||
|
||||
if (i_check.Invoke(sceneObject))
|
||||
{
|
||||
i_object = sceneObject;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<Conversation> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
|
||||
@@ -1264,6 +1302,22 @@ namespace Game.Maps
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<SceneObject> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
|
||||
return;
|
||||
|
||||
for (var i = 0; i < objs.Count; ++i)
|
||||
{
|
||||
SceneObject sceneObject = objs[i];
|
||||
if (!sceneObject.IsInPhase(_searcher))
|
||||
continue;
|
||||
|
||||
if (i_check.Invoke(sceneObject))
|
||||
i_object = sceneObject;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<Conversation> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
|
||||
@@ -1375,6 +1429,19 @@ namespace Game.Maps
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<SceneObject> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
|
||||
return;
|
||||
|
||||
for (var i = 0; i < objs.Count; ++i)
|
||||
{
|
||||
SceneObject sceneObject = objs[i];
|
||||
if (i_check.Invoke(sceneObject))
|
||||
i_objects.Add(sceneObject);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Visit(IList<Conversation> objs)
|
||||
{
|
||||
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
|
||||
|
||||
@@ -21,7 +21,6 @@ using Framework.Dynamic;
|
||||
using Framework.GameMath;
|
||||
using Game.BattleGrounds;
|
||||
using Game.Collision;
|
||||
using Game.Combat;
|
||||
using Game.DataStorage;
|
||||
using Game.Entities;
|
||||
using Game.Groups;
|
||||
@@ -3824,14 +3823,21 @@ namespace Game.Maps
|
||||
return (AreaTrigger)_objectsStore.LookupByKey(guid);
|
||||
}
|
||||
|
||||
public SceneObject GetSceneObject(ObjectGuid guid)
|
||||
{
|
||||
return _objectsStore.LookupByKey(guid) as SceneObject;
|
||||
}
|
||||
|
||||
public Conversation GetConversation(ObjectGuid guid)
|
||||
{
|
||||
return (Conversation)_objectsStore.LookupByKey(guid);
|
||||
}
|
||||
|
||||
public Player GetPlayer(ObjectGuid guid)
|
||||
{
|
||||
return Global.ObjAccessor.GetPlayer(this, guid);
|
||||
}
|
||||
|
||||
public Corpse GetCorpse(ObjectGuid guid)
|
||||
{
|
||||
if (!guid.IsCorpse())
|
||||
|
||||
Reference in New Issue
Block a user