package com.aberustudios.kodama
{
import de.nulldesign.nd2d.display.World2D;
import flash.display.Stage3D;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display3D.Context3DRenderMode;
import flash.events.Event;
/**
* ...
* @author Rolpege
*/
public class Kodama extends World2D
{
public static const WIDTH:Number = 800;
public static const HEIGHT:Number = 600;
protected var firstResizeTime:Boolean = true;
public function Kodama()
{
super(Context3DRenderMode.AUTO);
antialiasing = 2;
//setActiveScene and start here
}
override protected function addedToStage(event:Event):void
{
stage.align=StageAlign.TOP_LEFT;
stage.scaleMode=StageScaleMode.NO_SCALE;
var contextMenu:ContextMenu = new ContextMenu();
contextMenu.hideBuiltInItems();
this.contextMenu = contextMenu;
super.addedToStage(event);
}
override protected function resizeStage(e:Event = null):void
{
if (firstResizeTime)
{
if(!context3D) return;
var rect:Rectangle = bounds ? bounds : new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
stage.stage3Ds[stageID].x = rect.x;
stage.stage3Ds[stageID].y = rect.y;
context3D.configureBackBuffer(rect.width, rect.height, antialiasing, false);
camera.resizeCameraStage(rect.width, rect.height);
}
else
{
var sx:Number = stage.stageWidth / WIDTH;
var sy:Number = stage.stageHeight / HEIGHT;
var zoom:Number = sx > sy ? sy : sx;
context3D.configureBackBuffer(WIDTH * zoom, HEIGHT * zoom, antialiasing, false);
var stage3D:Stage3D = stage.stage3Ds[stageID];
stage3D.x = (stage.stageWidth - (WIDTH * zoom)) * 0.5;
stage3D.y = (stage.stageHeight - (HEIGHT * zoom)) * 0.5;
}
firstResizeTime = false;
}
}
}