Optimize Scene Rendering (cache drawable bounds and layers for culling with less cache misses)
This commit is contained in:
@@ -311,6 +311,8 @@ void ParticleEffect::UpdateBounds()
|
||||
|
||||
_box = bounds;
|
||||
BoundingSphere::FromBox(bounds, _sphere);
|
||||
if (_sceneRenderingKey != -1)
|
||||
GetSceneRendering()->UpdateGeometry(this, _sceneRenderingKey);
|
||||
}
|
||||
|
||||
void ParticleEffect::Sync()
|
||||
@@ -515,6 +517,12 @@ void ParticleEffect::OnDebugDrawSelected()
|
||||
|
||||
#endif
|
||||
|
||||
void ParticleEffect::OnLayerChanged()
|
||||
{
|
||||
if (_sceneRenderingKey != -1)
|
||||
GetSceneRendering()->UpdateGeometry(this, _sceneRenderingKey);
|
||||
}
|
||||
|
||||
void ParticleEffect::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
@@ -691,7 +699,7 @@ void ParticleEffect::EndPlay()
|
||||
void ParticleEffect::OnEnable()
|
||||
{
|
||||
GetScene()->Ticking.Update.AddTick<ParticleEffect, &ParticleEffect::Update>(this);
|
||||
GetSceneRendering()->AddGeometry(this);
|
||||
_sceneRenderingKey = GetSceneRendering()->AddGeometry(this);
|
||||
#if USE_EDITOR
|
||||
GetSceneRendering()->AddViewportIcon(this);
|
||||
GetScene()->Ticking.Update.AddTickExecuteInEditor<ParticleEffect, &ParticleEffect::UpdateExecuteInEditor>(this);
|
||||
@@ -707,7 +715,7 @@ void ParticleEffect::OnDisable()
|
||||
GetScene()->Ticking.Update.RemoveTickExecuteInEditor(this);
|
||||
GetSceneRendering()->RemoveViewportIcon(this);
|
||||
#endif
|
||||
GetSceneRendering()->RemoveGeometry(this);
|
||||
GetSceneRendering()->RemoveGeometry(this, _sceneRenderingKey);
|
||||
GetScene()->Ticking.Update.RemoveTick(this);
|
||||
|
||||
// Base
|
||||
|
||||
Reference in New Issue
Block a user