Initial commit

This commit is contained in:
Pyogenics
2025-01-26 09:32:24 +00:00
commit c0d6d88353
769 changed files with 85894 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
use namespace alternativa3d;
public class name_116 extends name_78
{
private static var lastLightNumber:uint = 0;
public var color:uint;
public var intensity:Number = 1;
alternativa3d var name_141:name_139 = new name_139();
alternativa3d var name_138:String;
alternativa3d var red:Number;
alternativa3d var green:Number;
alternativa3d var blue:Number;
public function name_116()
{
super();
this.alternativa3d::name_138 = "l" + lastLightNumber.toString(16);
name = "L" + (lastLightNumber++).toString();
}
override alternativa3d function calculateVisibility(camera:name_124) : void
{
if(this.intensity != 0 && this.color > 0)
{
camera.alternativa3d::lights[camera.alternativa3d::lightsLength] = this;
++camera.alternativa3d::lightsLength;
}
}
alternativa3d function checkBound(targetObject:name_78) : Boolean
{
return true;
}
override public function clone() : name_78
{
var res:name_116 = new name_116();
res.clonePropertiesFrom(this);
return res;
}
override protected function clonePropertiesFrom(source:name_78) : void
{
super.clonePropertiesFrom(source);
var src:name_116 = source as name_116;
this.color = src.color;
this.intensity = src.intensity;
}
}
}

908
src/package_21/name_124.as Normal file
View File

