aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/GameObject
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-03-23 00:23:30 +0100
committerShauren <shauren.trinity@gmail.com>2014-03-23 00:23:30 +0100
commit550cbcad96435dac087dab367a6d143136b4e71c (patch)
treeb02c989235e909d1cd59291132e25abd9b4d36f9 /src/server/game/Entities/GameObject
parent3a1a55bb0addc0663be1d0fe2beb2918921c2bbb (diff)
Core/Transports: Enabled LoS on transports
Diffstat (limited to 'src/server/game/Entities/GameObject')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp17
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h2
2 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 80171edd715..e58a9be3249 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -148,7 +148,7 @@ void GameObject::AddToWorld()
sObjectAccessor->AddObject(this);
// The state can be changed after GameObject::Create but before GameObject::AddToWorld
- bool toggledState = GetGoType() == GAMEOBJECT_TYPE_CHEST ? getLootState() == GO_READY : GetGoState() == GO_STATE_READY;
+ bool toggledState = GetGoType() == GAMEOBJECT_TYPE_CHEST ? getLootState() == GO_READY : (GetGoState() == GO_STATE_READY || IsTransport());
if (m_model)
GetMap()->InsertGameObjectModel(*m_model);
@@ -2020,7 +2020,7 @@ void GameObject::SetGoState(GOState state)
{
SetByteValue(GAMEOBJECT_BYTES_1, 0, state);
sScriptMgr->OnGameObjectStateChanged(this, state);
- if (m_model)
+ if (m_model && !IsTransport())
{
if (!IsInWorld())
return;
@@ -2239,3 +2239,16 @@ float GameObject::GetInteractionDistance()
return INTERACTION_DISTANCE;
}
}
+
+void GameObject::UpdateModelPosition()
+{
+ if (!m_model)
+ return;
+
+ if (GetMap()->ContainsGameObjectModel(*m_model))
+ {
+ GetMap()->RemoveGameObjectModel(*m_model);
+ m_model->Relocate(*this);
+ GetMap()->InsertGameObjectModel(*m_model);
+ }
+}
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index 84abc391bc6..48db64a3687 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -832,6 +832,8 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
float GetInteractionDistance();
+ void UpdateModelPosition();
+
protected:
bool AIM_Initialize();
void UpdateModel(); // updates model in case displayId were changed