public static void UpdateSpawnable <ULevelObject, UActor, UModel> ( ULevelObject current, Spawnable <UActor, UModel> spawnable, LevelObject <UActor, UModel> .CreateModelDelegate CreateModel ) where ULevelObject : LevelObject <UActor, UModel>, new() where UActor : MonoBehaviour, IEntityInitialisable <UModel>, ISpawnTrackable where UModel : class { if (current != null) { if (spawnable.Get == null) { spawnable.Initialise(CreateModel()); } current.SetActor(spawnable.Get); current.UpdateActor(); } else { spawnable.Recycle(); } }