@@ -0,0 +1,908 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.Stage3D;
import flash.display.StageAlign;
import flash.display3D.Context3D;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.geom.Vector3D;
import flash.system.System;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.Dictionary;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
import flash.utils.getQualifiedSuperclassName;
import flash.utils.getTimer;
use namespace alternativa3d;
public class name_124 extends name_78
{
public var view:name_81;
public var fov:Number = 1.5707963267948966;
public var nearClipping:Number;
public var farClipping:Number;
public var orthographic:Boolean = false;
alternativa3d var focalLength:Number;
alternativa3d var m0:Number;
alternativa3d var m5:Number;
alternativa3d var m10:Number;
alternativa3d var m14:Number;
alternativa3d var correctionX:Number;
alternativa3d var correctionY:Number;
alternativa3d var lights:Vector.<name_116> = new Vector.<name_116>();
alternativa3d var lightsLength:int = 0;
alternativa3d var ambient:Vector.<Number> = new Vector.<Number>(4);
alternativa3d var childLights:Vector.<name_116> = new Vector.<name_116>();
alternativa3d var frustum:name_429;
alternativa3d var origins:Vector.<Vector3D> = new Vector.<Vector3D>();
alternativa3d var directions:Vector.<Vector3D> = new Vector.<Vector3D>();
alternativa3d var raysLength:int = 0;
alternativa3d var occluders:Vector.<name_431> = new Vector.<name_431>();
alternativa3d var occludersLength:int = 0;
alternativa3d var context3D:Context3D;
alternativa3d var renderer:name_430;
alternativa3d var numDraws:int;
alternativa3d var numTriangles:int;
public var debug:Boolean = false;
private var debugSet:Object = new Object();
private var _diagram:Sprite = this.createDiagram();
public var fpsUpdatePeriod:int = 10;
public var timerUpdatePeriod:int = 10;
private var fpsTextField:TextField;
private var memoryTextField:TextField;
private var drawsTextField:TextField;
private var trianglesTextField:TextField;
private var timerTextField:TextField;
private var graph:Bitmap;
private var rect:Rectangle;
private var _diagramAlign:String = "TR";
private var _diagramHorizontalMargin:Number = 2;
private var _diagramVerticalMargin:Number = 2;
private var fpsUpdateCounter:int;
private var previousFrameTime:int;
private var previousPeriodTime:int;
private var maxMemory:int;
private var timerUpdateCounter:int;
private var timeSum:int;
private var timeCount:int;
private var timer:int;
public function name_124(nearClipping:Number, farClipping:Number)
{
super();
this.nearClipping = nearClipping;
this.farClipping = farClipping;
this.alternativa3d::renderer = new name_430();
this.alternativa3d::frustum = new name_429();
this.alternativa3d::frustum.next = new name_429();
this.alternativa3d::frustum.next.next = new name_429();
this.alternativa3d::frustum.next.next.next = new name_429();
this.alternativa3d::frustum.next.next.next.next = new name_429();
this.alternativa3d::frustum.next.next.next.next.next = new name_429();
}
public function render(stage3D:Stage3D) : void
{
var i:int = 0;
var light:name_116 = null;
var root:name_78 = null;
var childLightsLength:int = 0;
if(stage3D == null)
{
throw new TypeError("Parameter stage3D must be non-null.");
}
this.alternativa3d::numDraws = 0;
this.alternativa3d::numTriangles = 0;
this.alternativa3d::occludersLength = 0;
this.alternativa3d::lightsLength = 0;
this.alternativa3d::ambient[0] = 0;
this.alternativa3d::ambient[1] = 0;
this.alternativa3d::ambient[2] = 0;
this.alternativa3d::ambient[3] = 1;
this.alternativa3d::context3D = stage3D.context3D;
if(this.alternativa3d::context3D != null && this.view != null && this.alternativa3d::renderer != null && (this.view.stage != null || this.view.alternativa3d::var_114 != null))
{
this.alternativa3d::renderer.alternativa3d::camera = this;
this.alternativa3d::calculateProjection(this.view.alternativa3d::var_110,this.view.alternativa3d::_height);
this.view.alternativa3d::method_244(stage3D,this.alternativa3d::context3D);
if(alternativa3d::transformChanged)
{
alternativa3d::composeTransforms();
}
alternativa3d::localToGlobalTransform.copy(alternativa3d::transform);
alternativa3d::globalToLocalTransform.copy(alternativa3d::inverseTransform);
for(root = this; root.parent != null; )
{
root = root.parent;
if(root.alternativa3d::transformChanged)
{
root.alternativa3d::composeTransforms();
}
alternativa3d::localToGlobalTransform.append(root.alternativa3d::transform);
alternativa3d::globalToLocalTransform.prepend(root.alternativa3d::inverseTransform);
}
this.view.alternativa3d::calculateRays(this);
for(i = int(this.alternativa3d::origins.length); i < this.view.alternativa3d::raysLength; i++)
{
this.alternativa3d::origins[i] = new Vector3D();
this.alternativa3d::directions[i] = new Vector3D();
}
this.alternativa3d::raysLength = this.view.alternativa3d::raysLength;
if(root.visible)
{
root.alternativa3d::cameraToLocalTransform.combine(root.alternativa3d::inverseTransform,alternativa3d::localToGlobalTransform);
root.alternativa3d::listening = root.alternativa3d::bubbleListeners != null || root.alternativa3d::captureListeners != null;
if(root.boundBox != null)
{
this.alternativa3d::calculateFrustum(root.alternativa3d::cameraToLocalTransform);
root.alternativa3d::culling = root.boundBox.alternativa3d::name_393(this.alternativa3d::frustum,63);
}
else
{
root.alternativa3d::culling = 63;
}
if(root.alternativa3d::culling >= 0)
{
root.alternativa3d::calculateVisibility(this);
}
root.alternativa3d::calculateChildrenVisibility(this);
for(i = 0; i < this.alternativa3d::lightsLength; i++)
{
light = this.alternativa3d::lights[i];
light.alternativa3d::localToCameraTransform.calculateInversion(light.alternativa3d::cameraToLocalTransform);
light.alternativa3d::red = (light.color >> 16 & 0xFF) * light.intensity / 255;
light.alternativa3d::green = (light.color >> 8 & 0xFF) * light.intensity / 255;
light.alternativa3d::blue = (light.color & 0xFF) * light.intensity / 255;
}
root.alternativa3d::localToCameraTransform.combine(alternativa3d::globalToLocalTransform,root.alternativa3d::transform);
if(root.alternativa3d::culling >= 0 && (root.boundBox == null || this.alternativa3d::occludersLength == 0 || Boolean(root.boundBox.alternativa3d::name_392(this,root))))
{
if(Boolean(root.alternativa3d::listening) && root.boundBox != null)
{
this.alternativa3d::calculateRays(root.alternativa3d::cameraToLocalTransform);
root.alternativa3d::listening = root.boundBox.alternativa3d::name_391(this.alternativa3d::origins,this.alternativa3d::directions,this.alternativa3d::raysLength);
}
if(this.alternativa3d::lightsLength > 0 && Boolean(root.alternativa3d::useLights))
{
if(root.boundBox != null)
{
childLightsLength = 0;
for(i = 0; i < this.alternativa3d::lightsLength; )
{
light = this.alternativa3d::lights[i];
light.alternativa3d::name_141.combine(root.alternativa3d::cameraToLocalTransform,light.alternativa3d::localToCameraTransform);
if(light.boundBox == null || light.alternativa3d::checkBound(root))
{
this.alternativa3d::childLights[childLightsLength] = light;
childLightsLength++;
}
i++;
}
root.alternativa3d::collectDraws(this,this.alternativa3d::childLights,childLightsLength);
}
else
{
for(i = 0; i < this.alternativa3d::lightsLength; )
{
light = this.alternativa3d::lights[i];
light.alternativa3d::name_141.combine(root.alternativa3d::cameraToLocalTransform,light.alternativa3d::localToCameraTransform);
i++;
}
root.alternativa3d::collectDraws(this,this.alternativa3d::lights,this.alternativa3d::lightsLength);
}
}
else
{
root.alternativa3d::collectDraws(this,null,0);
}
}
root.alternativa3d::collectChildrenDraws(this,this.alternativa3d::lights,this.alternativa3d::lightsLength);
}
this.view.alternativa3d::method_243(this.alternativa3d::context3D,this);
this.alternativa3d::renderer.alternativa3d::render(this.alternativa3d::context3D);
if(this.view.alternativa3d::var_114 == null)
{
this.alternativa3d::context3D.present();
}
else
{
this.alternativa3d::context3D.drawToBitmapData(this.view.alternativa3d::var_114);
this.alternativa3d::context3D.present();
}
}
this.alternativa3d::lights.length = 0;
this.alternativa3d::childLights.length = 0;
this.alternativa3d::occluders.length = 0;
this.alternativa3d::context3D = null;
}
public function projectGlobal(point:Vector3D) : Vector3D
{
if(this.view == null)
{
throw new Error("It is necessary to have view set.");
}
var viewSizeX:Number = this.view.alternativa3d::var_110 * 0.5;
var viewSizeY:Number = this.view.alternativa3d::_height * 0.5;
var focalLength:Number = Math.sqrt(viewSizeX * viewSizeX + viewSizeY * viewSizeY) / Math.tan(this.fov * 0.5);
var res:Vector3D = globalToLocal(point);
res.x = res.x * focalLength / res.z + viewSizeX;
res.y = res.y * focalLength / res.z + viewSizeY;
return res;
}
public function calculateRay(origin:Vector3D, direction:Vector3D, viewX:Number, viewY:Number) : void
{
if(this.view == null)
{
throw new Error("It is necessary to have view set.");
}
var viewSizeX:Number = this.view.alternativa3d::var_110 * 0.5;
var viewSizeY:Number = this.view.alternativa3d::_height * 0.5;
var focalLength:Number = Math.sqrt(viewSizeX * viewSizeX + viewSizeY * viewSizeY) / Math.tan(this.fov * 0.5);
var dx:Number = viewX - viewSizeX;
var dy:Number = viewY - viewSizeY;
var ox:Number = dx * this.nearClipping / focalLength;
var oy:Number = dy * this.nearClipping / focalLength;
var oz:Number = this.nearClipping;
if(alternativa3d::transformChanged)
{
alternativa3d::composeTransforms();
}
trm.copy(alternativa3d::transform);
for(var root:name_78 = this; root.parent != null; )
{
root = root.parent;
if(root.alternativa3d::transformChanged)
{
root.alternativa3d::composeTransforms();
}
trm.append(root.alternativa3d::transform);
}
origin.x = trm.a * ox + trm.b * oy + trm.c * oz + trm.d;
origin.y = trm.e * ox + trm.f * oy + trm.g * oz + trm.h;
origin.z = trm.i * ox + trm.j * oy + trm.k * oz + trm.l;
direction.x = trm.a * dx + trm.b * dy + trm.c * focalLength;
direction.y = trm.e * dx + trm.f * dy + trm.g * focalLength;
direction.z = trm.i * dx + trm.j * dy + trm.k * focalLength;
var directionL:Number = 1 / Math.sqrt(direction.x * direction.x + direction.y * direction.y + direction.z * direction.z);
direction.x *= directionL;
direction.y *= directionL;
direction.z *= directionL;
}
override public function clone() : name_78
{
var res:name_124 = new name_124(this.nearClipping,this.farClipping);
res.clonePropertiesFrom(this);
return res;
}
override protected function clonePropertiesFrom(source:name_78) : void
{
super.clonePropertiesFrom(source);
this.view = (source as name_124).view;
}
alternativa3d function calculateProjection(width:Number, height:Number) : void
{
var viewSizeX:Number = width * 0.5;
var viewSizeY:Number = height * 0.5;
this.alternativa3d::focalLength = Math.sqrt(viewSizeX * viewSizeX + viewSizeY * viewSizeY) / Math.tan(this.fov * 0.5);
if(!this.orthographic)
{
this.alternativa3d::m0 = this.alternativa3d::focalLength / viewSizeX;
this.alternativa3d::m5 = -this.alternativa3d::focalLength / viewSizeY;
this.alternativa3d::m10 = this.farClipping / (this.farClipping - this.nearClipping);
this.alternativa3d::m14 = -this.nearClipping * this.alternativa3d::m10;
}
else
{
this.alternativa3d::m0 = 1 / viewSizeX;
this.alternativa3d::m5 = -1 / viewSizeY;
this.alternativa3d::m10 = 1 / (this.farClipping - this.nearClipping);
this.alternativa3d::m14 = -this.nearClipping * this.alternativa3d::m10;
}
this.alternativa3d::correctionX = viewSizeX / this.alternativa3d::focalLength;
this.alternativa3d::correctionY = viewSizeY / this.alternativa3d::focalLength;
}
alternativa3d function calculateFrustum(transform:name_139) : void
{
var fa:Number = NaN;
var fe:Number = NaN;
var fi:Number = NaN;
var fb:Number = NaN;
var ff:Number = NaN;
var fj:Number = NaN;
var ax:Number = NaN;
var ay:Number = NaN;
var az:Number = NaN;
var bx:Number = NaN;
var by:Number = NaN;
var bz:Number = NaN;
var viewSizeX:Number = NaN;
var viewSizeY:Number = NaN;
var nearPlane:name_429 = this.alternativa3d::frustum;
var farPlane:name_429 = nearPlane.next;
var leftPlane:name_429 = farPlane.next;
var rightPlane:name_429 = leftPlane.next;
var topPlane:name_429 = rightPlane.next;
var bottomPlane:name_429 = topPlane.next;
if(!this.orthographic)
{
fa = transform.a * this.alternativa3d::correctionX;
fe = transform.e * this.alternativa3d::correctionX;
fi = transform.i * this.alternativa3d::correctionX;
fb = transform.b * this.alternativa3d::correctionY;
ff = transform.f * this.alternativa3d::correctionY;
fj = transform.j * this.alternativa3d::correctionY;
nearPlane.x = fj * fe - ff * fi;
nearPlane.y = fb * fi - fj * fa;
nearPlane.z = ff * fa - fb * fe;
nearPlane.offset = (transform.d + transform.c * this.nearClipping) * nearPlane.x + (transform.h + transform.g * this.nearClipping) * nearPlane.y + (transform.l + transform.k * this.nearClipping) * nearPlane.z;
farPlane.x = -nearPlane.x;
farPlane.y = -nearPlane.y;
farPlane.z = -nearPlane.z;
farPlane.offset = (transform.d + transform.c * this.farClipping) * farPlane.x + (transform.h + transform.g * this.farClipping) * farPlane.y + (transform.l + transform.k * this.farClipping) * farPlane.z;
ax = -fa - fb + transform.c;
ay = -fe - ff + transform.g;
az = -fi - fj + transform.k;
bx = fa - fb + transform.c;
by = fe - ff + transform.g;
bz = fi - fj + transform.k;
topPlane.x = bz * ay - by * az;
topPlane.y = bx * az - bz * ax;
topPlane.z = by * ax - bx * ay;
topPlane.offset = transform.d * topPlane.x + transform.h * topPlane.y + transform.l * topPlane.z;
ax = bx;
ay = by;
az = bz;
bx = fa + fb + transform.c;
by = fe + ff + transform.g;
bz = fi + fj + transform.k;
rightPlane.x = bz * ay - by * az;
rightPlane.y = bx * az - bz * ax;
rightPlane.z = by * ax - bx * ay;
rightPlane.offset = transform.d * rightPlane.x + transform.h * rightPlane.y + transform.l * rightPlane.z;
ax = bx;
ay = by;
az = bz;
bx = -fa + fb + transform.c;
by = -fe + ff + transform.g;
bz = -fi + fj + transform.k;
bottomPlane.x = bz * ay - by * az;
bottomPlane.y = bx * az - bz * ax;
bottomPlane.z = by * ax - bx * ay;
bottomPlane.offset = transform.d * bottomPlane.x + transform.h * bottomPlane.y + transform.l * bottomPlane.z;
ax = bx;
ay = by;
az = bz;
bx = -fa - fb + transform.c;
by = -fe - ff + transform.g;
bz = -fi - fj + transform.k;
leftPlane.x = bz * ay - by * az;
leftPlane.y = bx * az - bz * ax;
leftPlane.z = by * ax - bx * ay;
leftPlane.offset = transform.d * leftPlane.x + transform.h * leftPlane.y + transform.l * leftPlane.z;
}
else
{
viewSizeX = this.view.alternativa3d::var_110 * 0.5;
viewSizeY = this.view.alternativa3d::_height * 0.5;
nearPlane.x = transform.j * transform.e - transform.f * transform.i;
nearPlane.y = transform.b * transform.i - transform.j * transform.a;
nearPlane.z = transform.f * transform.a - transform.b * transform.e;
nearPlane.offset = (transform.d + transform.c * this.nearClipping) * nearPlane.x + (transform.h + transform.g * this.nearClipping) * nearPlane.y + (transform.l + transform.k * this.nearClipping) * nearPlane.z;
farPlane.x = -nearPlane.x;
farPlane.y = -nearPlane.y;
farPlane.z = -nearPlane.z;
farPlane.offset = (transform.d + transform.c * this.farClipping) * farPlane.x + (transform.h + transform.g * this.farClipping) * farPlane.y + (transform.l + transform.k * this.farClipping) * farPlane.z;
topPlane.x = transform.i * transform.g - transform.e * transform.k;
topPlane.y = transform.a * transform.k - transform.i * transform.c;
topPlane.z = transform.e * transform.c - transform.a * transform.g;
topPlane.offset = (transform.d - transform.b * viewSizeY) * topPlane.x + (transform.h - transform.f * viewSizeY) * topPlane.y + (transform.l - transform.j * viewSizeY) * topPlane.z;
bottomPlane.x = -topPlane.x;
bottomPlane.y = -topPlane.y;
bottomPlane.z = -topPlane.z;
bottomPlane.offset = (transform.d + transform.b * viewSizeY) * bottomPlane.x + (transform.h + transform.f * viewSizeY) * bottomPlane.y + (transform.l + transform.j * viewSizeY) * bottomPlane.z;
leftPlane.x = transform.k * transform.f - transform.g * transform.j;
leftPlane.y = transform.c * transform.j - transform.k * transform.b;
leftPlane.z = transform.g * transform.b - transform.c * transform.f;
leftPlane.offset = (transform.d - transform.a * viewSizeX) * leftPlane.x + (transform.h - transform.e * viewSizeX) * leftPlane.y + (transform.l - transform.i * viewSizeX) * leftPlane.z;
rightPlane.x = -leftPlane.x;
rightPlane.y = -leftPlane.y;
rightPlane.z = -leftPlane.z;
rightPlane.offset = (transform.d + transform.a * viewSizeX) * rightPlane.x + (transform.h + transform.e * viewSizeX) * rightPlane.y + (transform.l + transform.i * viewSizeX) * rightPlane.z;
}
}
alternativa3d function calculateRays(transform:name_139) : void
{
var o:Vector3D = null;
var d:Vector3D = null;
var origin:Vector3D = null;
var direction:Vector3D = null;
for(var i:int = 0; i < this.alternativa3d::raysLength; i++)
{
o = this.view.alternativa3d::var_127[i];
d = this.view.alternativa3d::var_133[i];
origin = this.alternativa3d::origins[i];
direction = this.alternativa3d::directions[i];
origin.x = transform.a * o.x + transform.b * o.y + transform.c * o.z + transform.d;
origin.y = transform.e * o.x + transform.f * o.y + transform.g * o.z + transform.h;
origin.z = transform.i * o.x + transform.j * o.y + transform.k * o.z + transform.l;
direction.x = transform.a * d.x + transform.b * d.y + transform.c * d.z;
direction.y = transform.e * d.x + transform.f * d.y + transform.g * d.z;
direction.z = transform.i * d.x + transform.j * d.y + transform.k * d.z;
}
}
public function addToDebug(debug:int, objectOrClass:*) : void
{
if(!this.debugSet[debug])
{
this.debugSet[debug] = new Dictionary();
}
this.debugSet[debug][objectOrClass] = true;
}
public function removeFromDebug(debug:int, objectOrClass:*) : void
{
var key:* = undefined;
if(Boolean(this.debugSet[debug]))
{
delete this.debugSet[debug][objectOrClass];
var _loc4_:int = 0;
var _loc5_:* = this.debugSet[debug];
for(key in _loc5_)
{
}
if(!key)
{
delete this.debugSet[debug];
}
}
}
alternativa3d function checkInDebug(object:name_78) : int
{
var objectClass:Class = null;
var res:int = 0;
for(var debug:int = 1; debug <= 512; )
{
if(Boolean(this.debugSet[debug]))
{
if(Boolean(this.debugSet[debug][name_78]) || Boolean(this.debugSet[debug][object]))
{
res |= debug;
}
else
{
for(objectClass = getDefinitionByName(getQualifiedClassName(object)) as Class; objectClass != name_78; )
{
if(Boolean(this.debugSet[debug][objectClass]))
{
res |= debug;
break;
}
objectClass = Class(getDefinitionByName(getQualifiedSuperclassName(objectClass)));
}
}
}
debug <<= 1;
}
return res;
}
public function startTimer() : void
{
this.timer = getTimer();
}
public function stopTimer() : void
{
this.timeSum += getTimer() - this.timer;
++this.timeCount;
}
public function get diagram() : DisplayObject
{
return this._diagram;
}
public function get diagramAlign() : String
{
return this._diagramAlign;
}
public function set diagramAlign(value:String) : void
{
this._diagramAlign = value;
this.resizeDiagram();
}
public function get diagramHorizontalMargin() : Number
{
return this._diagramHorizontalMargin;
}
public function set diagramHorizontalMargin(value:Number) : void
{
this._diagramHorizontalMargin = value;
this.resizeDiagram();
}
public function get diagramVerticalMargin() : Number
{
return this._diagramVerticalMargin;
}
public function set diagramVerticalMargin(value:Number) : void
{
this._diagramVerticalMargin = value;
this.resizeDiagram();
}
private function createDiagram() : Sprite
{
var diagram:Sprite = null;
diagram = new Sprite();
diagram.mouseEnabled = false;
diagram.mouseChildren = false;
this.fpsTextField = new TextField();
this.fpsTextField.defaultTextFormat = new TextFormat("Tahoma",10,13421772);
this.fpsTextField.autoSize = TextFieldAutoSize.LEFT;
this.fpsTextField.text = "FPS:";
this.fpsTextField.selectable = false;
this.fpsTextField.x = -3;
this.fpsTextField.y = -5;
diagram.addChild(this.fpsTextField);
this.timerTextField = new TextField();
this.timerTextField.defaultTextFormat = new TextFormat("Tahoma",10,26367);
this.timerTextField.autoSize = TextFieldAutoSize.LEFT;
this.timerTextField.text = "MS:";
this.timerTextField.selectable = false;
this.timerTextField.x = -3;
this.timerTextField.y = 4;
diagram.addChild(this.timerTextField);
this.memoryTextField = new TextField();
this.memoryTextField.defaultTextFormat = new TextFormat("Tahoma",10,13421568);
this.memoryTextField.autoSize = TextFieldAutoSize.LEFT;
this.memoryTextField.text = "MEM:";
this.memoryTextField.selectable = false;
this.memoryTextField.x = -3;
this.memoryTextField.y = 13;
diagram.addChild(this.memoryTextField);
this.drawsTextField = new TextField();
this.drawsTextField.defaultTextFormat = new TextFormat("Tahoma",10,52224);
this.drawsTextField.autoSize = TextFieldAutoSize.LEFT;
this.drawsTextField.text = "DRW:";
this.drawsTextField.selectable = false;
this.drawsTextField.x = -3;
this.drawsTextField.y = 22;
diagram.addChild(this.drawsTextField);
this.trianglesTextField = new TextField();
this.trianglesTextField.defaultTextFormat = new TextFormat("Tahoma",10,16724736);
this.trianglesTextField.autoSize = TextFieldAutoSize.LEFT;
this.trianglesTextField.text = "TRI:";
this.trianglesTextField.selectable = false;
this.trianglesTextField.x = -3;
this.trianglesTextField.y = 31;
diagram.addChild(this.trianglesTextField);
diagram.addEventListener(Event.ADDED_TO_STAGE,function():void
{
fpsTextField = new TextField();
fpsTextField.defaultTextFormat = new TextFormat("Tahoma",10,13421772);
fpsTextField.autoSize = TextFieldAutoSize.RIGHT;
fpsTextField.text = Number(diagram.stage.frameRate).toFixed(2);
fpsTextField.selectable = false;
fpsTextField.x = -3;
fpsTextField.y = -5;
fpsTextField.width = 85;
diagram.addChild(fpsTextField);
timerTextField = new TextField();
timerTextField.defaultTextFormat = new TextFormat("Tahoma",10,26367);
timerTextField.autoSize = TextFieldAutoSize.RIGHT;
timerTextField.text = "";
timerTextField.selectable = false;
timerTextField.x = -3;
timerTextField.y = 4;
timerTextField.width = 85;
diagram.addChild(timerTextField);
memoryTextField = new TextField();
memoryTextField.defaultTextFormat = new TextFormat("Tahoma",10,13421568);
memoryTextField.autoSize = TextFieldAutoSize.RIGHT;
memoryTextField.text = bytesToString(System.totalMemory);
memoryTextField.selectable = false;
memoryTextField.x = -3;
memoryTextField.y = 13;
memoryTextField.width = 85;
diagram.addChild(memoryTextField);
drawsTextField = new TextField();
drawsTextField.defaultTextFormat = new TextFormat("Tahoma",10,52224);
drawsTextField.autoSize = TextFieldAutoSize.RIGHT;
drawsTextField.text = "0";
drawsTextField.selectable = false;
drawsTextField.x = -3;
drawsTextField.y = 22;
drawsTextField.width = 72;
diagram.addChild(drawsTextField);
trianglesTextField = new TextField();
trianglesTextField.defaultTextFormat = new TextFormat("Tahoma",10,16724736);
trianglesTextField.autoSize = TextFieldAutoSize.RIGHT;
trianglesTextField.text = "0";
trianglesTextField.selectable = false;
trianglesTextField.x = -3;
trianglesTextField.y = 31;
trianglesTextField.width = 72;
diagram.addChild(trianglesTextField);
graph = new Bitmap(new BitmapData(80,40,true,553648127));
rect = new Rectangle(0,0,1,40);
graph.x = 0;
graph.y = 45;
diagram.addChild(graph);
previousPeriodTime = getTimer();
previousFrameTime = previousPeriodTime;
fpsUpdateCounter = 0;
maxMemory = 0;
timerUpdateCounter = 0;
timeSum = 0;
timeCount = 0;
diagram.stage.addEventListener(Event.ENTER_FRAME,updateDiagram,false,-1000);
diagram.stage.addEventListener(Event.RESIZE,resizeDiagram,false,-1000);
resizeDiagram();
});
diagram.addEventListener(Event.REMOVED_FROM_STAGE,function():void
{
diagram.removeChild(fpsTextField);
diagram.removeChild(memoryTextField);
diagram.removeChild(drawsTextField);
diagram.removeChild(trianglesTextField);
diagram.removeChild(timerTextField);
diagram.removeChild(graph);
fpsTextField = null;
memoryTextField = null;
drawsTextField = null;
trianglesTextField = null;
timerTextField = null;
graph.bitmapData.dispose();
graph = null;
rect = null;
diagram.stage.removeEventListener(Event.ENTER_FRAME,updateDiagram);
diagram.stage.removeEventListener(Event.RESIZE,resizeDiagram);
});
return diagram;
}
private function resizeDiagram(e:Event = null) : void
{
var coord:Point = null;
if(this._diagram.stage != null)
{
coord = this._diagram.parent.globalToLocal(new Point());
if(this._diagramAlign == StageAlign.TOP_LEFT || this._diagramAlign == StageAlign.LEFT || this._diagramAlign == StageAlign.BOTTOM_LEFT)
{
this._diagram.x = Math.round(coord.x + this._diagramHorizontalMargin);
}
if(this._diagramAlign == StageAlign.TOP || this._diagramAlign == StageAlign.BOTTOM)
{
this._diagram.x = Math.round(coord.x + this._diagram.stage.stageWidth / 2 - this.graph.width / 2);
}
if(this._diagramAlign == StageAlign.TOP_RIGHT || this._diagramAlign == StageAlign.RIGHT || this._diagramAlign == StageAlign.BOTTOM_RIGHT)
{
this._diagram.x = Math.round(coord.x + this._diagram.stage.stageWidth - this._diagramHorizontalMargin - this.graph.width);
}
if(this._diagramAlign == StageAlign.TOP_LEFT || this._diagramAlign == StageAlign.TOP || this._diagramAlign == StageAlign.TOP_RIGHT)
{
this._diagram.y = Math.round(coord.y + this._diagramVerticalMargin);
}
if(this._diagramAlign == StageAlign.LEFT || this._diagramAlign == StageAlign.RIGHT)
{
this._diagram.y = Math.round(coord.y + this._diagram.stage.stageHeight / 2 - (this.graph.y + this.graph.height) / 2);
}
if(this._diagramAlign == StageAlign.BOTTOM_LEFT || this._diagramAlign == StageAlign.BOTTOM || this._diagramAlign == StageAlign.BOTTOM_RIGHT)
{
this._diagram.y = Math.round(coord.y + this._diagram.stage.stageHeight - this._diagramVerticalMargin - this.graph.y - this.graph.height);
}
}
}
private function updateDiagram(e:Event) : void
{
var value:Number = NaN;
var mod:int = 0;
var time:int = int(getTimer());
var stageFrameRate:int = int(this._diagram.stage.frameRate);
if(++this.fpsUpdateCounter == this.fpsUpdatePeriod)
{
value = 1000 * this.fpsUpdatePeriod / (time - this.previousPeriodTime);
if(value > stageFrameRate)
{
value = stageFrameRate;
}
mod = value * 100 % 100;
this.fpsTextField.text = int(value) + "." + (mod >= 10 ? mod : (mod > 0 ? "0" + mod : "00"));
this.previousPeriodTime = time;
this.fpsUpdateCounter = 0;
}
value = 1000 / (time - this.previousFrameTime);
if(value > stageFrameRate)
{
value = stageFrameRate;
}
this.graph.bitmapData.scroll(1,0);
this.graph.bitmapData.fillRect(this.rect,553648127);
this.graph.bitmapData.setPixel32(0,40 * (1 - value / stageFrameRate),4291611852);
this.previousFrameTime = time;
if(++this.timerUpdateCounter == this.timerUpdatePeriod)
{
if(this.timeCount > 0)
{
value = this.timeSum / this.timeCount;
mod = value * 100 % 100;
this.timerTextField.text = int(value) + "." + (mod >= 10 ? mod : (mod > 0 ? "0" + mod : "00"));
}
else
{
this.timerTextField.text = "";
}
this.timerUpdateCounter = 0;
this.timeSum = 0;
this.timeCount = 0;
}
var memory:int = int(System.totalMemory);
value = memory / 1048576;
mod = value * 100 % 100;
this.memoryTextField.text = int(value) + "." + (mod >= 10 ? mod : (mod > 0 ? "0" + mod : "00"));
if(memory > this.maxMemory)
{
this.maxMemory = memory;
}
this.graph.bitmapData.setPixel32(0,40 * (1 - memory / this.maxMemory),4291611648);
this.drawsTextField.text = this.formatInt(this.alternativa3d::numDraws);
this.trianglesTextField.text = this.formatInt(this.alternativa3d::numTriangles);
}
private function formatInt(num:int) : String
{
var n:int = 0;
var s:String = null;
if(num < 1000)
{
return "" + num;
}
if(num < 1000000)
{
n = num % 1000;
if(n < 10)
{
s = "00" + n;
}
else if(n < 100)
{
s = "0" + n;
}
else
{
s = "" + n;
}
return int(num / 1000) + " " + s;
}
n = num % 1000000 / 1000;
if(n < 10)
{
s = "00" + n;
}
else if(n < 100)
{
s = "0" + n;
}
else
{
s = "" + n;
}
n = num % 1000;
if(n < 10)
{
s += " 00" + n;
}
else if(n < 100)
{
s += " 0" + n;
}
else
{
s += " " + n;
}
return int(num / 1000000) + " " + s;
}
private function bytesToString(bytes:int) : String
{
if(bytes < 1024)
{
return bytes + "b";
}
if(bytes < 10240)
{
return (bytes / 1024).toFixed(2) + "kb";
}
if(bytes < 102400)
{
return (bytes / 1024).toFixed(1) + "kb";
}
if(bytes < 1048576)
{
return (bytes >> 10) + "kb";
}
if(bytes < 10485760)
{
return (bytes / 1048576).toFixed(2);
}
if(bytes < 104857600)
{
return (bytes / 1048576).toFixed(1);
}
return String(bytes >> 20);
}
}
}

