[svn] Added a function for WorldObjects to summon GameObjects. Original patch provided by streetrat. Please refer to the patch thread for usage instructions.
--HG-- branch : trunk
This commit is contained in:
@@ -494,6 +494,7 @@ class TRINITY_DLL_SPEC GameObject : public WorldObject
|
||||
(m_respawnTime == 0 && m_spawnedByDefault);
|
||||
}
|
||||
bool isSpawnedByDefault() const { return m_spawnedByDefault; }
|
||||
void SetSpawnedByDefault(bool b) { m_spawnedByDefault = b; }
|
||||
uint32 GetRespawnDelay() const { return m_respawnDelayTime; }
|
||||
void Refresh();
|
||||
void Delete();
|
||||
|
||||
@@ -1435,6 +1435,29 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa
|
||||
return pCreature;
|
||||
}
|
||||
|
||||
GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
|
||||
{
|
||||
if(!IsInWorld())
|
||||
return NULL;
|
||||
Map * map = GetMap();
|
||||
if(!map)
|
||||
return NULL;
|
||||
GameObjectInfo const* goinfo = objmgr.GetGameObjectInfo(entry);
|
||||
if(!goinfo)
|
||||
{
|
||||
sLog.outErrorDb("Gameobject template %u not found in database!", entry);
|
||||
return NULL;
|
||||
}
|
||||
GameObject *go = new GameObject();
|
||||
if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),entry,map,x,y,z,ang,rotation0,rotation1,rotation2,rotation3,100,1))
|
||||
return NULL;
|
||||
go->SetRespawnTime(respawnTime);
|
||||
go->SetSpawnedByDefault(false); // do not save respawn time
|
||||
map->Add(go);
|
||||
|
||||
return go;
|
||||
}
|
||||
|
||||
void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float absAngle ) const
|
||||
{
|
||||
x = GetPositionX() + (GetObjectSize() + distance2d) * cos(absAngle);
|
||||
|
||||
+2
-1
@@ -91,6 +91,7 @@ class Player;
|
||||
class Map;
|
||||
class UpdateMask;
|
||||
class InstanceData;
|
||||
class GameObject;
|
||||
|
||||
typedef HM_NAMESPACE::hash_map<Player*, UpdateData> UpdateDataMapType;
|
||||
|
||||
@@ -445,7 +446,7 @@ class TRINITY_DLL_SPEC WorldObject : public Object
|
||||
Map * GetMap() const;
|
||||
Map const* GetBaseMap() const;
|
||||
Creature* SummonCreature(uint32 id, float x, float y, float z, float ang,TempSummonType spwtype,uint32 despwtime);
|
||||
|
||||
GameObject* SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime);
|
||||
protected:
|
||||
explicit WorldObject();
|
||||
std::string m_name;
|
||||
|
||||
Reference in New Issue
Block a user