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

@@ -29,10 +29,9 @@ StaticModel::StaticModel(const SpawnParams& params)
, _vertexColorsDirty(false)
, _vertexColorsCount(0)
, _sortOrder(0)
, Model(this)
{
_drawCategory = SceneRendering::SceneDrawAsync;
Model.Changed.Bind<StaticModel, &StaticModel::OnModelChanged>(this);
Model.Loaded.Bind<StaticModel, &StaticModel::OnModelLoaded>(this);
}
StaticModel::~StaticModel()
@@ -224,7 +223,7 @@ void StaticModel::RemoveVertexColors()
_vertexColorsDirty = false;
}
void StaticModel::OnModelChanged()
void StaticModel::OnAssetChanged(Asset* asset, void* caller)
{
if (_residencyChangedModel)
{
@@ -241,7 +240,7 @@ void StaticModel::OnModelChanged()
GetSceneRendering()->RemoveActor(this, _sceneRenderingKey);
}
void StaticModel::OnModelLoaded()
void StaticModel::OnAssetLoaded(Asset* asset, void* caller)
{
Entries.SetupIfInvalid(Model);
UpdateBounds();
@@ -316,6 +315,10 @@ void StaticModel::FlushVertexColors()
RenderContext::GPULocker.Unlock();
}
void StaticModel::OnAssetUnloaded(Asset* asset, void* caller)
{
}
bool StaticModel::HasContentLoaded() const
{
return (Model == nullptr || Model->IsLoaded()) && Entries.HasContentLoaded();