Generalnie nie jest źle, ale:
brak zabezpieczenia przed podaniem n większego niż liczba istniejących instancji
aktywowanie wszystkich instancji danego typu po zakończeniu obliczeń (a nie tylko tych, które poprzednio dezaktywowaliśmy)
Moja wersja algorytmu:
GML
//=================================
// Instance_Nearest( x, y, obj, n )
//=================================
X = argument0;
Y = argument1;
Obj = argument2;
n = argument3;
if ( n > instance_number( Obj )) return noone;
Ids = ds_list_create();
for (i = 0; i < n; i += 1)
{
Id = instance_nearest( X, Y, Obj );
instance_deactivate_object( Id );
ds_list_add( Ids, Id );
}
for (i = 0; i < ds_list_size( Ids ); i += 1) instance_activate_object( ds_list_find_value( Ids, i ) );
ds_list_destroy( Ids );
return Id;