View File

@@ -0,0 +1,45 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.display3D.Context3DVertexBufferFormat;
use namespace alternativa3d;
public class name_126
{
public static const POSITION:uint = 1;
public static const NORMAL:uint = 2;
public static const TANGENT4:uint = 3;
public static const JOINTS:Vector.<uint> = Vector.<uint>([4,5,6,7]);
public static const TEXCOORDS:Vector.<uint> = Vector.<uint>([8,9,10,11,12,13,14,15]);
alternativa3d static const FORMATS:Array = [Context3DVertexBufferFormat.FLOAT_1,Context3DVertexBufferFormat.FLOAT_3,Context3DVertexBufferFormat.FLOAT_3,Context3DVertexBufferFormat.FLOAT_4,Context3DVertexBufferFormat.FLOAT_4,Context3DVertexBufferFormat.FLOAT_4,Context3DVertexBufferFormat.FLOAT_4,Context3DVertexBufferFormat.FLOAT_4,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2,Context3DVertexBufferFormat.FLOAT_2];
public function name_126()
{
super();
}
public static function name_433(attribute:int) : int
{
switch(alternativa3d::FORMATS[attribute])
{
case Context3DVertexBufferFormat.FLOAT_1:
return 1;
case Context3DVertexBufferFormat.FLOAT_2:
return 2;
case Context3DVertexBufferFormat.FLOAT_3:
return 3;
case Context3DVertexBufferFormat.FLOAT_4:
return 4;
default:
return 0;
}
}
}
}

