mirror of
https://github.com/MapMakersAndProgrammers/alternativa3d-archive.git
synced 2025-10-26 01:49:05 -07:00
47 lines
1.3 KiB
ActionScript
47 lines
1.3 KiB
ActionScript
package alternativa.engine3d.sorting {
|
|
|
|
import alternativa.engine3d.*;
|
|
import alternativa.engine3d.core.Face;
|
|
|
|
use namespace alternativa3d;
|
|
|
|
public class FaceBSPPrimitive extends Primitive {
|
|
|
|
// Ссылка на грань
|
|
alternativa3d var face:Face;
|
|
|
|
// Нода
|
|
alternativa3d var node:BSPNode;
|
|
|
|
// Уровень в BSP
|
|
alternativa3d var bspLevel:int;
|
|
|
|
// Хранилище неиспользуемых примитивов
|
|
static private var collector:Array = new Array();
|
|
|
|
// Примитивы на отложенное удаление
|
|
static private var deferred:Array = new Array();
|
|
|
|
static alternativa3d function create():FaceBSPPrimitive {
|
|
var primitive:FaceBSPPrimitive;
|
|
if ((primitive = collector.pop()) == null) {
|
|
// Если коллектор пуст, создаём новый примитив
|
|
return new FaceBSPPrimitive();
|
|
}
|
|
return primitive;
|
|
}
|
|
|
|
static alternativa3d function defer(primitive:FaceBSPPrimitive):void {
|
|
deferred.push(primitive);
|
|
}
|
|
|
|
static alternativa3d function destroyDeferred():void {
|
|
var primitive:FaceBSPPrimitive;
|
|
while ((primitive = deferred.pop()) != null) {
|
|
primitive.face = null;
|
|
primitive.node = null;
|
|
collector.push(primitive);
|
|
}
|
|
}
|
|
}
|
|
} |