mirror of
https://github.com/MapMakersAndProgrammers/alternativa3d-archive.git
synced 2025-10-30 08:55:21 -07:00
66 lines
1.8 KiB
ActionScript
66 lines
1.8 KiB
ActionScript
package alternativa.engine3d.display {
|
||
import alternativa.engine3d.*;
|
||
import alternativa.engine3d.core.PolyPrimitive;
|
||
import alternativa.engine3d.materials.SurfaceMaterial;
|
||
|
||
import flash.display.Graphics;
|
||
import flash.display.Sprite;
|
||
|
||
use namespace alternativa3d;
|
||
|
||
/**
|
||
* @private
|
||
* Контейнер, исползуемый материалами для отрисовки примитивов. Каждый примитив BSP-дерева рисуется в своём контейнере.
|
||
*/
|
||
public class Skin extends Sprite {
|
||
|
||
/**
|
||
* @private
|
||
* Графика скина (для быстрого доступа)
|
||
*/
|
||
alternativa3d var gfx:Graphics = graphics;
|
||
|
||
/**
|
||
* @private
|
||
* Ссылка на следующий скин
|
||
*/
|
||
alternativa3d var nextSkin:Skin;
|
||
|
||
/**
|
||
* @private
|
||
* Примитив
|
||
*/
|
||
alternativa3d var primitive:PolyPrimitive;
|
||
|
||
/**
|
||
* @private
|
||
* Материал, связанный со скином.
|
||
*/
|
||
alternativa3d var material:SurfaceMaterial;
|
||
|
||
// Хранилище неиспользуемых скинов
|
||
static private var collector:Array = new Array();
|
||
|
||
/**
|
||
* @private
|
||
* Создание скина.
|
||
*/
|
||
static alternativa3d function createSkin():Skin {
|
||
// Достаём скин из коллектора
|
||
var skin:Skin = collector.pop();
|
||
// Если коллектор пуст, создаём новый скин
|
||
if (skin == null) {
|
||
skin = new Skin();
|
||
}
|
||
return skin;
|
||
}
|
||
|
||
/**
|
||
* @private
|
||
* Удаление скина, все ссылки должны быть почищены.
|
||
*/
|
||
static alternativa3d function destroySkin(skin:Skin):void {
|
||
collector.push(skin);
|
||
}
|
||
}
|
||
} |