View File

@@ -0,0 +1,37 @@
package package_21
{
public class name_128
{
public static const SKY:int = 0;
public static const OPAQUE_SORT:int = 1;
public static const OPAQUE:int = 2;
public static const DECALS:int = 3;
public static const TANK_SHADOW:int = 4;
public static const TANK_OPAQUE:int = 5;
public static const SHADOWS:int = 6;
public static const SHADOWED_LIGHTS:int = 7;
public static const LIGHTS:int = 8;
public static const FOG:int = 9;
public static const TRANSPARENT_SORT:int = 10;
public static const NEXT_LAYER:int = 11;
public static const EFFECTS:int = 12;
public function name_128()
{
super();
}
}
}

368
src/package_21/name_135.as Normal file
View File

@@ -0,0 +1,368 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.display3D.Context3DBlendFactor;
import flash.display3D.Context3DTriangleFace;
import flash.display3D.IndexBuffer3D;
import flash.display3D.Program3D;
import flash.display3D.VertexBuffer3D;
import flash.display3D.textures.TextureBase;
use namespace alternativa3d;
public class name_135
{
alternativa3d var next:name_135;
alternativa3d var object:name_78;
alternativa3d var program:Program3D;
alternativa3d var indexBuffer:IndexBuffer3D;
alternativa3d var firstIndex:int;
alternativa3d var numTriangles:int;
alternativa3d var blendSource:String = "one";
alternativa3d var blendDestination:String = "zero";
alternativa3d var culling:String = "front";
alternativa3d var textures:Vector.<TextureBase> = new Vector.<TextureBase>();
alternativa3d var var_183:Vector.<int> = new Vector.<int>();
alternativa3d var var_182:int = 0;
alternativa3d var vertexBuffers:Vector.<VertexBuffer3D> = new Vector.<VertexBuffer3D>();
alternativa3d var name_405:Vector.<int> = new Vector.<int>();
alternativa3d var name_411:Vector.<int> = new Vector.<int>();
alternativa3d var name_409:Vector.<String> = new Vector.<String>();
alternativa3d var name_403:int = 0;
alternativa3d var name_410:Vector.<Number> = new Vector.<Number>();
alternativa3d var name_404:int = 0;
alternativa3d var name_408:Vector.<Number> = new Vector.<Number>(28 * 4,true);
alternativa3d var name_407:int = 0;
public function name_135()
{
super();
}
alternativa3d function clear() : void
{
this.alternativa3d::object = null;
this.alternativa3d::program = null;
this.alternativa3d::indexBuffer = null;
this.alternativa3d::blendSource = Context3DBlendFactor.ONE;
this.alternativa3d::blendDestination = Context3DBlendFactor.ZERO;
this.alternativa3d::culling = Context3DTriangleFace.FRONT;
this.alternativa3d::textures.length = 0;
this.alternativa3d::var_182 = 0;
this.alternativa3d::vertexBuffers.length = 0;
this.alternativa3d::name_403 = 0;
this.alternativa3d::name_404 = 0;
this.alternativa3d::name_407 = 0;
}
alternativa3d function setTextureAt(sampler:int, texture:TextureBase) : void
{
if(uint(sampler) > 8)
{
throw new Error("Sampler index " + sampler + " is out of bounds.");
}
if(texture == null)
{
throw new Error("Texture is null");
}
this.alternativa3d::var_183[this.alternativa3d::var_182] = sampler;
this.alternativa3d::textures[this.alternativa3d::var_182] = texture;
++this.alternativa3d::var_182;
}
alternativa3d function setVertexBufferAt(index:int, buffer:VertexBuffer3D, bufferOffset:int, format:String) : void
{
if(uint(index) > 8)
{
throw new Error("VertexBuffer index " + index + " is out of bounds.");
}
if(buffer == null)
{
throw new Error("Buffer is null");
}
this.alternativa3d::name_405[this.alternativa3d::name_403] = index;
this.alternativa3d::vertexBuffers[this.alternativa3d::name_403] = buffer;
this.alternativa3d::name_411[this.alternativa3d::name_403] = bufferOffset;
this.alternativa3d::name_409[this.alternativa3d::name_403] = format;
++this.alternativa3d::name_403;
}
alternativa3d function name_426(firstRegister:int, data:Vector.<Number>, numRegisters:int) : void
{
if(uint(firstRegister + numRegisters) > 128)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + numRegisters > this.alternativa3d::name_404)
{
this.alternativa3d::name_404 = firstRegister + numRegisters;
this.alternativa3d::name_410.length = this.alternativa3d::name_404 << 2;
}
for(var i:int = 0,var len:int = numRegisters << 2; i < len; )
{
this.alternativa3d::name_410[offset] = data[i];
offset++;
i++;
}
}
alternativa3d function name_144(firstRegister:int, x:Number, y:Number, z:Number, w:Number = 1) : void
{
if(uint(firstRegister + 1) > 128)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + 1 > this.alternativa3d::name_404)
{
this.alternativa3d::name_404 = firstRegister + 1;
this.alternativa3d::name_410.length = this.alternativa3d::name_404 << 2;
}
this.alternativa3d::name_410[offset] = x;
offset++;
this.alternativa3d::name_410[offset] = y;
offset++;
this.alternativa3d::name_410[offset] = z;
offset++;
this.alternativa3d::name_410[offset] = w;
}
alternativa3d function name_412(firstRegister:int, transform:name_139) : void
{
if(uint(firstRegister + 3) > 128)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + 3 > this.alternativa3d::name_404)
{
this.alternativa3d::name_404 = firstRegister + 3;
this.alternativa3d::name_410.length = this.alternativa3d::name_404 << 2;
}
this.alternativa3d::name_410[offset] = transform.a;
offset++;
this.alternativa3d::name_410[offset] = transform.b;
offset++;
this.alternativa3d::name_410[offset] = transform.c;
offset++;
this.alternativa3d::name_410[offset] = transform.d;
offset++;
this.alternativa3d::name_410[offset] = transform.e;
offset++;
this.alternativa3d::name_410[offset] = transform.f;
offset++;
this.alternativa3d::name_410[offset] = transform.g;
offset++;
this.alternativa3d::name_410[offset] = transform.h;
offset++;
this.alternativa3d::name_410[offset] = transform.i;
offset++;
this.alternativa3d::name_410[offset] = transform.j;
offset++;
this.alternativa3d::name_410[offset] = transform.k;
offset++;
this.alternativa3d::name_410[offset] = transform.l;
}
alternativa3d function name_136(camera:name_124, firstRegister:int, transform:name_139 = null) : void
{
if(uint(firstRegister + 4) > 128)
{
throw new Error("Register index is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + 4 > this.alternativa3d::name_404)
{
this.alternativa3d::name_404 = firstRegister + 4;
this.alternativa3d::name_410.length = this.alternativa3d::name_404 << 2;
}
if(transform != null)
{
this.alternativa3d::name_410[offset] = transform.a * camera.alternativa3d::m0;
offset++;
this.alternativa3d::name_410[offset] = transform.b * camera.alternativa3d::m0;
offset++;
this.alternativa3d::name_410[offset] = transform.c * camera.alternativa3d::m0;
offset++;
this.alternativa3d::name_410[offset] = transform.d * camera.alternativa3d::m0;
offset++;
this.alternativa3d::name_410[offset] = transform.e * camera.alternativa3d::m5;
offset++;
this.alternativa3d::name_410[offset] = transform.f * camera.alternativa3d::m5;
offset++;
this.alternativa3d::name_410[offset] = transform.g * camera.alternativa3d::m5;
offset++;
this.alternativa3d::name_410[offset] = transform.h * camera.alternativa3d::m5;
offset++;
this.alternativa3d::name_410[offset] = transform.i * camera.alternativa3d::m10;
offset++;
this.alternativa3d::name_410[offset] = transform.j * camera.alternativa3d::m10;
offset++;
this.alternativa3d::name_410[offset] = transform.k * camera.alternativa3d::m10;
offset++;
this.alternativa3d::name_410[offset] = transform.l * camera.alternativa3d::m10 + camera.alternativa3d::m14;
offset++;
if(!camera.orthographic)
{
this.alternativa3d::name_410[offset] = transform.i;
offset++;
this.alternativa3d::name_410[offset] = transform.j;
offset++;
this.alternativa3d::name_410[offset] = transform.k;
offset++;
this.alternativa3d::name_410[offset] = transform.l;
}
else
{
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 1;
}
}
else
{
this.alternativa3d::name_410[offset] = camera.alternativa3d::m0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = camera.alternativa3d::m5;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = camera.alternativa3d::m10;
offset++;
this.alternativa3d::name_410[offset] = camera.alternativa3d::m14;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 0;
offset++;
if(!camera.orthographic)
{
this.alternativa3d::name_410[offset] = 1;
offset++;
this.alternativa3d::name_410[offset] = 0;
}
else
{
this.alternativa3d::name_410[offset] = 0;
offset++;
this.alternativa3d::name_410[offset] = 1;
}
}
}
alternativa3d function name_205(firstRegister:int, data:Vector.<Number>, numRegisters:int) : void
{
if(uint(firstRegister + numRegisters) > 28)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + numRegisters > this.alternativa3d::name_407)
{
this.alternativa3d::name_407 = firstRegister + numRegisters;
}
for(var i:int = 0,var len:int = numRegisters << 2; i < len; )
{
this.alternativa3d::name_408[offset] = data[i];
offset++;
i++;
}
}
alternativa3d function name_134(firstRegister:int, x:Number, y:Number, z:Number, w:Number = 1) : void
{
if(uint(firstRegister + 1) > 28)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + 1 > this.alternativa3d::name_407)
{
this.alternativa3d::name_407 = firstRegister + 1;
}
this.alternativa3d::name_408[offset] = x;
offset++;
this.alternativa3d::name_408[offset] = y;
offset++;
this.alternativa3d::name_408[offset] = z;
offset++;
this.alternativa3d::name_408[offset] = w;
}
alternativa3d function method_291(firstRegister:int, transform:name_139) : void
{
if(uint(firstRegister + 3) > 28)
{
throw new Error("Register index " + firstRegister + " is out of bounds.");
}
var offset:int = firstRegister << 2;
if(firstRegister + 3 > this.alternativa3d::name_407)
{
this.alternativa3d::name_407 = firstRegister + 3;
}
this.alternativa3d::name_408[offset] = transform.a;
offset++;
this.alternativa3d::name_408[offset] = transform.b;
offset++;
this.alternativa3d::name_408[offset] = transform.c;
offset++;
this.alternativa3d::name_408[offset] = transform.d;
offset++;
this.alternativa3d::name_408[offset] = transform.e;
offset++;
this.alternativa3d::name_408[offset] = transform.f;
offset++;
this.alternativa3d::name_408[offset] = transform.g;
offset++;
this.alternativa3d::name_408[offset] = transform.h;
offset++;
this.alternativa3d::name_408[offset] = transform.i;
offset++;
this.alternativa3d::name_408[offset] = transform.j;
offset++;
this.alternativa3d::name_408[offset] = transform.k;
offset++;
this.alternativa3d::name_408[offset] = transform.l;
}
}
}

