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

@@ -11,9 +11,8 @@
MeshCollider::MeshCollider(const SpawnParams& params)
: Collider(params)
, CollisionData(this)
{
CollisionData.Changed.Bind<MeshCollider, &MeshCollider::OnCollisionDataChanged>(this);
CollisionData.Loaded.Bind<MeshCollider, &MeshCollider::OnCollisionDataLoaded>(this);
}
void MeshCollider::OnCollisionDataChanged()
@@ -33,8 +32,9 @@ void MeshCollider::OnCollisionDataChanged()
void MeshCollider::OnCollisionDataLoaded()
{
UpdateGeometry();
UpdateBounds();
// Not needed as OnCollisionDataChanged waits for it to be loaded
//UpdateGeometry();
//UpdateBounds();
}
bool MeshCollider::CanAttach(RigidBody* rigidBody) const
@@ -152,3 +152,19 @@ void MeshCollider::GetGeometry(CollisionShape& collision)
else
collision.SetSphere(minSize);
}
void MeshCollider::OnAssetChanged(Asset* asset, void* caller)
{
Collider::OnAssetChanged(asset, caller);
if (caller == &CollisionData)
OnCollisionDataChanged();
}
void MeshCollider::OnAssetLoaded(Asset* asset, void* caller)
{
Collider::OnAssetLoaded(asset, caller);
if (caller == &CollisionData)
OnCollisionDataLoaded();
}