Files
alternativa3d-archive/Alternativa3D6/6.0/alternativa/engine3d/sorting/SpriteDistancePrimitive.as
Pyogenics ecf60d961b Add A3D6
2024-09-28 17:40:49 +01:00

42 lines
1.2 KiB
ActionScript

package alternativa.engine3d.sorting {
import alternativa.engine3d.*;
import alternativa.engine3d.core.Sprite3D;
use namespace alternativa3d;
public class SpriteDistancePrimitive extends DistancePrimitive {
// Ссылка на спрайт
alternativa3d var sprite:Sprite3D;
// Хранилище неиспользуемых примитивов
static private var collector:Array = new Array();
// Примитивы на отложенное удаление
static private var deferred:Array = new Array();
static alternativa3d function create():SpriteDistancePrimitive {
var primitive:SpriteDistancePrimitive;
if ((primitive = collector.pop()) == null) {
// Если коллектор пуст, создаём новый примитив
return new SpriteDistancePrimitive();
}
return primitive;
}
static alternativa3d function defer(primitive:SpriteDistancePrimitive):void {
deferred.push(primitive);
}
static alternativa3d function destroyDeferred():void {
var primitive:SpriteDistancePrimitive;
while ((primitive = deferred.pop()) != null) {
primitive.sprite = null;
primitive.node = null;
collector.push(primitive);
}
}
}
}