Skip to content

Commit 7742f34

Browse files
authored
Fix #1539: Add on(Client)ElementDimensionChange event (#1553)
1 parent fcf4ad3 commit 7742f34

14 files changed

+40
-11
lines changed

Client/mods/deathmatch/logic/CClientEntity.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,20 @@ void CClientEntity::SetRotationDegrees(const CVector& vecDegrees)
593593
SetRotationRadians(vecTemp);
594594
}
595595

596+
void CClientEntity::SetDimension(unsigned short usDimension)
597+
{
598+
if (m_usDimension == usDimension)
599+
return;
600+
601+
unsigned int usOldDimension = m_usDimension;
602+
m_usDimension = usDimension;
603+
604+
CLuaArguments Arguments;
605+
Arguments.PushNumber(usOldDimension);
606+
Arguments.PushNumber(usDimension);
607+
CallEvent("onClientElementDimensionChange", Arguments, true);
608+
}
609+
596610
bool CClientEntity::IsOutOfBounds()
597611
{
598612
CVector vecPosition;

Client/mods/deathmatch/logic/CClientEntity.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ class CClientEntity : public CClientEntityBase
221221
virtual void SetRotationDegrees(const CVector& vecDegrees);
222222

223223
virtual inline unsigned short GetDimension() { return m_usDimension; }
224-
virtual void SetDimension(unsigned short usDimension) { m_usDimension = usDimension; }
224+
virtual void SetDimension(unsigned short usDimension);
225225

226226
virtual void ModelRequestCallback(CModelInfo* pModelInfo){};
227227

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2772,6 +2772,7 @@ void CClientGame::AddBuiltInEvents()
27722772
m_Events.AddEvent("onClientElementStreamOut", "", NULL, false);
27732773
m_Events.AddEvent("onClientElementDestroy", "", NULL, false);
27742774
m_Events.AddEvent("onClientElementModelChange", "oldModel, newModel", nullptr, false);
2775+
m_Events.AddEvent("onClientElementDimensionChange", "oldDimension, newDimension", nullptr, false);
27752776

27762777
// Player events
27772778
m_Events.AddEvent("onClientPlayerJoin", "", NULL, false);

Client/mods/deathmatch/logic/CClientPointLights.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ void CClientPointLights::DoPulse()
5757

5858
void CClientPointLights::SetDimension(unsigned short usDimension)
5959
{
60-
m_usDimension = usDimension;
60+
CClientEntity::SetDimension(usDimension);
6161
RelateDimension(m_pPointLightsManager->GetDimension());
6262
}
6363

6464
void CClientPointLights::RelateDimension(unsigned short usDimension)
6565
{
6666
m_bStreamedIn = (usDimension == m_usDimension);
67-
}
67+
}

Client/mods/deathmatch/logic/CClientRadarArea.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void CClientRadarArea::DoPulse(bool bRender)
109109

110110
void CClientRadarArea::SetDimension(unsigned short usDimension)
111111
{
112-
m_usDimension = usDimension;
112+
CClientEntity::SetDimension(usDimension);
113113
RelateDimension(m_pRadarAreaManager->GetDimension());
114114
}
115115

Client/mods/deathmatch/logic/CClientRadarArea.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class CClientRadarArea : public CClientEntity
4646

4747
float GetAlphaFactor() const { return m_fAlphaFactor; };
4848

49-
void SetDimension(unsigned short usDimension);
49+
void SetDimension(unsigned short usDimension) override;
5050
void RelateDimension(unsigned short usDimension);
5151

5252
protected:

Client/mods/deathmatch/logic/CClientRadarMarker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ void CClientRadarMarker::DestroyMarker()
242242

243243
void CClientRadarMarker::SetDimension(unsigned short usDimension)
244244
{
245-
m_usDimension = usDimension;
245+
CClientEntity::SetDimension(usDimension);
246246
RelateDimension(m_pManager->GetRadarMarkerManager()->GetDimension());
247247
}
248248

Client/mods/deathmatch/logic/CClientRadarMarker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class CClientRadarMarker : public CClientEntity
5151
bool IsVisible() const { return m_bIsVisible; };
5252
void SetVisible(bool bVisible);
5353

54-
void SetDimension(unsigned short usDimension);
54+
void SetDimension(unsigned short usDimension) override;
5555
void RelateDimension(unsigned short usDimension);
5656

5757
short GetOrdering() { return m_sOrdering; }

Client/mods/deathmatch/logic/CClientStreamElement.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ void CClientStreamElement::SetDimension(unsigned short usDimension)
154154
if (m_usDimension != usDimension)
155155
{
156156
// Set the new dimension
157-
m_usDimension = usDimension;
157+
CClientEntity::SetDimension(usDimension);
158158

159159
m_pStreamer->OnElementDimension(this);
160160
}

Client/mods/deathmatch/logic/CClientStreamElement.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class CClientStreamElement : public CClientEntity
4040
unsigned short GetStreamReferences(bool bScript = false);
4141
unsigned long GetTotalStreamReferences() { return m_usStreamReferences + m_usStreamReferencesScript; }
4242
void StreamOutForABit();
43-
void SetDimension(unsigned short usDimension);
43+
void SetDimension(unsigned short usDimension) override;
4444
float GetExpDistance() { return m_fExpDistance; }
4545
virtual CSphere GetWorldBoundingSphere();
4646
float GetDistanceToBoundingBoxSquared(const CVector& vecPosition);

0 commit comments

Comments
 (0)