278
src/package_21/name_139.as Normal file
View File

@@ -0,0 +1,278 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
use namespace alternativa3d;
public class name_139
{
public var a:Number = 1;
public var b:Number = 0;
public var c:Number = 0;
public var d:Number = 0;
public var e:Number = 0;
public var f:Number = 1;
public var g:Number = 0;
public var h:Number = 0;
public var i:Number = 0;
public var j:Number = 0;
public var k:Number = 1;
public var l:Number = 0;
public function name_139()
{
super();
}
public function method_293() : void
{
this.a = 1;
this.b = 0;
this.c = 0;
this.d = 0;
this.e = 0;
this.f = 1;
this.g = 0;
this.h = 0;
this.i = 0;
this.j = 0;
this.k = 1;
this.l = 0;
}
public function compose(x:Number, y:Number, z:Number, rotationX:Number, rotationY:Number, rotationZ:Number, scaleX:Number, scaleY:Number, scaleZ:Number) : void
{
var cosX:Number = Number(Math.cos(rotationX));
var sinX:Number = Number(Math.sin(rotationX));
var cosY:Number = Number(Math.cos(rotationY));
var sinY:Number = Number(Math.sin(rotationY));
var cosZ:Number = Number(Math.cos(rotationZ));
var sinZ:Number = Number(Math.sin(rotationZ));
var cosZsinY:Number = cosZ * sinY;
var sinZsinY:Number = sinZ * sinY;
var cosYscaleX:Number = cosY * scaleX;
var sinXscaleY:Number = sinX * scaleY;
var cosXscaleY:Number = cosX * scaleY;
var cosXscaleZ:Number = cosX * scaleZ;
var sinXscaleZ:Number = sinX * scaleZ;
this.a = cosZ * cosYscaleX;
this.b = cosZsinY * sinXscaleY - sinZ * cosXscaleY;
this.c = cosZsinY * cosXscaleZ + sinZ * sinXscaleZ;
this.d = x;
this.e = sinZ * cosYscaleX;
this.f = sinZsinY * sinXscaleY + cosZ * cosXscaleY;
this.g = sinZsinY * cosXscaleZ - cosZ * sinXscaleZ;
this.h = y;
this.i = -sinY * scaleX;
this.j = cosY * sinXscaleY;
this.k = cosY * cosXscaleZ;
this.l = z;
}
public function method_292(x:Number, y:Number, z:Number, rotationX:Number, rotationY:Number, rotationZ:Number, scaleX:Number, scaleY:Number, scaleZ:Number) : void
{
var cosX:Number = Number(Math.cos(rotationX));
var sinX:Number = Number(Math.sin(-rotationX));
var cosY:Number = Number(Math.cos(rotationY));
var sinY:Number = Number(Math.sin(-rotationY));
var cosZ:Number = Number(Math.cos(rotationZ));
var sinZ:Number = Number(Math.sin(-rotationZ));
var sinXsinY:Number = sinX * sinY;
var cosYscaleX:Number = cosY / scaleX;
var cosXscaleY:Number = cosX / scaleY;
var sinXscaleZ:Number = sinX / scaleZ;
var cosXscaleZ:Number = cosX / scaleZ;
this.a = cosZ * cosYscaleX;
this.b = -sinZ * cosYscaleX;
this.c = sinY / scaleX;
this.d = -this.a * x - this.b * y - this.c * z;
this.e = sinZ * cosXscaleY + sinXsinY * cosZ / scaleY;
this.f = cosZ * cosXscaleY - sinXsinY * sinZ / scaleY;
this.g = -sinX * cosY / scaleY;
this.h = -this.e * x - this.f * y - this.g * z;
this.i = sinZ * sinXscaleZ - cosZ * sinY * cosXscaleZ;
this.j = cosZ * sinXscaleZ + sinY * sinZ * cosXscaleZ;
this.k = cosY * cosXscaleZ;
this.l = -this.i * x - this.j * y - this.k * z;
}
public function invert() : void
{
var ta:Number = this.a;
var tb:Number = this.b;
var tc:Number = this.c;
var td:Number = this.d;
var te:Number = this.e;
var tf:Number = this.f;
var tg:Number = this.g;
var th:Number = this.h;
var ti:Number = this.i;
var tj:Number = this.j;
var tk:Number = this.k;
var tl:Number = this.l;
var det:Number = 1 / (-tc * tf * ti + tb * tg * ti + tc * te * tj - ta * tg * tj - tb * te * tk + ta * tf * tk);
this.a = (-tg * tj + tf * tk) * det;
this.b = (tc * tj - tb * tk) * det;
this.c = (-tc * tf + tb * tg) * det;
this.d = (td * tg * tj - tc * th * tj - td * tf * tk + tb * th * tk + tc * tf * tl - tb * tg * tl) * det;
this.e = (tg * ti - te * tk) * det;
this.f = (-tc * ti + ta * tk) * det;
this.g = (tc * te - ta * tg) * det;
this.h = (tc * th * ti - td * tg * ti + td * te * tk - ta * th * tk - tc * te * tl + ta * tg * tl) * det;
this.i = (-tf * ti + te * tj) * det;
this.j = (tb * ti - ta * tj) * det;
this.k = (-tb * te + ta * tf) * det;
this.l = (td * tf * ti - tb * th * ti - td * te * tj + ta * th * tj + tb * te * tl - ta * tf * tl) * det;
}
public function method_294(vector:Vector.<Number>) : void
{
this.a = vector[0];
this.b = vector[1];
this.c = vector[2];
this.d = vector[3];
this.e = vector[4];
this.f = vector[5];
this.g = vector[6];
this.h = vector[7];
this.i = vector[8];
this.j = vector[9];
this.k = vector[10];
this.l = vector[11];
}
public function append(transform:name_139) : void
{
var ta:Number = this.a;
var tb:Number = this.b;
var tc:Number = this.c;
var td:Number = this.d;
var te:Number = this.e;
var tf:Number = this.f;
var tg:Number = this.g;
var th:Number = this.h;
var ti:Number = this.i;
var tj:Number = this.j;
var tk:Number = this.k;
var tl:Number = this.l;
this.a = transform.a * ta + transform.b * te + transform.c * ti;
this.b = transform.a * tb + transform.b * tf + transform.c * tj;
this.c = transform.a * tc + transform.b * tg + transform.c * tk;
this.d = transform.a * td + transform.b * th + transform.c * tl + transform.d;
this.e = transform.e * ta + transform.f * te + transform.g * ti;
this.f = transform.e * tb + transform.f * tf + transform.g * tj;
this.g = transform.e * tc + transform.f * tg + transform.g * tk;
this.h = transform.e * td + transform.f * th + transform.g * tl + transform.h;
this.i = transform.i * ta + transform.j * te + transform.k * ti;
this.j = transform.i * tb + transform.j * tf + transform.k * tj;
this.k = transform.i * tc + transform.j * tg + transform.k * tk;
this.l = transform.i * td + transform.j * th + transform.k * tl + transform.l;
}
public function prepend(transform:name_139) : void
{
var ta:Number = this.a;
var tb:Number = this.b;
var tc:Number = this.c;
var td:Number = this.d;
var te:Number = this.e;
var tf:Number = this.f;
var tg:Number = this.g;
var th:Number = this.h;
var ti:Number = this.i;
var tj:Number = this.j;
var tk:Number = this.k;
var tl:Number = this.l;
this.a = ta * transform.a + tb * transform.e + tc * transform.i;
this.b = ta * transform.b + tb * transform.f + tc * transform.j;
this.c = ta * transform.c + tb * transform.g + tc * transform.k;
this.d = ta * transform.d + tb * transform.h + tc * transform.l + td;
this.e = te * transform.a + tf * transform.e + tg * transform.i;
this.f = te * transform.b + tf * transform.f + tg * transform.j;
this.g = te * transform.c + tf * transform.g + tg * transform.k;
this.h = te * transform.d + tf * transform.h + tg * transform.l + th;
this.i = ti * transform.a + tj * transform.e + tk * transform.i;
this.j = ti * transform.b + tj * transform.f + tk * transform.j;
this.k = ti * transform.c + tj * transform.g + tk * transform.k;
this.l = ti * transform.d + tj * transform.h + tk * transform.l + tl;
}
public function combine(transformA:name_139, transformB:name_139) : void
{
this.a = transformA.a * transformB.a + transformA.b * transformB.e + transformA.c * transformB.i;
this.b = transformA.a * transformB.b + transformA.b * transformB.f + transformA.c * transformB.j;
this.c = transformA.a * transformB.c + transformA.b * transformB.g + transformA.c * transformB.k;
this.d = transformA.a * transformB.d + transformA.b * transformB.h + transformA.c * transformB.l + transformA.d;
this.e = transformA.e * transformB.a + transformA.f * transformB.e + transformA.g * transformB.i;
this.f = transformA.e * transformB.b + transformA.f * transformB.f + transformA.g * transformB.j;
this.g = transformA.e * transformB.c + transformA.f * transformB.g + transformA.g * transformB.k;
this.h = transformA.e * transformB.d + transformA.f * transformB.h + transformA.g * transformB.l + transformA.h;
this.i = transformA.i * transformB.a + transformA.j * transformB.e + transformA.k * transformB.i;
this.j = transformA.i * transformB.b + transformA.j * transformB.f + transformA.k * transformB.j;
this.k = transformA.i * transformB.c + transformA.j * transformB.g + transformA.k * transformB.k;
this.l = transformA.i * transformB.d + transformA.j * transformB.h + transformA.k * transformB.l + transformA.l;
}
public function calculateInversion(source:name_139) : void
{
var ta:Number = source.a;
var tb:Number = source.b;
var tc:Number = source.c;
var td:Number = source.d;
var te:Number = source.e;
var tf:Number = source.f;
var tg:Number = source.g;
var th:Number = source.h;
var ti:Number = source.i;
var tj:Number = source.j;
var tk:Number = source.k;
var tl:Number = source.l;
var det:Number = 1 / (-tc * tf * ti + tb * tg * ti + tc * te * tj - ta * tg * tj - tb * te * tk + ta * tf * tk);
this.a = (-tg * tj + tf * tk) * det;
this.b = (tc * tj - tb * tk) * det;
this.c = (-tc * tf + tb * tg) * det;
this.d = (td * tg * tj - tc * th * tj - td * tf * tk + tb * th * tk + tc * tf * tl - tb * tg * tl) * det;
this.e = (tg * ti - te * tk) * det;
this.f = (-tc * ti + ta * tk) * det;
this.g = (tc * te - ta * tg) * det;
this.h = (tc * th * ti - td * tg * ti + td * te * tk - ta * th * tk - tc * te * tl + ta * tg * tl) * det;
this.i = (-tf * ti + te * tj) * det;
this.j = (tb * ti - ta * tj) * det;
this.k = (-tb * te + ta * tf) * det;
this.l = (td * tf * ti - tb * th * ti - td * te * tj + ta * th * tj + tb * te * tl - ta * tf * tl) * det;
}
public function copy(source:name_139) : void
{
this.a = source.a;
this.b = source.b;
this.c = source.c;
this.d = source.d;
this.e = source.e;
this.f = source.f;
this.g = source.g;
this.h = source.h;
this.i = source.i;
this.j = source.j;
this.k = source.k;
this.l = source.l;
}
public function toString() : String
{
return "[Transform3D" + " a:" + this.a.toFixed(3) + " b:" + this.b.toFixed(3) + " c:" + this.a.toFixed(3) + " d:" + this.d.toFixed(3) + " e:" + this.e.toFixed(3) + " f:" + this.f.toFixed(3) + " g:" + this.a.toFixed(3) + " h:" + this.h.toFixed(3) + " i:" + this.i.toFixed(3) + " j:" + this.j.toFixed(3) + " k:" + this.a.toFixed(3) + " l:" + this.l.toFixed(3) + "]";
}
}
}

