/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/iwF1
*/
package {
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageQuality;
import flash.geom.Rectangle;
import flash.events.Event;
import flash.text.TextField;
import flash.display.BitmapData;
import net.hires.debug.Stats;
public class FlashTest extends Sprite {
public function FlashTest() {
stage.quality = StageQuality.LOW;
addChild(new Stats());
deb = new TextField();
deb.width=320;
deb.height=240;
deb.mouseEnabled=false;
addChild(deb);
skin = new BitmapData(64,64, true, 0);
skin.perlinNoise(4,4, 12, 12, true,true,7);
skin.fillRect(new Rectangle(16,16,32,32), 0xFF000000);
graphics.clear();
graphics.lineStyle(2, 0);
//drawTri(0,0,0, 128,0,0, 0,128,0);
//drawTri(0,128,0, 128,0,0, 128,128,0 );
//drawTri(0,0,8, 128,0,8, 0,128,8);
//drawTri(0,128,8, 128,0,8, 128,128,8 );
drawWall(120,0, 120, 64);
drawRect(64,64,465-128,465-128);
// graphics.drawCircle(120, 120, 64);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var deb:TextField;
public var skin:BitmapData;
public var gt:int = 0;
public var camx:Number = 0;
public var camy:Number = 0;
public function onEnter(e:Event):void
{
graphics.clear();
// graphics.lineStyle(2, 0);
graphics.beginBitmapFill(skin, null,true,false);
graphics.drawRect(0,0,465,465);
graphics.endFill();
drawWall(120,0, 120, 64);
//drawRect(64,64,465-128,465-128, -64);
drawRect(64,64,465-128,465-128, 64);
var mx:Number; var my:Number;
mx = stage.mouseX; my = stage.mouseY;
drawRect2(mx-32,my-32,64,64);
var ax:Number; var ay:Number;
var ta:Number;
var i:int;
for (i=0;i<16;i+=1)
{
ta = i*(6.28/16) + (gt*0.01);
ax = 235 + Math.cos(ta)*96;
ay = 235 + Math.sin(ta)*96;
drawRect2(ax-16,ay-16, 32,32);
}//nexti
gt+=1;
}//onenter
public function drawRect(ax:Number,ay:Number, aw:Number,ah:Number, h:Number=16):void
{
drawWall(ax,ay,ax+aw,ay,h);
drawWall(ax,ay,ax,ay+ah,h);
drawWall(ax+aw,ay,ax+aw,ay+ah,h);
drawWall(ax,ay+ah,ax+aw,ay+ah,h);
}//drawrect
public function drawRect2(ax:Number,ay:Number, aw:Number,ah:Number,h:Number=16):void
{
drawWall(ax,ay,ax+aw,ay,h);
drawWall(ax,ay,ax,ay+ah,h);
drawWall(ax+aw,ay,ax+aw,ay+ah,h);
drawWall(ax,ay+ah,ax+aw,ay+ah,h);
ax-=camx; ay-=camy;
drawQuad(ax,ay, h, ax+aw,ay,h, ax,ay+ah,h, ax+aw,ay+ah,h);
}//drawrect
public function drawWall(x0:Number,y0:Number, x1:Number,y1:Number, h:Number=16):void
{
// drawTri(x0,y0, 0, x1,y1, 0, x0,y0, 16);
// drawTri(x0,y0, 16, x1,y1,0, x1,y1, 16);
x0-=camx; y0-=camy;
x1-=camx; y1-=camy;
drawQuad(x0,y0,0, x1,y1,0, x0,y0, h, x1,y1, h);
}//drawwall
public var vecFace:Vector.<int> = Vector.<int>([0,1,2, 2,1,3]);
public var vecVert:Vector.<Number> = Vector.<Number>([0,0, 1,0, 0,1, 1,1]);
public var vecUv:Vector.<Number> = Vector.<Number>([0,0, 1,0, 0,1, 1,1]);
public function drawQuad(x0:Number, y0:Number, z0:Number,
x1:Number,y1:Number,z1:Number, x2:Number,y2:Number,z2:Number,
x3:Number,y3:Number,z3:Number):void
{
var ax:Number; var ay:Number;
z0*=-0.01; z1*=-0.01; z2*=-0.01; z3*=-0.01;
ax = 235-x0; ay = 235-y0;
x0 = x0 + ax*z0;
y0 = y0 + ay*z0;
ax = 235-x1; ay = 235-y1;
x1 = x1 + ax*z1;
y1 = y1 + ay*z1;
ax = 235-x2; ay = 235-y2;
x2 = x2 + ax*z2;
y2 = y2 + ay*z2;
ax = 235-x3; ay = 235-y3;
x3 = x3 + ax*z3;
y3 = y3 + ay*z3;
vecVert[0] = x0; vecVert[1] = y0;
vecVert[2] = x1; vecVert[3] = y1;
vecVert[4] = x2; vecVert[5] = y2;
vecVert[6] = x3; vecVert[7] = y3;
graphics.beginBitmapFill(skin, null,false,false);
graphics.drawTriangles(vecVert, vecFace ,vecUv);
graphics.endFill();
}//drawquad
/*
public function drawTri(x0:Number, y0:Number, z0:Number,
x1:Number,y1:Number,z1:Number, x2:Number,y2:Number,z2:Number):void
{
var ax:Number; var ay:Number;
z0*=-0.01; z1*=-0.01; z2*=-0.01;
ax = 235-x0; ay = 235-y0;
x0 = x0 + ax*z0;
y0 = y0 + ay*z0;
ax = 235-x1; ay = 235-y1;
x1 = x1 + ax*z1;
y1 = y1 + ay*z1;
ax = 235-x2; ay = 235-y2;
x2 = x2 + ax*z2;
y2 = y2 + ay*z2;
vecVert[0] = x0; vecVert[1] = y0;
vecVert[2] = x1; vecVert[3] = y1;
vecVert[4] = x2; vecVert[5] = y2;
graphics.beginBitmapFill(skin, null,false,false);
graphics.drawTriangles(vecVert, null ,vecUv);
graphics.endFill();
}//drawtri
*/
}//classend
}