Skip to content

Commit e8a9322

Browse files
committed
UPBGE: Encapsulate light update in KX_LightObject.
1 parent 149f33e commit e8a9322

File tree

6 files changed

+15
-10
lines changed

6 files changed

+15
-10
lines changed

source/gameengine/Ketsji/KX_KetsjiEngine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,7 @@ void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene)
846846

847847
for (KX_LightObject *light : lightlist) {
848848
RAS_ILightObject *raslight = light->GetLightData();
849-
raslight->Update();
849+
light->Update();
850850
}
851851

852852
if (m_rasterizer->GetDrawingMode() == RAS_Rasterizer::RAS_TEXTURED) {

source/gameengine/Ketsji/KX_Light.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,11 @@ void KX_LightObject::SetShowShadowFrustum(bool show)
105105
m_showShadowFrustum = show;
106106
}
107107

108+
void KX_LightObject::Update()
109+
{
110+
m_lightobj->Update(NodeGetWorldTransform(), !m_bVisible);
111+
}
112+
108113
void KX_LightObject::UpdateScene(KX_Scene *kxscene)
109114
{
110115
m_lightobj->m_scene = (void *)kxscene;

source/gameengine/Ketsji/KX_Light.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ class KX_LightObject : public KX_GameObject
6767
bool GetShowShadowFrustum() const;
6868
void SetShowShadowFrustum(bool show);
6969

70+
// Update rasterizer light settings.
71+
void Update();
72+
7073
void UpdateScene(KX_Scene *kxscene);
7174
virtual void SetLayer(int layer);
7275

source/gameengine/Rasterizer/RAS_ILightObject.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class RAS_ILightObject
8181
bool m_staticShadow;
8282
bool m_requestShadowUpdate;
8383

84-
virtual ~RAS_ILightObject() {}
84+
virtual ~RAS_ILightObject() = default;
8585
virtual RAS_ILightObject* Clone() = 0;
8686

8787
virtual bool HasShadowBuffer() = 0;
@@ -94,7 +94,7 @@ class RAS_ILightObject
9494
virtual void BindShadowBuffer(RAS_ICanvas *canvas, KX_Camera *cam, mt::mat3x4& camtrans) = 0;
9595
virtual void UnbindShadowBuffer() = 0;
9696
virtual Image *GetTextureImage(short texslot) = 0;
97-
virtual void Update() = 0;
97+
virtual void Update(const mt::mat3x4& trans, bool hide) = 0;
9898
};
9999

100100
#endif /* __RAS_LIGHTOBJECT_H__ */

source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -289,17 +289,14 @@ Image *RAS_OpenGLLight::GetTextureImage(short texslot)
289289
return nullptr;
290290
}
291291

292-
void RAS_OpenGLLight::Update()
292+
void RAS_OpenGLLight::Update(const mt::mat3x4& trans, bool hide)
293293
{
294-
GPULamp *lamp;
295-
KX_LightObject *kxlight = (KX_LightObject *)m_light;
294+
GPULamp *lamp = GetGPULamp();
296295

297-
if ((lamp = GetGPULamp()) != nullptr && kxlight->GetSGNode()) {
296+
if (lamp) {
298297
float obmat[4][4];
299-
const mt::mat3x4 trans = kxlight->NodeGetWorldTransform();
300298
trans.PackFromAffineTransform(obmat);
301299

302-
int hide = kxlight->GetVisible() ? 0 : 1;
303300
GPU_lamp_update(lamp, m_layer, hide, obmat);
304301
GPU_lamp_update_colors(lamp, m_color[0], m_color[1],
305302
m_color[2], m_energy);

source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLLight.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,6 @@ class RAS_OpenGLLight : public RAS_ILightObject
6060
void BindShadowBuffer(RAS_ICanvas *canvas, KX_Camera *cam, mt::mat3x4& camtrans);
6161
void UnbindShadowBuffer();
6262
Image *GetTextureImage(short texslot);
63-
void Update();
63+
void Update(const mt::mat3x4& trans, bool hide);
6464
void SetShadowUpdateState(short state);
6565
};

0 commit comments

Comments
 (0)