[svn] Add Unit::GetObjectInWorld function to get object by guid without providing reference.

Small change in SummonGameObject.
Fix a bug that player can not click summoned najentus spine (must let target summon gameobject).

--HG--
branch : trunk
This commit is contained in:
megamage
2008-10-18 19:59:34 -05:00
parent da17b0fd41
commit e4b701caba
3 changed files with 10 additions and 3 deletions

View File

@@ -216,7 +216,8 @@ struct TRINITY_DLL_DECL boss_najentusAI : public ScriptedAI
m_creature->CastSpell(target, SPELL_IMPALING_SPINE, true);
m_creature->SetInFront(m_creature->getVictim());
SpineTargetGUID = target->GetGUID();
m_creature->SummonGameObject(GOBJECT_SPINE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30);
//must let target summon, otherwise you cannot click the spine
target->SummonGameObject(GOBJECT_SPINE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), m_creature->GetOrientation(), 0, 0, 0, 0, 30);
switch(rand()%2)
{

View File

@@ -1452,8 +1452,10 @@ GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float
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
go->SetOwnerGUID(GetGUID());
if(GetTypeId()==TYPEID_PLAYER || GetTypeId()==TYPEID_UNIT) //not sure how to handle this
((Unit*)this)->AddGameObject(go);
else
go->SetSpawnedByDefault(false);
map->Add(go);
return go;

View File

@@ -1218,6 +1218,10 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); }
void removeFollower(FollowerReference* /*pRef*/ ) { /* nothing to do yet */ }
static Unit* GetUnit(WorldObject& object, uint64 guid);
template<class T> static T* GetObjectInWorld(uint64 guid, T* /*fake*/)
{
return ObjectAccessor::GetObjectInWorld(uint64 guid, T* /*fake*/)
}
MotionMaster* GetMotionMaster() { return &i_motionMaster; }