Optimize asset references to support direct registration to reduce Delegate memory allocations and overhead

This commit is contained in:
Wojtek Figat
2025-06-08 00:58:15 +02:00
parent bffb175a9b
commit 73c30d3d89
26 changed files with 365 additions and 141 deletions

View File

@@ -16,12 +16,10 @@ ParticleEffect::ParticleEffect(const SpawnParams& params)
: Actor(params)
, _lastUpdateFrame(0)
, _lastMinDstSqr(MAX_Real)
, ParticleSystem(this)
{
_box = BoundingBox(_transform.Translation);
BoundingSphere::FromBox(_box, _sphere);
ParticleSystem.Changed.Bind<ParticleEffect, &ParticleEffect::OnParticleSystemModified>(this);
ParticleSystem.Loaded.Bind<ParticleEffect, &ParticleEffect::OnParticleSystemLoaded>(this);
}
void ParticleEffectParameter::Init(ParticleEffect* effect, int32 emitterIndex, int32 paramIndex)
@@ -542,18 +540,22 @@ void ParticleEffect::ApplyModifiedParameters()
}
}
void ParticleEffect::OnParticleSystemModified()
void ParticleEffect::OnAssetChanged(Asset* asset, void* caller)
{
Instance.ClearState();
_parameters.Resize(0);
_parametersVersion = 0;
}
void ParticleEffect::OnParticleSystemLoaded()
void ParticleEffect::OnAssetLoaded(Asset* asset, void* caller)
{
ApplyModifiedParameters();
}
void ParticleEffect::OnAssetUnloaded(Asset* asset, void* caller)
{
}
bool ParticleEffect::HasContentLoaded() const
{
if (ParticleSystem == nullptr)