373
src/package_21/name_386.as Normal file
View File

@@ -0,0 +1,373 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.geom.Vector3D;
use namespace alternativa3d;
public class name_386
{
public var minX:Number = 1e+22;
public var minY:Number = 1e+22;
public var minZ:Number = 1e+22;
public var maxX:Number = -1e+22;
public var maxY:Number = -1e+22;
public var maxZ:Number = -1e+22;
public function name_386()
{
super();
}
public function reset() : void
{
this.minX = 1e+22;
this.minY = 1e+22;
this.minZ = 1e+22;
this.maxX = -1e+22;
this.maxY = -1e+22;
this.maxZ = -1e+22;
}
alternativa3d function name_393(frustum:name_429, culling:int) : int
{
var side:int = 1;
for(var plane:name_429 = frustum; plane != null; plane = plane.next)
{
if(Boolean(culling & side))
{
if(plane.x >= 0)
{
if(plane.y >= 0)
{
if(plane.z >= 0)
{
if(this.maxX * plane.x + this.maxY * plane.y + this.maxZ * plane.z <= plane.offset)
{
return -1;
}
if(this.minX * plane.x + this.minY * plane.y + this.minZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
else
{
if(this.maxX * plane.x + this.maxY * plane.y + this.minZ * plane.z <= plane.offset)
{
return -1;
}
if(this.minX * plane.x + this.minY * plane.y + this.maxZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
}
else if(plane.z >= 0)
{
if(this.maxX * plane.x + this.minY * plane.y + this.maxZ * plane.z <= plane.offset)
{
return -1;
}
if(this.minX * plane.x + this.maxY * plane.y + this.minZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
else
{
if(this.maxX * plane.x + this.minY * plane.y + this.minZ * plane.z <= plane.offset)
{
return -1;
}
if(this.minX * plane.x + this.maxY * plane.y + this.maxZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
}
else if(plane.y >= 0)
{
if(plane.z >= 0)
{
if(this.minX * plane.x + this.maxY * plane.y + this.maxZ * plane.z <= plane.offset)
{
return -1;
}
if(this.maxX * plane.x + this.minY * plane.y + this.minZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
else
{
if(this.minX * plane.x + this.maxY * plane.y + this.minZ * plane.z <= plane.offset)
{
return -1;
}
if(this.maxX * plane.x + this.minY * plane.y + this.maxZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
}
else if(plane.z >= 0)
{
if(this.minX * plane.x + this.minY * plane.y + this.maxZ * plane.z <= plane.offset)
{
return -1;
}
if(this.maxX * plane.x + this.maxY * plane.y + this.minZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
else
{
if(this.minX * plane.x + this.minY * plane.y + this.minZ * plane.z <= plane.offset)
{
return -1;
}
if(this.maxX * plane.x + this.maxY * plane.y + this.maxZ * plane.z > plane.offset)
{
culling &= 0x3F & ~side;
}
}
}
side <<= 1;
}
return culling;
}
alternativa3d function name_392(camera:name_124, object:name_78, occlusion:name_429 = null) : Boolean
{
return true;
}
alternativa3d function name_391(origins:Vector.<Vector3D>, directions:Vector.<Vector3D>, raysLength:int) : Boolean
{
var origin:Vector3D = null;
var direction:Vector3D = null;
var a:Number = NaN;
var b:Number = NaN;
var c:Number = NaN;
var d:Number = NaN;
var threshold:Number = NaN;
for(var i:int = 0; i < raysLength; )
{
origin = origins[i];
direction = directions[i];
if(origin.x >= this.minX && origin.x <= this.maxX && origin.y >= this.minY && origin.y <= this.maxY && origin.z >= this.minZ && origin.z <= this.maxZ)
{
return true;
}
if(!(origin.x < this.minX && direction.x <= 0 || origin.x > this.maxX && direction.x >= 0 || origin.y < this.minY && direction.y <= 0 || origin.y > this.maxY && direction.y >= 0 || origin.z < this.minZ && direction.z <= 0 || origin.z > this.maxZ && direction.z >= 0))
{
threshold = 0.000001;
if(direction.x > threshold)
{
a = (this.minX - origin.x) / direction.x;
b = (this.maxX - origin.x) / direction.x;
}
else if(direction.x < -threshold)
{
a = (this.maxX - origin.x) / direction.x;
b = (this.minX - origin.x) / direction.x;
}
else
{
a = 0;
b = 1e+22;
}
if(direction.y > threshold)
{
c = (this.minY - origin.y) / direction.y;
d = (this.maxY - origin.y) / direction.y;
}
else if(direction.y < -threshold)
{
c = (this.maxY - origin.y) / direction.y;
d = (this.minY - origin.y) / direction.y;
}
else
{
c = 0;
d = 1e+22;
}
if(!(c >= b || d <= a))
{
if(c < a)
{
if(d < b)
{
b = d;
}
}
else
{
a = c;
if(d < b)
{
b = d;
}
}
if(direction.z > threshold)
{
c = (this.minZ - origin.z) / direction.z;
d = (this.maxZ - origin.z) / direction.z;
}
else if(direction.z < -threshold)
{
c = (this.maxZ - origin.z) / direction.z;
d = (this.minZ - origin.z) / direction.z;
}
else
{
c = 0;
d = 1e+22;
}
if(!(c >= b || d <= a))
{
return true;
}
}
}
i++;
}
return false;
}
alternativa3d function name_395(sphere:Vector3D) : Boolean
{
return sphere.x + sphere.w > this.minX && sphere.x - sphere.w < this.maxX && sphere.y + sphere.w > this.minY && sphere.y - sphere.w < this.maxY && sphere.z + sphere.w > this.minZ && sphere.z - sphere.w < this.maxZ;
}
public function intersectRay(origin:Vector3D, direction:Vector3D) : Boolean
{
var a:Number = NaN;
var b:Number = NaN;
var c:Number = NaN;
var d:Number = NaN;
if(origin.x >= this.minX && origin.x <= this.maxX && origin.y >= this.minY && origin.y <= this.maxY && origin.z >= this.minZ && origin.z <= this.maxZ)
{
return true;
}
if(origin.x < this.minX && direction.x <= 0)
{
return false;
}
if(origin.x > this.maxX && direction.x >= 0)
{
return false;
}
if(origin.y < this.minY && direction.y <= 0)
{
return false;
}
if(origin.y > this.maxY && direction.y >= 0)
{
return false;
}
if(origin.z < this.minZ && direction.z <= 0)
{
return false;
}
if(origin.z > this.maxZ && direction.z >= 0)
{
return false;
}
if(direction.x > 0.000001)
{
a = (this.minX - origin.x) / direction.x;
b = (this.maxX - origin.x) / direction.x;
}
else if(direction.x < -0.000001)
{
a = (this.maxX - origin.x) / direction.x;
b = (this.minX - origin.x) / direction.x;
}
else
{
a = -1e+22;
b = 1e+22;
}
if(direction.y > 0.000001)
{
c = (this.minY - origin.y) / direction.y;
d = (this.maxY - origin.y) / direction.y;
}
else if(direction.y < -0.000001)
{
c = (this.maxY - origin.y) / direction.y;
d = (this.minY - origin.y) / direction.y;
}
else
{
c = -1e+22;
d = 1e+22;
}
if(c >= b || d <= a)
{
return false;
}
if(c < a)
{
if(d < b)
{
b = d;
}
}
else
{
a = c;
if(d < b)
{
b = d;
}
}
if(direction.z > 0.000001)
{
c = (this.minZ - origin.z) / direction.z;
d = (this.maxZ - origin.z) / direction.z;
}
else if(direction.z < -0.000001)
{
c = (this.maxZ - origin.z) / direction.z;
d = (this.minZ - origin.z) / direction.z;
}
else
{
c = -1e+22;
d = 1e+22;
}
if(c >= b || d <= a)
{
return false;
}
return true;
}
public function clone() : name_386
{
var res:name_386 = new name_386();
res.minX = this.minX;
res.minY = this.minY;
res.minZ = this.minZ;
res.maxX = this.maxX;
res.maxY = this.maxY;
res.maxZ = this.maxZ;
return res;
}
public function toString() : String
{
return "[BoundBox " + "X:[" + this.minX.toFixed(2) + ", " + this.maxX.toFixed(2) + "] Y:[" + this.minY.toFixed(2) + ", " + this.maxY.toFixed(2) + "] Z:[" + this.minZ.toFixed(2) + ", " + this.maxZ.toFixed(2) + "]]";
}
}
}

View File

@@ -0,0 +1,30 @@
package package_21
{
import flash.geom.Point;
import flash.geom.Vector3D;
import package_19.name_117;
public class name_387
{
public var object:name_78;
public var point:Vector3D;
public var surface:name_117;
public var time:Number;
public var uv:Point;
public function name_387()
{
super();
}
public function toString() : String
{
return "[RayIntersectionData " + this.object + ", " + this.point + ", " + this.uv + ", " + this.time + "]";
}
}
}

View File

@@ -0,0 +1,55 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.utils.Dictionary;
import package_19.name_509;
use namespace alternativa3d;
public class name_397
{
public static const BOUNDS:int = 8;
private static var boundWires:Dictionary = new Dictionary();
public function name_397()
{
super();
}
private static function method_643() : name_509
{
var res:name_509 = new name_509();
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,-0.5,-0.5,0.5,-0.5,-0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,-0.5,-0.5,0.5,0.5,-0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,0.5,-0.5,-0.5,0.5,-0.5);
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,0.5,-0.5,-0.5,-0.5,-0.5);
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,-0.5,0.5,0.5,-0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,-0.5,0.5,0.5,0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,0.5,0.5,-0.5,0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,0.5,0.5,-0.5,-0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,-0.5,-0.5,-0.5,-0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,-0.5,-0.5,0.5,-0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(0.5,0.5,-0.5,0.5,0.5,0.5);
res.alternativa3d::geometry.alternativa3d::method_558(-0.5,0.5,-0.5,-0.5,0.5,0.5);
return res;
}
alternativa3d static function name_399(camera:name_124, boundBox:name_386, transform:name_139, color:int = -1) : void
{
var boundWire:name_509 = boundWires[camera.alternativa3d::context3D];
if(boundWire == null)
{
boundWire = method_643();
boundWires[camera.alternativa3d::context3D] = boundWire;
boundWire.alternativa3d::geometry.upload(camera.alternativa3d::context3D);
}
boundWire.color = color >= 0 ? uint(color) : 10092288;
boundWire.thickness = 1;
boundWire.alternativa3d::transform.compose((boundBox.minX + boundBox.maxX) * 0.5,(boundBox.minY + boundBox.maxY) * 0.5,(boundBox.minZ + boundBox.maxZ) * 0.5,0,0,0,boundBox.maxX - boundBox.minX,boundBox.maxY - boundBox.minY,boundBox.maxZ - boundBox.minZ);
boundWire.alternativa3d::localToCameraTransform.combine(transform,boundWire.alternativa3d::transform);
boundWire.alternativa3d::collectDraws(camera,null,0);
}
}
}

View File

@@ -0,0 +1,49 @@
package package_21
{
public class name_429
{
public static var collector:name_429;
public var x:Number;
public var y:Number;
public var z:Number;
public var offset:Number;
public var next:name_429;
public function name_429()
{
super();
}
public static function create() : name_429
{
var res:name_429 = null;
if(collector != null)
{
res = collector;
collector = res.next;
res.next = null;
return res;
}
return new name_429();
}
public function create() : name_429
{
var res:name_429 = null;
if(collector != null)
{
res = collector;
collector = res.next;
res.next = null;
return res;
}
return new name_429();
}
}
}

261
src/package_21/name_430.as Normal file
View File

@@ -0,0 +1,261 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
import flash.display3D.Context3D;
import flash.display3D.Context3DCompareMode;
import flash.display3D.Context3DProgramType;
import flash.display3D.IndexBuffer3D;
import flash.display3D.Program3D;
import package_4.name_127;
use namespace alternativa3d;
public class name_430
{
protected static var collector:name_135;
private static var _usedBuffers:uint = 0;
private static var _usedTextures:uint = 0;
alternativa3d var camera:name_124;
alternativa3d var var_585:Vector.<name_135> = new Vector.<name_135>();
public function name_430()
{
super();
}
alternativa3d function render(context:Context3D) : void
{
var list:name_135 = null;
var next:name_135 = null;
var drawUnitsLength:int = int(this.alternativa3d::var_585.length);
for(var i:int = 0; i < drawUnitsLength; )
{
list = this.alternativa3d::var_585[i];
if(list != null)
{
switch(i)
{
case name_128.SKY:
context.setDepthTest(false,Context3DCompareMode.ALWAYS);
break;
case name_128.OPAQUE_SORT:
context.setDepthTest(true,Context3DCompareMode.LESS);
break;
case name_128.OPAQUE:
context.setDepthTest(true,Context3DCompareMode.LESS);
break;
case name_128.TANK_SHADOW:
context.setDepthTest(false,Context3DCompareMode.LESS_EQUAL);
break;
case name_128.TANK_OPAQUE:
context.setDepthTest(true,Context3DCompareMode.LESS);
break;
case name_128.DECALS:
context.setDepthTest(false,Context3DCompareMode.LESS_EQUAL);
break;
case name_128.SHADOWS:
context.setDepthTest(false,Context3DCompareMode.EQUAL);
break;
case name_128.SHADOWED_LIGHTS:
context.setDepthTest(false,Context3DCompareMode.EQUAL);
break;
case name_128.LIGHTS:
context.setDepthTest(false,Context3DCompareMode.EQUAL);
break;
case name_128.FOG:
context.setDepthTest(false,Context3DCompareMode.EQUAL);
break;
case name_128.TRANSPARENT_SORT:
if(list.alternativa3d::next != null)
{
list = this.alternativa3d::method_646(list);
}
context.setDepthTest(false,Context3DCompareMode.LESS);
break;
case name_128.NEXT_LAYER:
context.setDepthTest(false,Context3DCompareMode.ALWAYS);
break;
case name_128.EFFECTS:
if(list.alternativa3d::next != null)
{
list = this.alternativa3d::method_646(list);
}
context.setDepthTest(false,Context3DCompareMode.LESS);
}
continue loop1;
}
i++;
}
this.alternativa3d::var_585.length = 0;
}
alternativa3d function name_137(object:name_78, program:Program3D, indexBuffer:IndexBuffer3D, firstIndex:int, numTriangles:int, debugShader:name_127 = null) : name_135
{
var res:name_135 = null;
if(collector != null)
{
res = collector;
collector = collector.alternativa3d::next;
res.alternativa3d::next = null;
}
else
{
res = new name_135();
}
res.alternativa3d::object = object;
res.alternativa3d::program = program;
res.alternativa3d::indexBuffer = indexBuffer;
res.alternativa3d::firstIndex = firstIndex;
res.alternativa3d::numTriangles = numTriangles;
return res;
}
alternativa3d function name_130(drawUnit:name_135, renderPriority:int) : void
{
if(renderPriority >= this.alternativa3d::var_585.length)
{
this.alternativa3d::var_585.length = renderPriority + 1;
}
drawUnit.alternativa3d::next = this.alternativa3d::var_585[renderPriority];
this.alternativa3d::var_585[renderPriority] = drawUnit;
}
protected function method_647(drawUnit:name_135, context:Context3D, camera:name_124) : void
{
var bufferIndex:int = 0;
var bufferBit:int = 0;
var currentBuffers:int = 0;
var textureSampler:int = 0;
var textureBit:int = 0;
var currentTextures:int = 0;
context.setBlendFactors(drawUnit.alternativa3d::blendSource,drawUnit.alternativa3d::blendDestination);
context.setCulling(drawUnit.alternativa3d::culling);
for(var i:int = 0; i < drawUnit.alternativa3d::name_403; i++)
{
bufferIndex = drawUnit.alternativa3d::name_405[i];
bufferBit = 1 << bufferIndex;
currentBuffers |= bufferBit;
_usedBuffers &= ~bufferBit;
context.setVertexBufferAt(bufferIndex,drawUnit.alternativa3d::vertexBuffers[i],drawUnit.alternativa3d::name_411[i],drawUnit.alternativa3d::name_409[i]);
}
if(drawUnit.alternativa3d::name_404 > 0)
{
context.setProgramConstantsFromVector(Context3DProgramType.VERTEX,0,drawUnit.alternativa3d::name_410,drawUnit.alternativa3d::name_404);
}
if(drawUnit.alternativa3d::name_407 > 0)
{
context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT,0,drawUnit.alternativa3d::name_408,drawUnit.alternativa3d::name_407);
}
for(i = 0; i < drawUnit.alternativa3d::var_182; )
{
textureSampler = drawUnit.alternativa3d::var_183[i];
textureBit = 1 << textureSampler;
currentTextures |= textureBit;
_usedTextures &= ~textureBit;
context.setTextureAt(textureSampler,drawUnit.alternativa3d::textures[i]);
i++;
}
context.setProgram(drawUnit.alternativa3d::program);
for(bufferIndex = 0; _usedBuffers > 0; )
{
bufferBit = _usedBuffers & 1;
_usedBuffers >>= 1;
if(Boolean(bufferBit))
{
context.setVertexBufferAt(bufferIndex,null);
}
bufferIndex++;
}
for(textureSampler = 0; _usedTextures > 0; )
{
textureBit = _usedTextures & 1;
_usedTextures >>= 1;
if(Boolean(textureBit))
{
context.setTextureAt(textureSampler,null);
}
textureSampler++;
}
context.drawTriangles(drawUnit.alternativa3d::indexBuffer,drawUnit.alternativa3d::firstIndex,drawUnit.alternativa3d::numTriangles);
_usedBuffers = currentBuffers;
_usedTextures = currentTextures;
++camera.alternativa3d::numDraws;
camera.alternativa3d::numTriangles += drawUnit.alternativa3d::numTriangles;
}
alternativa3d function method_646(list:name_135, direction:Boolean = true) : name_135
{
var left:name_135 = list;
var right:name_135 = list.alternativa3d::next;
while(right != null && right.alternativa3d::next != null)
{
list = list.alternativa3d::next;
right = right.alternativa3d::next.alternativa3d::next;
}
right = list.alternativa3d::next;
list.alternativa3d::next = null;
if(left.alternativa3d::next != null)
{
left = this.alternativa3d::method_646(left,direction);
}
if(right.alternativa3d::next != null)
{
right = this.alternativa3d::method_646(right,direction);
}
var flag:Boolean = direction ? left.alternativa3d::object.alternativa3d::localToCameraTransform.l > right.alternativa3d::object.alternativa3d::localToCameraTransform.l : left.alternativa3d::object.alternativa3d::localToCameraTransform.l < right.alternativa3d::object.alternativa3d::localToCameraTransform.l;
if(flag)
{
list = left;
left = left.alternativa3d::next;
}
else
{
list = right;
right = right.alternativa3d::next;
}
var last:name_135 = list;
while(left != null)
{
if(right == null)
{
last.alternativa3d::next = left;
return list;
}
if(flag)
{
if(direction ? left.alternativa3d::object.alternativa3d::localToCameraTransform.l > right.alternativa3d::object.alternativa3d::localToCameraTransform.l : left.alternativa3d::object.alternativa3d::localToCameraTransform.l < right.alternativa3d::object.alternativa3d::localToCameraTransform.l)
{
last = left;
left = left.alternativa3d::next;
}
else
{
last.alternativa3d::next = right;
last = right;
right = right.alternativa3d::next;
flag = false;
}
}
else if(direction ? left.alternativa3d::object.alternativa3d::localToCameraTransform.l < right.alternativa3d::object.alternativa3d::localToCameraTransform.l : left.alternativa3d::object.alternativa3d::localToCameraTransform.l > right.alternativa3d::object.alternativa3d::localToCameraTransform.l)
{
last = right;
right = right.alternativa3d::next;
}
else
{
last.alternativa3d::next = left;
last = left;
left = left.alternativa3d::next;
flag = true;
}
}
last.alternativa3d::next = right;
return list;
}
}
}

View File

@@ -0,0 +1,21 @@
package package_21
{
import alternativa.engine3d.alternativa3d;
use namespace alternativa3d;
public class name_431 extends name_78
{
public function name_431()
{
super();
}
override alternativa3d function calculateVisibility(camera:name_124) : void
{
camera.alternativa3d::occluders[camera.alternativa3d::occludersLength] = this;
++camera.alternativa3d::occludersLength;
}
}
}

View File

@@ -0,0 +1,20 @@
package package_21
{
import flash.display3D.VertexBuffer3D;
import flash.utils.ByteArray;
public class name_432
{
public var buffer:VertexBuffer3D;
public var attributes:Array;
public var data:ByteArray;
public function name_432()
{
super();
}
}
}

27
src/package_21/name_77.as Normal file
View File

@@ -0,0 +1,27 @@
package package_21
{
import flash.display3D.Context3D;
public class name_77
{
public function name_77()
{
super();
}
public function get isUploaded() : Boolean
{
return false;
}
public function upload(context3D:Context3D) : void
{
throw new Error("Cannot upload without data");
}
public function dispose() : void
{
}
}
}

1292
src/package_21/name_78.as Normal file

File diff suppressed because it is too large Load Diff

1562
src/package_21/name_81.as Normal file

File diff suppressed because it is too large Load Diff