diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index dea03329..00000000
--- a/Gruntfile.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/****************************************************************************************************************************************************************
- * Grunt File Usage:
- ****************************************************************************************************************************************************************
- *
- * Export Documentation, TypeScript and Minify:
- *
- * grunt
- *
- * Export TypeScript and Minify:
- *
- * grunt lib
- *
- *****************************************************************************************************************************************************************
- * Options
- *****************************************************************************************************************************************************************
- *
- * Export lib version, defaults to 'next' if not specified:
- *
- * grunt --libversion=0.0.1
- *
- ****************************************************************************************************************************************************************
- * Installing Dependencies:
- ****************************************************************************************************************************************************************
- *
- * To install Grunt
- *
- * 1) install the grunt cli:
- *
- * npm install -g grunt-cli
- *
- * 2) install the dependencies used by the build script:
- *
- * OSX : sudo npm install
- * Windows: npm install
- *
- ****************************************************************************************************************************************************************/
-
-module.exports = function(grunt) {
-
-
- var version = grunt.option('libversion') || 'next'; // Check for a version number | defaults to next if not specified
-
- //--------------------------------------------------------------------------------------------------------------
- // Plugins used by Grunt Script
- //--------------------------------------------------------------------------------------------------------------
-
- grunt.loadNpmTasks("grunt-ts");
- grunt.loadNpmTasks('grunt-contrib-yuidoc');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-concat');
-
- //--------------------------------------------------------------------------------------------------------------
- // Grunt Config
- //--------------------------------------------------------------------------------------------------------------
-
- grunt.initConfig( {
-
- //--------------------------------------------------------------------------------------------------------------
- // Read the package.json
- //--------------------------------------------------------------------------------------------------------------
-
- pkg: grunt.file.readJSON('package.json'),
-
- //--------------------------------------------------------------------------------------------------------------
- // Metadata / Configuration
- //--------------------------------------------------------------------------------------------------------------
-
- meta: {
-
- tsFile: 'src/AwayJSCore.ts', // TypeScript export source
- tsPath: 'src/', // TypeScript source folder
-
- tsExportFile: 'build/awayjs-core.' + version + '.js', // JavaScript export target
- tsExportUglyFile: 'build/awayjs-core.' + version + '.min.js', // JavaScript minified target
-
- tsExportFolder: 'build/', // Export folder
- docsPath: 'docs/' // Documentation export path
-
- },
-
- //--------------------------------------------------------------------------------------------------------------
- // Export and compile TypeScript
- //--------------------------------------------------------------------------------------------------------------
-
- ts: {
-
- MainJsFile: {
- src: ['<%= meta.tsFile %>'],
- out: '<%= meta.tsExportFile %>',
- options: {
- target: 'es5',
- sourcemap: true,
- declaration: true,
- comments: true
- }
- }
- },
-
- //--------------------------------------------------------------------------------------------------------------
- // Concatenate file ( currently not used )
- //--------------------------------------------------------------------------------------------------------------
-
- concat: {
- options: {
- // define a string to put between each file in the concatenated output
- separator: ';'
- },
- dist: {
- // the files to concatenate
- src: [ '<%= meta.tsExportFile %>' ],
- // the location of the resulting JS file
- dest: ''
-
- }
- },
-
- //--------------------------------------------------------------------------------------------------------------
- // Minify JavaScript source
- //--------------------------------------------------------------------------------------------------------------
-
- uglify: {
-
- options: {
- mangle: false
- },
- my_target: {
- files: {
- '<%= meta.tsExportUglyFile %>': [ '<%= meta.tsExportFile %>' ]
- }
- }
-
- },
-
- //--------------------------------------------------------------------------------------------------------------
- // Export Documentation ( using multi export JS files )
- //--------------------------------------------------------------------------------------------------------------
-
- yuidoc: {
-
- compile: {
-
- name: '<%= pkg.name %>',
- description: '<%= pkg.description %>',
- version: '<%= pkg.version %>',
- url: '<%= pkg.homepage %>',
-
- options: {
- extension:'.ts',
- paths: '<%= meta.tsPath %>',
- outdir: '<%= meta.docsPath %>'
- }
- }
- }
-
- } );
-
- //--------------------------------------------------------------------------------------------------------------
- // Register Grunt tasks
- //--------------------------------------------------------------------------------------------------------------
-
- grunt.option.init();
- grunt.registerTask('default', ['ts' , 'uglify' , 'yuidoc' ]); // Default Tasks
- grunt.registerTask('lib', ['ts' , 'uglify' ]); // Export TypeScript only
-
-};
-
diff --git a/build/awayjs-core.d.ts b/build/awayjs-core.d.ts
new file mode 100755
index 00000000..e8c4652c
--- /dev/null
+++ b/build/awayjs-core.d.ts
@@ -0,0 +1,16386 @@
+declare module "awayjs-core/lib/animators/IAnimationSet" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ /**
+ * Provides an interface for data set classes that hold animation data for use in animator classes.
+ *
+ * @see away.animators.AnimatorBase
+ */
+ interface IAnimationSet extends IAsset {
+ /**
+ * Check to determine whether a state is registered in the animation set under the given name.
+ *
+ * @param stateName The name of the animation state object to be checked.
+ */
+ hasAnimation(name: string): boolean;
+ /**
+ * Retrieves the animation state object registered in the animation data set under the given name.
+ *
+ * @param stateName The name of the animation state object to be retrieved.
+ */
+ getAnimation(name: string): AnimationNodeBase;
+ /**
+ * Indicates whether the properties of the animation data contained within the set combined with
+ * the vertex registers aslready in use on shading materials allows the animation data to utilise
+ * GPU calls.
+ */
+ usesCPU: boolean;
+ /**
+ * Called by the material to reset the GPU indicator before testing whether register space in the shader
+ * is available for running GPU-based animation code.
+ *
+ * @private
+ */
+ resetGPUCompatibility(): any;
+ /**
+ * Called by the animator to void the GPU indicator when register space in the shader
+ * is no longer available for running GPU-based animation code.
+ *
+ * @private
+ */
+ cancelGPUCompatibility(): any;
+ }
+ export = IAnimationSet;
+
+}
+declare module "awayjs-core/lib/animators/IAnimator" {
+ import IAnimationSet = require("awayjs-core/lib/animators/IAnimationSet");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * Provides an interface for animator classes that control animation output from a data set subtype of AnimationSetBase
.
+ *
+ * @see away.animators.IAnimationSet
+ */
+ interface IAnimator extends IAsset {
+ /**
+ *
+ */
+ animationSet: IAnimationSet;
+ /**
+ *
+ */
+ clone(): IAnimator;
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ * Used by the entity object to which the animator is applied, registers the owner for internal use.
+ *
+ * @private
+ */
+ addOwner(mesh: IEntity): any;
+ /**
+ * Used by the mesh object from which the animator is removed, unregisters the owner for internal use.
+ *
+ * @private
+ */
+ removeOwner(mesh: IEntity): any;
+ /**
+ * //TODO
+ *
+ * @param sourceSubGeometry
+ */
+ getRenderableSubGeometry(renderable: IRenderable, sourceSubGeometry: SubGeometryBase): SubGeometryBase;
+ }
+ export = IAnimator;
+
+}
+declare module "awayjs-core/lib/bounds/AxisAlignedBoundingBox" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * AxisAlignedBoundingBox represents a bounding box volume that has its planes aligned to the local coordinate axes of the bounded object.
+ * This is useful for most meshes.
+ */
+ class AxisAlignedBoundingBox extends BoundingVolumeBase {
+ private _centerX;
+ private _centerY;
+ private _centerZ;
+ private _halfExtentsX;
+ private _halfExtentsY;
+ private _halfExtentsZ;
+ /**
+ * Creates a new AxisAlignedBoundingBox
object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ public nullify(): void;
+ /**
+ * @inheritDoc
+ */
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ public rayIntersection(position: Vector3D, direction: Vector3D, targetNormal: Vector3D): number;
+ /**
+ * @inheritDoc
+ */
+ public containsPoint(position: Vector3D): boolean;
+ /**
+ * @inheritDoc
+ */
+ public fromExtremes(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
+ /**
+ * @inheritDoc
+ */
+ public clone(): BoundingVolumeBase;
+ public halfExtentsX : number;
+ public halfExtentsY : number;
+ public halfExtentsZ : number;
+ /**
+ * Finds the closest point on the bounding volume to another given point. This can be used for maximum error calculations for content within a given bound.
+ * @param point The point for which to find the closest point on the bounding volume
+ * @param target An optional Vector3D to store the result to prevent creating a new object.
+ * @return
+ */
+ public closestPointToPoint(point: Vector3D, target?: Vector3D): Vector3D;
+ public pUpdateBoundingRenderable(): void;
+ public pCreateBoundingEntity(): IEntity;
+ public classifyToPlane(plane: Plane3D): number;
+ public transformFrom(bounds: BoundingVolumeBase, matrix: Matrix3D): void;
+ }
+ export = AxisAlignedBoundingBox;
+
+}
+declare module "awayjs-core/lib/bounds/BoundingSphere" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ class BoundingSphere extends BoundingVolumeBase {
+ private _radius;
+ private _centerX;
+ private _centerY;
+ private _centerZ;
+ constructor();
+ public radius : number;
+ public nullify(): void;
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ public fromSphere(center: Vector3D, radius: number): void;
+ public fromExtremes(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
+ public clone(): BoundingVolumeBase;
+ public rayIntersection(position: Vector3D, direction: Vector3D, targetNormal: Vector3D): number;
+ public containsPoint(position: Vector3D): boolean;
+ public pUpdateBoundingEntity(): void;
+ public pCreateBoundingEntity(): IEntity;
+ public classifyToPlane(plane: Plane3D): number;
+ public transformFrom(bounds: BoundingVolumeBase, matrix: Matrix3D): void;
+ }
+ export = BoundingSphere;
+
+}
+declare module "awayjs-core/lib/bounds/BoundingVolumeBase" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import Box = require("awayjs-core/lib/core/geom/Box");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ class BoundingVolumeBase {
+ public _aabb: Box;
+ public _pAabbPoints: number[];
+ public _pAabbPointsDirty: boolean;
+ public _pBoundingEntity: IEntity;
+ constructor();
+ public aabb : Box;
+ public aabbPoints : number[];
+ public boundingEntity : IEntity;
+ public nullify(): void;
+ public disposeRenderable(): void;
+ public fromVertices(vertices: number[]): void;
+ /**
+ * Updates the bounds to fit a Geometry object.
+ *
+ * @param geometry The Geometry object to be bounded.
+ */
+ public fromGeometry(geometry: Geometry): void;
+ public fromSphere(center: Vector3D, radius: number): void;
+ public fromExtremes(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ public overlaps(bounds: BoundingVolumeBase): boolean;
+ public clone(): BoundingVolumeBase;
+ public rayIntersection(position: Vector3D, direction: Vector3D, targetNormal: Vector3D): number;
+ public containsPoint(position: Vector3D): boolean;
+ public pUpdateAABBPoints(): void;
+ public pUpdateBoundingEntity(): void;
+ public pCreateBoundingEntity(): IEntity;
+ public classifyToPlane(plane: Plane3D): number;
+ public transformFrom(bounds: BoundingVolumeBase, matrix: Matrix3D): void;
+ }
+ export = BoundingVolumeBase;
+
+}
+declare module "awayjs-core/lib/bounds/NullBounds" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ class NullBounds extends BoundingVolumeBase {
+ private _alwaysIn;
+ constructor(alwaysIn?: boolean);
+ public clone(): BoundingVolumeBase;
+ public pCreateBoundingEntity(): IEntity;
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ public fromSphere(center: Vector3D, radius: number): void;
+ public fromExtremes(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): void;
+ public classifyToPlane(plane: Plane3D): number;
+ public transformFrom(bounds: BoundingVolumeBase, matrix: Matrix3D): void;
+ }
+ export = NullBounds;
+
+}
+declare module "awayjs-core/lib/containers/DisplayObjectContainer" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Partition = require("awayjs-core/lib/core/partition/Partition");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ /**
+ * The DisplayObjectContainer class is the base class for all objects that can
+ * serve as display object containers on the display list. The display list
+ * manages all objects displayed in the Flash runtimes. Use the
+ * DisplayObjectContainer class to arrange the display objects in the display
+ * list. Each DisplayObjectContainer object has its own child list for
+ * organizing the z-order of the objects. The z-order is the front-to-back
+ * order that determines which object is drawn in front, which is behind, and
+ * so on.
+ *
+ *
DisplayObject is an abstract base class; therefore, you cannot call
+ * DisplayObject directly. Invoking new DisplayObject()
throws an
+ * ArgumentError
exception.
new DisplayObjectContainer()
constructor throws an
+ * ArgumentError
exception.
+ *
+ * For more information, see the "Display Programming" chapter of the + * ActionScript 3.0 Developer's Guide.
+ */ + class DisplayObjectContainer extends DisplayObject implements IAsset { + private _mouseChildren; + private _children; + public _iIsRoot: boolean; + /** + * + */ + public assetType : string; + /** + * Determines whether or not the children of the object are mouse, or user + * input device, enabled. If an object is enabled, a user can interact with + * it by using a mouse or user input device. The default is + *true
.
+ *
+ * This property is useful when you create a button with an instance of
+ * the Sprite class(instead of using the SimpleButton class). When you use a
+ * Sprite instance to create a button, you can choose to decorate the button
+ * by using the addChild()
method to add additional Sprite
+ * instances. This process can cause unexpected behavior with mouse events
+ * because the Sprite instances you add as children can become the target
+ * object of a mouse event when you expect the parent instance to be the
+ * target object. To ensure that the parent instance serves as the target
+ * objects for mouse events, you can set the mouseChildren
+ * property of the parent instance to false
.
No event is dispatched by setting this property. You must use the
+ * addEventListener()
method to create interactive
+ * functionality.
true
.
+ *
+ * Note: Do not use the tabChildren
property with
+ * Flex. Instead, use the
+ * mx.core.UIComponent.hasFocusableChildren
property.
new DisplayObjectContainer()
constructor throws
+ * an ArgumentError
exception. You can, however, call
+ * constructors for the following subclasses of DisplayObjectContainer:
+ * new Loader()
new Sprite()
new MovieClip()
addChildAt()
method.)
+ *
+ * If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.
+ * + *Note: The command stage.addChild()
can cause
+ * problems with a published SWF file, including security problems and
+ * conflicts with other loaded SWF files. There is only one Stage within a
+ * Flash runtime instance, no matter how many SWF files you load into the
+ * runtime. So, generally, objects should not be added to the Stage,
+ * directly, at all. The only object the Stage should contain is the root
+ * object. Create a DisplayObjectContainer to contain all of the items on the
+ * display list. Then, if necessary, add that DisplayObjectContainer instance
+ * to the Stage.
child
+ * parameter.
+ * @throws ArgumentError Throws if the child is the same as the parent. Also
+ * throws if the caller is a child(or grandchild etc.)
+ * of the child being added.
+ * @event added Dispatched when a display object is added to the display
+ * list.
+ */
+ public addChild(child: DisplayObject): DisplayObject;
+ /**
+ * Adds a child DisplayObject instance to this DisplayObjectContainer
+ * instance. The child is added at the index position specified. An index of
+ * 0 represents the back(bottom) of the display list for this
+ * DisplayObjectContainer object.
+ *
+ * For example, the following example shows three display objects, labeled + * a, b, and c, at index positions 0, 2, and 1, respectively:
+ * + *If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.
+ * + * @param child The DisplayObject instance to add as a child of this + * DisplayObjectContainer instance. + * @param index The index position to which the child is added. If you + * specify a currently occupied index position, the child object + * that exists at that position and all higher positions are + * moved up one position in the child list. + * @return The DisplayObject instance that you pass in thechild
+ * parameter.
+ * @throws ArgumentError Throws if the child is the same as the parent. Also
+ * throws if the caller is a child(or grandchild etc.)
+ * of the child being added.
+ * @throws RangeError Throws if the index position does not exist in the
+ * child list.
+ * @event added Dispatched when a display object is added to the display
+ * list.
+ */
+ public addChildAt(child: DisplayObject, index: number): DisplayObject;
+ public addChildren(...childarray: DisplayObject[]): void;
+ /**
+ *
+ */
+ public clone(): DisplayObject;
+ /**
+ * Determines whether the specified display object is a child of the
+ * DisplayObjectContainer instance or the instance itself. The search
+ * includes the entire display list including this DisplayObjectContainer
+ * instance. Grandchildren, great-grandchildren, and so on each return
+ * true
.
+ *
+ * @param child The child object to test.
+ * @return true
if the child
object is a child of
+ * the DisplayObjectContainer or the container itself; otherwise
+ * false
.
+ */
+ public contains(child: DisplayObject): boolean;
+ /**
+ *
+ */
+ public disposeWithChildren(): void;
+ /**
+ * Returns the child display object instance that exists at the specified
+ * index.
+ *
+ * @param index The index position of the child object.
+ * @return The child display object at the specified index position.
+ * @throws RangeError Throws if the index does not exist in the child
+ * list.
+ */
+ public getChildAt(index: number): DisplayObject;
+ /**
+ * Returns the child display object that exists with the specified name. If
+ * more that one child display object has the specified name, the method
+ * returns the first object in the child list.
+ *
+ * The getChildAt()
method is faster than the
+ * getChildByName()
method. The getChildAt()
method
+ * accesses a child from a cached array, whereas the
+ * getChildByName()
method has to traverse a linked list to
+ * access a child.
child
DisplayObject instance.
+ *
+ * @param child The DisplayObject instance to identify.
+ * @return The index position of the child display object to identify.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ */
+ public getChildIndex(child: DisplayObject): number;
+ /**
+ * Returns an array of objects that lie under the specified point and are
+ * children(or grandchildren, and so on) of this DisplayObjectContainer
+ * instance. Any child objects that are inaccessible for security reasons are
+ * omitted from the returned array. To determine whether this security
+ * restriction affects the returned array, call the
+ * areInaccessibleObjectsUnderPoint()
method.
+ *
+ * The point
parameter is in the coordinate space of the
+ * Stage, which may differ from the coordinate space of the display object
+ * container(unless the display object container is the Stage). You can use
+ * the globalToLocal()
and the localToGlobal()
+ * methods to convert points between these coordinate spaces.
child
DisplayObject instance from the
+ * child list of the DisplayObjectContainer instance. The parent
+ * property of the removed child is set to null
, and the object
+ * is garbage collected if no other references to the child exist. The index
+ * positions of any display objects above the child in the
+ * DisplayObjectContainer are decreased by 1.
+ *
+ * The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.
+ * + * @param child The DisplayObject instance to remove. + * @return The DisplayObject instance that you pass in thechild
+ * parameter.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ */
+ public removeChild(child: DisplayObject): DisplayObject;
+ /**
+ * Removes a child DisplayObject from the specified index
+ * position in the child list of the DisplayObjectContainer. The
+ * parent
property of the removed child is set to
+ * null
, and the object is garbage collected if no other
+ * references to the child exist. The index positions of any display objects
+ * above the child in the DisplayObjectContainer are decreased by 1.
+ *
+ * The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.
+ * + * @param index The child index of the DisplayObject to remove. + * @return The DisplayObject instance that was removed. + * @throws RangeError Throws if the index does not exist in the child + * list. + * @throws SecurityError This child display object belongs to a sandbox to + * which the calling object does not have access. You + * can avoid this situation by having the child movie + * call theSecurity.allowDomain()
method.
+ */
+ public removeChildAt(index: number): DisplayObject;
+ /**
+ * Removes all child
DisplayObject instances from the child list
+ * of the DisplayObjectContainer instance. The parent
property
+ * of the removed children is set to null
, and the objects are
+ * garbage collected if no other references to the children exist.
+ *
+ * The garbage collector reallocates unused memory space. When a variable or
+ * object is no longer actively referenced or stored somewhere, the garbage
+ * collector sweeps through and wipes out the memory space it used to occupy
+ * if no other references to it exist.
+ *
+ * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.
+ * @param endIndex The ending position. A value smaller than 0 throws a RangeError.
+ * @throws RangeError Throws if the beginIndex or endIndex positions do
+ * not exist in the child list.
+ */
+ public removeChildren(beginIndex?: number, endIndex?: number): void;
+ /**
+ * Changes the position of an existing child in the display object container.
+ * This affects the layering of child objects. For example, the following
+ * example shows three display objects, labeled a, b, and c, at index
+ * positions 0, 1, and 2, respectively:
+ *
+ * When you use the setChildIndex()
method and specify an
+ * index position that is already occupied, the only positions that change
+ * are those in between the display object's former and new position. All
+ * others will stay the same. If a child is moved to an index LOWER than its
+ * current index, all children in between will INCREASE by 1 for their index
+ * reference. If a child is moved to an index HIGHER than its current index,
+ * all children in between will DECREASE by 1 for their index reference. For
+ * example, if the display object container in the previous example is named
+ * container
, you can swap the position of the display objects
+ * labeled a and b by calling the following code:
This code results in the following arrangement of objects:
+ * + * @param child The child DisplayObject instance for which you want to change + * the index number. + * @param index The resulting index number for thechild
display
+ * object.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ * @throws RangeError Throws if the index does not exist in the child
+ * list.
+ */
+ public setChildIndex(child: DisplayObject, index: number): void;
+ /**
+ * Swaps the z-order (front-to-back order) of the two specified child
+ * objects. All other child objects in the display object container remain in
+ * the same index positions.
+ *
+ * @param child1 The first child object.
+ * @param child2 The second child object.
+ * @throws ArgumentError Throws if either child parameter is not a child of
+ * this object.
+ */
+ public swapChildren(child1: DisplayObject, child2: DisplayObject): void;
+ /**
+ * Swaps the z-order(front-to-back order) of the child objects at the two
+ * specified index positions in the child list. All other child objects in
+ * the display object container remain in the same index positions.
+ *
+ * @param index1 The index position of the first child object.
+ * @param index2 The index position of the second child object.
+ * @throws RangeError If either index does not exist in the child list.
+ */
+ public swapChildrenAt(index1: number, index2: number): void;
+ /**
+ * @protected
+ */
+ public pInvalidateSceneTransform(): void;
+ /**
+ * @protected
+ */
+ public _pUpdateScene(value: Scene): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitMouseEnabled(value: boolean): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitVisibility(value: boolean): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitPartition(value: Partition): void;
+ /**
+ * @private
+ *
+ * @param child
+ */
+ private removeChildInternal(child);
+ }
+ export = DisplayObjectContainer;
+
+}
+declare module "awayjs-core/lib/containers/Loader" {
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import LoaderInfo = require("awayjs-core/lib/core/base/LoaderInfo");
+ import AssetLoaderContext = require("awayjs-core/lib/core/library/AssetLoaderContext");
+ import AssetLoaderToken = require("awayjs-core/lib/core/library/AssetLoaderToken");
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * The Loader class is used to load SWF files or image(JPG, PNG, or GIF)
+ * files. Use the load()
method to initiate loading. The loaded
+ * display object is added as a child of the Loader object.
+ *
+ * Use the URLLoader class to load text or binary data.
+ * + *The Loader class overrides the following methods that it inherits,
+ * because a Loader object can only have one child display object - the
+ * display object that it loads. Calling the following methods throws an
+ * exception: addChild()
, addChildAt()
,
+ * removeChild()
, removeChildAt()
, and
+ * setChildIndex()
. To remove a loaded display object, you must
+ * remove the Loader object from its parent DisplayObjectContainer
+ * child array.
Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes + * are not used in ActionScript 3.0. The Loader and URLLoader classes replace + * them.
+ * + *When you use the Loader class, consider the Flash Player and Adobe AIR + * security model:
+ * + *System.allowDomain()
or the
+ * System.allowInsecureDomain()
method in the loaded content
+ * file.However, in AIR, content in the application
security
+ * sandbox(content installed with the AIR application) are not restricted by
+ * these security limitations.
For more information related to security, see the Flash Player Developer + * Center Topic: Security.
+ * + *When loading a SWF file from an untrusted source(such as a domain other + * than that of the Loader object's root SWF file), you may want to define a + * mask for the Loader object, to prevent the loaded content(which is a child + * of the Loader object) from drawing to portions of the Stage outside of that + * mask, as shown in the following code:
+ */ + class Loader extends DisplayObjectContainer { + private _loadingSessions; + private _useAssetLib; + private _assetLibId; + private _onResourceCompleteDelegate; + private _onAssetCompleteDelegate; + private _content; + private _contentLoaderInfo; + /** + * Contains the root display object of the SWF file or image(JPG, PNG, or + * GIF) file that was loaded by using theload()
or
+ * loadBytes()
methods.
+ *
+ * @throws SecurityError The loaded SWF file or image file belongs to a
+ * security sandbox to which you do not have access.
+ * For a loaded SWF file, you can avoid this situation
+ * by having the file call the
+ * Security.allowDomain()
method or by
+ * having the loading file specify a
+ * loaderContext
parameter with its
+ * securityDomain
property set to
+ * SecurityDomain.currentDomain
when you
+ * call the load()
or
+ * loadBytes()
method.
+ */
+ public content : DisplayObject;
+ /**
+ * Returns a LoaderInfo object corresponding to the object being loaded.
+ * LoaderInfo objects are shared between the Loader object and the loaded
+ * content object. The LoaderInfo object supplies loading progress
+ * information and statistics about the loaded file.
+ *
+ * Events related to the load are dispatched by the LoaderInfo object
+ * referenced by the contentLoaderInfo
property of the Loader
+ * object. The contentLoaderInfo
property is set to a valid
+ * LoaderInfo object, even before the content is loaded, so that you can add
+ * event listeners to the object prior to the load.
To detect uncaught errors that happen in a loaded SWF, use the
+ * Loader.uncaughtErrorEvents
property, not the
+ * Loader.contentLoaderInfo.uncaughtErrorEvents
property.
load()
method to load the asset
+ * as a child of the Loader instance. You can then add the Loader object to
+ * the display list(for instance, by using the addChild()
+ * method of a DisplayObjectContainer instance). The asset appears on the
+ * Stage as it loads.
+ *
+ * You can also use a Loader instance "offlist," that is without adding it + * to a display object container on the display list. In this mode, the + * Loader instance might be used to load a SWF file that contains additional + * modules of an application.
+ * + *To detect when the SWF file is finished loading, you can use the events
+ * of the LoaderInfo object associated with the
+ * contentLoaderInfo
property of the Loader object. At that
+ * point, the code in the module SWF file can be executed to initialize and
+ * start the module. In the offlist mode, a Loader instance might also be
+ * used to load a SWF file that contains components or media assets. Again,
+ * you can use the LoaderInfo object event notifications to detect when the
+ * components are finished loading. At that point, the application can start
+ * using the components and media assets in the library of the SWF file by
+ * instantiating the ActionScript 3.0 classes that represent those components
+ * and assets.
To determine the status of a Loader object, monitor the following
+ * events that the LoaderInfo object associated with the
+ * contentLoaderInfo
property of the Loader object:
open
event is dispatched when loading begins.ioError
or securityError
event is
+ * dispatched if the file cannot be loaded or if an error occured during the
+ * load process. progress
event fires continuously while the file is
+ * being loaded.complete
event is dispatched when a file completes
+ * downloading, but before the loaded movie clip's methods and properties are
+ * available. init
event is dispatched after the properties and
+ * methods of the loaded SWF file are accessible, so you can begin
+ * manipulating the loaded SWF file. This event is dispatched before the
+ * complete
handler. In streaming SWF files, the
+ * init
event can occur significantly earlier than the
+ * complete
event. For most purposes, use the init
+ * handler.load()
method operation that is currently in
+ * progress for the Loader instance.
+ *
+ */
+ public close(): void;
+ /**
+ * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an
+ * object that is a child of this Loader object. If you load an animated GIF
+ * file, only the first frame is displayed. As the Loader object can contain
+ * only a single child, issuing a subsequent load()
request
+ * terminates the previous request, if still pending, and commences a new
+ * load.
+ *
+ * Note: In AIR 1.5 and Flash Player 10, the maximum size for a + * loaded image is 8,191 pixels in width or height, and the total number of + * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191 + * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and + * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height + * and 2,880 pixels in width.
+ * + *A SWF file or image loaded into a Loader object inherits the position, + * rotation, and scale properties of the parent display objects of the Loader + * object.
+ * + *Use the unload()
method to remove movies or images loaded
+ * with this method, or to cancel a load operation that is in progress.
You can prevent a SWF file from using this method by setting the
+ * allowNetworking
parameter of the the object
and
+ * embed
tags in the HTML page that contains the SWF
+ * content.
When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.
+ * + *In Flash Player 10 and later, if you use a multipart Content-Type(for + * example "multipart/form-data") that contains an upload(indicated by a + * "filename" parameter in a "content-disposition" header within the POST + * body), the POST operation is subject to the security rules applied to + * uploads:
+ * + *Also, for any multipart Content-Type, the syntax must be valid + * (according to the RFC2046 standard). If the syntax appears to be invalid, + * the POST operation is subject to the security rules applied to + * uploads.
+ * + *For more information related to security, see the Flash Player + * Developer Center Topic: Security.
+ * + * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG + * file to be loaded. A relative path must be relative to the + * main SWF file. Absolute URLs must include the protocol + * reference, such as http:// or file:///. Filenames cannot + * include disk drive specifications. + * @param context A LoaderContext object, which has properties that define + * the following: + *If the context
parameter is not specified
+ * or refers to a null object, the loaded content remains in
+ * its own security domain.
For complete details, see the description of the + * properties in the LoaderContext + * class.
+ * @param ns An optional namespace string under which the file is to be + * loaded, allowing the differentiation of two resources with + * identical assets. + * @param parser An optional parser object for translating the loaded data + * into a usable resource. If not provided, AssetLoader will + * attempt to auto-detect the file type. + * @throws IOError Thedigest
property of the
+ * request
object is not
+ * null
. You should only set the
+ * digest
property of a URLRequest
+ * object when calling the
+ * URLLoader.load()
method when
+ * loading a SWZ file(an Adobe platform
+ * component).
+ * @throws IllegalOperationError If the requestedContentParent
+ * property of the context
+ * parameter is a Loader
.
+ * @throws IllegalOperationError If the LoaderContext.parameters
+ * parameter is set to non-null and has some
+ * values which are not Strings.
+ * @throws SecurityError The value of
+ * LoaderContext.securityDomain
+ * must be either null
or
+ * SecurityDomain.currentDomain
.
+ * This reflects the fact that you can only
+ * place the loaded media in its natural
+ * security sandbox or your own(the latter
+ * requires a policy file).
+ * @throws SecurityError Local SWF files may not set
+ * LoaderContext.securityDomain to anything
+ * other than null
. It is not
+ * permitted to import non-local media into a
+ * local sandbox, or to place other local media
+ * in anything other than its natural sandbox.
+ * @throws SecurityError You cannot connect to commonly reserved
+ * ports. For a complete list of blocked ports,
+ * see "Restricting Networking APIs" in the
+ * ActionScript 3.0 Developer's Guide.
+ * @throws SecurityError If the applicationDomain
or
+ * securityDomain
properties of
+ * the context
parameter are from
+ * a disallowed domain.
+ * @throws SecurityError If a local SWF file is attempting to use the
+ * securityDomain
property of the
+ * context
parameter.
+ * @event asyncError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and it is not possible to
+ * add the loaded content as a child to the specified
+ * DisplayObjectContainer. This could happen if the
+ * loaded content is a
+ * flash.display.AVM1Movie
or if the
+ * addChild()
call to the
+ * requestedContentParent throws an error.
+ * @event complete Dispatched by the contentLoaderInfo
+ * object when the file has completed loading. The
+ * complete
event is always dispatched
+ * after the init
event.
+ * @event httpStatus Dispatched by the contentLoaderInfo
+ * object when a network request is made over HTTP and
+ * Flash Player can detect the HTTP status code.
+ * @event init Dispatched by the contentLoaderInfo
+ * object when the properties and methods of the loaded
+ * SWF file are accessible. The init
event
+ * always precedes the complete
event.
+ * @event ioError Dispatched by the contentLoaderInfo
+ * object when an input or output error occurs that
+ * causes a load operation to fail.
+ * @event open Dispatched by the contentLoaderInfo
+ * object when the loading operation starts.
+ * @event progress Dispatched by the contentLoaderInfo
+ * object as data is received while load operation
+ * progresses.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if a SWF file in the local-with-filesystem
+ * sandbox attempts to load content in the
+ * local-with-networking sandbox, or vice versa.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and the security sandbox
+ * of the
+ * LoaderContext.requestedContentParent
+ * does not have access to the loaded SWF.
+ * @event unload Dispatched by the contentLoaderInfo
+ * object when a loaded object is removed.
+ */
+ public load(request: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Loads from binary data stored in a ByteArray object.
+ *
+ * The loadBytes()
method is asynchronous. You must wait for
+ * the "init" event before accessing the properties of a loaded object.
When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.
+ * + * @param bytes A ByteArray object. The contents of the ByteArray can be + * any of the file formats supported by the Loader class: SWF, + * GIF, JPEG, or PNG. + * @param context A LoaderContext object. Only the + *applicationDomain
property of the
+ * LoaderContext object applies; the
+ * checkPolicyFile
and
+ * securityDomain
properties of the LoaderContext
+ * object do not apply.
+ *
+ * If the context
parameter is not specified
+ * or refers to a null object, the content is loaded into the
+ * current security domain - a process referred to as "import
+ * loading" in Flash Player security documentation.
+ * Specifically, if the loading SWF file trusts the remote SWF
+ * by incorporating the remote SWF into its code, then the
+ * loading SWF can import it directly into its own security
+ * domain.
For more information related to security, see the Flash + * Player Developer Center Topic: Security.
+ * @throws ArgumentError If thelength
property of the
+ * ByteArray object is not greater than 0.
+ * @throws IllegalOperationError If the checkPolicyFile
or
+ * securityDomain
property of the
+ * context
parameter are non-null.
+ * @throws IllegalOperationError If the requestedContentParent
+ * property of the context
+ * parameter is a Loader
.
+ * @throws IllegalOperationError If the LoaderContext.parameters
+ * parameter is set to non-null and has some
+ * values which are not Strings.
+ * @throws SecurityError If the provided
+ * applicationDomain
property of
+ * the context
property is from a
+ * disallowed domain.
+ * @throws SecurityError You cannot connect to commonly reserved
+ * ports. For a complete list of blocked ports,
+ * see "Restricting Networking APIs" in the
+ * ActionScript 3.0 Developer's Guide.
+ * @event asyncError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and it is not possible to
+ * add the loaded content as a child to the specified
+ * DisplayObjectContainer. This could happen if the
+ * loaded content is a
+ * flash.display.AVM1Movie
or if the
+ * addChild()
call to the
+ * requestedContentParent throws an error.
+ * @event complete Dispatched by the contentLoaderInfo
+ * object when the operation is complete. The
+ * complete
event is always dispatched
+ * after the init
event.
+ * @event init Dispatched by the contentLoaderInfo
+ * object when the properties and methods of the loaded
+ * data are accessible. The init
event
+ * always precedes the complete
event.
+ * @event ioError Dispatched by the contentLoaderInfo
+ * object when the runtime cannot parse the data in the
+ * byte array.
+ * @event open Dispatched by the contentLoaderInfo
+ * object when the operation starts.
+ * @event progress Dispatched by the contentLoaderInfo
+ * object as data is transfered in memory.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and the security sandbox
+ * of the
+ * LoaderContext.requestedContentParent
+ * does not have access to the loaded SWF.
+ * @event unload Dispatched by the contentLoaderInfo
+ * object when a loaded object is removed.
+ */
+ public loadData(data: any, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Removes a child of this Loader object that was loaded by using the
+ * load()
method. The property
of the associated
+ * LoaderInfo object is reset to null
. The child is not
+ * necessarily destroyed because other objects might have references to it;
+ * however, it is no longer a child of the Loader object.
+ *
+ * As a best practice, before you unload a child SWF file, you should
+ * explicitly close any streams in the child SWF file's objects, such as
+ * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,
+ * audio in the child SWF file might continue to play, even though the child
+ * SWF file was unloaded. To close streams in the child SWF file, add an
+ * event listener to the child that listens for the unload
+ * event. When the parent calls Loader.unload()
, the
+ * unload
event is dispatched to the child. The following code
+ * shows how you might do this:
public closeAllStreams(evt:Event) { + * myNetStream.close(); mySound.close(); myNetConnection.close(); + * myLocalConnection.close(); } + * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, + * closeAllStreams);+ * + */ + public unload(): void; + /** + * Enables a specific parser. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClass The parser class to enable. + * @see away.parsers.Parsers + */ + static enableParser(parserClass: Object): void; + /** + * Enables a list of parsers. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClasses A Vector of parser classes to enable. + * @see away.parsers.Parsers + */ + static enableParsers(parserClasses: Object[]): void; + private removeListeners(dispatcher); + private onAssetComplete(event); + /** + * Called when an error occurs during loading + */ + private onLoadError(event); + /** + * Called when a an error occurs during parsing + */ + private onParseError(event); + /** + * Called when the resource and all of its dependencies was retrieved. + */ + private onResourceComplete(event); + } + export = Loader; + +} +declare module "awayjs-core/lib/containers/Scene" { + import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer"); + import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject"); + import Partition = require("awayjs-core/lib/core/partition/Partition"); + import ICollector = require("awayjs-core/lib/core/traverse/ICollector"); + import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); + class Scene extends EventDispatcher { + private _expandedPartitions; + private _partitions; + public _iSceneGraphRoot: DisplayObjectContainer; + public _iCollectionMark: number; + constructor(); + public traversePartitions(traverser: ICollector): void; + public partition : Partition; + public contains(child: DisplayObject): boolean; + public addChild(child: DisplayObject): DisplayObject; + public removeChild(child: DisplayObject): void; + public removeChildAt(index: number): void; + public getChildAt(index: number): DisplayObject; + public numChildren : number; + /** + * @internal + */ + public iRegisterEntity(displayObject: DisplayObject): void; + /** + * @internal + */ + public iRegisterPartition(partition: Partition): void; + /** + * @internal + */ + public iUnregisterEntity(displayObject: DisplayObject): void; + /** + * @internal + */ + public iUnregisterPartition(partition: Partition): void; + } + export = Scene; + +} +declare module "awayjs-core/lib/containers/View" { + import Scene = require("awayjs-core/lib/containers/Scene"); + import Vector3D = require("awayjs-core/lib/core/geom/Vector3D"); + import IPicker = require("awayjs-core/lib/core/pick/IPicker"); + import IRenderer = require("awayjs-core/lib/core/render/IRenderer"); + import ICollector = require("awayjs-core/lib/core/traverse/ICollector"); + import Camera = require("awayjs-core/lib/entities/Camera"); + class View { + public _pScene: Scene; + public _pCamera: Camera; + public _pEntityCollector: ICollector; + public _pRenderer: IRenderer; + private _aspectRatio; + private _width; + private _height; + private _time; + private _deltaTime; + private _backgroundColor; + private _backgroundAlpha; + private _viewportDirty; + private _scissorDirty; + private _onScenePartitionChangedDelegate; + private _onProjectionChangedDelegate; + private _onViewportUpdatedDelegate; + private _onScissorUpdatedDelegate; + private _mouseManager; + private _mousePicker; + private _htmlElement; + private _shareContext; + public _pMouseX: number; + public _pMouseY: number; + constructor(renderer: IRenderer, scene?: Scene, camera?: Camera); + /** + * + * @param e + */ + private onScenePartitionChanged(event); + public layeredView: boolean; + public mouseX : number; + public mouseY : number; + /** + * + */ + public htmlElement : HTMLDivElement; + /** + * + */ + public renderer : IRenderer; + /** + * + */ + public shareContext : boolean; + /** + * + */ + public backgroundColor : number; + /** + * + * @returns {number} + */ + /** + * + * @param value + */ + public backgroundAlpha : number; + /** + * + * @returns {Camera3D} + */ + /** + * Set camera that's used to render the scene for this viewport + */ + public camera : Camera; + /** + * + * @returns {away.containers.Scene3D} + */ + /** + * Set the scene that's used to render for this viewport + */ + public scene : Scene; + /** + * + * @returns {number} + */ + public deltaTime : number; + /** + * + */ + public width : number; + /** + * + */ + public height : number; + /** + * + */ + public mousePicker : IPicker; + /** + * + */ + public x : number; + /** + * + */ + public y : number; + /** + * + */ + public visible : boolean; + /** + * + * @returns {number} + */ + public renderedFacesCount : number; + /** + * Renders the view. + */ + public render(): void; + /** + * + */ + public pUpdateTime(): void; + /** + * + */ + public dispose(): void; + /** + * + */ + public iEntityCollector : ICollector; + /** + * + */ + private onProjectionChanged(event); + /** + * + */ + private onViewportUpdated(event); + /** + * + */ + private onScissorUpdated(event); + public project(point3d: Vector3D): Vector3D; + public unproject(sX: number, sY: number, sZ: number): Vector3D; + public getRay(sX: number, sY: number, sZ: number): Vector3D; + public forceMouseMove: boolean; + public updateCollider(): void; + } + export = View; + +} +declare module "awayjs-core/lib/controllers/ControllerBase" { + import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject"); + class ControllerBase { + public _pAutoUpdate: boolean; + public _pTargetObject: DisplayObject; + constructor(targetObject?: DisplayObject); + public pNotifyUpdate(): void; + public targetObject : DisplayObject; + public autoUpdate : boolean; + public update(interpolate?: boolean): void; + } + export = ControllerBase; + +} +declare module "awayjs-core/lib/controllers/FirstPersonController" { + import ControllerBase = require("awayjs-core/lib/controllers/ControllerBase"); + import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject"); + /** + * Extended camera used to hover round a specified target object. + * + * @see away3d.containers.View3D + */ + class FirstPersonController extends ControllerBase { + public _iCurrentPanAngle: number; + public _iCurrentTiltAngle: number; + private _panAngle; + private _tiltAngle; + private _minTiltAngle; + private _maxTiltAngle; + private _steps; + private _walkIncrement; + private _strafeIncrement; + private _wrapPanAngle; + public fly: boolean; + /** + * Fractional step taken each time the
hover()
method is called. Defaults to 8.
+ *
+ * Affects the speed at which the tiltAngle
and panAngle
resolve to their targets.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ */
+ public steps : number;
+ /**
+ * Rotation of the camera in degrees around the y axis. Defaults to 0.
+ */
+ public panAngle : number;
+ /**
+ * Elevation angle of the camera in degrees. Defaults to 90.
+ */
+ public tiltAngle : number;
+ /**
+ * Minimum bounds for the tiltAngle
. Defaults to -90.
+ *
+ * @see #tiltAngle
+ */
+ public minTiltAngle : number;
+ /**
+ * Maximum bounds for the tiltAngle
. Defaults to 90.
+ *
+ * @see #tiltAngle
+ */
+ public maxTiltAngle : number;
+ /**
+ * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.
+ */
+ public wrapPanAngle : boolean;
+ /**
+ * Creates a new HoverController
object.
+ */
+ constructor(targetObject?: DisplayObject, panAngle?: number, tiltAngle?: number, minTiltAngle?: number, maxTiltAngle?: number, steps?: number, wrapPanAngle?: boolean);
+ /**
+ * Updates the current tilt angle and pan angle values.
+ *
+ * Values are calculated using the defined tiltAngle
, panAngle
and steps
variables.
+ *
+ * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ * @see #steps
+ */
+ public update(interpolate?: boolean): void;
+ public incrementWalk(val: number): void;
+ public incrementStrafe(val: number): void;
+ }
+ export = FirstPersonController;
+
+}
+declare module "awayjs-core/lib/controllers/FollowController" {
+ import HoverController = require("awayjs-core/lib/controllers/HoverController");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ /**
+ * Controller used to follow behind an object on the XZ plane, with an optional
+ * elevation (tiltAngle).
+ *
+ * @see away3d.containers.View3D
+ */
+ class FollowController extends HoverController {
+ constructor(targetObject?: DisplayObject, lookAtObject?: DisplayObject, tiltAngle?: number, distance?: number);
+ public update(interpolate?: boolean): void;
+ }
+ export = FollowController;
+
+}
+declare module "awayjs-core/lib/controllers/HoverController" {
+ import LookAtController = require("awayjs-core/lib/controllers/LookAtController");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ /**
+ * Extended camera used to hover round a specified target object.
+ *
+ * @see away.containers.View
+ */
+ class HoverController extends LookAtController {
+ public _iCurrentPanAngle: number;
+ public _iCurrentTiltAngle: number;
+ private _panAngle;
+ private _tiltAngle;
+ private _distance;
+ private _minPanAngle;
+ private _maxPanAngle;
+ private _minTiltAngle;
+ private _maxTiltAngle;
+ private _steps;
+ private _yFactor;
+ private _wrapPanAngle;
+ private _upAxis;
+ /**
+ * Fractional step taken each time the hover()
method is called. Defaults to 8.
+ *
+ * Affects the speed at which the tiltAngle
and panAngle
resolve to their targets.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ */
+ public steps : number;
+ /**
+ * Rotation of the camera in degrees around the y axis. Defaults to 0.
+ */
+ public panAngle : number;
+ /**
+ * Elevation angle of the camera in degrees. Defaults to 90.
+ */
+ public tiltAngle : number;
+ /**
+ * Distance between the camera and the specified target. Defaults to 1000.
+ */
+ public distance : number;
+ /**
+ * Minimum bounds for the panAngle
. Defaults to -Infinity.
+ *
+ * @see #panAngle
+ */
+ public minPanAngle : number;
+ /**
+ * Maximum bounds for the panAngle
. Defaults to Infinity.
+ *
+ * @see #panAngle
+ */
+ public maxPanAngle : number;
+ /**
+ * Minimum bounds for the tiltAngle
. Defaults to -90.
+ *
+ * @see #tiltAngle
+ */
+ public minTiltAngle : number;
+ /**
+ * Maximum bounds for the tiltAngle
. Defaults to 90.
+ *
+ * @see #tiltAngle
+ */
+ public maxTiltAngle : number;
+ /**
+ * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2.
+ *
+ * @see #distance
+ */
+ public yFactor : number;
+ /**
+ * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.
+ */
+ public wrapPanAngle : boolean;
+ /**
+ * Creates a new HoverController
object.
+ */
+ constructor(targetObject?: DisplayObject, lookAtObject?: DisplayObject, panAngle?: number, tiltAngle?: number, distance?: number, minTiltAngle?: number, maxTiltAngle?: number, minPanAngle?: number, maxPanAngle?: number, steps?: number, yFactor?: number, wrapPanAngle?: boolean);
+ /**
+ * Updates the current tilt angle and pan angle values.
+ *
+ * Values are calculated using the defined tiltAngle
, panAngle
and steps
variables.
+ *
+ * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ * @see #steps
+ */
+ public update(interpolate?: boolean): void;
+ }
+ export = HoverController;
+
+}
+declare module "awayjs-core/lib/controllers/LookAtController" {
+ import ControllerBase = require("awayjs-core/lib/controllers/ControllerBase");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ class LookAtController extends ControllerBase {
+ public _pLookAtPosition: Vector3D;
+ public _pLookAtObject: DisplayObject;
+ public _pOrigin: Vector3D;
+ private _onLookAtObjectChangedDelegate;
+ constructor(targetObject?: DisplayObject, lookAtObject?: DisplayObject);
+ public lookAtPosition : Vector3D;
+ public lookAtObject : DisplayObject;
+ public update(interpolate?: boolean): void;
+ private onLookAtObjectChanged(event);
+ }
+ export = LookAtController;
+
+}
+declare module "awayjs-core/lib/controllers/SpringController" {
+ import LookAtController = require("awayjs-core/lib/controllers/LookAtController");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * Uses spring physics to animate the target object towards a position that is
+ * defined as the lookAtTarget object's position plus the vector defined by the
+ * positionOffset property.
+ */
+ class SpringController extends LookAtController {
+ private _velocity;
+ private _dv;
+ private _stretch;
+ private _force;
+ private _acceleration;
+ private _desiredPosition;
+ /**
+ * Stiffness of the spring, how hard is it to extend. The higher it is, the more "fixed" the cam will be.
+ * A number between 1 and 20 is recommended.
+ */
+ public stiffness: number;
+ /**
+ * Damping is the spring internal friction, or how much it resists the "boinggggg" effect. Too high and you'll lose it!
+ * A number between 1 and 20 is recommended.
+ */
+ public damping: number;
+ /**
+ * Mass of the camera, if over 120 and it'll be very heavy to move.
+ */
+ public mass: number;
+ /**
+ * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.
+ */
+ public positionOffset: Vector3D;
+ constructor(targetObject?: DisplayObject, lookAtObject?: DisplayObject, stiffness?: number, mass?: number, damping?: number);
+ public update(interpolate?: boolean): void;
+ }
+ export = SpringController;
+
+}
+declare module "awayjs-core/lib/entities/Billboard" {
+ import IAnimator = require("awayjs-core/lib/animators/IAnimator");
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import UVTransform = require("awayjs-core/lib/core/geom/UVTransform");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * The Billboard class represents display objects that represent bitmap images.
+ * These can be images that you load with the flash.Assets
or
+ * flash.display.Loader
classes, or they can be images that you
+ * create with the Billboard()
constructor.
+ *
+ * The Billboard()
constructor allows you to create a Billboard
+ * object that contains a reference to a BitmapData object. After you create a
+ * Billboard object, use the addChild()
or addChildAt()
+ * method of the parent DisplayObjectContainer instance to place the bitmap on
+ * the display list.
A Billboard object can share its BitmapData reference among several Billboard + * objects, independent of translation or rotation properties. Because you can + * create multiple Billboard objects that reference the same BitmapData object, + * multiple display objects can use the same complex BitmapData object without + * incurring the memory overhead of a BitmapData object for each display + * object instance.
+ * + *A BitmapData object can be drawn to the screen by a Billboard object in one + * of two ways: by using the default hardware renderer with a single hardware surface, + * or by using the slower software renderer when 3D acceleration is not available.
+ * + *If you would prefer to perform a batch rendering command, rather than using a
+ * single surface for each Billboard object, you can also draw to the screen using the
+ * drawTiles()
or drawTriangles()
methods which are
+ * available to flash.display.Tilesheet
and flash.display.Graphics
+ * objects.
Note: The Billboard class is not a subclass of the InteractiveObject
+ * class, so it cannot dispatch mouse events. However, you can use the
+ * addEventListener()
method of the display object container that
+ * contains the Billboard object.
PixelSnapping.NEVER
- No pixel snapping occurs.PixelSnapping.ALWAYS
- The image is always snapped to
+ * the nearest pixel, independent of transformation.PixelSnapping.AUTO
- The image is snapped to the
+ * nearest pixel if it is drawn with no rotation or skew and it is drawn at a
+ * scale factor of 99.9% to 100.1%. If these conditions are satisfied, the
+ * bitmap image is drawn at 100% scale, snapped to the nearest pixel.
+ * When targeting Flash Player, this value allows the image to be drawn as fast
+ * as possible using the internal vector renderer.true
, the bitmap is smoothed when scaled. If
+ * false
, the bitmap is not smoothed when scaled.
+ */
+ public smoothing: boolean;
+ /**
+ *
+ */
+ public uvTransform : UVTransform;
+ constructor(material: MaterialBase, pixelSnapping?: string, smoothing?: boolean);
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ /**
+ * @protected
+ */
+ public pUpdateBounds(): void;
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ public _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean;
+ /**
+ * @private
+ */
+ private onSizeChanged(event);
+ public _iCollectRenderables(renderer: IRenderer): void;
+ public _iCollectRenderable(renderer: IRenderer): void;
+ }
+ export = Billboard;
+
+}
+declare module "awayjs-core/lib/entities/Camera" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import IProjection = require("awayjs-core/lib/projections/IProjection");
+ class Camera extends DisplayObjectContainer implements IEntity {
+ private _viewProjection;
+ private _viewProjectionDirty;
+ private _projection;
+ private _frustumPlanes;
+ private _frustumPlanesDirty;
+ private _onProjectionMatrixChangedDelegate;
+ constructor(projection?: IProjection);
+ public pCreateDefaultBoundingVolume(): BoundingVolumeBase;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ public assetType : string;
+ private onProjectionMatrixChanged(event);
+ public frustumPlanes : Plane3D[];
+ private updateFrustum();
+ /**
+ * @protected
+ */
+ public pInvalidateSceneTransform(): void;
+ /**
+ * @protected
+ */
+ public pUpdateBounds(): void;
+ /**
+ *
+ */
+ public projection : IProjection;
+ /**
+ *
+ */
+ public viewProjection : Matrix3D;
+ /**
+ * Calculates the ray in scene space from the camera to the given normalized coordinates in screen space.
+ *
+ * @param nX The normalised x coordinate in screen space, -1 corresponds to the left edge of the viewport, 1 to the right.
+ * @param nY The normalised y coordinate in screen space, -1 corresponds to the top edge of the viewport, 1 to the bottom.
+ * @param sZ The z coordinate in screen space, representing the distance into the screen.
+ * @return The ray from the camera to the scene space position of the given screen coordinates.
+ */
+ public getRay(nX: number, nY: number, sZ: number): Vector3D;
+ /**
+ * Calculates the normalised position in screen space of the given scene position.
+ *
+ * @param point3d the position vector of the scene coordinates to be projected.
+ * @return The normalised screen position of the given scene coordinates.
+ */
+ public project(point3d: Vector3D): Vector3D;
+ /**
+ * Calculates the scene position of the given normalized coordinates in screen space.
+ *
+ * @param nX The normalised x coordinate in screen space, minus the originX offset of the projection property.
+ * @param nY The normalised y coordinate in screen space, minus the originY offset of the projection property.
+ * @param sZ The z coordinate in screen space, representing the distance into the screen.
+ * @return The scene position of the given screen coordinates.
+ */
+ public unproject(nX: number, nY: number, sZ: number): Vector3D;
+ public _iCollectRenderables(renderer: IRenderer): void;
+ public _iCollectRenderable(renderer: IRenderer): void;
+ }
+ export = Camera;
+
+}
+declare module "awayjs-core/lib/entities/DirectionalLight" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import DirectionalShadowMapper = require("awayjs-core/lib/materials/shadowmappers/DirectionalShadowMapper");
+ class DirectionalLight extends LightBase implements IEntity {
+ private _direction;
+ private _tmpLookAt;
+ private _sceneDirection;
+ private _projAABBPoints;
+ constructor(xDir?: number, yDir?: number, zDir?: number);
+ public sceneDirection : Vector3D;
+ public direction : Vector3D;
+ /**
+ *
+ * @returns {away.bounds.NullBounds}
+ */
+ public pCreateDefaultBoundingVolume(): BoundingVolumeBase;
+ /**
+ *
+ */
+ public pUpdateBounds(): void;
+ public pUpdateSceneTransform(): void;
+ public pCreateShadowMapper(): DirectionalShadowMapper;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ public iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D;
+ public _iCollectRenderables(renderer: IRenderer): void;
+ }
+ export = DirectionalLight;
+
+}
+declare module "awayjs-core/lib/entities/IEntity" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import ControllerBase = require("awayjs-core/lib/controllers/ControllerBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Transform = require("awayjs-core/lib/core/geom/Transform");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import Partition = require("awayjs-core/lib/core/partition/Partition");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IPickingCollider = require("awayjs-core/lib/core/pick/IPickingCollider");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ interface IEntity extends IAsset {
+ x: number;
+ y: number;
+ z: number;
+ rotationX: number;
+ rotationY: number;
+ rotationZ: number;
+ scaleX: number;
+ scaleY: number;
+ scaleZ: number;
+ /**
+ *
+ */
+ bounds: BoundingVolumeBase;
+ /**
+ *
+ */
+ castsShadows: boolean;
+ /**
+ *
+ */
+ inverseSceneTransform: Matrix3D;
+ /**
+ *
+ */
+ partitionNode: EntityNode;
+ /**
+ *
+ */
+ pickingCollider: IPickingCollider;
+ /**
+ *
+ */
+ transform: Transform;
+ /**
+ *
+ */
+ scene: Scene;
+ /**
+ *
+ */
+ scenePosition: Vector3D;
+ /**
+ *
+ */
+ sceneTransform: Matrix3D;
+ /**
+ *
+ */
+ worldBounds: BoundingVolumeBase;
+ /**
+ *
+ */
+ zOffset: number;
+ /**
+ *
+ */
+ isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean;
+ /**
+ *
+ *
+ * @param target
+ * @param upAxis
+ */
+ lookAt(target: Vector3D, upAxis?: Vector3D): any;
+ /**
+ * @internal
+ */
+ _iPickingCollisionVO: PickingCollisionVO;
+ /**
+ * @internal
+ */
+ _iController: ControllerBase;
+ /**
+ * @internal
+ */
+ _iAssignedPartition: Partition;
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean;
+ /**
+ * @internal
+ */
+ _iIsMouseEnabled(): boolean;
+ /**
+ * @internal
+ */
+ _iIsVisible(): boolean;
+ _iInternalUpdate(): any;
+ /**
+ * The transformation matrix that transforms from model to world space, adapted with any special operations needed to render.
+ * For example, assuring certain alignedness which is not inherent in the scene transform. By default, this would
+ * return the scene transform.
+ */
+ getRenderSceneTransform(camera: Camera): Matrix3D;
+ /**
+ *
+ * @param renderer
+ * @private
+ */
+ _iCollectRenderables(renderer: IRenderer): any;
+ }
+ export = IEntity;
+
+}
+declare module "awayjs-core/lib/entities/LightProbe" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ class LightProbe extends LightBase implements IEntity {
+ private _diffuseMap;
+ private _specularMap;
+ constructor(diffuseMap: CubeTextureBase, specularMap?: CubeTextureBase);
+ public diffuseMap : CubeTextureBase;
+ public specularMap : CubeTextureBase;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ public pUpdateBounds(): void;
+ public pCreateDefaultBoundingVolume(): BoundingVolumeBase;
+ public iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D;
+ public _iCollectRenderables(renderer: IRenderer): void;
+ }
+ export = LightProbe;
+
+}
+declare module "awayjs-core/lib/entities/LineSegment" {
+ import IAnimator = require("awayjs-core/lib/animators/IAnimator");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import UVTransform = require("awayjs-core/lib/core/geom/UVTransform");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * A Line Segment primitive.
+ */
+ class LineSegment extends DisplayObject implements IEntity, IMaterialOwner {
+ private _animator;
+ private _material;
+ private _uvTransform;
+ private onSizeChangedDelegate;
+ public _startPosition: Vector3D;
+ public _endPosition: Vector3D;
+ public _halfThickness: number;
+ /**
+ * Defines the animator of the line segment. Act on the line segment's geometry. Defaults to null
+ */
+ public animator : IAnimator;
+ /**
+ *
+ */
+ public assetType : string;
+ /**
+ *
+ */
+ public startPostion : Vector3D;
+ public startPosition : Vector3D;
+ /**
+ *
+ */
+ public endPosition : Vector3D;
+ /**
+ *
+ */
+ public material : MaterialBase;
+ /**
+ *
+ */
+ public thickness : number;
+ /**
+ *
+ */
+ public uvTransform : UVTransform;
+ /**
+ * Create a line segment
+ *
+ * @param startPosition Start position of the line segment
+ * @param endPosition Ending position of the line segment
+ * @param thickness Thickness of the line
+ */
+ constructor(material: MaterialBase, startPosition: Vector3D, endPosition: Vector3D, thickness?: number);
+ public dispose(): void;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ /**
+ * @protected
+ */
+ public pUpdateBounds(): void;
+ /**
+ * @private
+ */
+ private onSizeChanged(event);
+ /**
+ * @private
+ */
+ private notifyRenderableUpdate();
+ public _iCollectRenderables(renderer: IRenderer): void;
+ public _iCollectRenderable(renderer: IRenderer): void;
+ }
+ export = LineSegment;
+
+}
+declare module "awayjs-core/lib/entities/Mesh" {
+ import IAnimator = require("awayjs-core/lib/animators/IAnimator");
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import ISubMesh = require("awayjs-core/lib/core/base/ISubMesh");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import UVTransform = require("awayjs-core/lib/core/geom/UVTransform");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * Mesh is an instance of a Geometry, augmenting it with a presence in the scene graph, a material, and an animation
+ * state. It consists out of SubMeshes, which in turn correspond to SubGeometries. SubMeshes allow different parts
+ * of the geometry to be assigned different materials.
+ */
+ class Mesh extends DisplayObjectContainer implements IEntity {
+ private _uvTransform;
+ private _subMeshes;
+ private _geometry;
+ private _material;
+ private _animator;
+ private _castsShadows;
+ private _shareAnimationGeometry;
+ private _onGeometryBoundsInvalidDelegate;
+ private _onSubGeometryAddedDelegate;
+ private _onSubGeometryRemovedDelegate;
+ /**
+ * Defines the animator of the mesh. Act on the mesh's geometry. Default value is null
.
+ */
+ public animator : IAnimator;
+ /**
+ *
+ */
+ public assetType : string;
+ /**
+ * Indicates whether or not the Mesh can cast shadows. Default value is true
.
+ */
+ public castsShadows : boolean;
+ /**
+ * The geometry used by the mesh that provides it with its shape.
+ */
+ public geometry : Geometry;
+ /**
+ * The material with which to render the Mesh.
+ */
+ public material : MaterialBase;
+ /**
+ * Indicates whether or not the mesh share the same animation geometry.
+ */
+ public shareAnimationGeometry : boolean;
+ /**
+ * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's
+ * material.
+ */
+ public subMeshes : ISubMesh[];
+ /**
+ *
+ */
+ public uvTransform : UVTransform;
+ /**
+ * Create a new Mesh object.
+ *
+ * @param geometry The geometry used by the mesh that provides it with its shape.
+ * @param material [optional] The material with which to render the Mesh.
+ */
+ constructor(geometry: Geometry, material?: MaterialBase);
+ /**
+ *
+ */
+ public bakeTransformations(): void;
+ /**
+ * @inheritDoc
+ */
+ public dispose(): void;
+ /**
+ * Disposes mesh including the animator and children. This is a merely a convenience method.
+ * @return
+ */
+ public disposeWithAnimatorAndChildren(): void;
+ /**
+ * Clones this Mesh instance along with all it's children, while re-using the same
+ * material, geometry and animation set. The returned result will be a copy of this mesh,
+ * containing copies of all of it's children.
+ *
+ * Properties that are re-used (i.e. not cloned) by the new copy include name,
+ * geometry, and material. Properties that are cloned or created anew for the copy
+ * include subMeshes, children of the mesh, and the animator.
+ *
+ * If you want to copy just the mesh, reusing it's geometry and material while not
+ * cloning it's children, the simplest way is to create a new mesh manually:
+ *
+ *
+ * var clone : Mesh = new Mesh(original.geometry, original.material);
+ *
+ */
+ public clone(): DisplayObject;
+ /**
+ * //TODO
+ *
+ * @param subGeometry
+ * @returns {SubMeshBase}
+ */
+ public getSubMeshFromSubGeometry(subGeometry: SubGeometryBase): ISubMesh;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ /**
+ * //TODO
+ *
+ * @protected
+ */
+ public pUpdateBounds(): void;
+ /**
+ * //TODO
+ *
+ * @private
+ */
+ private onGeometryBoundsInvalid(event);
+ /**
+ * Called when a SubGeometry was added to the Geometry.
+ *
+ * @private
+ */
+ private onSubGeometryAdded(event);
+ /**
+ * Called when a SubGeometry was removed from the Geometry.
+ *
+ * @private
+ */
+ private onSubGeometryRemoved(event);
+ /**
+ * Adds a SubMeshBase wrapping a SubGeometry.
+ *
+ * @param subGeometry
+ */
+ private addSubMesh(subGeometry);
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ public _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean;
+ /**
+ *
+ * @param renderer
+ *
+ * @internal
+ */
+ public _iCollectRenderables(renderer: IRenderer): void;
+ public _iInvalidateRenderableGeometries(): void;
+ }
+ export = Mesh;
+
+}
+declare module "awayjs-core/lib/entities/PointLight" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import CubeMapShadowMapper = require("awayjs-core/lib/materials/shadowmappers/CubeMapShadowMapper");
+ class PointLight extends LightBase implements IEntity {
+ public _pRadius: number;
+ public _pFallOff: number;
+ public _pFallOffFactor: number;
+ constructor();
+ public pCreateShadowMapper(): CubeMapShadowMapper;
+ public radius : number;
+ public iFallOffFactor(): number;
+ public fallOff : number;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ public pUpdateBounds(): void;
+ public pCreateDefaultBoundingVolume(): BoundingVolumeBase;
+ public iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D;
+ public _iCollectRenderables(renderer: IRenderer): void;
+ }
+ export = PointLight;
+
+}
+declare module "awayjs-core/lib/entities/Shape" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Graphics = require("awayjs-core/lib/core/base/Graphics");
+ /**
+ * This class is used to create lightweight shapes using the ActionScript
+ * drawing application program interface(API). The Shape class includes a
+ * graphics
property, which lets you access methods from the
+ * Graphics class.
+ *
+ * The Sprite class also includes a graphics
property, and it
+ * includes other features not available to the Shape class. For example, a
+ * Sprite object is a display object container, whereas a Shape object is not
+ * (and cannot contain child display objects). For this reason, Shape objects
+ * consume less memory than Sprite objects that contain the same graphics.
+ * However, a Sprite object supports user input events, while a Shape object
+ * does not.
To create a text field dynamically, use the TextField()
+ * constructor.
The methods of the TextField class let you set, select, and manipulate + * text in a dynamic or input text field that you create during authoring or + * at runtime.
+ * + *ActionScript provides several ways to format your text at runtime. The
+ * TextFormat class lets you set character and paragraph formatting for
+ * TextField objects. You can apply Cascading Style Sheets(CSS) styles to
+ * text fields by using the TextField.styleSheet
property and the
+ * StyleSheet class. You can use CSS to style built-in HTML tags, define new
+ * formatting tags, or apply styles. You can assign HTML formatted text, which
+ * optionally uses CSS styles, directly to a text field. HTML text that you
+ * assign to a text field can contain embedded media(movie clips, SWF files,
+ * GIF files, PNG files, and JPEG files). The text wraps around the embedded
+ * media in the same way that a web browser wraps text around media embedded
+ * in an HTML document.
Flash Player supports a subset of HTML tags that you can use to format
+ * text. See the list of supported HTML tags in the description of the
+ * htmlText
property.
textInput
event, which is
+ * dispatched before the value is modified.
+ * Unlike the W3C DOM Event Model version of
+ * the change
event, which
+ * dispatches the event only after the
+ * control loses focus, the ActionScript 3.0
+ * version of the change
event
+ * is dispatched any time the control
+ * changes. For example, if a user types text
+ * into a text field, a change
+ * event is dispatched after every keystroke.
+ * @event link Dispatched when a user clicks a hyperlink
+ * in an HTML-enabled text field, where the
+ * URL begins with "event:". The remainder of
+ * the URL after "event:" is placed in the
+ * text property of the LINK event.
+ *
+ * Note: The default behavior,
+ * adding the text to the text field, occurs
+ * only when Flash Player generates the
+ * event, which in this case happens when a
+ * user attempts to input text. You cannot
+ * put text into a text field by sending it
+ * textInput
events.
textInput
event when a user
+ * enters one or more characters of text.
+ * Various text input methods can generate
+ * this event, including standard keyboards,
+ * input method editors(IMEs), voice or
+ * speech recognition systems, and even the
+ * act of pasting plain text with no
+ * formatting or style information.
+ * @event textInteractionModeChange Flash Player dispatches the
+ * textInteractionModeChange
+ * event when a user changes the interaction
+ * mode of a text field. for example on
+ * Android, one can toggle from NORMAL mode
+ * to SELECTION mode using context menu
+ * options
+ */
+ class TextField extends DisplayObject {
+ private _bottomScrollV;
+ private _caretIndex;
+ private _length;
+ private _maxScrollH;
+ private _maxScrollV;
+ private _numLines;
+ private _selectionBeginIndex;
+ private _selectionEndIndex;
+ private _text;
+ private _textHeight;
+ private _textInteractionMode;
+ private _textWidth;
+ private _charBoundaries;
+ private _charIndexAtPoint;
+ private _firstCharInParagraph;
+ private _imageReference;
+ private _lineIndexAtPoint;
+ private _lineIndexOfChar;
+ private _lineLength;
+ private _lineMetrics;
+ private _lineOffset;
+ private _lineText;
+ private _paragraphLength;
+ private _textFormat;
+ /**
+ * When set to true
and the text field is not in focus, Flash
+ * Player highlights the selection in the text field in gray. When set to
+ * false
and the text field is not in focus, Flash Player does
+ * not highlight the selection in the text field.
+ *
+ * @default false
+ */
+ public alwaysShowSelection: boolean;
+ /**
+ * The type of anti-aliasing used for this text field. Use
+ * flash.text.AntiAliasType
constants for this property. You can
+ * control this setting only if the font is embedded(with the
+ * embedFonts
property set to true
). The default
+ * setting is flash.text.AntiAliasType.NORMAL
.
+ *
+ * To set values for this property, use the following string values:
+ */ + public antiAliasType: AntiAliasType; + /** + * Controls automatic sizing and alignment of text fields. Acceptable values + * for theTextFieldAutoSize
constants:
+ * TextFieldAutoSize.NONE
(the default),
+ * TextFieldAutoSize.LEFT
, TextFieldAutoSize.RIGHT
,
+ * and TextFieldAutoSize.CENTER
.
+ *
+ * If autoSize
is set to TextFieldAutoSize.NONE
+ * (the default) no resizing occurs.
If autoSize
is set to TextFieldAutoSize.LEFT
,
+ * the text is treated as left-justified text, meaning that the left margin
+ * of the text field remains fixed and any resizing of a single line of the
+ * text field is on the right margin. If the text includes a line break(for
+ * example, "\n"
or "\r"
), the bottom is also
+ * resized to fit the next line of text. If wordWrap
is also set
+ * to true
, only the bottom of the text field is resized and the
+ * right side remains fixed.
If autoSize
is set to
+ * TextFieldAutoSize.RIGHT
, the text is treated as
+ * right-justified text, meaning that the right margin of the text field
+ * remains fixed and any resizing of a single line of the text field is on
+ * the left margin. If the text includes a line break(for example,
+ * "\n" or "\r")
, the bottom is also resized to fit the next
+ * line of text. If wordWrap
is also set to true
,
+ * only the bottom of the text field is resized and the left side remains
+ * fixed.
If autoSize
is set to
+ * TextFieldAutoSize.CENTER
, the text is treated as
+ * center-justified text, meaning that any resizing of a single line of the
+ * text field is equally distributed to both the right and left margins. If
+ * the text includes a line break(for example, "\n"
or
+ * "\r"
), the bottom is also resized to fit the next line of
+ * text. If wordWrap
is also set to true
, only the
+ * bottom of the text field is resized and the left and right sides remain
+ * fixed.
autoSize
specified is not a member
+ * of flash.text.TextFieldAutoSize.
+ */
+ public autoSize: TextFieldAutoSize;
+ /**
+ * Specifies whether the text field has a background fill. If
+ * true
, the text field has a background fill. If
+ * false
, the text field has no background fill. Use the
+ * backgroundColor
property to set the background color of a
+ * text field.
+ *
+ * @default false
+ */
+ public background: boolean;
+ /**
+ * The color of the text field background. The default value is
+ * 0xFFFFFF
(white). This property can be retrieved or set, even
+ * if there currently is no background, but the color is visible only if the
+ * text field has the background
property set to
+ * true
.
+ */
+ public backgroundColor: number;
+ /**
+ * Specifies whether the text field has a border. If true
, the
+ * text field has a border. If false
, the text field has no
+ * border. Use the borderColor
property to set the border color.
+ *
+ * @default false
+ */
+ public border: boolean;
+ /**
+ * The color of the text field border. The default value is
+ * 0x000000
(black). This property can be retrieved or set, even
+ * if there currently is no border, but the color is visible only if the text
+ * field has the border
property set to true
.
+ */
+ public borderColor: number;
+ /**
+ * An integer(1-based index) that indicates the bottommost line that is
+ * currently visible in the specified text field. Think of the text field as
+ * a window onto a block of text. The scrollV
property is the
+ * 1-based index of the topmost visible line in the window.
+ *
+ * All the text between the lines indicated by scrollV
and
+ * bottomScrollV
is currently visible in the text field.
Selection span indexes are zero-based(for example, the first position + * is 0, the second position is 1, and so on).
+ */ + public caretIndex : number; + /** + * A Boolean value that specifies whether extra white space(spaces, line + * breaks, and so on) in a text field with HTML text is removed. The default + * value isfalse
. The condenseWhite
property only
+ * affects text set with the htmlText
property, not the
+ * text
property. If you set text with the text
+ * property, condenseWhite
is ignored.
+ *
+ * If condenseWhite
is set to true
, use standard
+ * HTML commands such as
and to place line
+ * breaks in the text field.
Set the condenseWhite
property before setting the
+ * htmlText
property.
replaceSelectedText()
+ * method.
+ *
+ * Note: When selecting characters to be replaced with
+ * setSelection()
and replaceSelectedText()
, the
+ * defaultTextFormat
will be applied only if the text has been
+ * selected up to and including the last character. Here is an example:
public my_txt:TextField new TextField(); + * my_txt.text = "Flash Macintosh version"; public my_fmt:TextFormat = new + * TextFormat(); my_fmt.color = 0xFF0000; my_txt.defaultTextFormat = my_fmt; + * my_txt.setSelection(6,15); // partial text selected - defaultTextFormat + * not applied my_txt.setSelection(6,23); // text selected to end - + * defaultTextFormat applied my_txt.replaceSelectedText("Windows version"); + *+ * + *
When you access the defaultTextFormat
property, the
+ * returned TextFormat object has all of its properties defined. No property
+ * is null
.
Note: You can't set this property if a style sheet is applied to + * the text field.
+ * + * @throws Error This method cannot be used on a text field with a style + * sheet. + */ + public defaultTextFormat: TextFormat; + /** + * Specifies whether the text field is a password text field. If the value of + * this property istrue
, the text field is treated as a
+ * password text field and hides the input characters using asterisks instead
+ * of the actual characters. If false
, the text field is not
+ * treated as a password text field. When password mode is enabled, the Cut
+ * and Copy commands and their corresponding keyboard shortcuts will not
+ * function. This security mechanism prevents an unscrupulous user from using
+ * the shortcuts to discover a password on an unattended computer.
+ *
+ * @default false
+ */
+ public displayAsPassword: boolean;
+ /**
+ * Specifies whether to render by using embedded font outlines. If
+ * false
, Flash Player renders the text field by using device
+ * fonts.
+ *
+ * If you set the embedFonts
property to true
+ * for a text field, you must specify a font for that text by using the
+ * font
property of a TextFormat object applied to the text
+ * field. If the specified font is not embedded in the SWF file, the text is
+ * not displayed.
flash.text.AntiAliasType
property of the text
+ * field is set to flash.text.AntiAliasType.ADVANCED
.
+ *
+ * The type of grid fitting used determines whether Flash Player forces + * strong horizontal and vertical lines to fit to a pixel or subpixel grid, + * or not at all.
+ * + *For the flash.text.GridFitType
property, you can use the
+ * following string values:
Flash Player supports the following HTML tags:
+ * + *Flash Player and AIR also support explicit character codes, such as + * &(ASCII ampersand) and €(Unicode € symbol).
+ */ + public htmlText: string; + /** + * The number of characters in a text field. A character such as tab + * (\t
) counts as one character.
+ */
+ public length : number;
+ /**
+ * The maximum number of characters that the text field can contain, as
+ * entered by a user. A script can insert more text than
+ * maxChars
allows; the maxChars
property indicates
+ * only how much text a user can enter. If the value of this property is
+ * 0
, a user can enter an unlimited amount of text.
+ *
+ * @default 0
+ */
+ public maxChars: number;
+ /**
+ * The maximum value of scrollH
.
+ */
+ public maxScrollH(): number;
+ /**
+ * The maximum value of scrollV
.
+ */
+ public maxScrollV(): number;
+ /**
+ * A Boolean value that indicates whether Flash Player automatically scrolls
+ * multiline text fields when the user clicks a text field and rolls the
+ * mouse wheel. By default, this value is true
. This property is
+ * useful if you want to prevent mouse wheel scrolling of text fields, or
+ * implement your own text field scrolling.
+ */
+ public mouseWheelEnabled: boolean;
+ /**
+ * Indicates whether field is a multiline text field. If the value is
+ * true
, the text field is multiline; if the value is
+ * false
, the text field is a single-line text field. In a field
+ * of type TextFieldType.INPUT
, the multiline
value
+ * determines whether the Enter
key creates a new line(a value
+ * of false
, and the Enter
key is ignored). If you
+ * paste text into a TextField
with a multiline
+ * value of false
, newlines are stripped out of the text.
+ *
+ * @default false
+ */
+ public multiline: boolean;
+ /**
+ * Defines the number of text lines in a multiline text field. If
+ * wordWrap
property is set to true
, the number of
+ * lines increases when text wraps.
+ */
+ public numLines : number;
+ /**
+ * Indicates the set of characters that a user can enter into the text field.
+ * If the value of the restrict
property is null
,
+ * you can enter any character. If the value of the restrict
+ * property is an empty string, you cannot enter any character. If the value
+ * of the restrict
property is a string of characters, you can
+ * enter only characters in the string into the text field. The string is
+ * scanned from left to right. You can specify a range by using the hyphen
+ * (-) character. Only user interaction is restricted; a script can put any
+ * text into the text field. If the string begins with a caret(^) character, all characters are + * initially accepted and succeeding characters in the string are excluded + * from the set of accepted characters. If the string does not begin with a + * caret(^) character, no characters are initially accepted and succeeding + * characters in the string are included in the set of accepted + * characters.
+ * + *The following example allows only uppercase characters, spaces, and + * numbers to be entered into a text field:
+ *my_txt.restrict = "A-Z 0-9";+ * + *
The following example includes all characters, but excludes lowercase + * letters:
+ *my_txt.restrict = "^a-z";+ * + *
You can use a backslash to enter a ^ or - verbatim. The accepted + * backslash sequences are \-, \^ or \\. The backslash must be an actual + * character in the string, so when specified in ActionScript, a double + * backslash must be used. For example, the following code includes only the + * dash(-) and caret(^):
+ *my_txt.restrict = "\\-\\^";+ * + *
The ^ can be used anywhere in the string to toggle between including + * characters and excluding characters. The following code includes only + * uppercase letters, but excludes the uppercase letter Q:
+ *my_txt.restrict = "A-Z^Q";+ * + *
You can use the \u
escape sequence to construct
+ * restrict
strings. The following code includes only the
+ * characters from ASCII 32(space) to ASCII 126(tilde).
my_txt.restrict = "\u0020-\u007E";+ * + * @default null + */ + public restrict: string; + /** + * The current horizontal scrolling position. If the
scrollH
+ * property is 0, the text is not horizontally scrolled. This property value
+ * is an integer that represents the horizontal position in pixels.
+ *
+ * The units of horizontal scrolling are pixels, whereas the units of + * vertical scrolling are lines. Horizontal scrolling is measured in pixels + * because most fonts you typically use are proportionally spaced; that is, + * the characters can have different widths. Flash Player performs vertical + * scrolling by line because users usually want to see a complete line of + * text rather than a partial line. Even if a line uses multiple fonts, the + * height of the line adjusts to fit the largest font in use.
+ * + *Note: The scrollH
property is zero-based, not
+ * 1-based like the scrollV
vertical scrolling property.
scrollV
+ * property is useful for directing users to a specific paragraph in a long
+ * passage, or creating scrolling text fields.
+ *
+ * The units of vertical scrolling are lines, whereas the units of + * horizontal scrolling are pixels. If the first line displayed is the first + * line in the text field, scrollV is set to 1(not 0). Horizontal scrolling + * is measured in pixels because most fonts are proportionally spaced; that + * is, the characters can have different widths. Flash performs vertical + * scrolling by line because users usually want to see a complete line of + * text rather than a partial line. Even if there are multiple fonts on a + * line, the height of the line adjusts to fit the largest font in use.
+ */ + public scrollV: number; + /** + * A Boolean value that indicates whether the text field is selectable. The + * valuetrue
indicates that the text is selectable. The
+ * selectable
property controls whether a text field is
+ * selectable, not whether a text field is editable. A dynamic text field can
+ * be selectable even if it is not editable. If a dynamic text field is not
+ * selectable, the user cannot select its text.
+ *
+ * If selectable
is set to false
, the text in
+ * the text field does not respond to selection commands from the mouse or
+ * keyboard, and the text cannot be copied with the Copy command. If
+ * selectable
is set to true
, the text in the text
+ * field can be selected with the mouse or keyboard, and the text can be
+ * copied with the Copy command. You can select text this way even if the
+ * text field is a dynamic text field instead of an input text field.
caretIndex
.
+ */
+ public selectionBeginIndex : number;
+ /**
+ * The zero-based character index value of the last character in the current
+ * selection. For example, the first character is 0, the second character is
+ * 1, and so on. If no text is selected, this property is the value of
+ * caretIndex
.
+ */
+ public selectionEndIndex : number;
+ /**
+ * The sharpness of the glyph edges in this text field. This property applies
+ * only if the flash.text.AntiAliasType
property of the text
+ * field is set to flash.text.AntiAliasType.ADVANCED
. The range
+ * for sharpness
is a number from -400 to 400. If you attempt to
+ * set sharpness
to a value outside that range, Flash sets the
+ * property to the nearest value in the range(either -400 or 400).
+ *
+ * @default 0
+ */
+ public sharpness: number;
+ /**
+ * Attaches a style sheet to the text field. For information on creating
+ * style sheets, see the StyleSheet class and the ActionScript 3.0
+ * Developer's Guide.
+ *
+ * You can change the style sheet associated with a text field at any
+ * time. If you change the style sheet in use, the text field is redrawn with
+ * the new style sheet. You can set the style sheet to null
or
+ * undefined
to remove the style sheet. If the style sheet in
+ * use is removed, the text field is redrawn without a style sheet.
Note: If the style sheet is removed, the contents of both
+ * TextField.text
and TextField.htmlText
change to
+ * incorporate the formatting previously applied by the style sheet. To
+ * preserve the original TextField.htmlText
contents without the
+ * formatting, save the value in a variable before removing the style
+ * sheet.
'\r'
, ASCII 13). This
+ * property contains unformatted text in the text field, without HTML tags.
+ *
+ * To get the text in HTML form, use the htmlText
+ * property.
0x000000
; white is
+ * 0xFFFFFF
.
+ *
+ * @default 0(0x000000)
+ */
+ public textColor: number;
+ /**
+ * The height of the text in pixels.
+ */
+ public textHeight : number;
+ /**
+ * The interaction mode property, Default value is
+ * TextInteractionMode.NORMAL. On mobile platforms, the normal mode implies
+ * that the text can be scrolled but not selected. One can switch to the
+ * selectable mode through the in-built context menu on the text field. On
+ * Desktop, the normal mode implies that the text is in scrollable as well as
+ * selection mode.
+ */
+ public textInteractionMode : TextInteractionMode;
+ /**
+ * The width of the text in pixels.
+ */
+ public textWidth : number;
+ /**
+ * The thickness of the glyph edges in this text field. This property applies
+ * only when AntiAliasType
is set to
+ * AntiAliasType.ADVANCED
.
+ *
+ * The range for thickness
is a number from -200 to 200. If
+ * you attempt to set thickness
to a value outside that range,
+ * the property is set to the nearest value in the range(either -200 or
+ * 200).
TextFieldType.DYNAMIC
, which specifies a dynamic
+ * text field, which a user cannot edit, or TextFieldType.INPUT
,
+ * which specifies an input text field, which a user can edit.
+ *
+ * @default dynamic
+ * @throws ArgumentError The type
specified is not a member of
+ * flash.text.TextFieldType.
+ */
+ public type: TextFieldType;
+ /**
+ * Specifies whether to copy and paste the text formatting along with the
+ * text. When set to true
, Flash Player copies and pastes
+ * formatting(such as alignment, bold, and italics) when you copy and paste
+ * between text fields. Both the origin and destination text fields for the
+ * copy and paste procedure must have useRichTextClipboard
set
+ * to true
. The default value is false
.
+ */
+ public useRichTextClipboard: boolean;
+ /**
+ * A Boolean value that indicates whether the text field has word wrap. If
+ * the value of wordWrap
is true
, the text field
+ * has word wrap; if the value is false
, the text field does not
+ * have word wrap. The default value is false
.
+ */
+ public wordWrap: boolean;
+ /**
+ * Creates a new TextField instance. After you create the TextField instance,
+ * call the addChild()
or addChildAt()
method of
+ * the parent DisplayObjectContainer object to add the TextField instance to
+ * the display list.
+ *
+ * The default size for a text field is 100 x 100 pixels.
+ */ + constructor(); + /** + * Appends the string specified by thenewText
parameter to the
+ * end of the text of the text field. This method is more efficient than an
+ * addition assignment(+=
) on a text
property
+ * (such as someTextField.text += moreText
), particularly for a
+ * text field that contains a significant amount of content.
+ *
+ * @param newText The string to append to the existing text.
+ */
+ public appendText(newText: string): void;
+ /**
+ * Returns a rectangle that is the bounding box of the character.
+ *
+ * @param charIndex The zero-based index value for the character(for
+ * example, the first position is 0, the second position is
+ * 1, and so on).
+ * @return A rectangle with x
and y
minimum and
+ * maximum values defining the bounding box of the character.
+ */
+ public getCharBoundaries(charIndex: number): Rectangle;
+ /**
+ * Returns the zero-based index value of the character at the point specified
+ * by the x
and y
parameters.
+ *
+ * @param x The x coordinate of the character.
+ * @param y The y coordinate of the character.
+ * @return The zero-based index value of the character(for example, the
+ * first position is 0, the second position is 1, and so on). Returns
+ * -1 if the point is not over any character.
+ */
+ public getCharIndexAtPoint(x: number, y: number): number;
+ /**
+ * Given a character index, returns the index of the first character in the
+ * same paragraph.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return The zero-based index value of the first character in the same
+ * paragraph.
+ * @throws RangeError The character index specified is out of range.
+ */
+ public getFirstCharInParagraph(charIndex: number): number;
+ /**
+ * Returns a DisplayObject reference for the given id
, for an
+ * image or SWF file that has been added to an HTML-formatted text field by
+ * using an
tag. The
tag is in the
+ * following format:
+ *
+ *
+ *
+ * @param id The id
to match(in the id
attribute
+ * of the
tag).
+ * @return The display object corresponding to the image or SWF file with the
+ * matching id
attribute in the
tag
+ * of the text field. For media loaded from an external source, this
+ * object is a Loader object, and, once loaded, the media object is a
+ * child of that Loader object. For media embedded in the SWF file,
+ * it is the loaded object. If no
tag with the
+ * matching id
exists, the method returns
+ * null
.
+ */
+ public getImageReference(id: string): DisplayObject;
+ /**
+ * Returns the zero-based index value of the line at the point specified by
+ * the x
and y
parameters.
+ *
+ * @param x The x coordinate of the line.
+ * @param y The y coordinate of the line.
+ * @return The zero-based index value of the line(for example, the first
+ * line is 0, the second line is 1, and so on). Returns -1 if the
+ * point is not over any line.
+ */
+ public getLineIndexAtPoint(x: number, y: number): number;
+ /**
+ * Returns the zero-based index value of the line containing the character
+ * specified by the charIndex
parameter.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return The zero-based index value of the line.
+ * @throws RangeError The character index specified is out of range.
+ */
+ public getLineIndexOfChar(charIndex: number): number;
+ /**
+ * Returns the number of characters in a specific text line.
+ *
+ * @param lineIndex The line number for which you want the length.
+ * @return The number of characters in the line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ public getLineLength(lineIndex: number): number;
+ /**
+ * Returns metrics information about a given text line.
+ *
+ * @param lineIndex The line number for which you want metrics information.
+ * @return A TextLineMetrics object.
+ * @throws RangeError The line number specified is out of range.
+ */
+ public getLineMetrics(lineIndex: number): TextLineMetrics;
+ /**
+ * Returns the character index of the first character in the line that the
+ * lineIndex
parameter specifies.
+ *
+ * @param lineIndex The zero-based index value of the line(for example, the
+ * first line is 0, the second line is 1, and so on).
+ * @return The zero-based index value of the first character in the line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ public getLineOffset(lineIndex: number): number;
+ /**
+ * Returns the text of the line specified by the lineIndex
+ * parameter.
+ *
+ * @param lineIndex The zero-based index value of the line(for example, the
+ * first line is 0, the second line is 1, and so on).
+ * @return The text string contained in the specified line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ public getLineText(lineIndex: number): string;
+ /**
+ * Given a character index, returns the length of the paragraph containing
+ * the given character. The length is relative to the first character in the
+ * paragraph(as returned by getFirstCharInParagraph()
), not to
+ * the character index passed in.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return Returns the number of characters in the paragraph.
+ * @throws RangeError The character index specified is out of range.
+ */
+ public getParagraphLength(charIndex: number): number;
+ /**
+ * Returns a TextFormat object that contains formatting information for the
+ * range of text that the beginIndex
and endIndex
+ * parameters specify. Only properties that are common to the entire text
+ * specified are set in the resulting TextFormat object. Any property that is
+ * mixed, meaning that it has different values at different points in
+ * the text, has a value of null
.
+ *
+ * If you do not specify values for these parameters, this method is + * applied to all the text in the text field.
+ * + *The following table describes three possible usages:
+ * + * @return The TextFormat object that represents the formatting properties + * for the specified text. + * @throws RangeError ThebeginIndex
or endIndex
+ * specified is out of range.
+ */
+ public getTextFormat(beginIndex?: number, endIndex?: number): TextFormat;
+ /**
+ * Replaces the current selection with the contents of the value
+ * parameter. The text is inserted at the position of the current selection,
+ * using the current default character format and default paragraph format.
+ * The text is not treated as HTML.
+ *
+ * You can use the replaceSelectedText()
method to insert and
+ * delete text without disrupting the character and paragraph formatting of
+ * the rest of the text.
Note: This method does not work if a style sheet is applied to + * the text field.
+ * + * @param value The string to replace the currently selected text. + * @throws Error This method cannot be used on a text field with a style + * sheet. + */ + public replaceSelectedText(value: string): void; + /** + * Replaces the range of characters that thebeginIndex
and
+ * endIndex
parameters specify with the contents of the
+ * newText
parameter. As designed, the text from
+ * beginIndex
to endIndex-1
is replaced.
+ *
+ * Note: This method does not work if a style sheet is applied to + * the text field.
+ * + * @param beginIndex The zero-based index value for the start position of the + * replacement range. + * @param endIndex The zero-based index position of the first character + * after the desired text span. + * @param newText The text to use to replace the specified range of + * characters. + * @throws Error This method cannot be used on a text field with a style + * sheet. + */ + public replaceText(beginIndex: number, endIndex: number, newText: string): void; + /** + * Sets as selected the text designated by the index values of the first and + * last characters, which are specified with thebeginIndex
and
+ * endIndex
parameters. If the two parameter values are the
+ * same, this method sets the insertion point, as if you set the
+ * caretIndex
property.
+ *
+ * @param beginIndex The zero-based index value of the first character in the
+ * selection(for example, the first character is 0, the
+ * second character is 1, and so on).
+ * @param endIndex The zero-based index value of the last character in the
+ * selection.
+ */
+ public setSelection(beginIndex: number, endIndex: number): void;
+ /**
+ * Applies the text formatting that the format
parameter
+ * specifies to the specified text in a text field. The value of
+ * format
must be a TextFormat object that specifies the desired
+ * text formatting changes. Only the non-null properties of
+ * format
are applied to the text field. Any property of
+ * format
that is set to null
is not applied. By
+ * default, all of the properties of a newly created TextFormat object are
+ * set to null
.
+ *
+ * Note: This method does not work if a style sheet is applied to + * the text field.
+ * + *The setTextFormat()
method changes the text formatting
+ * applied to a range of characters or to the entire body of text in a text
+ * field. To apply the properties of format to all text in the text field, do
+ * not specify values for beginIndex
and endIndex
.
+ * To apply the properties of the format to a range of text, specify values
+ * for the beginIndex
and the endIndex
parameters.
+ * You can use the length
property to determine the index
+ * values.
The two types of formatting information in a TextFormat object are + * character level formatting and paragraph level formatting. Each character + * in a text field can have its own character formatting settings, such as + * font name, font size, bold, and italic.
+ * + *For paragraphs, the first character of the paragraph is examined for + * the paragraph formatting settings for the entire paragraph. Examples of + * paragraph formatting settings are left margin, right margin, and + * indentation.
+ * + *Any text inserted manually by the user, or replaced by the
+ * replaceSelectedText()
method, receives the default text field
+ * formatting for new text, and not the formatting specified for the text
+ * insertion point. To set the default formatting for new text, use
+ * defaultTextFormat
.
beginIndex
or endIndex
+ * specified is out of range.
+ */
+ public setTextFormat(format: TextFormat, beginIndex?: number, endIndex?: number): void;
+ /**
+ * Returns true if an embedded font is available with the specified
+ * fontName
and fontStyle
where
+ * Font.fontType
is flash.text.FontType.EMBEDDED
.
+ * Starting with Flash Player 10, two kinds of embedded fonts can appear in a
+ * SWF file. Normal embedded fonts are only used with TextField objects. CFF
+ * embedded fonts are only used with the flash.text.engine classes. The two
+ * types are distinguished by the fontType
property of the
+ * Font
class, as returned by the enumerateFonts()
+ * function.
+ *
+ * TextField cannot use a font of type EMBEDDED_CFF
. If
+ * embedFonts
is set to true
and the only font
+ * available at run time with the specified name and style is of type
+ * EMBEDDED_CFF
, Flash Player fails to render the text, as if no
+ * embedded font were available with the specified name and style.
If both EMBEDDED
and EMBEDDED_CFF
fonts are
+ * available with the same name and style, the EMBEDDED
font is
+ * selected and text renders with the EMBEDDED
font.
flash.text.FontStyle
+ * @return true
if a compatible embedded font is available,
+ * otherwise false
.
+ * @throws ArgumentError The fontStyle
specified is not a member
+ * of flash.text.FontStyle
.
+ */
+ static isFontCompatible(fontName: string, fontStyle: string): boolean;
+ }
+ export = TextField;
+
+}
+declare module "awayjs-core/lib/errors/AbstractMethodError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ /**
+ * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+ * by a concrete subclass.
+ */
+ class AbstractMethodError extends Error {
+ /**
+ * Create a new AbstractMethodError.
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ constructor(message?: string, id?: number);
+ }
+ export = AbstractMethodError;
+
+}
+declare module "awayjs-core/lib/errors/ArgumentError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ /**
+ * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+ * by a concrete subclass.
+ */
+ class ArgumentError extends Error {
+ /**
+ * Create a new ArgumentError.
+ *
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ constructor(message?: string, id?: number);
+ }
+ export = ArgumentError;
+
+}
+declare module "awayjs-core/lib/errors/CastError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ class CastError extends Error {
+ constructor(message: string);
+ }
+ export = CastError;
+
+}
+declare module "awayjs-core/lib/errors/DocumentError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ class DocumentError extends Error {
+ static DOCUMENT_DOES_NOT_EXIST: string;
+ constructor(message?: string, id?: number);
+ }
+ export = DocumentError;
+
+}
+declare module "awayjs-core/lib/errors/Error" {
+ class Error {
+ private _errorID;
+ private _messsage;
+ private _name;
+ constructor(message?: string, id?: number, _name?: string);
+ /**
+ *
+ * @returns {string}
+ */
+ /**
+ *
+ * @param value
+ */
+ public message : string;
+ /**
+ *
+ * @returns {string}
+ */
+ /**
+ *
+ * @param value
+ */
+ public name : string;
+ /**
+ *
+ * @returns {number}
+ */
+ public errorID : number;
+ }
+ export = Error;
+
+}
+declare module "awayjs-core/lib/errors/PartialImplementationError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ /**
+ * AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+ * by a concrete subclass.
+ */
+ class PartialImplementationError extends Error {
+ /**
+ * Create a new AbstractMethodError.
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ constructor(dependency?: string, id?: number);
+ }
+ export = PartialImplementationError;
+
+}
+declare module "awayjs-core/lib/errors/RangeError" {
+ import Error = require("awayjs-core/lib/errors/Error");
+ /**
+ * RangeError is thrown when an index is accessed out of range of the number of
+ * available indices on an Array.
+ */
+ class RangeError extends Error {
+ /**
+ * Create a new RangeError.
+ *
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ constructor(message?: string, id?: number);
+ }
+ export = RangeError;
+
+}
+declare module "awayjs-core/lib/events/AssetEvent" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * @class away.events.AssetEvent
+ */
+ class AssetEvent extends Event {
+ /**
+ *
+ */
+ static ASSET_COMPLETE: string;
+ /**
+ *
+ */
+ static ASSET_RENAME: string;
+ /**
+ *
+ */
+ static ASSET_CONFLICT_RESOLVED: string;
+ /**
+ *
+ */
+ static TEXTURE_SIZE_ERROR: string;
+ private _asset;
+ private _prevName;
+ /**
+ *
+ */
+ constructor(type: string, asset?: IAsset, prevName?: string);
+ /**
+ *
+ */
+ public asset : IAsset;
+ /**
+ *
+ */
+ public assetPrevName : string;
+ /**
+ *
+ */
+ public clone(): Event;
+ }
+ export = AssetEvent;
+
+}
+declare module "awayjs-core/lib/events/CameraEvent" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * @class away.events.CameraEvent
+ */
+ class CameraEvent extends Event {
+ static PROJECTION_CHANGED: string;
+ private _camera;
+ constructor(type: string, camera: Camera);
+ public camera : Camera;
+ }
+ export = CameraEvent;
+
+}
+declare module "awayjs-core/lib/events/DisplayObjectEvent" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Event = require("awayjs-core/lib/events/Event");
+ class DisplayObjectEvent extends Event {
+ static VISIBLITY_UPDATED: string;
+ static SCENETRANSFORM_CHANGED: string;
+ static SCENE_CHANGED: string;
+ static POSITION_CHANGED: string;
+ static ROTATION_CHANGED: string;
+ static SCALE_CHANGED: string;
+ public object: DisplayObject;
+ constructor(type: string, object: DisplayObject);
+ }
+ export = DisplayObjectEvent;
+
+}
+declare module "awayjs-core/lib/events/Event" {
+ class Event {
+ static COMPLETE: string;
+ static OPEN: string;
+ static ENTER_FRAME: string;
+ static EXIT_FRAME: string;
+ static RESIZE: string;
+ static ERROR: string;
+ static CHANGE: string;
+ /**
+ * Type of event
+ * @property type
+ * @type String
+ */
+ public type: string;
+ /**
+ * Reference to target object
+ * @property target
+ * @type Object
+ */
+ public target: any;
+ constructor(type: string);
+ /**
+ * Clones the current event.
+ * @return An exact duplicate of the current event.
+ */
+ public clone(): Event;
+ }
+ export = Event;
+
+}
+declare module "awayjs-core/lib/events/EventDispatcher" {
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * Base class for dispatching events
+ *
+ * @class away.events.EventDispatcher
+ *
+ */
+ class EventDispatcher {
+ private listeners;
+ private target;
+ constructor(target?: any);
+ /**
+ * Add an event listener
+ * @method addEventListener
+ * @param {String} Name of event to add a listener for
+ * @param {Function} Callback function
+ */
+ public addEventListener(type: string, listener: Function): void;
+ /**
+ * Remove an event listener
+ * @method removeEventListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ public removeEventListener(type: string, listener: Function): void;
+ /**
+ * Dispatch an event
+ * @method dispatchEvent
+ * @param {Event} Event to dispatch
+ */
+ public dispatchEvent(event: Event): void;
+ /**
+ * get Event Listener Index in array. Returns -1 if no listener is added
+ * @method getEventListenerIndex
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ private getEventListenerIndex(type, listener);
+ /**
+ * check if an object has an event listener assigned to it
+ * @method hasListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ public hasEventListener(type: string, listener?: Function): boolean;
+ }
+ export = EventDispatcher;
+
+}
+declare module "awayjs-core/lib/events/GeometryEvent" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * Dispatched to notify changes in a geometry object's state.
+ *
+ * @class away.events.GeometryEvent
+ * @see away3d.core.base.Geometry
+ */
+ class GeometryEvent extends Event {
+ /**
+ * Dispatched when a TriangleSubGeometry was added to the dispatching Geometry.
+ */
+ static SUB_GEOMETRY_ADDED: string;
+ /**
+ * Dispatched when a TriangleSubGeometry was removed from the dispatching Geometry.
+ */
+ static SUB_GEOMETRY_REMOVED: string;
+ static BOUNDS_INVALID: string;
+ private _subGeometry;
+ /**
+ * Create a new GeometryEvent
+ * @param type The event type.
+ * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event.
+ */
+ constructor(type: string, subGeometry?: SubGeometryBase);
+ /**
+ * The TriangleSubGeometry object that is the subject of this event, if appropriate.
+ */
+ public subGeometry : SubGeometryBase;
+ /**
+ * Clones the event.
+ * @return An exact duplicate of the current object.
+ */
+ public clone(): Event;
+ }
+ export = GeometryEvent;
+
+}
+declare module "awayjs-core/lib/events/HTTPStatusEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * @class away.events.HTTPStatusEvent
+ */
+ class HTTPStatusEvent extends Event {
+ static HTTP_STATUS: string;
+ public status: number;
+ constructor(type: string, status?: number);
+ }
+ export = HTTPStatusEvent;
+
+}
+declare module "awayjs-core/lib/events/IEventDispatcher" {
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * Base interface for dispatching events
+ *
+ * @interface away.events.IEventDispatcher
+ *
+ */
+ interface IEventDispatcher {
+ /**
+ * Add an event listener
+ * @method addEventListener
+ * @param {String} Name of event to add a listener for
+ * @param {Function} Callback function
+ */
+ addEventListener(type: string, listener: Function): any;
+ /**
+ * Remove an event listener
+ * @method removeEventListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ removeEventListener(type: string, listener: Function): any;
+ /**
+ * Dispatch an event
+ * @method dispatchEvent
+ * @param {Event} Event to dispatch
+ */
+ dispatchEvent(event: Event): any;
+ /**
+ * check if an object has an event listener assigned to it
+ * @method hasListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ * @param {Object} Target object listener is added to
+ */
+ hasEventListener(type: string, listener?: Function): boolean;
+ }
+ export = IEventDispatcher;
+
+}
+declare module "awayjs-core/lib/events/IOErrorEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class IOErrorEvent extends Event {
+ static IO_ERROR: string;
+ constructor(type: string);
+ }
+ export = IOErrorEvent;
+
+}
+declare module "awayjs-core/lib/events/LightEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class LightEvent extends Event {
+ static CASTS_SHADOW_CHANGE: string;
+ constructor(type: string);
+ public clone(): Event;
+ }
+ export = LightEvent;
+
+}
+declare module "awayjs-core/lib/events/LoaderEvent" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import Event = require("awayjs-core/lib/events/Event");
+ class LoaderEvent extends Event {
+ /**
+ * Dispatched when a resource and all of its dependencies is retrieved.
+ */
+ static RESOURCE_COMPLETE: string;
+ private _url;
+ private _content;
+ private _assets;
+ /**
+ * Create a new LoaderEvent object.
+ *
+ * @param type The event type.
+ * @param url The url of the loaded resource.
+ * @param assets The assets of the loaded resource.
+ */
+ constructor(type: string, url?: string, content?: DisplayObject, assets?: IAsset[]);
+ /**
+ * The content returned if the resource has been loaded inside a Loader
object.
+ */
+ public content : DisplayObject;
+ /**
+ * The url of the loaded resource.
+ */
+ public url : string;
+ /**
+ * The error string on loadError.
+ */
+ public assets : IAsset[];
+ /**
+ * Clones the current event.
+ * @return An exact duplicate of the current event.
+ */
+ public clone(): Event;
+ }
+ export = LoaderEvent;
+
+}
+declare module "awayjs-core/lib/events/MaterialEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class MaterialEvent extends Event {
+ static SIZE_CHANGED: string;
+ constructor(type: string);
+ }
+ export = MaterialEvent;
+
+}
+declare module "awayjs-core/lib/events/MouseEvent" {
+ import View = require("awayjs-core/lib/containers/View");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Event = require("awayjs-core/lib/events/Event");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * A MouseEvent is dispatched when a mouse event occurs over a mouseEnabled object in View.
+ * TODO: we don't have screenZ data, tho this should be easy to implement
+ */
+ class MouseEvent extends Event {
+ public _iAllowedToPropagate: boolean;
+ public _iParentEvent: MouseEvent;
+ /**
+ * Defines the value of the type property of a mouseOver3d event object.
+ */
+ static MOUSE_OVER: string;
+ /**
+ * Defines the value of the type property of a mouseOut3d event object.
+ */
+ static MOUSE_OUT: string;
+ /**
+ * Defines the value of the type property of a mouseUp3d event object.
+ */
+ static MOUSE_UP: string;
+ /**
+ * Defines the value of the type property of a mouseDown3d event object.
+ */
+ static MOUSE_DOWN: string;
+ /**
+ * Defines the value of the type property of a mouseMove3d event object.
+ */
+ static MOUSE_MOVE: string;
+ /**
+ * Defines the value of the type property of a click3d event object.
+ */
+ static CLICK: string;
+ /**
+ * Defines the value of the type property of a doubleClick3d event object.
+ */
+ static DOUBLE_CLICK: string;
+ /**
+ * Defines the value of the type property of a mouseWheel3d event object.
+ */
+ static MOUSE_WHEEL: string;
+ /**
+ * The horizontal coordinate at which the event occurred in view coordinates.
+ */
+ public screenX: number;
+ /**
+ * The vertical coordinate at which the event occurred in view coordinates.
+ */
+ public screenY: number;
+ /**
+ * The view object inside which the event took place.
+ */
+ public view: View;
+ /**
+ * The 3d object inside which the event took place.
+ */
+ public object: DisplayObject;
+ /**
+ * The material owner inside which the event took place.
+ */
+ public materialOwner: IMaterialOwner;
+ /**
+ * The material of the 3d element inside which the event took place.
+ */
+ public material: MaterialBase;
+ /**
+ * The uv coordinate inside the draw primitive where the event took place.
+ */
+ public uv: Point;
+ /**
+ * The index of the face where the event took place.
+ */
+ public index: number;
+ /**
+ * The index of the subGeometry where the event took place.
+ */
+ public subGeometryIndex: number;
+ /**
+ * The position in object space where the event took place
+ */
+ public localPosition: Vector3D;
+ /**
+ * The normal in object space where the event took place
+ */
+ public localNormal: Vector3D;
+ /**
+ * Indicates whether the Control key is active (true) or inactive (false).
+ */
+ public ctrlKey: boolean;
+ /**
+ * Indicates whether the Alt key is active (true) or inactive (false).
+ */
+ public altKey: boolean;
+ /**
+ * Indicates whether the Shift key is active (true) or inactive (false).
+ */
+ public shiftKey: boolean;
+ /**
+ * Indicates how many lines should be scrolled for each unit the user rotates the mouse wheel.
+ */
+ public delta: number;
+ /**
+ * Create a new MouseEvent object.
+ * @param type The type of the MouseEvent.
+ */
+ constructor(type: string);
+ /**
+ * @inheritDoc
+ */
+ public bubbles : boolean;
+ /**
+ * @inheritDoc
+ */
+ public stopPropagation(): void;
+ /**
+ * @inheritDoc
+ */
+ public stopImmediatePropagation(): void;
+ /**
+ * Creates a copy of the MouseEvent object and sets the value of each property to match that of the original.
+ */
+ public clone(): Event;
+ /**
+ * The position in scene space where the event took place
+ */
+ public scenePosition : Vector3D;
+ /**
+ * The normal in scene space where the event took place
+ */
+ public sceneNormal : Vector3D;
+ }
+ export = MouseEvent;
+
+}
+declare module "awayjs-core/lib/events/ParserEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class ParserEvent extends Event {
+ private _message;
+ /**
+ * Dispatched when parsing of an asset completed.
+ */
+ static PARSE_COMPLETE: string;
+ /**
+ * Dispatched when an error occurs while parsing the data (e.g. because it's
+ * incorrectly formatted.)
+ */
+ static PARSE_ERROR: string;
+ /**
+ * Dispatched when a parser is ready to have dependencies retrieved and resolved.
+ * This is an internal event that should rarely (if ever) be listened for by
+ * external classes.
+ */
+ static READY_FOR_DEPENDENCIES: string;
+ constructor(type: string, message?: string);
+ /**
+ * Additional human-readable message. Usually supplied for ParserEvent.PARSE_ERROR events.
+ */
+ public message : string;
+ public clone(): Event;
+ }
+ export = ParserEvent;
+
+}
+declare module "awayjs-core/lib/events/ProgressEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class ProgressEvent extends Event {
+ static PROGRESS: string;
+ public bytesLoaded: number;
+ public bytesTotal: number;
+ constructor(type: string);
+ }
+ export = ProgressEvent;
+
+}
+declare module "awayjs-core/lib/events/ProjectionEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ import IProjection = require("awayjs-core/lib/projections/IProjection");
+ class ProjectionEvent extends Event {
+ static MATRIX_CHANGED: string;
+ private _projection;
+ constructor(type: string, projection: IProjection);
+ public projection : IProjection;
+ }
+ export = ProjectionEvent;
+
+}
+declare module "awayjs-core/lib/events/RendererEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class RendererEvent extends Event {
+ static VIEWPORT_UPDATED: string;
+ static SCISSOR_UPDATED: string;
+ constructor(type: string);
+ }
+ export = RendererEvent;
+
+}
+declare module "awayjs-core/lib/events/ResizeEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class ResizeEvent extends Event {
+ static RESIZE: string;
+ private _oldHeight;
+ private _oldWidth;
+ constructor(type: string, oldHeight?: number, oldWidth?: number);
+ public oldHeight : number;
+ public oldWidth : number;
+ }
+ export = ResizeEvent;
+
+}
+declare module "awayjs-core/lib/events/SceneEvent" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Event = require("awayjs-core/lib/events/Event");
+ class SceneEvent extends Event {
+ /**
+ *
+ */
+ static ADDED_TO_SCENE: string;
+ /**
+ *
+ */
+ static REMOVED_FROM_SCENE: string;
+ /**
+ *
+ */
+ static PARTITION_CHANGED: string;
+ /**
+ *
+ */
+ public displayObject: DisplayObject;
+ constructor(type: string, displayObject: DisplayObject);
+ }
+ export = SceneEvent;
+
+}
+declare module "awayjs-core/lib/events/StageEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class StageEvent extends Event {
+ static CONTEXT_CREATED: string;
+ static CONTEXT_DISPOSED: string;
+ static CONTEXT_RECREATED: string;
+ static VIEWPORT_UPDATED: string;
+ constructor(type: string);
+ }
+ export = StageEvent;
+
+}
+declare module "awayjs-core/lib/events/SubGeometryEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ /**
+ * Dispatched to notify changes in a sub geometry object's state.
+ *
+ * @class away.events.SubGeometryEvent
+ * @see away.core.base.Geometry
+ */
+ class SubGeometryEvent extends Event {
+ /**
+ * Dispatched when a TriangleSubGeometry's index data has been updated.
+ */
+ static INDICES_UPDATED: string;
+ /**
+ * Dispatched when a TriangleSubGeometry's vertex data has been updated.
+ */
+ static VERTICES_UPDATED: string;
+ private _dataType;
+ /**
+ * Create a new GeometryEvent
+ * @param type The event type.
+ * @param dataType An optional data type of the vertex data being updated.
+ */
+ constructor(type: string, dataType?: string);
+ /**
+ * The data type of the vertex data.
+ */
+ public dataType : string;
+ /**
+ * Clones the event.
+ *
+ * @return An exact duplicate of the current object.
+ */
+ public clone(): Event;
+ }
+ export = SubGeometryEvent;
+
+}
+declare module "awayjs-core/lib/events/TimerEvent" {
+ import Event = require("awayjs-core/lib/events/Event");
+ class TimerEvent extends Event {
+ static TIMER: string;
+ static TIMER_COMPLETE: string;
+ constructor(type: string);
+ }
+ export = TimerEvent;
+
+}
+declare module "awayjs-core/lib/managers/MouseManager" {
+ import View = require("awayjs-core/lib/containers/View");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ /**
+ * MouseManager enforces a singleton pattern and is not intended to be instanced.
+ * it provides a manager class for detecting mouse hits on scene objects and sending out mouse events.
+ */
+ class MouseManager {
+ private static _instance;
+ private _viewLookup;
+ public _iActiveDiv: HTMLDivElement;
+ public _iUpdateDirty: boolean;
+ public _iCollidingObject: PickingCollisionVO;
+ private _nullVector;
+ private _previousCollidingObject;
+ private _queuedEvents;
+ private _mouseMoveEvent;
+ private _mouseUp;
+ private _mouseClick;
+ private _mouseOut;
+ private _mouseDown;
+ private _mouseMove;
+ private _mouseOver;
+ private _mouseWheel;
+ private _mouseDoubleClick;
+ private onClickDelegate;
+ private onDoubleClickDelegate;
+ private onMouseDownDelegate;
+ private onMouseMoveDelegate;
+ private onMouseUpDelegate;
+ private onMouseWheelDelegate;
+ private onMouseOverDelegate;
+ private onMouseOutDelegate;
+ /**
+ * Creates a new MouseManager
object.
+ */
+ constructor();
+ static getInstance(): MouseManager;
+ public fireMouseEvents(forceMouseMove: boolean): void;
+ public registerView(view: View): void;
+ public unregisterView(view: View): void;
+ private queueDispatch(event, sourceEvent, collider?);
+ private onMouseMove(event);
+ private onMouseOut(event);
+ private onMouseOver(event);
+ private onClick(event);
+ private onDoubleClick(event);
+ private onMouseDown(event);
+ private onMouseUp(event);
+ private onMouseWheel(event);
+ private updateColliders(event);
+ }
+ export = MouseManager;
+
+}
+declare module "awayjs-core/lib/materials/CSSMaterialBase" {
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ /**
+ * MaterialBase forms an abstract base class for any material.
+ * A material consists of several passes, each of which constitutes at least one render call. Several passes could
+ * be used for special effects (render lighting for many lights in several passes, render an outline in a separate
+ * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space
+ * subsurface scattering, or rendering a depth map for specialized self-shadowing).
+ *
+ * Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular
+ * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom
+ * shaders, or entire new material frameworks.
+ */
+ class CSSMaterialBase extends MaterialBase {
+ private _imageElement;
+ private _imageStyle;
+ public imageElement : HTMLImageElement;
+ public imageStyle : MSStyleCSSProperties;
+ /**
+ * The texture object to use for the albedo colour.
+ */
+ public texture : Texture2DBase;
+ /**
+ * Creates a new MaterialBase object.
+ */
+ constructor(texture?: Texture2DBase, smooth?: boolean, repeat?: boolean);
+ }
+ export = CSSMaterialBase;
+
+}
+declare module "awayjs-core/lib/materials/LightSources" {
+ /**
+ * Enumeration class for defining which lighting types affect the specific material
+ * lighting component (diffuse and specular). This can be useful if, for example, you
+ * want to use light probes for diffuse global lighting, but want specular reflections from
+ * traditional light sources without those affecting the diffuse light.
+ *
+ * @see away.materials.ColorMaterial.diffuseLightSources
+ * @see away.materials.ColorMaterial.specularLightSources
+ * @see away.materials.TextureMaterial.diffuseLightSources
+ * @see away.materials.TextureMaterial.specularLightSources
+ */
+ class LightSources {
+ /**
+ * Defines normal lights are to be used as the source for the lighting
+ * component.
+ */
+ static LIGHTS: number;
+ /**
+ * Defines that global lighting probes are to be used as the source for the
+ * lighting component.
+ */
+ static PROBES: number;
+ /**
+ * Defines that both normal and global lighting probes are to be used as the
+ * source for the lighting component. This is equivalent to LightSources.LIGHTS | LightSources.PROBES.
+ */
+ static ALL: number;
+ }
+ export = LightSources;
+
+}
+declare module "awayjs-core/lib/materials/MaterialBase" {
+ import IAnimationSet = require("awayjs-core/lib/animators/IAnimationSet");
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import IStage = require("awayjs-core/lib/core/base/IStage");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import IMaterialData = require("awayjs-core/lib/core/pool/IMaterialData");
+ import IMaterialPassData = require("awayjs-core/lib/core/pool/IMaterialPassData");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import LightPickerBase = require("awayjs-core/lib/materials/lightpickers/LightPickerBase");
+ import IMaterialPass = require("awayjs-core/lib/materials/passes/IMaterialPass");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ /**
+ * MaterialBase forms an abstract base class for any material.
+ * A material consists of several passes, each of which constitutes at least one render call. Several passes could
+ * be used for special effects (render lighting for many lights in several passes, render an outline in a separate
+ * pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space
+ * subsurface scattering, or rendering a depth map for specialized self-shadowing).
+ *
+ * Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular
+ * methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom
+ * shaders, or entire new material frameworks.
+ */
+ class MaterialBase extends NamedAssetBase implements IAsset {
+ private _sizeChanged;
+ private _materialPassData;
+ private _materialData;
+ public _pAlphaThreshold: number;
+ public _pAnimateUVs: boolean;
+ private _enableLightFallOff;
+ private _specularLightSources;
+ private _diffuseLightSources;
+ /**
+ * An object to contain any extra data.
+ */
+ public extra: Object;
+ /**
+ * A value that can be used by materials that only work with a given type of renderer. The renderer can test the
+ * classification to choose which render path to use. For example, a deferred material could set this value so
+ * that the deferred renderer knows not to take the forward rendering path.
+ *
+ * @private
+ */
+ public _iClassification: string;
+ /**
+ * An id for this material used to sort the renderables by shader program, which reduces Program state changes.
+ *
+ * @private
+ */
+ public _iMaterialId: number;
+ public _iBaseScreenPassIndex: number;
+ private _bothSides;
+ private _animationSet;
+ public _pScreenPassesInvalid: boolean;
+ /**
+ * A list of material owners, renderables or custom Entities.
+ */
+ private _owners;
+ private _alphaPremultiplied;
+ public _pBlendMode: string;
+ private _numPasses;
+ private _passes;
+ private _mipmap;
+ private _smooth;
+ private _repeat;
+ private _color;
+ public _pTexture: Texture2DBase;
+ public _pLightPicker: LightPickerBase;
+ public _pHeight: number;
+ public _pWidth: number;
+ public _pRequiresBlending: boolean;
+ private _onPassChangeDelegate;
+ private _onLightChangeDelegate;
+ /**
+ * Creates a new MaterialBase object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ public assetType : string;
+ /**
+ *
+ */
+ public height : number;
+ /**
+ *
+ */
+ public animationSet : IAnimationSet;
+ /**
+ * The light picker used by the material to provide lights to the material if it supports lighting.
+ *
+ * @see LightPickerBase
+ * @see StaticLightPicker
+ */
+ public lightPicker : LightPickerBase;
+ /**
+ * Indicates whether or not any used textures should use mipmapping. Defaults to true.
+ */
+ public mipmap : boolean;
+ /**
+ * Indicates whether or not any used textures should use smoothing.
+ */
+ public smooth : boolean;
+ /**
+ * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to
+ * the texture's borders when the uv coordinates are outside the [0, 1] interval.
+ */
+ public repeat : boolean;
+ /**
+ * The diffuse reflectivity color of the surface.
+ */
+ public color : number;
+ /**
+ * The texture object to use for the albedo colour.
+ */
+ public texture : Texture2DBase;
+ /**
+ * Specifies whether or not the UV coordinates should be animated using a transformation matrix.
+ */
+ public animateUVs : boolean;
+ /**
+ * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and
+ * compatibility for constrained mode.
+ */
+ public enableLightFallOff : boolean;
+ /**
+ * Define which light source types to use for diffuse reflections. This allows choosing between regular lights
+ * and/or light probes for diffuse reflections.
+ *
+ * @see away3d.materials.LightSources
+ */
+ public diffuseLightSources : number;
+ /**
+ * Define which light source types to use for specular reflections. This allows choosing between regular lights
+ * and/or light probes for specular reflections.
+ *
+ * @see away3d.materials.LightSources
+ */
+ public specularLightSources : number;
+ /**
+ * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they
+ * could be used by other materials and will not be disposed.
+ */
+ public dispose(): void;
+ /**
+ * Defines whether or not the material should cull triangles facing away from the camera.
+ */
+ public bothSides : boolean;
+ /**
+ * The blend mode to use when drawing this renderable. The following blend modes are supported:
+ * ParserBase
provides an abstract base class for objects that convert blocks of data to data structures
+ * supported by away.
+ *
+ * If used by AssetLoader
to automatically determine the parser type, two public static methods should
+ * be implemented, with the following signatures:
+ *
+ * public static supportsType(extension : string) : boolean
+ * Indicates whether or not a given file extension is supported by the parser.
+ *
+ * public static supportsData(data : *) : boolean
+ * Tests whether a data block can be parsed by the parser.
+ *
+ * Furthermore, for any concrete subtype, the method initHandle
should be overridden to immediately
+ * create the object that will contain the parsed data. This allows ResourceManager
to return an object
+ * handle regardless of whether the object was loaded or not.
+ *
+ * @see AssetLoader
+ */
+ class ParserBase extends EventDispatcher {
+ public _iFileName: string;
+ private _dataFormat;
+ private _data;
+ private _frameLimit;
+ private _lastFrameTime;
+ private _pOnIntervalDelegate;
+ public _pContent: DisplayObject;
+ static supportsType(extension: string): boolean;
+ private _dependencies;
+ private _parsingPaused;
+ private _parsingComplete;
+ private _parsingFailure;
+ private _timer;
+ private _materialMode;
+ /**
+ * Returned by proceedParsing
to indicate no more parsing is needed.
+ */
+ static PARSING_DONE: boolean;
+ /**
+ * Returned by proceedParsing
to indicate more parsing is needed, allowing asynchronous parsing.
+ */
+ static MORE_TO_PARSE: boolean;
+ public content : DisplayObject;
+ /**
+ * Creates a new ParserBase object
+ * @param format The data format of the file data to be parsed. Can be either ParserDataFormat.BINARY
or ParserDataFormat.PLAIN_TEXT
, and should be provided by the concrete subtype.
+ *
+ * @see away.loading.parsers.ParserDataFormat
+ */
+ constructor(format: string);
+ /**
+ * Validates a bitmapData loaded before assigning to a default BitmapMaterial
+ */
+ public isBitmapDataValid(bitmapData: BitmapData): boolean;
+ public parsingFailure : boolean;
+ public parsingPaused : boolean;
+ public parsingComplete : boolean;
+ public materialMode : number;
+ public data : any;
+ /**
+ * The data format of the file data to be parsed. Options are URLLoaderDataFormat.BINARY
, URLLoaderDataFormat.ARRAY_BUFFER
, URLLoaderDataFormat.BLOB
, URLLoaderDataFormat.VARIABLES
or URLLoaderDataFormat.TEXT
.
+ */
+ public dataFormat : string;
+ /**
+ * Parse data (possibly containing bytearry, plain text or BitmapAsset) asynchronously, meaning that
+ * the parser will periodically stop parsing so that the AVM may proceed to the
+ * next frame.
+ *
+ * @param data The untyped data object in which the loaded data resides.
+ * @param frameLimit number of milliseconds of parsing allowed per frame. The
+ * actual time spent on a frame can exceed this number since time-checks can
+ * only be performed between logical sections of the parsing procedure.
+ */
+ public parseAsync(data: any, frameLimit?: number): void;
+ /**
+ * A list of dependencies that need to be loaded and resolved for the object being parsed.
+ */
+ public dependencies : ResourceDependency[];
+ /**
+ * Resolve a dependency when it's loaded. For example, a dependency containing an ImageResource would be assigned
+ * to a Mesh instance as a BitmapMaterial, a scene graph object would be added to its intended parent. The
+ * dependency should be a member of the dependencies property.
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ public _iResolveDependency(resourceDependency: ResourceDependency): void;
+ /**
+ * Resolve a dependency loading failure. Used by parser to eventually provide a default map
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ public _iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
+ /**
+ * Resolve a dependency name
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ public _iResolveDependencyName(resourceDependency: ResourceDependency, asset: IAsset): string;
+ public _iResumeParsingAfterDependencies(): void;
+ public _pFinalizeAsset(asset: IAsset, name?: string): void;
+ /**
+ * Parse the next block of data.
+ * @return Whether or not more data needs to be parsed. Can be ParserBase.ParserBase.PARSING_DONE
or
+ * ParserBase.ParserBase.MORE_TO_PARSE
.
+ */
+ public _pProceedParsing(): boolean;
+ public _pDieWithError(message?: string): void;
+ public _pAddDependency(id: string, req: URLRequest, retrieveAsRawData?: boolean, data?: any, suppressErrorEvents?: boolean): ResourceDependency;
+ public _pPauseAndRetrieveDependencies(): void;
+ /**
+ * Tests whether or not there is still time left for parsing within the maximum allowed time frame per session.
+ * @return True if there is still time left, false if the maximum allotted time was exceeded and parsing should be interrupted.
+ */
+ public _pHasTime(): boolean;
+ /**
+ * Called when the parsing pause interval has passed and parsing can proceed.
+ */
+ public _pOnInterval(event?: TimerEvent): void;
+ /**
+ * Initializes the parsing of data.
+ * @param frameLimit The maximum duration of a parsing session.
+ */
+ public _pStartParsing(frameLimit: number): void;
+ /**
+ * Finish parsing the data.
+ */
+ public _pFinishParsing(): void;
+ /**
+ *
+ * @returns {string}
+ * @private
+ */
+ public _pGetTextData(): string;
+ /**
+ *
+ * @returns {string}
+ * @private
+ */
+ public _pGetByteData(): ByteArray;
+ }
+ export = ParserBase;
+
+}
+declare module "awayjs-core/lib/parsers/ParserDataFormat" {
+ /**
+ * An enumeration providing values to describe the data format of parsed data.
+ */
+ class ParserDataFormat {
+ /**
+ * Describes the format of a binary file.
+ */
+ static BINARY: string;
+ /**
+ * Describes the format of a plain text file.
+ */
+ static PLAIN_TEXT: string;
+ /**
+ * Describes the format of an image file
+ */
+ static IMAGE: string;
+ }
+ export = ParserDataFormat;
+
+}
+declare module "awayjs-core/lib/parsers/ParserUtils" {
+ import ByteArray = require("awayjs-core/lib/utils/ByteArray");
+ class ParserUtils {
+ /**
+ * Converts an ArrayBuffer to a base64 string
+ *
+ * @param image data as a ByteArray
+ *
+ * @return HTMLImageElement
+ *
+ */
+ static arrayBufferToImage(data: ArrayBuffer): HTMLImageElement;
+ /**
+ * Converts an ByteArray to an Image - returns an HTMLImageElement
+ *
+ * @param image data as a ByteArray
+ *
+ * @return HTMLImageElement
+ *
+ */
+ static byteArrayToImage(data: ByteArray): HTMLImageElement;
+ /**
+ * Converts an Blob to an Image - returns an HTMLImageElement
+ *
+ * @param image data as a Blob
+ *
+ * @return HTMLImageElement
+ *
+ */
+ static blobToImage(data: Blob): HTMLImageElement;
+ /**
+ * Returns a object as ByteArray, if possible.
+ *
+ * @param data The object to return as ByteArray
+ *
+ * @return The ByteArray or null
+ *
+ */
+ static toByteArray(data: any): ByteArray;
+ /**
+ * Returns a object as String, if possible.
+ *
+ * @param data The object to return as String
+ * @param length The length of the returned String
+ *
+ * @return The String or null
+ *
+ */
+ static toString(data: any, length?: number): string;
+ }
+ export = ParserUtils;
+
+}
+declare module "awayjs-core/lib/parsers/ResourceDependency" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import URLLoader = require("awayjs-core/lib/core/net/URLLoader");
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * ResourceDependency represents the data required to load, parse and resolve additional files ("dependencies")
+ * required by a parser, used by ResourceLoadSession.
+ *
+ */
+ class ResourceDependency {
+ private _id;
+ private _request;
+ private _assets;
+ private _parser;
+ private _parentParser;
+ private _data;
+ private _retrieveAsRawData;
+ private _suppressAssetEvents;
+ private _dependencies;
+ public _iLoader: URLLoader;
+ public _iSuccess: boolean;
+ constructor(id: string, request: URLRequest, data: any, parser: ParserBase, parentParser: ParserBase, retrieveAsRawData?: boolean, suppressAssetEvents?: boolean);
+ /**
+ *
+ */
+ public id : string;
+ /**
+ *
+ */
+ public request : URLRequest;
+ /**
+ * The data containing the dependency to be parsed, if the resource was already loaded.
+ */
+ public data : any;
+ /**
+ *
+ */
+ public parser : ParserBase;
+ /**
+ * The parser which is dependent on this ResourceDependency object.
+ */
+ public parentParser : ParserBase;
+ /**
+ *
+ */
+ public retrieveAsRawData : boolean;
+ /**
+ *
+ */
+ public suppresAssetEvents : boolean;
+ /**
+ *
+ */
+ public assets : IAsset[];
+ /**
+ *
+ */
+ public dependencies : ResourceDependency[];
+ /**
+ * @private
+ * Method to set data after having already created the dependency object, e.g. after load.
+ */
+ public _iSetData(data: any): void;
+ /**
+ * @private
+ *
+ */
+ public _iSetParser(parser: ParserBase): void;
+ /**
+ * Resolve the dependency when it's loaded with the parent parser. For example, a dependency containing an
+ * ImageResource would be assigned to a Mesh instance as a BitmapMaterial, a scene graph object would be added
+ * to its intended parent. The dependency should be a member of the dependencies property.
+ */
+ public resolve(): void;
+ /**
+ * Resolve a dependency failure. For example, map loading failure from a 3d file
+ */
+ public resolveFailure(): void;
+ /**
+ * Resolve the dependencies name
+ */
+ public resolveName(asset: IAsset): string;
+ }
+ export = ResourceDependency;
+
+}
+declare module "awayjs-core/lib/parsers/Texture2DParser" {
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * Texture2DParser provides a "parser" for natively supported image types (jpg, png). While it simply loads bytes into
+ * a loader object, it wraps it in a BitmapDataResource so resource management can happen consistently without
+ * exception cases.
+ */
+ class Texture2DParser extends ParserBase {
+ private _startedParsing;
+ private _doneParsing;
+ private _loadingImage;
+ private _htmlImageElement;
+ /**
+ * Creates a new Texture2DParser object.
+ * @param uri The url or id of the data or file to be parsed.
+ * @param extra The holder for extra contextual data that the parser might need.
+ */
+ constructor();
+ /**
+ * Indicates whether or not a given file extension is supported by the parser.
+ * @param extension The file extension of a potential file to be parsed.
+ * @return Whether or not the given file type is supported.
+ */
+ static supportsType(extension: string): boolean;
+ /**
+ * Tests whether a data block can be parsed by the parser.
+ * @param data The data block to potentially be parsed.
+ * @return Whether or not the given data is supported.
+ */
+ static supportsData(data: any): boolean;
+ /**
+ * @inheritDoc
+ */
+ public _pProceedParsing(): boolean;
+ public onLoadComplete(event: any): void;
+ }
+ export = Texture2DParser;
+
+}
+declare module "awayjs-core/lib/prefabs/PrefabBase" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ /**
+ * PrefabBase is an abstract base class for prefabs, which are prebuilt display objects that allow easy cloning and updating
+ */
+ class PrefabBase extends NamedAssetBase {
+ public _pObjects: DisplayObject[];
+ /**
+ * Creates a new PrefabBase object.
+ */
+ constructor();
+ /**
+ * Returns a display object generated from this prefab
+ */
+ public getNewObject(): DisplayObject;
+ public _pCreateObject(): DisplayObject;
+ public _iValidate(): void;
+ }
+ export = PrefabBase;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveCapsulePrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A Capsule primitive mesh.
+ */
+ class PrimitiveCapsulePrefab extends PrimitivePrefabBase implements IAsset {
+ private _radius;
+ private _height;
+ private _segmentsW;
+ private _segmentsH;
+ private _yUp;
+ private _numVertices;
+ /**
+ * The radius of the capsule.
+ */
+ public radius : number;
+ /**
+ * The height of the capsule.
+ */
+ public height : number;
+ /**
+ * Defines the number of horizontal segments that make up the capsule. Defaults to 16.
+ */
+ public segmentsW : number;
+ /**
+ * Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven.
+ */
+ public segmentsH : number;
+ /**
+ * Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ public yUp : boolean;
+ /**
+ * Creates a new Capsule object.
+ * @param radius The radius of the capsule.
+ * @param height The height of the capsule.
+ * @param segmentsW Defines the number of horizontal segments that make up the capsule. Defaults to 16.
+ * @param segmentsH Defines the number of vertical segments that make up the capsule. Defaults to 15. Must be uneven value.
+ * @param yUp Defines whether the capsule poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(radius?: number, height?: number, segmentsW?: number, segmentsH?: number, yUp?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitiveCapsulePrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveConePrefab" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitiveCylinderPrefab = require("awayjs-core/lib/prefabs/PrimitiveCylinderPrefab");
+ /**
+ * A UV Cone primitive mesh.
+ */
+ class PrimitiveConePrefab extends PrimitiveCylinderPrefab implements IAsset {
+ /**
+ * The radius of the bottom end of the cone.
+ */
+ public radius : number;
+ /**
+ * Creates a new Cone object.
+ * @param radius The radius of the bottom end of the cone
+ * @param height The height of the cone
+ * @param segmentsW Defines the number of horizontal segments that make up the cone. Defaults to 16.
+ * @param segmentsH Defines the number of vertical segments that make up the cone. Defaults to 1.
+ * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(radius?: number, height?: number, segmentsW?: number, segmentsH?: number, closed?: boolean, yUp?: boolean);
+ }
+ export = PrimitiveConePrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveCubePrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A Cube primitive prefab.
+ */
+ class PrimitiveCubePrefab extends PrimitivePrefabBase implements IAsset {
+ private _width;
+ private _height;
+ private _depth;
+ private _tile6;
+ private _segmentsW;
+ private _segmentsH;
+ private _segmentsD;
+ /**
+ * Creates a new Cube object.
+ * @param width The size of the cube along its X-axis.
+ * @param height The size of the cube along its Y-axis.
+ * @param depth The size of the cube along its Z-axis.
+ * @param segmentsW The number of segments that make up the cube along the X-axis.
+ * @param segmentsH The number of segments that make up the cube along the Y-axis.
+ * @param segmentsD The number of segments that make up the cube along the Z-axis.
+ * @param tile6 The type of uv mapping to use. When true, a texture will be subdivided in a 2x3 grid, each used for a single face. When false, the entire image is mapped on each face.
+ */
+ constructor(width?: number, height?: number, depth?: number, segmentsW?: number, segmentsH?: number, segmentsD?: number, tile6?: boolean);
+ /**
+ * The size of the cube along its X-axis.
+ */
+ public width : number;
+ /**
+ * The size of the cube along its Y-axis.
+ */
+ public height : number;
+ /**
+ * The size of the cube along its Z-axis.
+ */
+ public depth : number;
+ /**
+ * The type of uv mapping to use. When false, the entire image is mapped on each face.
+ * When true, a texture will be subdivided in a 3x2 grid, each used for a single face.
+ * Reading the tiles from left to right, top to bottom they represent the faces of the
+ * cube in the following order: bottom, top, back, left, front, right. This creates
+ * several shared edges (between the top, front, left and right faces) which simplifies
+ * texture painting.
+ */
+ public tile6 : boolean;
+ /**
+ * The number of segments that make up the cube along the X-axis. Defaults to 1.
+ */
+ public segmentsW : number;
+ /**
+ * The number of segments that make up the cube along the Y-axis. Defaults to 1.
+ */
+ public segmentsH : number;
+ /**
+ * The number of segments that make up the cube along the Z-axis. Defaults to 1.
+ */
+ public segmentsD : number;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitiveCubePrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveCylinderPrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A Cylinder primitive mesh.
+ */
+ class PrimitiveCylinderPrefab extends PrimitivePrefabBase implements IAsset {
+ public _pBottomRadius: number;
+ public _pSegmentsW: number;
+ public _pSegmentsH: number;
+ private _topRadius;
+ private _height;
+ private _topClosed;
+ private _bottomClosed;
+ private _surfaceClosed;
+ private _yUp;
+ private _numVertices;
+ /**
+ * The radius of the top end of the cylinder.
+ */
+ public topRadius : number;
+ /**
+ * The radius of the bottom end of the cylinder.
+ */
+ public bottomRadius : number;
+ /**
+ * The radius of the top end of the cylinder.
+ */
+ public height : number;
+ /**
+ * Defines the number of horizontal segments that make up the cylinder. Defaults to 16.
+ */
+ public segmentsW : number;
+ public setSegmentsW(value: number): void;
+ /**
+ * Defines the number of vertical segments that make up the cylinder. Defaults to 1.
+ */
+ public segmentsH : number;
+ public setSegmentsH(value: number): void;
+ /**
+ * Defines whether the top end of the cylinder is closed (true) or open.
+ */
+ public topClosed : boolean;
+ /**
+ * Defines whether the bottom end of the cylinder is closed (true) or open.
+ */
+ public bottomClosed : boolean;
+ /**
+ * Defines whether the cylinder poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ public yUp : boolean;
+ /**
+ * Creates a new Cylinder object.
+ * @param topRadius The radius of the top end of the cylinder.
+ * @param bottomRadius The radius of the bottom end of the cylinder
+ * @param height The radius of the bottom end of the cylinder
+ * @param segmentsW Defines the number of horizontal segments that make up the cylinder. Defaults to 16.
+ * @param segmentsH Defines the number of vertical segments that make up the cylinder. Defaults to 1.
+ * @param topClosed Defines whether the top end of the cylinder is closed (true) or open.
+ * @param bottomClosed Defines whether the bottom end of the cylinder is closed (true) or open.
+ * @param yUp Defines whether the cone poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(topRadius?: number, bottomRadius?: number, height?: number, segmentsW?: number, segmentsH?: number, topClosed?: boolean, bottomClosed?: boolean, surfaceClosed?: boolean, yUp?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitiveCylinderPrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitivePlanePrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A Plane primitive mesh.
+ */
+ class PrimitivePlanePrefab extends PrimitivePrefabBase implements IAsset {
+ private _segmentsW;
+ private _segmentsH;
+ private _yUp;
+ private _width;
+ private _height;
+ private _doubleSided;
+ /**
+ * Creates a new Plane object.
+ * @param width The width of the plane.
+ * @param height The height of the plane.
+ * @param segmentsW The number of segments that make up the plane along the X-axis.
+ * @param segmentsH The number of segments that make up the plane along the Y or Z-axis.
+ * @param yUp Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false).
+ * @param doubleSided Defines whether the plane will be visible from both sides, with correct vertex normals.
+ */
+ constructor(width?: number, height?: number, segmentsW?: number, segmentsH?: number, yUp?: boolean, doubleSided?: boolean);
+ /**
+ * The number of segments that make up the plane along the X-axis. Defaults to 1.
+ */
+ public segmentsW : number;
+ /**
+ * The number of segments that make up the plane along the Y or Z-axis, depending on whether yUp is true or
+ * false, respectively. Defaults to 1.
+ */
+ public segmentsH : number;
+ /**
+ * Defines whether the normal vector of the plane should point along the Y-axis (true) or Z-axis (false). Defaults to true.
+ */
+ public yUp : boolean;
+ /**
+ * Defines whether the plane will be visible from both sides, with correct vertex normals (as opposed to bothSides on Material). Defaults to false.
+ */
+ public doubleSided : boolean;
+ /**
+ * The width of the plane.
+ */
+ public width : number;
+ /**
+ * The height of the plane.
+ */
+ public height : number;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitivePlanePrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitivePolygonPrefab" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitiveCylinderPrefab = require("awayjs-core/lib/prefabs/PrimitiveCylinderPrefab");
+ /**
+ * A UV RegularPolygon primitive mesh.
+ */
+ class PrimitivePolygonPrefab extends PrimitiveCylinderPrefab implements IAsset {
+ /**
+ * The radius of the regular polygon.
+ */
+ public radius : number;
+ /**
+ * The number of sides of the regular polygon.
+ */
+ public sides : number;
+ /**
+ * The number of subdivisions from the edge to the center of the regular polygon.
+ */
+ public subdivisions : number;
+ /**
+ * Creates a new RegularPolygon disc object.
+ * @param radius The radius of the regular polygon
+ * @param sides Defines the number of sides of the regular polygon.
+ * @param yUp Defines whether the regular polygon should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(radius?: number, sides?: number, yUp?: boolean);
+ }
+ export = PrimitivePolygonPrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitivePrefabBase" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ import PrefabBase = require("awayjs-core/lib/prefabs/PrefabBase");
+ /**
+ * PrimitivePrefabBase is an abstract base class for polytope prefabs, which are simple pre-built geometric shapes
+ */
+ class PrimitivePrefabBase extends PrefabBase {
+ public _geomDirty: boolean;
+ public _uvDirty: boolean;
+ private _material;
+ private _geometry;
+ private _subGeometry;
+ private _geometryType;
+ private _geometryTypeDirty;
+ /**
+ *
+ */
+ public assetType : string;
+ /**
+ *
+ */
+ public geometryType : string;
+ public geometry : Geometry;
+ /**
+ * The material with which to render the primitive.
+ */
+ public material : MaterialBase;
+ /**
+ * Creates a new PrimitivePrefabBase object.
+ *
+ * @param material The material with which to render the object
+ */
+ constructor(material?: MaterialBase, geometryType?: string);
+ /**
+ * Builds the primitive's geometry when invalid. This method should not be called directly. The calling should
+ * be triggered by the invalidateGeometry method (and in turn by updateGeometry).
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * Builds the primitive's uv coordinates when invalid. This method should not be called directly. The calling
+ * should be triggered by the invalidateUVs method (and in turn by updateUVs).
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * Invalidates the primitive's geometry type, causing it to be updated when requested.
+ */
+ public invalidateGeometryType(): void;
+ /**
+ * Invalidates the primitive's geometry, causing it to be updated when requested.
+ */
+ public _pInvalidateGeometry(): void;
+ /**
+ * Invalidates the primitive's uv coordinates, causing them to be updated when requested.
+ */
+ public _pInvalidateUVs(): void;
+ /**
+ * Updates the subgeometry when invalid.
+ */
+ private updateGeometryType();
+ /**
+ * Updates the geometry when invalid.
+ */
+ private updateGeometry();
+ /**
+ * Updates the uv coordinates when invalid.
+ */
+ private updateUVs();
+ public _iValidate(): void;
+ public _pCreateObject(): DisplayObject;
+ }
+ export = PrimitivePrefabBase;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveSpherePrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A UV Sphere primitive mesh.
+ */
+ class PrimitiveSpherePrefab extends PrimitivePrefabBase implements IAsset {
+ private _radius;
+ private _segmentsW;
+ private _segmentsH;
+ private _yUp;
+ /**
+ * The radius of the sphere.
+ */
+ public radius : number;
+ /**
+ * Defines the number of horizontal segments that make up the sphere. Defaults to 16.
+ */
+ public segmentsW : number;
+ /**
+ * Defines the number of vertical segments that make up the sphere. Defaults to 12.
+ */
+ public segmentsH : number;
+ /**
+ * Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ public yUp : boolean;
+ /**
+ * Creates a new Sphere object.
+ *
+ * @param radius The radius of the sphere.
+ * @param segmentsW Defines the number of horizontal segments that make up the sphere.
+ * @param segmentsH Defines the number of vertical segments that make up the sphere.
+ * @param yUp Defines whether the sphere poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(radius?: number, segmentsW?: number, segmentsH?: number, yUp?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitiveSpherePrefab;
+
+}
+declare module "awayjs-core/lib/prefabs/PrimitiveTorusPrefab" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import PrimitivePrefabBase = require("awayjs-core/lib/prefabs/PrimitivePrefabBase");
+ /**
+ * A UV Cylinder primitive mesh.
+ */
+ class PrimitiveTorusPrefab extends PrimitivePrefabBase implements IAsset {
+ private _radius;
+ private _tubeRadius;
+ private _segmentsR;
+ private _segmentsT;
+ private _yUp;
+ private _numVertices;
+ /**
+ * The radius of the torus.
+ */
+ public radius : number;
+ /**
+ * The radius of the inner tube of the torus.
+ */
+ public tubeRadius : number;
+ /**
+ * Defines the number of horizontal segments that make up the torus. Defaults to 16.
+ */
+ public segmentsR : number;
+ /**
+ * Defines the number of vertical segments that make up the torus. Defaults to 8.
+ */
+ public segmentsT : number;
+ /**
+ * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ public yUp : boolean;
+ /**
+ * Creates a new Torus
object.
+ * @param radius The radius of the torus.
+ * @param tuebRadius The radius of the inner tube of the torus.
+ * @param segmentsR Defines the number of horizontal segments that make up the torus.
+ * @param segmentsT Defines the number of vertical segments that make up the torus.
+ * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ constructor(radius?: number, tubeRadius?: number, segmentsR?: number, segmentsT?: number, yUp?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public _pBuildGeometry(target: SubGeometryBase, geometryType: string): void;
+ /**
+ * @inheritDoc
+ */
+ public _pBuildUVs(target: SubGeometryBase, geometryType: string): void;
+ }
+ export = PrimitiveTorusPrefab;
+
+}
+declare module "awayjs-core/lib/projections/CoordinateSystem" {
+ /**
+ * Provides constant values for camera lens projection options use the the coordinateSystem
property
+ *
+ * @see away.projections.PerspectiveLens#coordinateSystem
+ */
+ class CoordinateSystem {
+ /**
+ * Default option, projects to a left-handed coordinate system
+ */
+ static LEFT_HANDED: string;
+ /**
+ * Projects to a right-handed coordinate system
+ */
+ static RIGHT_HANDED: string;
+ }
+ export = CoordinateSystem;
+
+}
+declare module "awayjs-core/lib/projections/FreeMatrixProjection" {
+ import ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+ class FreeMatrixProjection extends ProjectionBase {
+ constructor();
+ public near : number;
+ public far : number;
+ public iAspectRatio : number;
+ public clone(): ProjectionBase;
+ public pUpdateMatrix(): void;
+ }
+ export = FreeMatrixProjection;
+
+}
+declare module "awayjs-core/lib/projections/IProjection" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher");
+ /**
+ * IMaterialOwner provides an interface for objects that can use materials.
+ *
+ * @interface away.base.IMaterialOwner
+ */
+ interface IProjection extends IEventDispatcher {
+ coordinateSystem: string;
+ frustumCorners: number[];
+ matrix: Matrix3D;
+ near: number;
+ originX: number;
+ originY: number;
+ far: number;
+ _iAspectRatio: number;
+ project(point3d: Vector3D): Vector3D;
+ unproject(nX: number, nY: number, sZ: number): Vector3D;
+ _iUpdateScissorRect(x: number, y: number, width: number, height: number): any;
+ _iUpdateViewport(x: number, y: number, width: number, height: number): any;
+ }
+ export = IProjection;
+
+}
+declare module "awayjs-core/lib/projections/ObliqueNearPlaneProjection" {
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import IProjection = require("awayjs-core/lib/projections/IProjection");
+ import ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+ class ObliqueNearPlaneProjection extends ProjectionBase {
+ private _baseProjection;
+ private _plane;
+ private _onProjectionMatrixChangedDelegate;
+ constructor(baseProjection: IProjection, plane: Plane3D);
+ public frustumCorners : number[];
+ public near : number;
+ public far : number;
+ public iAspectRatio : number;
+ public plane : Plane3D;
+ public baseProjection : IProjection;
+ private onProjectionMatrixChanged(event);
+ public pUpdateMatrix(): void;
+ }
+ export = ObliqueNearPlaneProjection;
+
+}
+declare module "awayjs-core/lib/projections/OrthographicOffCenterProjection" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+ class OrthographicOffCenterProjection extends ProjectionBase {
+ private _minX;
+ private _maxX;
+ private _minY;
+ private _maxY;
+ constructor(minX: number, maxX: number, minY: number, maxY: number);
+ public minX : number;
+ public maxX : number;
+ public minY : number;
+ public maxY : number;
+ public unproject(nX: number, nY: number, sZ: number): Vector3D;
+ public clone(): ProjectionBase;
+ public pUpdateMatrix(): void;
+ }
+ export = OrthographicOffCenterProjection;
+
+}
+declare module "awayjs-core/lib/projections/OrthographicProjection" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+ class OrthographicProjection extends ProjectionBase {
+ private _projectionHeight;
+ private _xMax;
+ private _yMax;
+ constructor(projectionHeight?: number);
+ public projectionHeight : number;
+ public unproject(nX: number, nY: number, sZ: number): Vector3D;
+ public clone(): ProjectionBase;
+ public pUpdateMatrix(): void;
+ }
+ export = OrthographicProjection;
+
+}
+declare module "awayjs-core/lib/projections/PerspectiveProjection" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+ class PerspectiveProjection extends ProjectionBase {
+ private _fieldOfView;
+ private _focalLength;
+ private _hFieldOfView;
+ private _hFocalLength;
+ private _preserveAspectRatio;
+ private _preserveFocalLength;
+ constructor(fieldOfView?: number, coordinateSystem?: string);
+ /**
+ *
+ */
+ public preserveAspectRatio : boolean;
+ /**
+ *
+ */
+ public preserveFocalLength : boolean;
+ /**
+ *
+ */
+ public fieldOfView : number;
+ /**
+ *
+ */
+ public focalLength : number;
+ /**
+ *
+ */
+ public hFieldOfView : number;
+ /**
+ *
+ */
+ public hFocalLength : number;
+ public unproject(nX: number, nY: number, sZ: number): Vector3D;
+ public clone(): ProjectionBase;
+ public pUpdateMatrix(): void;
+ }
+ export = PerspectiveProjection;
+
+}
+declare module "awayjs-core/lib/projections/ProjectionBase" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ import IProjection = require("awayjs-core/lib/projections/IProjection");
+ class ProjectionBase extends EventDispatcher implements IProjection {
+ public _pMatrix: Matrix3D;
+ public _pScissorRect: Rectangle;
+ public _pViewPort: Rectangle;
+ public _pNear: number;
+ public _pFar: number;
+ public _pAspectRatio: number;
+ public _pMatrixInvalid: boolean;
+ public _pFrustumCorners: number[];
+ public _pCoordinateSystem: string;
+ public _pOriginX: number;
+ public _pOriginY: number;
+ private _unprojection;
+ private _unprojectionInvalid;
+ constructor(coordinateSystem?: string);
+ /**
+ * The handedness of the coordinate system projection. The default is LEFT_HANDED.
+ */
+ public coordinateSystem : string;
+ public frustumCorners : number[];
+ public matrix : Matrix3D;
+ public near : number;
+ public originX : number;
+ public originY : number;
+ public far : number;
+ public project(point3d: Vector3D): Vector3D;
+ public unprojectionMatrix : Matrix3D;
+ public unproject(nX: number, nY: number, sZ: number): Vector3D;
+ public clone(): ProjectionBase;
+ public _iAspectRatio : number;
+ public pInvalidateMatrix(): void;
+ public pUpdateMatrix(): void;
+ public _iUpdateScissorRect(x: number, y: number, width: number, height: number): void;
+ public _iUpdateViewport(x: number, y: number, width: number, height: number): void;
+ }
+ export = ProjectionBase;
+
+}
+declare module "awayjs-core/lib/textures/BitmapCubeTexture" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ class BitmapCubeTexture extends CubeTextureBase {
+ private _bitmapDatas;
+ /**
+ * The texture on the cube's right face.
+ */
+ public positiveX : BitmapData;
+ /**
+ * The texture on the cube's left face.
+ */
+ public negativeX : BitmapData;
+ /**
+ * The texture on the cube's top face.
+ */
+ public positiveY : BitmapData;
+ /**
+ * The texture on the cube's bottom face.
+ */
+ public negativeY : BitmapData;
+ /**
+ * The texture on the cube's far face.
+ */
+ public positiveZ : BitmapData;
+ /**
+ * The texture on the cube's near face.
+ */
+ public negativeZ : BitmapData;
+ constructor(posX: BitmapData, negX: BitmapData, posY: BitmapData, negY: BitmapData, posZ: BitmapData, negZ: BitmapData, generateMipmaps?: boolean);
+ /**
+ *
+ * @param value
+ * @private
+ */
+ private _testSize(value);
+ public dispose(): void;
+ public _iGetTextureData(side: number): BitmapData;
+ }
+ export = BitmapCubeTexture;
+
+}
+declare module "awayjs-core/lib/textures/BitmapTexture" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ class BitmapTexture extends Texture2DBase {
+ public _bitmapData: BitmapData;
+ /**
+ *
+ * @returns {BitmapData}
+ */
+ public bitmapData : BitmapData;
+ constructor(bitmapData: BitmapData, generateMipmaps?: boolean);
+ public dispose(): void;
+ public _iGetTextureData(): BitmapData;
+ }
+ export = BitmapTexture;
+
+}
+declare module "awayjs-core/lib/textures/CubeTextureBase" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ class CubeTextureBase extends TextureProxyBase {
+ public _mipmapDataArray: BitmapData[][];
+ public _mipmapDataDirtyArray: boolean[];
+ constructor(generateMipmaps?: boolean);
+ /**
+ *
+ * @param width
+ * @param height
+ * @private
+ */
+ public _pSetSize(size: number): void;
+ /**
+ * @inheritDoc
+ */
+ public dispose(): void;
+ /**
+ *
+ */
+ public invalidateContent(): void;
+ public _iGetMipmapData(side: number): BitmapData[];
+ public _iGetTextureData(side: number): any;
+ }
+ export = CubeTextureBase;
+
+}
+declare module "awayjs-core/lib/textures/ImageCubeTexture" {
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ class ImageCubeTexture extends CubeTextureBase {
+ private _htmlImageElements;
+ /**
+ * The texture on the cube's right face.
+ */
+ public positiveX : HTMLImageElement;
+ /**
+ * The texture on the cube's left face.
+ */
+ public negativeX : HTMLImageElement;
+ /**
+ * The texture on the cube's top face.
+ */
+ public positiveY : HTMLImageElement;
+ /**
+ * The texture on the cube's bottom face.
+ */
+ public negativeY : HTMLImageElement;
+ /**
+ * The texture on the cube's far face.
+ */
+ public positiveZ : HTMLImageElement;
+ /**
+ * The texture on the cube's near face.
+ */
+ public negativeZ : HTMLImageElement;
+ constructor(posX: HTMLImageElement, negX: HTMLImageElement, posY: HTMLImageElement, negY: HTMLImageElement, posZ: HTMLImageElement, negZ: HTMLImageElement, generateMipmaps?: boolean);
+ private _testSize(value);
+ public _iGetTextureData(side: number): HTMLImageElement;
+ }
+ export = ImageCubeTexture;
+
+}
+declare module "awayjs-core/lib/textures/ImageTexture" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ class ImageTexture extends Texture2DBase {
+ private _htmlImageElement;
+ /**
+ *
+ * @param htmlImageElement
+ * @param generateMipmaps
+ */
+ constructor(htmlImageElement: HTMLImageElement, generateMipmaps?: boolean);
+ /**
+ *
+ */
+ public htmlImageElement : HTMLImageElement;
+ public _iGetTextureData(): HTMLImageElement;
+ }
+ export = ImageTexture;
+
+}
+declare module "awayjs-core/lib/textures/MipmapGenerator" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ /**
+ * MipmapGenerator is a helper class that uploads BitmapData to a Texture including mipmap levels.
+ */
+ class MipmapGenerator {
+ private static _mipMaps;
+ private static _mipMapUses;
+ private static _matrix;
+ private static _rect;
+ private static _source;
+ /**
+ * Uploads a BitmapData with mip maps to a target Texture object.
+ * @param source The source to upload.
+ * @param target The target Texture to upload to.
+ * @param mipmap An optional mip map holder to avoids creating new instances for fe animated materials.
+ * @param alpha Indicate whether or not the uploaded bitmapData is transparent.
+ */
+ static generateMipMaps(source: HTMLImageElement, output?: BitmapData[], alpha?: boolean): any;
+ static generateMipMaps(source: BitmapData, output?: BitmapData[], alpha?: boolean): any;
+ private static _getMipmapHolder(mipMapHolder, newW, newH);
+ static freeMipMapHolder(mipMapHolder: BitmapData): void;
+ }
+ export = MipmapGenerator;
+
+}
+declare module "awayjs-core/lib/textures/RenderTexture" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ class RenderTexture extends Texture2DBase {
+ /**
+ *
+ * @returns {number}
+ */
+ public width : number;
+ /**
+ *
+ * @returns {number}
+ */
+ public height : number;
+ constructor(width: number, height: number);
+ }
+ export = RenderTexture;
+
+}
+declare module "awayjs-core/lib/textures/SpecularBitmapTexture" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture");
+ /**
+ * A convenience texture that encodes a specular map in the red channel, and the gloss map in the green channel, as expected by BasicSpecularMapMethod
+ */
+ class SpecularBitmapTexture extends BitmapTexture {
+ private _specularMap;
+ private _glossMap;
+ constructor(specularMap?: BitmapData, glossMap?: BitmapData, generateMipmaps?: boolean);
+ public specularMap : BitmapData;
+ public glossMap : BitmapData;
+ private _testSize();
+ public _iGetTextureData(): BitmapData;
+ }
+ export = SpecularBitmapTexture;
+
+}
+declare module "awayjs-core/lib/textures/Texture2DBase" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ class Texture2DBase extends TextureProxyBase {
+ private _mipmapData;
+ private _mipmapDataDirty;
+ public _pWidth: number;
+ public _pHeight: number;
+ /**
+ *
+ * @returns {number}
+ */
+ public width : number;
+ /**
+ *
+ * @returns {number}
+ */
+ public height : number;
+ public size : number;
+ constructor(generateMipmaps?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public dispose(): void;
+ /**
+ *
+ */
+ public invalidateContent(): void;
+ /**
+ *
+ * @param width
+ * @param height
+ * @private
+ */
+ public _pSetSize(width: number, height: number): void;
+ public _iGetMipmapData(): BitmapData[];
+ public _iGetTextureData(): any;
+ }
+ export = Texture2DBase;
+
+}
+declare module "awayjs-core/lib/textures/TextureProxyBase" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ import ITextureData = require("awayjs-core/lib/core/pool/ITextureData");
+ /**
+ *
+ */
+ class TextureProxyBase extends NamedAssetBase implements IAsset {
+ public _pSize: number;
+ public _pFormat: string;
+ private _hasMipmaps;
+ private _generateMipmaps;
+ private _textureData;
+ /**
+ *
+ */
+ constructor(generateMipmaps?: boolean);
+ public size : number;
+ public hasMipmaps : boolean;
+ /**
+ *
+ * @returns {string}
+ */
+ public format : string;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public generateMipmaps : boolean;
+ /**
+ *
+ * @returns {string}
+ */
+ public assetType : string;
+ /**
+ *
+ */
+ public invalidateContent(): void;
+ /**
+ *
+ * @private
+ */
+ public invalidateSize(): void;
+ /**
+ * @inheritDoc
+ */
+ public dispose(): void;
+ public _iAddTextureData(textureData: ITextureData): ITextureData;
+ public _iRemoveTextureData(textureData: ITextureData): ITextureData;
+ }
+ export = TextureProxyBase;
+
+}
+declare module "awayjs-core/lib/utils/ByteArray" {
+ import ByteArrayBase = require("awayjs-core/lib/utils/ByteArrayBase");
+ class ByteArray extends ByteArrayBase {
+ public maxlength: number;
+ public arraybytes: any;
+ public unalignedarraybytestemp: any;
+ constructor();
+ public ensureWriteableSpace(n: number): void;
+ public setArrayBuffer(aBuffer: ArrayBuffer): void;
+ public getBytesAvailable(): number;
+ public ensureSpace(n: number): void;
+ public writeByte(b: number): void;
+ public readByte(): number;
+ public readBytes(bytes: ByteArray, offset?: number, length?: number): void;
+ public writeUnsignedByte(b: number): void;
+ public readUnsignedByte(): number;
+ public writeUnsignedShort(b: number): void;
+ public readUTFBytes(len: number): string;
+ public readInt(): number;
+ public readShort(): number;
+ public readDouble(): number;
+ public readUnsignedShort(): number;
+ public writeUnsignedInt(b: number): void;
+ public readUnsignedInt(): number;
+ public writeFloat(b: number): void;
+ public readFloat(): number;
+ }
+ export = ByteArray;
+
+}
+declare module "awayjs-core/lib/utils/ByteArrayBase" {
+ class ByteArrayBase {
+ public position: number;
+ public length: number;
+ public _mode: string;
+ static Base64Key: string;
+ constructor();
+ public writeByte(b: number): void;
+ public readByte(): number;
+ public writeUnsignedByte(b: number): void;
+ public readUnsignedByte(): number;
+ public writeUnsignedShort(b: number): void;
+ public readUnsignedShort(): number;
+ public writeUnsignedInt(b: number): void;
+ public readUnsignedInt(): number;
+ public writeFloat(b: number): void;
+ public toFloatBits(x: number): void;
+ public readFloat(b: number): void;
+ public fromFloatBits(x: number): void;
+ public getBytesAvailable(): number;
+ public toString(): string;
+ public compareEqual(other: any, count: any): boolean;
+ public writeBase64String(s: string): void;
+ public dumpToConsole(): void;
+ public readBase64String(count: number): string;
+ static internalGetBase64String(count: any, getUnsignedByteFunc: any, self: any): string;
+ }
+ export = ByteArrayBase;
+
+}
+declare module "awayjs-core/lib/utils/ByteArrayBuffer" {
+ import ByteArrayBase = require("awayjs-core/lib/utils/ByteArrayBase");
+ class ByteArrayBuffer extends ByteArrayBase {
+ public _bytes: number[];
+ constructor();
+ public writeByte(b: number): void;
+ public readByte(): number;
+ public writeUnsignedByte(b: number): void;
+ public readUnsignedByte(): number;
+ public writeUnsignedShort(b: number): void;
+ public readUnsignedShort(): number;
+ public writeUnsignedInt(b: number): void;
+ public readUnsignedInt(): number;
+ public writeFloat(b: number): void;
+ public toFloatBits(x: number): number;
+ public readFloat(b: number): number;
+ public fromFloatBits(x: number): number;
+ }
+ export = ByteArrayBuffer;
+
+}
+declare module "awayjs-core/lib/utils/CSS" {
+ class CSS {
+ static setElementSize(element: HTMLElement, width: number, height: number): void;
+ static setElementWidth(element: HTMLElement, width: number): void;
+ static setElementHeight(element: HTMLElement, height: number): void;
+ static setElementX(element: HTMLElement, x: number): void;
+ static setElementY(element: HTMLElement, y: number): void;
+ static getElementVisibility(element: HTMLElement): boolean;
+ static setElementVisibility(element: HTMLElement, visible: boolean): void;
+ static setElementAlpha(element: HTMLElement, alpha: number): void;
+ static setElementPosition(element: HTMLElement, x: number, y: number, absolute?: boolean): void;
+ }
+ export = CSS;
+
+}
+declare module "awayjs-core/lib/utils/Cast" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture");
+ import ByteArray = require("awayjs-core/lib/utils/ByteArray");
+ /**
+ * Helper class for casting assets to usable objects
+ */
+ class Cast {
+ private static _colorNames;
+ private static _hexChars;
+ private static _notClasses;
+ private static _classes;
+ static string(data: any): string;
+ static byteArray(data: any): ByteArray;
+ private static isHex(str);
+ static tryColor(data: any): number;
+ static color(data: any): number;
+ static tryClass(name: string): any;
+ static bitmapData(data: any): BitmapData;
+ static bitmapTexture(data: any): BitmapTexture;
+ }
+ export = Cast;
+
+}
+declare module "awayjs-core/lib/utils/ColorUtils" {
+ /**
+ *
+ */
+ class ColorUtils {
+ static float32ColorToARGB(float32Color: number): number[];
+ private static componentToHex(c);
+ static RGBToHexString(argb: number[]): string;
+ static ARGBToHexString(argb: number[]): string;
+ }
+ export = ColorUtils;
+
+}
+declare module "awayjs-core/lib/utils/Debug" {
+ /**
+ *
+ */
+ class Debug {
+ static THROW_ERRORS: boolean;
+ static ENABLE_LOG: boolean;
+ static LOG_PI_ERRORS: boolean;
+ private static keyword;
+ static breakpoint(): void;
+ static throwPIROnKeyWordOnly(str: string, enable?: boolean): void;
+ static throwPIR(clss: string, fnc: string, msg: string): void;
+ private static logPIR(clss, fnc, msg?);
+ static log(...args: any[]): void;
+ }
+ export = Debug;
+
+}
+declare module "awayjs-core/lib/utils/RequestAnimationFrame" {
+ class RequestAnimationFrame {
+ private _callback;
+ private _callbackContext;
+ private _active;
+ private _rafUpdateFunction;
+ private _prevTime;
+ private _dt;
+ private _currentTime;
+ private _argsArray;
+ private _getTimer;
+ constructor(callback: Function, callbackContext: Object);
+ /**
+ *
+ * @param callback
+ * @param callbackContext
+ */
+ public setCallback(callback: Function, callbackContext: Object): void;
+ /**
+ *
+ */
+ public start(): void;
+ /**
+ *
+ */
+ public stop(): void;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public active : boolean;
+ /**
+ *
+ * @private
+ */
+ private _tick();
+ }
+ export = RequestAnimationFrame;
+
+}
+declare module "awayjs-core/lib/utils/TextureUtils" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ class TextureUtils {
+ private static MAX_SIZE;
+ static isBitmapDataValid(bitmapData: BitmapData): boolean;
+ static isHTMLImageElementValid(image: HTMLImageElement): boolean;
+ static isDimensionValid(d: number): boolean;
+ static isPowerOfTwo(value: number): boolean;
+ static getBestPowerOf2(value: number): number;
+ }
+ export = TextureUtils;
+
+}
+declare module "awayjs-core/lib/utils/Timer" {
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ class Timer extends EventDispatcher {
+ private _delay;
+ private _repeatCount;
+ private _currentCount;
+ private _iid;
+ private _running;
+ constructor(delay: number, repeatCount?: number);
+ public currentCount : number;
+ public delay : number;
+ public repeatCount : number;
+ public reset(): void;
+ public running : boolean;
+ public start(): void;
+ public stop(): void;
+ private tick();
+ }
+ export = Timer;
+
+}
+declare module "awayjs-core/lib/utils/getTimer" {
+ /**
+ *
+ *
+ * @returns {number}
+ */
+ function getTimer(): number;
+ export = getTimer;
+
+}
+declare module "awayjs-core/lib/animators/nodes/AnimationNodeBase" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ /**
+ * Provides an abstract base class for nodes in an animation blend tree.
+ */
+ class AnimationNodeBase extends NamedAssetBase implements IAsset {
+ public _pStateClass: any;
+ public stateClass : any;
+ /**
+ * Creates a new AnimationNodeBase
object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ public dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ public assetType : string;
+ }
+ export = AnimationNodeBase;
+
+}
+declare module "awayjs-core/lib/core/display/ContextMode" {
+ class ContextMode {
+ static AUTO: string;
+ static WEBGL: string;
+ static FLASH: string;
+ static NATIVE: string;
+ }
+ export = ContextMode;
+
+}
+declare module "awayjs-core/lib/core/display/IContext" {
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ /**
+ *
+ * @class away.base.IContext
+ */
+ interface IContext {
+ container: HTMLElement;
+ clear(red?: number, green?: number, blue?: number, alpha?: number, depth?: number, stencil?: number, mask?: number): any;
+ configureBackBuffer(width: number, height: number, antiAlias: number, enableDepthAndStencil?: boolean): any;
+ dispose(): any;
+ present(): any;
+ setScissorRectangle(rect: Rectangle): any;
+ }
+ export = IContext;
+
+}
+declare module "awayjs-core/lib/core/base/AlignmentMode" {
+ /**
+ *
+ */
+ class AlignmentMode {
+ /**
+ *
+ */
+ static REGISTRATION_POINT: string;
+ /**
+ *
+ */
+ static PIVOT_POINT: string;
+ }
+ export = AlignmentMode;
+
+}
+declare module "awayjs-core/lib/core/base/BitmapData" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import Matrix = require("awayjs-core/lib/core/geom/Matrix");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import ByteArray = require("awayjs-core/lib/utils/ByteArray");
+ /**
+ *
+ */
+ class BitmapData {
+ private _imageCanvas;
+ private _context;
+ private _imageData;
+ private _rect;
+ private _transparent;
+ private _alpha;
+ private _locked;
+ /**
+ *
+ * @param width
+ * @param height
+ * @param transparent
+ * @param fillColor
+ */
+ constructor(width: number, height: number, transparent?: boolean, fillColor?: number);
+ /**
+ *
+ */
+ public dispose(): void;
+ /**
+ *
+ */
+ public lock(): void;
+ /**
+ *
+ */
+ public unlock(): void;
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ public getPixel(x: any, y: any): number;
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ public setPixel(x: any, y: any, color: number): void;
+ /**
+ *
+ * @param rect
+ * @param inputByteArray
+ */
+ public setPixels(rect: Rectangle, inputByteArray: ByteArray): void;
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ public setPixel32(x: any, y: any, color: number): void;
+ public setVector(rect: Rectangle, inputVector: number[]): void;
+ /**
+ * Copy an HTMLImageElement or BitmapData object
+ *
+ * @param img {BitmapData} / {HTMLImageElement}
+ * @param sourceRect - source rectange to copy from
+ * @param destRect - destinatoin rectange to copy to
+ */
+ public drawImage(img: BitmapData, sourceRect: Rectangle, destRect: Rectangle): any;
+ public drawImage(img: HTMLImageElement, sourceRect: Rectangle, destRect: Rectangle): any;
+ private _drawImage(img, sourceRect, destRect);
+ /**
+ *
+ * @param bmpd
+ * @param sourceRect
+ * @param destRect
+ */
+ public copyPixels(bmpd: BitmapData, sourceRect: Rectangle, destRect: Rectangle): any;
+ public copyPixels(bmpd: HTMLImageElement, sourceRect: Rectangle, destRect: Rectangle): any;
+ private _copyPixels(bmpd, sourceRect, destRect);
+ /**
+ *
+ * @param rect
+ * @param color
+ */
+ public fillRect(rect: Rectangle, color: number): void;
+ /**
+ *
+ * @param source
+ * @param matrix
+ */
+ public draw(source: BitmapData, matrix?: Matrix): any;
+ public draw(source: HTMLImageElement, matrix?: Matrix): any;
+ private _draw(source, matrix);
+ public copyChannel(sourceBitmap: BitmapData, sourceRect: Rectangle, destPoint: Point, sourceChannel: number, destChannel: number): void;
+ public colorTransform(rect: Rectangle, colorTransform: ColorTransform): void;
+ /**
+ *
+ * @returns {ImageData}
+ */
+ /**
+ *
+ * @param {ImageData}
+ */
+ public imageData : ImageData;
+ /**
+ *
+ * @returns {number}
+ */
+ /**
+ *
+ * @param {number}
+ */
+ public width : number;
+ /**
+ *
+ * @returns {number}
+ */
+ /**
+ *
+ * @param {number}
+ */
+ public height : number;
+ /**
+ *
+ * @param {Rectangle}
+ */
+ public rect : Rectangle;
+ /**
+ *
+ * @returns {HTMLCanvasElement}
+ */
+ public canvas : HTMLCanvasElement;
+ /**
+ *
+ * @returns {HTMLCanvasElement}
+ */
+ public context : CanvasRenderingContext2D;
+ /**
+ * convert decimal value to Hex
+ */
+ private hexToRGBACSS(d);
+ }
+ export = BitmapData;
+
+}
+declare module "awayjs-core/lib/core/base/BitmapDataChannel" {
+ class BitmapDataChannel {
+ static ALPHA: number;
+ static BLUE: number;
+ static GREEN: number;
+ static RED: number;
+ }
+ export = BitmapDataChannel;
+
+}
+declare module "awayjs-core/lib/core/base/BlendMode" {
+ /**
+ * A class that provides constant values for visual blend mode effects. These
+ * constants are used in the following:
+ * blendMode
property of the
+ * flash.display.DisplayObject class.blendMode
parameter of the draw()
+ * method of the flash.display.BitmapData classFor example, if the display object has a pixel with an RGB value of + * 0xAAA633, and the background pixel has an RGB value of 0xDD2200, the + * resulting RGB value for the displayed pixel is 0xFFC833(because 0xAA + + * 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, and 0x33 + 0x00 = 0x33).
+ */ + static ADD: string; + /** + * Applies the alpha value of each pixel of the display object to the + * background. This requires theblendMode
property of the
+ * parent display object be set to
+ * away.base.BlendMode.LAYER
.
+ *
+ * Not supported under GPU rendering.
+ */ + static ALPHA: string; + /** + * Selects the darker of the constituent colors of the display object and the + * colors of the background(the colors with the smaller values). This + * setting is commonly used for superimposing type. + * + *For example, if the display object has a pixel with an RGB value of + * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the + * resulting RGB value for the displayed pixel is 0xDDCC00(because 0xFF > + * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).
+ * + *Not supported under GPU rendering.
+ */ + static DARKEN: string; + /** + * Compares the constituent colors of the display object with the colors of + * its background, and subtracts the darker of the values of the two + * constituent colors from the lighter value. This setting is commonly used + * for more vibrant colors. + * + *For example, if the display object has a pixel with an RGB value of + * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the + * resulting RGB value for the displayed pixel is 0x222C33(because 0xFF - + * 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, and 0x33 - 0x00 = 0x33).
+ */ + static DIFFERENCE: string; + /** + * Erases the background based on the alpha value of the display object. This + * process requires that theblendMode
property of the parent
+ * display object be set to flash.display.BlendMode.LAYER
.
+ *
+ * Not supported under GPU rendering.
+ */ + static ERASE: string; + /** + * Adjusts the color of each pixel based on the darkness of the display + * object. If the display object is lighter than 50% gray, the display object + * and background colors are screened, which results in a lighter color. If + * the display object is darker than 50% gray, the colors are multiplied, + * which results in a darker color. This setting is commonly used for shading + * effects. + * + *Not supported under GPU rendering.
+ */ + static HARDLIGHT: string; + /** + * Inverts the background. + */ + static INVERT: string; + /** + * Forces the creation of a transparency group for the display object. This + * means that the display object is precomposed in a temporary buffer before + * it is processed further. The precomposition is done automatically if the + * display object is precached by means of bitmap caching or if the display + * object is a display object container that has at least one child object + * with ablendMode
setting other than "normal"
.
+ *
+ * Not supported under GPU rendering.
+ */ + static LAYER: string; + /** + * Selects the lighter of the constituent colors of the display object and + * the colors of the background(the colors with the larger values). This + * setting is commonly used for superimposing type. + * + *For example, if the display object has a pixel with an RGB value of + * 0xFFCC33, and the background pixel has an RGB value of 0xDDF800, the + * resulting RGB value for the displayed pixel is 0xFFF833(because 0xFF > + * 0xDD, 0xCC < 0xF8, and 0x33 > 0x00 = 33).
+ * + *Not supported under GPU rendering.
+ */ + static LIGHTEN: string; + /** + * Multiplies the values of the display object constituent colors by the + * constituent colors of the background color, and normalizes by dividing by + * 0xFF, resulting in darker colors. This setting is commonly used for + * shadows and depth effects. + * + *For example, if a constituent color(such as red) of one pixel in the + * display object and the corresponding color of the pixel in the background + * both have the value 0x88, the multiplied result is 0x4840. Dividing by + * 0xFF yields a value of 0x48 for that constituent color, which is a darker + * shade than the color of the display object or the color of the + * background.
+ */ + static MULTIPLY: string; + /** + * The display object appears in front of the background. Pixel values of the + * display object override the pixel values of the background. Where the + * display object is transparent, the background is visible. + */ + static NORMAL: string; + /** + * Adjusts the color of each pixel based on the darkness of the background. + * If the background is lighter than 50% gray, the display object and + * background colors are screened, which results in a lighter color. If the + * background is darker than 50% gray, the colors are multiplied, which + * results in a darker color. This setting is commonly used for shading + * effects. + * + *Not supported under GPU rendering.
+ */ + static OVERLAY: string; + /** + * Multiplies the complement(inverse) of the display object color by the + * complement of the background color, resulting in a bleaching effect. This + * setting is commonly used for highlights or to remove black areas of the + * display object. + */ + static SCREEN: string; + /** + * Uses a shader to define the blend between objects. + * + *Setting the blendShader
property to a Shader instance
+ * automatically sets the display object's blendMode
property to
+ * BlendMode.SHADER
. If the blendMode
property is
+ * set to BlendMode.SHADER
without first setting the
+ * blendShader
property, the blendMode
property is
+ * set to BlendMode.NORMAL
instead. If the
+ * blendShader
property is set(which sets the
+ * blendMode
property to BlendMode.SHADER
), then
+ * later the value of the blendMode
property is changed, the
+ * blend mode can be reset to use the blend shader simply by setting the
+ * blendMode
property to BlendMode.SHADER
. The
+ * blendShader
property does not need to be set again except to
+ * change the shader that's used to define the blend mode.
Not supported under GPU rendering.
+ */ + static SHADER: string; + /** + * Subtracts the values of the constituent colors in the display object from + * the values of the background color, applying a floor of 0. This setting is + * commonly used for animating a darkening dissolve between two objects. + * + *For example, if the display object has a pixel with an RGB value of + * 0xAA2233, and the background pixel has an RGB value of 0xDDA600, the + * resulting RGB value for the displayed pixel is 0x338400(because 0xDD - + * 0xAA = 0x33, 0xA6 - 0x22 = 0x84, and 0x00 - 0x33 < 0x00).
+ */ + static SUBTRACT: string; + } + export = BlendMode; + +} +declare module "awayjs-core/lib/core/base/CapsStyle" { + /** + * The CapsStyle class is an enumeration of constant values that specify the + * caps style to use in drawing lines. The constants are provided for use as + * values in thecaps
parameter of the
+ * flash.display.Graphics.lineStyle()
method. You can specify the
+ * following three types of caps:
+ */
+ class CapsStyle {
+ /**
+ * Used to specify round caps in the caps
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static ROUND: string;
+ /**
+ * Used to specify no caps in the caps
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static NONE: string;
+ /**
+ * Used to specify square caps in the caps
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static SQUARE: string;
+ }
+ export = CapsStyle;
+
+}
+declare module "awayjs-core/lib/core/base/DisplayObject" {
+ import BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import ControllerBase = require("awayjs-core/lib/controllers/ControllerBase");
+ import BlendMode = require("awayjs-core/lib/core/base/BlendMode");
+ import LoaderInfo = require("awayjs-core/lib/core/base/LoaderInfo");
+ import IBitmapDrawable = require("awayjs-core/lib/core/base/IBitmapDrawable");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import Transform = require("awayjs-core/lib/core/geom/Transform");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import Partition = require("awayjs-core/lib/core/partition/Partition");
+ import IPickingCollider = require("awayjs-core/lib/core/pick/IPickingCollider");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import PrefabBase = require("awayjs-core/lib/prefabs/PrefabBase");
+ /**
+ * The DisplayObject class is the base class for all objects that can be
+ * placed on the display list. The display list manages all objects displayed
+ * in flash. Use the DisplayObjectContainer class to arrange the
+ * display objects in the display list. DisplayObjectContainer objects can
+ * have child display objects, while other display objects, such as Shape and
+ * TextField objects, are "leaf" nodes that have only parents and siblings, no
+ * children.
+ *
+ * The DisplayObject class supports basic functionality like the x + * and y position of an object, as well as more advanced properties of + * the object such as its transformation matrix.
+ * + *DisplayObject is an abstract base class; therefore, you cannot call
+ * DisplayObject directly. Invoking new DisplayObject()
throws an
+ * ArgumentError
exception.
All display objects inherit from the DisplayObject class.
+ * + *The DisplayObject class itself does not include any APIs for rendering + * content onscreen. For that reason, if you want create a custom subclass of + * the DisplayObject class, you will want to extend one of its subclasses that + * do have APIs for rendering content onscreen, such as the Shape, Sprite, + * Bitmap, SimpleButton, TextField, or MovieClip class.
+ * + *The DisplayObject class contains several broadcast events. Normally, the
+ * target of any particular event is a specific DisplayObject instance. For
+ * example, the target of an added
event is the specific
+ * DisplayObject instance that was added to the display list. Having a single
+ * target restricts the placement of event listeners to that target and in
+ * some cases the target's ancestors on the display list. With broadcast
+ * events, however, the target is not a specific DisplayObject instance, but
+ * rather all DisplayObject instances, including those that are not on the
+ * display list. This means that you can add a listener to any DisplayObject
+ * instance to listen for broadcast events. In addition to the broadcast
+ * events listed in the DisplayObject class's Events table, the DisplayObject
+ * class also inherits two broadcast events from the EventDispatcher class:
+ * activate
and deactivate
.
Some properties previously used in the ActionScript 1.0 and 2.0
+ * MovieClip, TextField, and Button classes(such as _alpha
,
+ * _height
, _name
, _width
,
+ * _x
, _y
, and others) have equivalents in the
+ * ActionScript 3.0 DisplayObject class that are renamed so that they no
+ * longer begin with the underscore(_) character.
For more information, see the "Display Programming" chapter of the + * ActionScript 3.0 Developer's Guide.
+ * + * @event added Dispatched when a display object is added to the + * display list. The following methods trigger this + * event: + *DisplayObjectContainer.addChild()
,
+ * DisplayObjectContainer.addChildAt()
.
+ * @event addedToStage Dispatched when a display object is added to the on
+ * stage display list, either directly or through the
+ * addition of a sub tree in which the display object
+ * is contained. The following methods trigger this
+ * event:
+ * DisplayObjectContainer.addChild()
,
+ * DisplayObjectContainer.addChildAt()
.
+ * @event enterFrame [broadcast event] Dispatched when the playhead is
+ * entering a new frame. If the playhead is not
+ * moving, or if there is only one frame, this event
+ * is dispatched continuously in conjunction with the
+ * frame rate. This event is a broadcast event, which
+ * means that it is dispatched by all display objects
+ * with a listener registered for this event.
+ * @event exitFrame [broadcast event] Dispatched when the playhead is
+ * exiting the current frame. All frame scripts have
+ * been run. If the playhead is not moving, or if
+ * there is only one frame, this event is dispatched
+ * continuously in conjunction with the frame rate.
+ * This event is a broadcast event, which means that
+ * it is dispatched by all display objects with a
+ * listener registered for this event.
+ * @event frameConstructed [broadcast event] Dispatched after the constructors
+ * of frame display objects have run but before frame
+ * scripts have run. If the playhead is not moving, or
+ * if there is only one frame, this event is
+ * dispatched continuously in conjunction with the
+ * frame rate. This event is a broadcast event, which
+ * means that it is dispatched by all display objects
+ * with a listener registered for this event.
+ * @event removed Dispatched when a display object is about to be
+ * removed from the display list. Two methods of the
+ * DisplayObjectContainer class generate this event:
+ * removeChild()
and
+ * removeChildAt()
.
+ *
+ * The following methods of a
+ * DisplayObjectContainer object also generate this
+ * event if an object must be removed to make room for
+ * the new object: addChild()
,
+ * addChildAt()
, and
+ * setChildIndex()
.
removeChild()
and
+ * removeChildAt()
.
+ *
+ * The following methods of a
+ * DisplayObjectContainer object also generate this
+ * event if an object must be removed to make room for
+ * the new object: addChild()
,
+ * addChildAt()
, and
+ * setChildIndex()
.
invalidate()
method of the Stage
+ * object each time you want a render
+ * event to be dispatched. Render
events
+ * are dispatched to an object only if there is mutual
+ * trust between it and the object that called
+ * Stage.invalidate()
. This event is a
+ * broadcast event, which means that it is dispatched
+ * by all display objects with a listener registered
+ * for this event.
+ *
+ * Note: This event is not dispatched if the + * display is not rendering. This is the case when the + * content is either minimized or obscured.
+ */ + class DisplayObject extends NamedAssetBase implements IBitmapDrawable { + private _loaderInfo; + private _mouseX; + private _mouseY; + private _root; + private _bounds; + private _boundsVisible; + private _depth; + private _height; + private _width; + public _pScene: Scene; + public _pParent: DisplayObjectContainer; + public _pSceneTransform: Matrix3D; + public _pSceneTransformDirty: boolean; + public _pIsEntity: boolean; + private _explicitPartition; + public _pImplicitPartition: Partition; + private _partitionNode; + private _sceneTransformChanged; + private _scenechanged; + private _transform; + private _matrix3D; + private _matrix3DDirty; + private _inverseSceneTransform; + private _inverseSceneTransformDirty; + private _scenePosition; + private _scenePositionDirty; + private _explicitVisibility; + public _pImplicitVisibility: boolean; + private _explicitMouseEnabled; + public _pImplicitMouseEnabled: boolean; + private _listenToSceneTransformChanged; + private _listenToSceneChanged; + private _positionDirty; + private _rotationDirty; + private _scaleDirty; + private _positionChanged; + private _rotationChanged; + private _scaleChanged; + private _rotationX; + private _rotationY; + private _rotationZ; + private _eulers; + private _flipY; + private _listenToPositionChanged; + private _listenToRotationChanged; + private _listenToScaleChanged; + private _zOffset; + public _pScaleX: number; + public _pScaleY: number; + public _pScaleZ: number; + private _x; + private _y; + private _z; + private _pivot; + private _orientationMatrix; + private _pivotZero; + private _pivotDirty; + private _pos; + private _rot; + private _sca; + private _transformComponents; + public _pIgnoreTransform: boolean; + private _shaderPickingDetails; + public _pPickingCollisionVO: PickingCollisionVO; + public _pBounds: BoundingVolumeBase; + public _pBoundsInvalid: boolean; + private _worldBounds; + private _worldBoundsInvalid; + public _pPickingCollider: IPickingCollider; + public _pRenderables: IRenderable[]; + public _iSourcePrefab: PrefabBase; + /** + * + */ + public alignmentMode: string; + /** + * Indicates the alpha transparency value of the object specified. Valid + * values are 0(fully transparent) to 1(fully opaque). The default value is + * 1. Display objects withalpha
set to 0 are active,
+ * even though they are invisible.
+ */
+ public alpha: number;
+ /**
+ * A value from the BlendMode class that specifies which blend mode to use. A
+ * bitmap can be drawn internally in two ways. If you have a blend mode
+ * enabled or an external clipping mask, the bitmap is drawn by adding a
+ * bitmap-filled square shape to the vector render. If you attempt to set
+ * this property to an invalid value, Flash runtimes set the value to
+ * BlendMode.NORMAL
.
+ *
+ * The blendMode
property affects each pixel of the display
+ * object. Each pixel is composed of three constituent colors(red, green,
+ * and blue), and each constituent color has a value between 0x00 and 0xFF.
+ * Flash Player or Adobe AIR compares each constituent color of one pixel in
+ * the movie clip with the corresponding color of the pixel in the
+ * background. For example, if blendMode
is set to
+ * BlendMode.LIGHTEN
, Flash Player or Adobe AIR compares the red
+ * value of the display object with the red value of the background, and uses
+ * the lighter of the two as the value for the red component of the displayed
+ * color.
The following table describes the blendMode
settings. The
+ * BlendMode class defines string values you can use. The illustrations in
+ * the table show blendMode
values applied to a circular display
+ * object(2) superimposed on another display object(1).
true
, NME will use the software renderer to cache
+ * an internal bitmap representation of the display object. For native targets,
+ * this is often much slower than the default hardware renderer. When you
+ * are using the Flash target, this caching may increase performance for display
+ * objects that contain complex vector content.
+ *
+ * All vector data for a display object that has a cached bitmap is drawn
+ * to the bitmap instead of the main display. If
+ * cacheAsBitmapMatrix
is null or unsupported, the bitmap is
+ * then copied to the main display as unstretched, unrotated pixels snapped
+ * to the nearest pixel boundaries. Pixels are mapped 1 to 1 with the parent
+ * object. If the bounds of the bitmap change, the bitmap is recreated
+ * instead of being stretched.
If cacheAsBitmapMatrix
is non-null and supported, the
+ * object is drawn to the off-screen bitmap using that matrix and the
+ * stretched and/or rotated results of that rendering are used to draw the
+ * object to the main display.
No internal bitmap is created unless the cacheAsBitmap
+ * property is set to true
.
After you set the cacheAsBitmap
property to
+ * true
, the rendering does not change, however the display
+ * object performs pixel snapping automatically. The animation speed can be
+ * significantly faster depending on the complexity of the vector content.
+ *
The cacheAsBitmap
property is automatically set to
+ * true
whenever you apply a filter to a display object(when
+ * its filter
array is not empty), and if a display object has a
+ * filter applied to it, cacheAsBitmap
is reported as
+ * true
for that display object, even if you set the property to
+ * false
. If you clear all filters for a display object, the
+ * cacheAsBitmap
setting changes to what it was last set to.
A display object does not use a bitmap even if the
+ * cacheAsBitmap
property is set to true
and
+ * instead renders from vector data in the following cases:
The cacheAsBitmap
property is best used with movie clips
+ * that have mostly static content and that do not scale and rotate
+ * frequently. With such movie clips, cacheAsBitmap
can lead to
+ * performance increases when the movie clip is translated(when its x
+ * and y position is changed).
depth
property, the scaleZ
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content (such as an empty sprite) has a depth of 0, even if you try to
+ * set depth
to a different value.
Vector3D
object containing euler angles for rotation around x, y and z axis.
+ */
+ public eulers : Vector3D;
+ /**
+ * An object that can contain any extra data.
+ */
+ public extra: Object;
+ /**
+ * Indicates the height of the display object, in pixels. The height is
+ * calculated based on the bounds of the content of the display object. When
+ * you set the height
property, the scaleY
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content (such as an empty sprite) has a height of 0, even if you try to
+ * set height
to a different value.
getChildByIndex()
method of the display object
+ * container.
+ *
+ * If the DisplayObject has no parent container, index defaults to 0.
+ */ + public index : number; + /** + * + */ + public inverseSceneTransform : Matrix3D; + /** + * + */ + public ignoreTransform : boolean; + /** + * + */ + public isEntity : boolean; + /** + * Returns a LoaderInfo object containing information about loading the file + * to which this display object belongs. TheloaderInfo
property
+ * is defined only for the root display object of a SWF file or for a loaded
+ * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the
+ * loaderInfo
object associated with the SWF file that contains
+ * a display object named myDisplayObject
, use
+ * myDisplayObject.root.loaderInfo
.
+ *
+ * A large SWF file can monitor its download by calling
+ * this.root.loaderInfo.addEventListener(Event.COMPLETE,
+ * func)
.
mask
+ * object. To ensure that masking works when the Stage is scaled, the
+ * mask
display object must be in an active part of the display
+ * list. The mask
object itself is not drawn. Set
+ * mask
to null
to remove the mask.
+ *
+ * To be able to scale a mask object, it must be on the display list. To
+ * be able to drag a mask Sprite object(by calling its
+ * startDrag()
method), it must be on the display list. To call
+ * the startDrag()
method for a mask sprite based on a
+ * mouseDown
event being dispatched by the sprite, set the
+ * sprite's buttonMode
property to true
.
When display objects are cached by setting the
+ * cacheAsBitmap
property to true
an the
+ * cacheAsBitmapMatrix
property to a Matrix object, both the
+ * mask and the display object being masked must be part of the same cached
+ * bitmap. Thus, if the display object is cached, then the mask must be a
+ * child of the display object. If an ancestor of the display object on the
+ * display list is cached, then the mask must be a child of that ancestor or
+ * one of its descendents. If more than one ancestor of the masked object is
+ * cached, then the mask must be a descendent of the cached container closest
+ * to the masked object in the display list.
Note: A single mask
object cannot be used to mask
+ * more than one calling display object. When the mask
is
+ * assigned to a second display object, it is removed as the mask of the
+ * first object, and that object's mask
property becomes
+ * null
.
true
, which means that by
+ * default any InteractiveObject instance that is on the display list
+ * receives mouse events or other user input events. If
+ * mouseEnabled
is set to false
, the instance does
+ * not receive any mouse events(or other user input events like keyboard
+ * events). Any children of this instance on the display list are not
+ * affected. To change the mouseEnabled
behavior for all
+ * children of an object on the display list, use
+ * flash.display.DisplayObjectContainer.mouseChildren
.
+ *
+ * No event is dispatched by setting this property. You must use the
+ * addEventListener()
method to create interactive
+ * functionality.
Note: For a DisplayObject that has been rotated, the returned x + * coordinate will reflect the non-rotated object.
+ */ + public mouseX : number; + /** + * Indicates the y coordinate of the mouse or user input device position, in + * pixels. + * + *Note: For a DisplayObject that has been rotated, the returned y + * coordinate will reflect the non-rotated object.
+ */ + public mouseY : number; + /** + * Indicates the instance name of the DisplayObject. The object can be + * identified in the child list of its parent display object container by + * calling thegetChildByName()
method of the display object
+ * container.
+ *
+ * @throws IllegalOperationError If you are attempting to set this property
+ * on an object that was placed on the timeline
+ * in the Flash authoring tool.
+ */
+ public name: string;
+ /**
+ *
+ */
+ public orientationMode: string;
+ /**
+ * Indicates the DisplayObjectContainer object that contains this display
+ * object. Use the parent
property to specify a relative path to
+ * display objects that are above the current display object in the display
+ * list hierarchy.
+ *
+ * You can use parent
to move up multiple levels in the
+ * display list as in the following:
Security.allowDomain()
method.
+ */
+ public parent : DisplayObjectContainer;
+ /**
+ *
+ */
+ public partition : Partition;
+ /**
+ *
+ */
+ public partitionNode : EntityNode;
+ /**
+ *
+ */
+ public pickingCollider : IPickingCollider;
+ /**
+ * Defines the local point around which the object rotates.
+ */
+ public pivot : Vector3D;
+ /**
+ * For a display object in a loaded SWF file, the root
property
+ * is the top-most display object in the portion of the display list's tree
+ * structure represented by that SWF file. For a Bitmap object representing a
+ * loaded image file, the root
property is the Bitmap object
+ * itself. For the instance of the main class of the first SWF file loaded,
+ * the root
property is the display object itself. The
+ * root
property of the Stage object is the Stage object itself.
+ * The root
property is set to null
for any display
+ * object that has not been added to the display list, unless it has been
+ * added to a display object container that is off the display list but that
+ * is a child of the top-most display object in a loaded SWF file.
+ *
+ * For example, if you create a new Sprite object by calling the
+ * Sprite()
constructor method, its root
property
+ * is null
until you add it to the display list(or to a display
+ * object container that is off the display list but that is a child of the
+ * top-most display object in a SWF file).
For a loaded SWF file, even though the Loader object used to load the
+ * file may not be on the display list, the top-most display object in the
+ * SWF file has its root
property set to itself. The Loader
+ * object does not have its root
property set until it is added
+ * as a child of a display object for which the root
property is
+ * set.
my_video.rotation = 450
+ * is the same as my_video.rotation = 90
.
+ */
+ public rotation: number;
+ /**
+ * Indicates the x-axis rotation of the DisplayObject instance, in degrees,
+ * from its original orientation relative to the 3D parent container. Values
+ * from 0 to 180 represent clockwise rotation; values from 0 to -180
+ * represent counterclockwise rotation. Values outside this range are added
+ * to or subtracted from 360 to obtain a value within the range.
+ */
+ public rotationX : number;
+ /**
+ * Indicates the y-axis rotation of the DisplayObject instance, in degrees,
+ * from its original orientation relative to the 3D parent container. Values
+ * from 0 to 180 represent clockwise rotation; values from 0 to -180
+ * represent counterclockwise rotation. Values outside this range are added
+ * to or subtracted from 360 to obtain a value within the range.
+ */
+ public rotationY : number;
+ /**
+ * Indicates the z-axis rotation of the DisplayObject instance, in degrees,
+ * from its original orientation relative to the 3D parent container. Values
+ * from 0 to 180 represent clockwise rotation; values from 0 to -180
+ * represent counterclockwise rotation. Values outside this range are added
+ * to or subtracted from 360 to obtain a value within the range.
+ */
+ public rotationZ : number;
+ /**
+ * The current scaling grid that is in effect. If set to null
,
+ * the entire display object is scaled normally when any scale transformation
+ * is applied.
+ *
+ * When you define the scale9Grid
property, the display
+ * object is divided into a grid with nine regions based on the
+ * scale9Grid
rectangle, which defines the center region of the
+ * grid. The eight other regions of the grid are the following areas:
You can think of the eight regions outside of the center(defined by + * the rectangle) as being like a picture frame that has special rules + * applied to it when scaled.
+ * + *When the scale9Grid
property is set and a display object
+ * is scaled, all text and gradients are scaled normally; however, for other
+ * types of objects the following rules apply:
If a display object is rotated, all subsequent scaling is normal(and
+ * the scale9Grid
property is ignored).
For example, consider the following display object and a rectangle that
+ * is applied as the display object's scale9Grid
:
A common use for setting scale9Grid
is to set up a display
+ * object to be used as a component, in which edge regions retain the same
+ * width when the component is scaled.
Scaling the local coordinate system changes the x
and
+ * y
property values, which are defined in whole pixels.
Scaling the local coordinate system changes the x
and
+ * y
property values, which are defined in whole pixels.
Scaling the local coordinate system changes the x
,
+ * y
and z
property values, which are defined in
+ * whole pixels.
x
and y
properties
+ * of the scrollRect
object.
+ *
+ * The properties of the scrollRect
Rectangle object use the
+ * display object's coordinate space and are scaled just like the overall
+ * display object. The corner bounds of the cropped window on the scrolling
+ * display object are the origin of the display object(0,0) and the point
+ * defined by the width and height of the rectangle. They are not centered
+ * around the origin, but use the origin to define the upper-left corner of
+ * the area. A scrolled display object always scrolls in whole pixel
+ * increments.
You can scroll an object left and right by setting the x
+ * property of the scrollRect
Rectangle object. You can scroll
+ * an object up and down by setting the y
property of the
+ * scrollRect
Rectangle object. If the display object is rotated
+ * 90° and you scroll it left and right, the display object actually scrolls
+ * up and down.
concatenatedMatrix
, concatenatedColorTransform
,
+ * and pixelBounds
) - are described in the entry for the
+ * Transform class.
+ *
+ * Each of the transform object's properties is itself an object. This + * concept is important because the only way to set new values for the matrix + * or colorTransform objects is to create a new object and copy that object + * into the transform.matrix or transform.colorTransform property.
+ * + *For example, to increase the tx
value of a display
+ * object's matrix, you must make a copy of the entire matrix object, then
+ * copy the new object into the matrix property of the transform object:
public myMatrix:Matrix =
+ * myDisplayObject.transform.matrix; myMatrix.tx += 10;
+ * myDisplayObject.transform.matrix = myMatrix;
+ *
+ * You cannot directly set the tx
property. The following
+ * code has no effect on myDisplayObject
:
myDisplayObject.transform.matrix.tx +=
+ * 10;
+ *
+ * You can also copy an entire transform object and assign it to another
+ * display object's transform property. For example, the following code
+ * copies the entire transform object from myOldDisplayObj
to
+ * myNewDisplayObj
:
myNewDisplayObj.transform = myOldDisplayObj.transform;
+ *
+ * The resulting display object, myNewDisplayObj
, now has the
+ * same values for its matrix, color transform, and pixel bounds as the old
+ * display object, myOldDisplayObj
.
Note that AIR for TV devices use hardware acceleration, if it is + * available, for color transforms.
+ */ + public transform : Transform; + /** + * Whether or not the display object is visible. Display objects that are not + * visible are disabled. For example, ifvisible=false
for an
+ * InteractiveObject instance, it cannot be clicked.
+ */
+ public visible : boolean;
+ /**
+ * Indicates the width of the display object, in pixels. The width is
+ * calculated based on the bounds of the content of the display object. When
+ * you set the width
property, the scaleX
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content(such as an empty sprite) has a width of 0, even if you try to set
+ * width
to a different value.
When you set a z
property for a display object to
+ * something other than the default value of 0
, a corresponding
+ * Matrix3D object is automatically created. for adjusting a display object's
+ * position and orientation in three dimensions. When working with the
+ * z-axis, the existing behavior of x and y properties changes from screen or
+ * pixel coordinates to positions relative to the 3D parent container.
For example, a child of the _root
at position x = 100, y =
+ * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn
+ * wherever the 3D projection calculation puts it. The calculation is:
(x~~cameraFocalLength/cameraRelativeZPosition,
+ * y~~cameraFocalLength/cameraRelativeZPosition)
DisplayObject
instance.
+ */
+ constructor();
+ /**
+ *
+ */
+ public addEventListener(type: string, listener: Function): void;
+ /**
+ *
+ */
+ public clone(): DisplayObject;
+ /**
+ *
+ */
+ public dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ public disposeAsset(): void;
+ /**
+ * Returns a rectangle that defines the area of the display object relative
+ * to the coordinate system of the targetCoordinateSpace
object.
+ * Consider the following code, which shows how the rectangle returned can
+ * vary depending on the targetCoordinateSpace
parameter that
+ * you pass to the method:
+ *
+ * Note: Use the localToGlobal()
and
+ * globalToLocal()
methods to convert the display object's local
+ * coordinates to display coordinates, or display coordinates to local
+ * coordinates, respectively.
The getBounds()
method is similar to the
+ * getRect()
method; however, the Rectangle returned by the
+ * getBounds()
method includes any strokes on shapes, whereas
+ * the Rectangle returned by the getRect()
method does not. For
+ * an example, see the description of the getRect()
method.
targetCoordinateSpace
object's coordinate
+ * system.
+ */
+ public getBounds(targetCoordinateSpace: DisplayObject): Rectangle;
+ /**
+ * Returns a rectangle that defines the boundary of the display object, based
+ * on the coordinate system defined by the targetCoordinateSpace
+ * parameter, excluding any strokes on shapes. The values that the
+ * getRect()
method returns are the same or smaller than those
+ * returned by the getBounds()
method.
+ *
+ * Note: Use localToGlobal()
and
+ * globalToLocal()
methods to convert the display object's local
+ * coordinates to Stage coordinates, or Stage coordinates to local
+ * coordinates, respectively.
targetCoordinateSpace
object's coordinate
+ * system.
+ */
+ public getRect(targetCoordinateSpace: DisplayObject): Rectangle;
+ /**
+ * Converts the point
object from the Stage(global) coordinates
+ * to the display object's(local) coordinates.
+ *
+ * To use this method, first create an instance of the Point class. The
+ * x and y values that you assign represent global coordinates
+ * because they relate to the origin(0,0) of the main display area. Then
+ * pass the Point instance as the parameter to the
+ * globalToLocal()
method. The method returns a new Point object
+ * with x and y values that relate to the origin of the display
+ * object instead of the origin of the Stage.
To use this method, first create an instance of the Point class. The x
+ * and y values that you assign to the Point object represent global
+ * coordinates because they are relative to the origin(0,0) of the main
+ * display area. Then pass the Point object to the
+ * globalToLocal3D()
method as the point
parameter.
+ * The method returns three-dimensional coordinates as a Vector3D object
+ * containing x
, y
, and z
values that
+ * are relative to the origin of the three-dimensional display object.
obj
display object.
+ *
+ * @param obj The display object to test against.
+ * @return true
if the bounding boxes of the display objects
+ * intersect; false
if not.
+ */
+ public hitTestObject(obj: DisplayObject): boolean;
+ /**
+ * Evaluates the display object to see if it overlaps or intersects with the
+ * point specified by the x
and y
parameters. The
+ * x
and y
parameters specify a point in the
+ * coordinate space of the Stage, not the display object container that
+ * contains the display object(unless that display object container is the
+ * Stage).
+ *
+ * @param x The x coordinate to test against this object.
+ * @param y The y coordinate to test against this object.
+ * @param shapeFlag Whether to check against the actual pixels of the object
+ * (true
) or the bounding box
+ * (false
).
+ * @return true
if the display object overlaps or intersects
+ * with the specified point; false
otherwise.
+ */
+ public hitTestPoint(x: number, y: number, shapeFlag?: boolean): boolean;
+ /**
+ * @inheritDoc
+ */
+ public isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean;
+ /**
+ * Converts a three-dimensional point of the three-dimensional display
+ * object's(local) coordinates to a two-dimensional point in the Stage
+ * (global) coordinates.
+ *
+ * For example, you can only use two-dimensional coordinates(x,y) to draw
+ * with the display.Graphics
methods. To draw a
+ * three-dimensional object, you need to map the three-dimensional
+ * coordinates of a display object to two-dimensional coordinates. First,
+ * create an instance of the Vector3D class that holds the x-, y-, and z-
+ * coordinates of the three-dimensional display object. Then pass the
+ * Vector3D object to the local3DToGlobal()
method as the
+ * point3d
parameter. The method returns a two-dimensional Point
+ * object that can be used with the Graphics API to draw the
+ * three-dimensional object.
ObjectContainer3D
.
+ *
+ * @param target The vector defining the point to be looked at
+ * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred
+ */
+ public lookAt(target: Vector3D, upAxis?: Vector3D): void;
+ /**
+ * Converts the point
object from the display object's(local)
+ * coordinates to the Stage(global) coordinates.
+ *
+ * This method allows you to convert any given x and y + * coordinates from values that are relative to the origin(0,0) of a + * specific display object(local coordinates) to values that are relative to + * the origin of the Stage(global coordinates).
+ * + *To use this method, first create an instance of the Point class. The + * x and y values that you assign represent local coordinates + * because they relate to the origin of the display object.
+ * + *You then pass the Point instance that you created as the parameter to
+ * the localToGlobal()
method. The method returns a new Point
+ * object with x and y values that relate to the origin of the
+ * Stage instead of the origin of the display object.
ObjectContainer3D
.
+ *
+ * @internal
+ */
+ public _iMatrix3D : Matrix3D;
+ /**
+ * @internal
+ */
+ public _iPickingCollisionVO : PickingCollisionVO;
+ /**
+ * @internal
+ */
+ public iSetParent(value: DisplayObjectContainer): void;
+ /**
+ * @protected
+ */
+ public pCreateDefaultBoundingVolume(): BoundingVolumeBase;
+ /**
+ * @protected
+ */
+ public pCreateEntityPartitionNode(): EntityNode;
+ /**
+ * @protected
+ */
+ public pInvalidateBounds(): void;
+ /**
+ * @protected
+ */
+ public pInvalidateSceneTransform(): void;
+ /**
+ * @protected
+ */
+ public pUpdateBounds(): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitMouseEnabled(value: boolean): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitPartition(value: Partition): void;
+ /**
+ * @protected
+ */
+ public _pUpdateImplicitVisibility(value: boolean): void;
+ /**
+ * @protected
+ */
+ public _pUpdateMatrix3D(): void;
+ /**
+ * @protected
+ */
+ public pUpdateSceneTransform(): void;
+ public _iAddRenderable(renderable: IRenderable): IRenderable;
+ public _iRemoveRenderable(renderable: IRenderable): IRenderable;
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ public _iTestCollision(shortestCollisionDistance: number, findClosest: boolean): boolean;
+ /**
+ *
+ */
+ public _iInternalUpdate(): void;
+ /**
+ * @internal
+ */
+ public _iIsVisible(): boolean;
+ /**
+ * @internal
+ */
+ public _iIsMouseEnabled(): boolean;
+ /**
+ * @internal
+ */
+ public _iSetScene(value: Scene): void;
+ /**
+ * @protected
+ */
+ public _pUpdateScene(value: Scene): void;
+ /**
+ * @private
+ */
+ private notifyPositionChanged();
+ /**
+ * @private
+ */
+ private notifyRotationChanged();
+ /**
+ * @private
+ */
+ private notifyScaleChanged();
+ /**
+ * @private
+ */
+ private notifySceneChange();
+ /**
+ * @private
+ */
+ private notifySceneTransformChange();
+ /**
+ * Invalidates the 3D transformation matrix, causing it to be updated upon the next request
+ *
+ * @private
+ */
+ private invalidateMatrix3D();
+ /**
+ * @private
+ */
+ private invalidatePartition();
+ /**
+ * @private
+ */
+ private invalidatePivot();
+ /**
+ * @private
+ */
+ private invalidatePosition();
+ /**
+ * @private
+ */
+ private invalidateRotation();
+ /**
+ * @private
+ */
+ private invalidateScale();
+ }
+ export = DisplayObject;
+
+}
+declare module "awayjs-core/lib/core/base/Geometry" {
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ /**
+ *
+ * Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices,
+ * normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.
+ * A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns
+ * the SubGeometries to its respective TriangleSubMesh objects.
+ *
+ *
+ *
+ * @see away.core.base.SubGeometry
+ * @see away.entities.Mesh
+ *
+ * @class Geometry
+ */
+ class Geometry extends NamedAssetBase implements IAsset {
+ private _subGeometries;
+ public assetType : string;
+ /**
+ * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc.
+ */
+ public subGeometries : SubGeometryBase[];
+ public getSubGeometries(): SubGeometryBase[];
+ /**
+ * Creates a new Geometry object.
+ */
+ constructor();
+ public applyTransformation(transform: Matrix3D): void;
+ /**
+ * Adds a new TriangleSubGeometry object to the list.
+ * @param subGeometry The TriangleSubGeometry object to be added.
+ */
+ public addSubGeometry(subGeometry: SubGeometryBase): void;
+ /**
+ * Removes a new TriangleSubGeometry object from the list.
+ * @param subGeometry The TriangleSubGeometry object to be removed.
+ */
+ public removeSubGeometry(subGeometry: SubGeometryBase): void;
+ /**
+ * Clones the geometry.
+ * @return An exact duplicate of the current Geometry object.
+ */
+ public clone(): Geometry;
+ /**
+ * Scales the geometry.
+ * @param scale The amount by which to scale.
+ */
+ public scale(scale: number): void;
+ /**
+ * Clears all resources used by the Geometry object, including SubGeometries.
+ */
+ public dispose(): void;
+ /**
+ * Scales the uv coordinates (tiling)
+ * @param scaleU The amount by which to scale on the u axis. Default is 1;
+ * @param scaleV The amount by which to scale on the v axis. Default is 1;
+ */
+ public scaleUV(scaleU?: number, scaleV?: number): void;
+ public iInvalidateBounds(subGeom: SubGeometryBase): void;
+ }
+ export = Geometry;
+
+}
+declare module "awayjs-core/lib/core/base/GradientType" {
+ /**
+ * The GradientType class provides values for the type
parameter
+ * in the beginGradientFill()
and
+ * lineGradientStyle()
methods of the flash.display.Graphics
+ * class.
+ */
+ class GradientType {
+ /**
+ * Value used to specify a linear gradient fill.
+ */
+ static LINEAR: string;
+ /**
+ * Value used to specify a radial gradient fill.
+ */
+ static RADIAL: string;
+ }
+ export = GradientType;
+
+}
+declare module "awayjs-core/lib/core/base/Graphics" {
+ import BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+ import CapsStyle = require("awayjs-core/lib/core/base/CapsStyle");
+ import GradientType = require("awayjs-core/lib/core/base/GradientType");
+ import GraphicsPathWinding = require("awayjs-core/lib/core/base/GraphicsPathWinding");
+ import IGraphicsData = require("awayjs-core/lib/core/base/IGraphicsData");
+ import InterpolationMethod = require("awayjs-core/lib/core/base/InterpolationMethod");
+ import JointStyle = require("awayjs-core/lib/core/base/JointStyle");
+ import LineScaleMode = require("awayjs-core/lib/core/base/LineScaleMode");
+ import TriangleCulling = require("awayjs-core/lib/core/base/TriangleCulling");
+ import SpreadMethod = require("awayjs-core/lib/core/base/SpreadMethod");
+ import Matrix = require("awayjs-core/lib/core/geom/Matrix");
+ /**
+ * The Graphics class contains a set of methods that you can use to create a
+ * vector shape. Display objects that support drawing include Sprite and Shape
+ * objects. Each of these classes includes a graphics
property
+ * that is a Graphics object. The following are among those helper functions
+ * provided for ease of use: drawRect()
,
+ * drawRoundRect()
, drawCircle()
, and
+ * drawEllipse()
.
+ *
+ * You cannot create a Graphics object directly from ActionScript code. If
+ * you call new Graphics()
, an exception is thrown.
The Graphics class is final; it cannot be subclassed.
+ */ + class Graphics { + /** + * Fills a drawing area with a bitmap image. The bitmap can be repeated or + * tiled to fill the area. The fill remains in effect until you call the + *beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
true
, the bitmap image repeats in a tiled
+ * pattern. If false
, the bitmap image does not
+ * repeat, and the edges of the bitmap are used for any fill
+ * area that extends beyond the bitmap.
+ *
+ * For example, consider the following bitmap(a 20 x + * 20-pixel checkerboard pattern):
+ * + *When repeat
is set to true
(as
+ * in the following example), the bitmap fill repeats the
+ * bitmap:
When repeat
is set to false
,
+ * the bitmap fill uses the edge pixels for the fill area
+ * outside the bitmap:
false
, upscaled bitmap images are rendered
+ * by using a nearest-neighbor algorithm and look pixelated. If
+ * true
, upscaled bitmap images are rendered by
+ * using a bilinear algorithm. Rendering by using the nearest
+ * neighbor algorithm is faster.
+ */
+ public beginBitmapFill(bitmap: BitmapData, matrix?: Matrix, repeat?: boolean, smooth?: boolean): void;
+ /**
+ * Specifies a simple one-color fill that subsequent calls to other Graphics
+ * methods(such as lineTo()
or drawCircle()
) use
+ * when drawing. The fill remains in effect until you call the
+ * beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
lineTo()
or drawCircle()
) for
+ * the object. The fill remains in effect until you call the
+ * beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
GradientType.LINEAR
or
+ * GradientType.RADIAL
.
+ * @param colors An array of RGB hexadecimal color values used
+ * in the gradient; for example, red is 0xFF0000,
+ * blue is 0x0000FF, and so on. You can specify
+ * up to 15 colors. For each color, specify a
+ * corresponding value in the alphas and ratios
+ * parameters.
+ * @param alphas An array of alpha values for the corresponding
+ * colors in the colors array; valid values are 0
+ * to 1. If the value is less than 0, the default
+ * is 0. If the value is greater than 1, the
+ * default is 1.
+ * @param ratios An array of color distribution ratios; valid
+ * values are 0-255. This value defines the
+ * percentage of the width where the color is
+ * sampled at 100%. The value 0 represents the
+ * left position in the gradient box, and 255
+ * represents the right position in the gradient
+ * box.
+ * @param matrix A transformation matrix as defined by the
+ * flash.geom.Matrix class. The flash.geom.Matrix
+ * class includes a
+ * createGradientBox()
method, which
+ * lets you conveniently set up the matrix for use
+ * with the beginGradientFill()
+ * method.
+ * @param spreadMethod A value from the SpreadMethod class that
+ * specifies which spread method to use, either:
+ * SpreadMethod.PAD
,
+ * SpreadMethod.REFLECT
, or
+ * SpreadMethod.REPEAT
.
+ *
+ * For example, consider a simple linear + * gradient between two colors:
+ * + *This example uses
+ * SpreadMethod.PAD
for the spread
+ * method, and the gradient fill looks like the
+ * following:
If you use SpreadMethod.REFLECT
+ * for the spread method, the gradient fill looks
+ * like the following:
If you use SpreadMethod.REPEAT
+ * for the spread method, the gradient fill looks
+ * like the following:
InterpolationMethod.LINEAR_RGB
or
+ * InterpolationMethod.RGB
+ *
+ * For example, consider a simple linear
+ * gradient between two colors(with the
+ * spreadMethod
parameter set to
+ * SpreadMethod.REFLECT
). The
+ * different interpolation methods affect the
+ * appearance as follows:
focalPointRatio
set to 0.75:
+ * @throws ArgumentError If the type
parameter is not valid.
+ */
+ public beginGradientFill(type: GradientType, colors: number[], alphas: number[], ratios: number[], matrix?: Matrix, spreadMethod?: string, interpolationMethod?: string, focalPointRatio?: number): void;
+ /**
+ * Clears the graphics that were drawn to this Graphics object, and resets
+ * fill and line style settings.
+ *
+ */
+ public clear(): void;
+ /**
+ * Copies all of drawing commands from the source Graphics object into the
+ * calling Graphics object.
+ *
+ * @param sourceGraphics The Graphics object from which to copy the drawing
+ * commands.
+ */
+ public copyFrom(sourceGraphics: Graphics): void;
+ /**
+ * Draws a cubic Bezier curve from the current drawing position to the
+ * specified anchor point. Cubic Bezier curves consist of two anchor points
+ * and two control points. The curve interpolates the two anchor points and
+ * curves toward the two control points.
+ *
+ * The four points you use to draw a cubic Bezier curve with the
+ * cubicCurveTo()
method are as follows:
+ *
+ * controlX1
and controlY1
parameters
+ * specify the first control point.controlX2
and controlY2
parameters
+ * specify the second control point.cubicCurveTo()
method before calling the
+ * moveTo()
method, your curve starts at position (0, 0).
+ *
+ * If the cubicCurveTo()
method succeeds, the Flash runtime sets
+ * the current drawing position to (anchorX
,
+ * anchorY
). If the cubicCurveTo()
method fails,
+ * the current drawing position remains unchanged.
+ *
+ * If your movie clip contains content created with the Flash drawing tools,
+ * the results of calls to the cubicCurveTo()
method are drawn
+ * underneath that content.
+ *
+ * @param controlX1 Specifies the horizontal position of the first control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlY1 Specifies the vertical position of the first control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlX2 Specifies the horizontal position of the second control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlY2 Specifies the vertical position of the second control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param anchorX Specifies the horizontal position of the anchor point
+ * relative to the registration point of the parent display
+ * object.
+ * @param anchorY Specifies the vertical position of the anchor point
+ * relative to the registration point of the parent display
+ * object.
+ */
+ public cubicCurveTo(controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number): void;
+ /**
+ * Draws a curve using the current line style from the current drawing
+ * position to(anchorX, anchorY) and using the control point that
+ * (controlX
, controlY
) specifies. The current
+ * drawing position is then set to(anchorX
,
+ * anchorY
). If the movie clip in which you are drawing contains
+ * content created with the Flash drawing tools, calls to the
+ * curveTo()
method are drawn underneath this content. If you
+ * call the curveTo()
method before any calls to the
+ * moveTo()
method, the default of the current drawing position
+ * is(0, 0). If any of the parameters are missing, this method fails and the
+ * current drawing position is not changed.
+ *
+ * The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves + * consist of two anchor points and one control point. The curve interpolates + * the two anchor points and curves toward the control point.
+ * + * @param controlX A number that specifies the horizontal position of the + * control point relative to the registration point of the + * parent display object. + * @param controlY A number that specifies the vertical position of the + * control point relative to the registration point of the + * parent display object. + * @param anchorX A number that specifies the horizontal position of the + * next anchor point relative to the registration point of + * the parent display object. + * @param anchorY A number that specifies the vertical position of the next + * anchor point relative to the registration point of the + * parent display object. + */ + public curveTo(controlX: number, controlY: number, anchorX: number, anchorY: number): void; + /** + * Draws a circle. Set the line style, fill, or both before you call the + *drawCircle()
method, by calling the linestyle()
,
+ * lineGradientStyle()
, beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method.
+ *
+ * @param x The x location of the center of the circle relative
+ * to the registration point of the parent display object(in
+ * pixels).
+ * @param y The y location of the center of the circle relative
+ * to the registration point of the parent display object(in
+ * pixels).
+ * @param radius The radius of the circle(in pixels).
+ */
+ public drawCircle(x: number, y: number, radius: number): void;
+ /**
+ * Draws an ellipse. Set the line style, fill, or both before you call the
+ * drawEllipse()
method, by calling the
+ * linestyle()
, lineGradientStyle()
,
+ * beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method.
+ *
+ * @param x The x location of the top-left of the bounding-box of
+ * the ellipse relative to the registration point of the parent
+ * display object(in pixels).
+ * @param y The y location of the top left of the bounding-box of
+ * the ellipse relative to the registration point of the parent
+ * display object(in pixels).
+ * @param width The width of the ellipse(in pixels).
+ * @param height The height of the ellipse(in pixels).
+ */
+ public drawEllipse(x: number, y: number, width: number, height: number): void;
+ /**
+ * Submits a series of IGraphicsData instances for drawing. This method
+ * accepts a Vector containing objects including paths, fills, and strokes
+ * that implement the IGraphicsData interface. A Vector of IGraphicsData
+ * instances can refer to a part of a shape, or a complex fully defined set
+ * of data for rendering a complete shape.
+ *
+ * Graphics paths can contain other graphics paths. If the
+ * graphicsData
Vector includes a path, that path and all its
+ * sub-paths are rendered during this operation.
drawPath()
+ * method uses vector arrays to consolidate individual moveTo()
,
+ * lineTo()
, and curveTo()
drawing commands into a
+ * single call. The drawPath()
method parameters combine drawing
+ * commands with x- and y-coordinate value pairs and a drawing direction. The
+ * drawing commands are values from the GraphicsPathCommand class. The x- and
+ * y-coordinate value pairs are Numbers in an array where each pair defines a
+ * coordinate location. The drawing direction is a value from the
+ * GraphicsPathWinding class.
+ *
+ * Generally, drawings render faster with drawPath()
than
+ * with a series of individual lineTo()
and
+ * curveTo()
methods.
The drawPath()
method uses a uses a floating computation
+ * so rotation and scaling of shapes is more accurate and gives better
+ * results. However, curves submitted using the drawPath()
+ * method can have small sub-pixel alignment errors when used in conjunction
+ * with the lineTo()
and curveTo()
methods.
The drawPath()
method also uses slightly different rules
+ * for filling and drawing lines. They are:
drawRect()
method, by calling the linestyle()
,
+ * lineGradientStyle()
, beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method.
+ *
+ * @param x A number indicating the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number indicating the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param width The width of the rectangle(in pixels).
+ * @param height The height of the rectangle(in pixels).
+ * @throws ArgumentError If the width
or height
+ * parameters are not a number
+ * (Number.NaN
).
+ */
+ public drawRect(x: number, y: number, width: number, height: number): void;
+ /**
+ * Draws a rounded rectangle. Set the line style, fill, or both before you
+ * call the drawRoundRect()
method, by calling the
+ * linestyle()
, lineGradientStyle()
,
+ * beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method.
+ *
+ * @param x A number indicating the horizontal position relative
+ * to the registration point of the parent display
+ * object(in pixels).
+ * @param y A number indicating the vertical position relative to
+ * the registration point of the parent display object
+ * (in pixels).
+ * @param width The width of the round rectangle(in pixels).
+ * @param height The height of the round rectangle(in pixels).
+ * @param ellipseWidth The width of the ellipse used to draw the rounded
+ * corners(in pixels).
+ * @param ellipseHeight The height of the ellipse used to draw the rounded
+ * corners(in pixels). Optional; if no value is
+ * specified, the default value matches that provided
+ * for the ellipseWidth
parameter.
+ * @throws ArgumentError If the width
, height
,
+ * ellipseWidth
or
+ * ellipseHeight
parameters are not a
+ * number(Number.NaN
).
+ */
+ public drawRoundRect(x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight?: number): void;
+ /**
+ * Renders a set of triangles, typically to distort bitmaps and give them a
+ * three-dimensional appearance. The drawTriangles()
method maps
+ * either the current fill, or a bitmap fill, to the triangle faces using a
+ * set of(u,v) coordinates.
+ *
+ * Any type of fill can be used, but if the fill has a transform matrix + * that transform matrix is ignored.
+ * + * A uvtData
parameter improves texture mapping when a
+ * bitmap fill is used.
beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method. Flash uses the fill that was
+ * specified in the previous call to the beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method. If the current drawing position does not equal the previous
+ * position specified in a moveTo()
method and a fill is
+ * defined, the path is closed with a line and then filled.
+ *
+ */
+ public endFill(): void;
+ /**
+ * Specifies a bitmap to use for the line stroke when drawing lines.
+ *
+ * The bitmap line style is used for subsequent calls to Graphics methods
+ * such as the lineTo()
method or the drawCircle()
+ * method. The line style remains in effect until you call the
+ * lineStyle()
or lineGradientStyle()
methods, or
+ * the lineBitmapStyle()
method again with different parameters.
+ *
You can call the lineBitmapStyle()
method in the middle of
+ * drawing a path to specify different styles for different line segments
+ * within a path.
Call the lineStyle()
method before you call the
+ * lineBitmapStyle()
method to enable a stroke, or else the
+ * value of the line style is undefined
.
Calls to the clear()
method set the line style back to
+ * undefined
.
The gradient line style is used for subsequent calls to Graphics
+ * methods such as the lineTo()
methods or the
+ * drawCircle()
method. The line style remains in effect until
+ * you call the lineStyle()
or lineBitmapStyle()
+ * methods, or the lineGradientStyle()
method again with
+ * different parameters.
You can call the lineGradientStyle()
method in the middle
+ * of drawing a path to specify different styles for different line segments
+ * within a path.
Call the lineStyle()
method before you call the
+ * lineGradientStyle()
method to enable a stroke, or else the
+ * value of the line style is undefined
.
Calls to the clear()
method set the line style back to
+ * undefined
.
createGradientBox()
method, which
+ * lets you conveniently set up the matrix for use
+ * with the lineGradientStyle()
+ * method.
+ * @param spreadMethod A value from the SpreadMethod class that
+ * specifies which spread method to use:
+ * @param interpolationMethod A value from the InterpolationMethod class that
+ * specifies which value to use. For example,
+ * consider a simple linear gradient between two
+ * colors(with the spreadMethod
+ * parameter set to
+ * SpreadMethod.REFLECT
). The
+ * different interpolation methods affect the
+ * appearance as follows:
+ * @param focalPointRatio A number that controls the location of the
+ * focal point of the gradient. The value 0 means
+ * the focal point is in the center. The value 1
+ * means the focal point is at one border of the
+ * gradient circle. The value -1 means that the
+ * focal point is at the other border of the
+ * gradient circle. Values less than -1 or greater
+ * than 1 are rounded to -1 or 1. The following
+ * image shows a gradient with a
+ * focalPointRatio
of -0.75:
+ */
+ public lineGradientStyle(type: GradientType, colors: number[], alphas: number[], ratios: number[], matrix?: Matrix, spreadMethod?: SpreadMethod, interpolationMethod?: InterpolationMethod, focalPointRatio?: number): void;
+ /**
+ * Specifies a line style used for subsequent calls to Graphics methods such
+ * as the lineTo()
method or the drawCircle()
+ * method. The line style remains in effect until you call the
+ * lineGradientStyle()
method, the
+ * lineBitmapStyle()
method, or the lineStyle()
+ * method with different parameters.
+ *
+ * You can call the lineStyle()
method in the middle of
+ * drawing a path to specify different styles for different line segments
+ * within the path.
Note: Calls to the clear()
method set the line
+ * style back to undefined
.
Note: Flash Lite 4 supports only the first three parameters
+ * (thickness
, color
, and alpha
).
pixelHinting
set to true
,
+ * line widths are adjusted to full pixel widths. With
+ * pixelHinting
set to false
,
+ * disjoints can appear for curves and straight lines.
+ * For example, the following illustrations show how
+ * Flash Player or Adobe AIR renders two rounded
+ * rectangles that are identical, except that the
+ * pixelHinting
parameter used in the
+ * lineStyle()
method is set differently
+ * (the images are scaled by 200%, to emphasize the
+ * difference):
+ *
+ * If a value is not supplied, the line does not use + * pixel hinting.
+ * @param scaleMode (Not supported in Flash Lite 4) A value from the + * LineScaleMode class that specifies which scale mode to + * use: + *LineScaleMode.NORMAL
- Always
+ * scale the line thickness when the object is scaled
+ * (the default). LineScaleMode.NONE
- Never scale
+ * the line thickness. LineScaleMode.VERTICAL
- Do not
+ * scale the line thickness if the object is scaled
+ * vertically only. For example, consider the
+ * following circles, drawn with a one-pixel line, and
+ * each with the scaleMode
parameter set to
+ * LineScaleMode.VERTICAL
. The circle on the
+ * left is scaled vertically only, and the circle on the
+ * right is scaled both vertically and horizontally:
+ * LineScaleMode.HORIZONTAL
- Do not
+ * scale the line thickness if the object is scaled
+ * horizontally only. For example, consider the
+ * following circles, drawn with a one-pixel line, and
+ * each with the scaleMode
parameter set to
+ * LineScaleMode.HORIZONTAL
. The circle on
+ * the left is scaled horizontally only, and the circle
+ * on the right is scaled both vertically and
+ * horizontally: CapsStyle.NONE
,
+ * CapsStyle.ROUND
, and
+ * CapsStyle.SQUARE
. If a value is not
+ * indicated, Flash uses round caps.
+ *
+ * For example, the following illustrations show the
+ * different capsStyle
settings. For each
+ * setting, the illustration shows a blue line with a
+ * thickness of 30(for which the capsStyle
+ * applies), and a superimposed black line with a
+ * thickness of 1(for which no capsStyle
+ * applies):
JointStyle.BEVEL
,
+ * JointStyle.MITER
, and
+ * JointStyle.ROUND
. If a value is not
+ * indicated, Flash uses round joints.
+ *
+ * For example, the following illustrations show the
+ * different joints
settings. For each
+ * setting, the illustration shows an angled blue line
+ * with a thickness of 30(for which the
+ * jointStyle
applies), and a superimposed
+ * angled black line with a thickness of 1(for which no
+ * jointStyle
applies):
Note: For joints
set to
+ * JointStyle.MITER
, you can use the
+ * miterLimit
parameter to limit the length
+ * of the miter.
jointStyle
is set to
+ * "miter"
. The miterLimit
+ * value represents the length that a miter can extend
+ * beyond the point at which the lines meet to form a
+ * joint. The value expresses a factor of the line
+ * thickness
. For example, with a
+ * miterLimit
factor of 2.5 and a
+ * thickness
of 10 pixels, the miter is cut
+ * off at 25 pixels.
+ *
+ * For example, consider the following angled lines,
+ * each drawn with a thickness
of 20, but
+ * with miterLimit
set to 1, 2, and 4.
+ * Superimposed are black reference lines showing the
+ * meeting points of the joints:
Notice that a given miterLimit
value
+ * has a specific maximum angle for which the miter is
+ * cut off. The following table lists some examples:
x
, y
); the current drawing position
+ * is then set to(x
, y
). If the display object in
+ * which you are drawing contains content that was created with the Flash
+ * drawing tools, calls to the lineTo()
method are drawn
+ * underneath the content. If you call lineTo()
before any calls
+ * to the moveTo()
method, the default position for the current
+ * drawing is(0, 0). If any of the parameters are missing, this
+ * method fails and the current drawing position is not changed.
+ *
+ * @param x A number that indicates the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number that indicates the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ */
+ public lineTo(x: number, y: number): void;
+ /**
+ * Moves the current drawing position to(x
, y
). If
+ * any of the parameters are missing, this method fails and the current
+ * drawing position is not changed.
+ *
+ * @param x A number that indicates the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number that indicates the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ */
+ public moveTo(x: number, y: number): void;
+ }
+ export = Graphics;
+
+}
+declare module "awayjs-core/lib/core/base/GraphicsPathWinding" {
+ /**
+ * The GraphicsPathWinding class provides values for the
+ * flash.display.GraphicsPath.winding
property and the
+ * flash.display.Graphics.drawPath()
method to determine the
+ * direction to draw a path. A clockwise path is positively wound, and a
+ * counter-clockwise path is negatively wound:
+ *
+ * When paths intersect or overlap, the winding direction determines the + * rules for filling the areas created by the intersection or overlap:
+ */ + class GraphicsPathWinding { + static EVEN_ODD: string; + static NON_ZERO: string; + } + export = GraphicsPathWinding; + +} +declare module "awayjs-core/lib/core/base/IBitmapDrawable" { + /** + * The IBitmapDrawable interface is implemented by objects that can be passed as the + * source parameter of thedraw()
method of the BitmapData class. These
+ * objects are of type BitmapData or DisplayObject.
+ *
+ * @see away.base.BitmapData#draw()
+ * @see away.base.BitmapData
+ * @see away.base.DisplayObject
+ */
+ interface IBitmapDrawable {
+ }
+ export = IBitmapDrawable;
+
+}
+declare module "awayjs-core/lib/core/base/IGraphicsData" {
+ /**
+ * This interface is used to define objects that can be used as parameters in the
+ * away.base.Graphics
methods, including fills, strokes, and paths. Use
+ * the implementor classes of this interface to create and manage drawing property
+ * data, and to reuse the same data for different instances. Then, use the methods of
+ * the Graphics class to render the drawing objects.
+ *
+ * @see away.base.Graphics.drawGraphicsData()
+ * @see away.base.Graphics.readGraphicsData()
+ */
+ interface IGraphicsData {
+ }
+ export = IGraphicsData;
+
+}
+declare module "awayjs-core/lib/core/base/IMaterialOwner" {
+ import IAnimator = require("awayjs-core/lib/animators/IAnimator");
+ import UVTransform = require("awayjs-core/lib/core/geom/UVTransform");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * IMaterialOwner provides an interface for objects that can use materials.
+ *
+ * @interface away.base.IMaterialOwner
+ */
+ interface IMaterialOwner extends IAsset {
+ /**
+ * The animation used by the material owner to assemble the vertex code.
+ */
+ animator: IAnimator;
+ /**
+ * The material with which to render the object.
+ */
+ material: MaterialBase;
+ /**
+ *
+ */
+ uvTransform: UVTransform;
+ /**
+ *
+ * @param renderable
+ * @private
+ */
+ _iAddRenderable(renderable: IRenderable): IRenderable;
+ /**
+ *
+ * @param renderable
+ * @private
+ */
+ _iRemoveRenderable(renderable: IRenderable): IRenderable;
+ /**
+ *
+ * @param renderer
+ * @private
+ */
+ _iCollectRenderable(renderer: IRenderer): any;
+ }
+ export = IMaterialOwner;
+
+}
+declare module "awayjs-core/lib/core/base/IStage" {
+ /**
+ * The IStage interface is implemented by objects that control the rendering context
+ * of the AwayJS Stage area
+ *
+ */
+ interface IStage {
+ }
+ export = IStage;
+
+}
+declare module "awayjs-core/lib/core/base/ISubMesh" {
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * ISubMesh is an interface for object SubMesh that is used to
+ * apply a material to a SubGeometry class
+ *
+ * @class away.base.ISubMesh
+ */
+ interface ISubMesh extends IMaterialOwner {
+ subGeometry: SubGeometryBase;
+ parentMesh: Mesh;
+ _iIndex: number;
+ _iInvalidateRenderableGeometry(): any;
+ _iGetExplicitMaterial(): MaterialBase;
+ }
+ export = ISubMesh;
+
+}
+declare module "awayjs-core/lib/core/base/ISubMeshClass" {
+ import ISubMesh = require("awayjs-core/lib/core/base/ISubMesh");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * ISubMeshClass is an interface for the constructable class definition ISubMesh that is used to
+ * apply a material to a SubGeometry class
+ *
+ * @class away.base.ISubMeshClass
+ */
+ interface ISubMeshClass {
+ /**
+ *
+ */
+ new(subGeometry: SubGeometryBase, parentMesh: Mesh, material?: MaterialBase): ISubMesh;
+ }
+ export = ISubMeshClass;
+
+}
+declare module "awayjs-core/lib/core/base/InterpolationMethod" {
+ /**
+ * The InterpolationMethod class provides values for the
+ * interpolationMethod
parameter in the
+ * Graphics.beginGradientFill()
and
+ * Graphics.lineGradientStyle()
methods. This parameter
+ * determines the RGB space to use when rendering the gradient.
+ */
+ class InterpolationMethod {
+ /**
+ * Specifies that the RGB interpolation method should be used. This means
+ * that the gradient is rendered with exponential sRGB(standard RGB) space.
+ * The sRGB space is a W3C-endorsed standard that defines a non-linear
+ * conversion between red, green, and blue component values and the actual
+ * intensity of the visible component color.
+ *
+ * For example, consider a simple linear gradient between two colors(with
+ * the spreadMethod
parameter set to
+ * SpreadMethod.REFLECT
). The different interpolation methods
+ * affect the appearance as follows:
For example, consider a simple linear gradient between two colors(with
+ * the spreadMethod
parameter set to
+ * SpreadMethod.REFLECT
). The different interpolation methods
+ * affect the appearance as follows:
joints
parameter of the
+ * flash.display.Graphics.lineStyle()
method. The method supports
+ * three types of joints: miter, round, and bevel, as the following example
+ * shows:
+ */
+ class JointStyle {
+ /**
+ * Specifies beveled joints in the joints
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static BEVEL: string;
+ /**
+ * Specifies mitered joints in the joints
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static MITER: string;
+ /**
+ * Specifies round joints in the joints
parameter of the
+ * flash.display.Graphics.lineStyle()
method.
+ */
+ static ROUND: string;
+ }
+ export = JointStyle;
+
+}
+declare module "awayjs-core/lib/core/base/LightBase" {
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import ShadowMapperBase = require("awayjs-core/lib/materials/shadowmappers/ShadowMapperBase");
+ class LightBase extends DisplayObjectContainer {
+ private _color;
+ private _colorR;
+ private _colorG;
+ private _colorB;
+ private _ambientColor;
+ private _ambient;
+ public _iAmbientR: number;
+ public _iAmbientG: number;
+ public _iAmbientB: number;
+ private _specular;
+ public _iSpecularR: number;
+ public _iSpecularG: number;
+ public _iSpecularB: number;
+ private _diffuse;
+ public _iDiffuseR: number;
+ public _iDiffuseG: number;
+ public _iDiffuseB: number;
+ private _castsShadows;
+ private _shadowMapper;
+ constructor();
+ public castsShadows : boolean;
+ public pCreateShadowMapper(): ShadowMapperBase;
+ public specular : number;
+ public diffuse : number;
+ public color : number;
+ public ambient : number;
+ public ambientColor : number;
+ private updateAmbient();
+ public iGetObjectProjectionMatrix(entity: IEntity, camera: Camera, target?: Matrix3D): Matrix3D;
+ public assetType : string;
+ private updateSpecular();
+ private updateDiffuse();
+ public shadowMapper : ShadowMapperBase;
+ }
+ export = LightBase;
+
+}
+declare module "awayjs-core/lib/core/base/LineScaleMode" {
+ /**
+ * The LineScaleMode class provides values for the scaleMode
+ * parameter in the Graphics.lineStyle()
method.
+ */
+ class LineScaleMode {
+ /**
+ * With this setting used as the scaleMode
parameter of the
+ * lineStyle()
method, the thickness of the line scales
+ * only vertically. For example, consider the following circles, drawn
+ * with a one-pixel line, and each with the scaleMode
parameter
+ * set to LineScaleMode.VERTICAL
. The circle on the left is
+ * scaled only vertically, and the circle on the right is scaled both
+ * vertically and horizontally.
+ */
+ static HORIZONTAL: string;
+ /**
+ * With this setting used as the scaleMode
parameter of the
+ * lineStyle()
method, the thickness of the line never scales.
+ */
+ static NONE: string;
+ /**
+ * With this setting used as the scaleMode
parameter of the
+ * lineStyle()
method, the thickness of the line always scales
+ * when the object is scaled(the default).
+ */
+ static NORMAL: string;
+ /**
+ * With this setting used as the scaleMode
parameter of the
+ * lineStyle()
method, the thickness of the line scales
+ * only horizontally. For example, consider the following circles,
+ * drawn with a one-pixel line, and each with the scaleMode
+ * parameter set to LineScaleMode.HORIZONTAL
. The circle on the
+ * left is scaled only horizontally, and the circle on the right is scaled
+ * both vertically and horizontally.
+ */
+ static VERTICAL: string;
+ }
+ export = LineScaleMode;
+
+}
+declare module "awayjs-core/lib/core/base/LineSubGeometry" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+ /**
+ * @class LineSubGeometry
+ */
+ class LineSubGeometry extends SubGeometryBase {
+ static VERTEX_DATA: string;
+ static START_POSITION_DATA: string;
+ static END_POSITION_DATA: string;
+ static THICKNESS_DATA: string;
+ static COLOR_DATA: string;
+ static POSITION_FORMAT: string;
+ static COLOR_FORMAT: string;
+ static THICKNESS_FORMAT: string;
+ private _positionsDirty;
+ private _boundingPositionDirty;
+ private _thicknessDirty;
+ private _colorsDirty;
+ private _startPositions;
+ private _endPositions;
+ private _boundingPositions;
+ private _thickness;
+ private _startColors;
+ private _endColors;
+ private _numSegments;
+ private _positionsUpdated;
+ private _thicknessUpdated;
+ private _colorUpdated;
+ public _pUpdateStrideOffset(): void;
+ /**
+ *
+ */
+ public vertices : number[];
+ /**
+ *
+ */
+ public startPositions : number[];
+ /**
+ *
+ */
+ public endPositions : number[];
+ /**
+ *
+ */
+ public thickness : number[];
+ /**
+ *
+ */
+ public startColors : number[];
+ /**
+ *
+ */
+ public endColors : number[];
+ /**
+ * The total amount of segments in the TriangleSubGeometry.
+ */
+ public numSegments : number;
+ /**
+ *
+ */
+ constructor();
+ public getBoundingPositions(): number[];
+ /**
+ *
+ */
+ public updatePositions(startValues: number[], endValues: number[]): void;
+ /**
+ * Updates the thickness.
+ */
+ public updateThickness(values: number[]): void;
+ /**
+ *
+ */
+ public updateColors(startValues: number[], endValues: number[]): void;
+ /**
+ *
+ */
+ public dispose(): void;
+ /**
+ * @protected
+ */
+ public pInvalidateBounds(): void;
+ /**
+ * The Geometry object that 'owns' this TriangleSubGeometry object.
+ *
+ * @private
+ */
+ public parentGeometry: Geometry;
+ /**
+ * Clones the current object
+ * @return An exact duplicate of the current object.
+ */
+ public clone(): LineSubGeometry;
+ public _pNotifyVerticesUpdate(): void;
+ private notifyPositionsUpdate();
+ private notifyThicknessUpdate();
+ private notifyColorsUpdate();
+ }
+ export = LineSubGeometry;
+
+}
+declare module "awayjs-core/lib/core/base/LineSubMesh" {
+ import ISubMesh = require("awayjs-core/lib/core/base/ISubMesh");
+ import LineSubGeometry = require("awayjs-core/lib/core/base/LineSubGeometry");
+ import SubMeshBase = require("awayjs-core/lib/core/base/SubMeshBase");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ /**
+ * LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.
+ *
+ *
+ * @see away.base.LineSubGeometry
+ * @see away.entities.Mesh
+ *
+ * @class away.base.LineSubMesh
+ */
+ class LineSubMesh extends SubMeshBase implements ISubMesh {
+ private _subGeometry;
+ /**
+ *
+ */
+ public assetType : string;
+ /**
+ * The LineSubGeometry object which provides the geometry data for this LineSubMesh.
+ */
+ public subGeometry : LineSubGeometry;
+ /**
+ * Creates a new LineSubMesh object
+ * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.
+ * @param parentMesh The Mesh object to which this LineSubMesh belongs.
+ * @param material An optional material used to render this LineSubMesh.
+ */
+ constructor(subGeometry: LineSubGeometry, parentMesh: Mesh, material?: MaterialBase);
+ /**
+ *
+ */
+ public dispose(): void;
+ public _iCollectRenderable(renderer: IRenderer): void;
+ }
+ export = LineSubMesh;
+
+}
+declare module "awayjs-core/lib/core/base/LoaderInfo" {
+ import Loader = require("awayjs-core/lib/containers/Loader");
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ import ByteArray = require("awayjs-core/lib/utils/ByteArray");
+ /**
+ * The LoaderInfo class provides information about a loaded SWF file or a
+ * loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for
+ * any display object. The information provided includes load progress, the
+ * URLs of the loader and loaded content, the number of bytes total for the
+ * media, and the nominal height and width of the media.
+ *
+ * You can access LoaderInfo objects in two ways:
+ * + *contentLoaderInfo
property of a flash.display.Loader
+ * object - The contentLoaderInfo
property is always available
+ * for any Loader object. For a Loader object that has not called the
+ * load()
or loadBytes()
method, or that has not
+ * sufficiently loaded, attempting to access many of the properties of the
+ * contentLoaderInfo
property throws an error.loaderInfo
property of a display object. The contentLoaderInfo
property of a Loader object provides
+ * information about the content that the Loader object is loading, whereas
+ * the loaderInfo
property of a DisplayObject provides
+ * information about the root SWF file for that display object.
When you use a Loader object to load a display object(such as a SWF
+ * file or a bitmap), the loaderInfo
property of the display
+ * object is the same as the contentLoaderInfo
property of the
+ * Loader object(DisplayObject.loaderInfo =
+ * Loader.contentLoaderInfo
). Because the instance of the main class of
+ * the SWF file has no Loader object, the loaderInfo
property is
+ * the only way to access the LoaderInfo for the instance of the main class of
+ * the SWF file.
The following diagram shows the different uses of the LoaderInfo
+ * object - for the instance of the main class of the SWF file, for the
+ * contentLoaderInfo
property of a Loader object, and for the
+ * loaderInfo
property of a loaded object:
When a loading operation is not complete, some properties of the
+ * contentLoaderInfo
property of a Loader object are not
+ * available. You can obtain some properties, such as
+ * bytesLoaded
, bytesTotal
, url
,
+ * loaderURL
, and applicationDomain
. When the
+ * loaderInfo
object dispatches the init
event, you
+ * can access all properties of the loaderInfo
object and the
+ * loaded image or SWF file.
Note: All properties of LoaderInfo objects are read-only.
+ * + *The EventDispatcher.dispatchEvent()
method is not
+ * applicable to LoaderInfo objects. If you call dispatchEvent()
+ * on a LoaderInfo object, an IllegalOperationError exception is thrown.
complete
event is always dispatched after
+ * the init
event. The init
event
+ * is dispatched when the object is ready to access, though
+ * the content may still be downloading.
+ * @event httpStatus Dispatched when a network request is made over HTTP and
+ * an HTTP status code can be detected.
+ * @event init Dispatched when the properties and methods of a loaded
+ * SWF file are accessible and ready for use. The content,
+ * however, can still be downloading. A LoaderInfo object
+ * dispatches the init
event when the following
+ * conditions exist:
+ * For example, an Event.INIT
is dispatched
+ * when the first frame of a movie or animation is loaded.
+ * The movie is then accessible and can be added to the
+ * display list. The complete movie, however, can take
+ * longer to download. The Event.COMPLETE
is
+ * only dispatched once the full movie is loaded.
The init
event always precedes the
+ * complete
event.
unload()
+ * method of the Loader object, or when a second load is
+ * performed by the same Loader object and the original
+ * content is removed prior to the load beginning.
+ */
+ class LoaderInfo extends EventDispatcher {
+ private _bytes;
+ private _bytesLoaded;
+ private _bytesTotal;
+ private _content;
+ private _contentType;
+ private _loader;
+ private _url;
+ /**
+ * The bytes associated with a LoaderInfo object.
+ *
+ * @throws SecurityError If the object accessing this API is prevented from
+ * accessing the loaded object due to security
+ * restrictions. This situation can occur, for
+ * instance, when a Loader object attempts to access
+ * the contentLoaderInfo.content
property
+ * and it is not granted security permission to access
+ * the loaded content.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + public bytes : ByteArray; + /** + * The number of bytes that are loaded for the media. When this number equals + * the value ofbytesTotal
, all of the bytes are loaded.
+ */
+ public bytesLoaded : number;
+ /**
+ * The number of compressed bytes in the entire media file.
+ *
+ * Before the first progress
event is dispatched by this
+ * LoaderInfo object's corresponding Loader object, bytesTotal
+ * is 0. After the first progress
event from the Loader object,
+ * bytesTotal
reflects the actual number of bytes to be
+ * downloaded.
contentLoaderInfo.content
property
+ * and it is not granted security permission to access
+ * the loaded content.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + public content : DisplayObject; + /** + * The MIME type of the loaded file. The value isnull
if not
+ * enough of the file has loaded in order to determine the type. The
+ * following list gives the possible values:
+ * "application/x-shockwave-flash"
"image/jpeg"
"image/gif"
"image/png"
loaderInfo
property of the instance
+ * of the main class of the SWF file, no Loader object is associated.
+ *
+ * @throws SecurityError If the object accessing this API is prevented from
+ * accessing the Loader object because of security
+ * restrictions. This can occur, for instance, when a
+ * loaded SWF file attempts to access its
+ * loaderInfo.loader
property and it is
+ * not granted security permission to access the
+ * loading SWF file.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + public loader : Loader; + /** + * The URL of the media being loaded. + * + *Before the first progress
event is dispatched by this
+ * LoaderInfo object's corresponding Loader object, the value of the
+ * url
property might reflect only the initial URL specified in
+ * the call to the load()
method of the Loader object. After the
+ * first progress
event, the url
property reflects
+ * the media's final URL, after any redirects and relative URLs are
+ * resolved.
In some cases, the value of the url
property is truncated;
+ * see the isURLInaccessible
property for details.
pixelSnapping
property
+ * of a Bitmap object.
+ */
+ class PixelSnapping {
+ /**
+ * A constant value used in the pixelSnapping
property of a
+ * Bitmap object to specify that the bitmap image is always snapped to the
+ * nearest pixel, independent of any transformation.
+ */
+ static ALWAYS: string;
+ /**
+ * A constant value used in the pixelSnapping
property of a
+ * Bitmap object to specify that the bitmap image is snapped to the nearest
+ * pixel if it is drawn with no rotation or skew and it is drawn at a scale
+ * factor of 99.9% to 100.1%. If these conditions are satisfied, the image is
+ * drawn at 100% scale, snapped to the nearest pixel. Internally, this
+ * setting allows the image to be drawn as fast as possible by using the
+ * vector renderer.
+ */
+ static AUTO: string;
+ /**
+ * A constant value used in the pixelSnapping
property of a
+ * Bitmap object to specify that no pixel snapping occurs.
+ */
+ static NEVER: string;
+ }
+ export = PixelSnapping;
+
+}
+declare module "awayjs-core/lib/core/base/SpreadMethod" {
+ /**
+ * The SpreadMethod class provides values for the spreadMethod
+ * parameter in the beginGradientFill()
and
+ * lineGradientStyle()
methods of the Graphics class.
+ *
+ * The following example shows the same gradient fill using various spread + * methods:
+ */ + class SpreadMethod { + /** + * Specifies that the gradient use the pad spread method. + */ + static PAD: string; + /** + * Specifies that the gradient use the reflect spread method. + */ + static REFLECT: string; + /** + * Specifies that the gradient use the repeat spread method. + */ + static REPEAT: string; + } + export = SpreadMethod; + +} +declare module "awayjs-core/lib/core/base/SubGeometryBase" { + import Geometry = require("awayjs-core/lib/core/base/Geometry"); + import ISubMeshClass = require("awayjs-core/lib/core/base/ISubMeshClass"); + import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase"); + import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D"); + /** + * @class away.base.TriangleSubGeometry + */ + class SubGeometryBase extends NamedAssetBase { + static VERTEX_DATA: string; + public _pStrideOffsetDirty: boolean; + public _pIndices: number[]; + public _pVertices: number[]; + private _numIndices; + private _numTriangles; + public _pNumVertices: number; + public _pConcatenateArrays: boolean; + private _indicesUpdated; + public _pStride: Object; + public _pOffset: Object; + public _pUpdateStrideOffset(): void; + public _pSubMeshClass: ISubMeshClass; + public subMeshClass : ISubMeshClass; + /** + * + */ + public concatenateArrays : boolean; + /** + * The raw index data that define the faces. + */ + public indices : number[]; + /** + * + */ + public vertices : number[]; + /** + * The total amount of triangles in the TriangleSubGeometry. + */ + public numTriangles : number; + public numVertices : number; + /** + * + */ + constructor(concatenatedArrays: boolean); + /** + * + */ + public getStride(dataType: string): any; + /** + * + */ + public getOffset(dataType: string): any; + public updateVertices(): void; + /** + * + */ + public dispose(): void; + /** + * Updates the face indices of the TriangleSubGeometry. + * + * @param indices The face indices to upload. + */ + public updateIndices(indices: number[]): void; + /** + * @protected + */ + public pInvalidateBounds(): void; + /** + * The Geometry object that 'owns' this TriangleSubGeometry object. + * + * @private + */ + public parentGeometry: Geometry; + /** + * Clones the current object + * @return An exact duplicate of the current object. + */ + public clone(): SubGeometryBase; + public applyTransformation(transform: Matrix3D): void; + /** + * Scales the geometry. + * @param scale The amount by which to scale. + */ + public scale(scale: number): void; + public scaleUV(scaleU?: number, scaleV?: number): void; + public getBoundingPositions(): number[]; + private notifyIndicesUpdate(); + public _pNotifyVerticesUpdate(): void; + } + export = SubGeometryBase; + +} +declare module "awayjs-core/lib/core/base/SubMeshBase" { + import IAnimator = require("awayjs-core/lib/animators/IAnimator"); + import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D"); + import UVTransform = require("awayjs-core/lib/core/geom/UVTransform"); + import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase"); + import IRenderable = require("awayjs-core/lib/core/pool/IRenderable"); + import IRenderer = require("awayjs-core/lib/core/render/IRenderer"); + import Camera = require("awayjs-core/lib/entities/Camera"); + import Mesh = require("awayjs-core/lib/entities/Mesh"); + import MaterialBase = require("awayjs-core/lib/materials/MaterialBase"); + /** + * SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object. + * + * + * @see away.base.TriangleSubGeometry + * @see away.entities.Mesh + * + * @class away.base.SubMeshBase + */ + class SubMeshBase extends NamedAssetBase { + public _pParentMesh: Mesh; + public _uvTransform: UVTransform; + public _iIndex: number; + public _material: MaterialBase; + private _renderables; + /** + * The animator object that provides the state for the TriangleSubMesh's animation. + */ + public animator : IAnimator; + /** + * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead. + */ + public material : MaterialBase; + /** + * The scene transform object that transforms from model to world space. + */ + public sceneTransform : Matrix3D; + /** + * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object). + */ + public parentMesh : Mesh; + /** + * + */ + public uvTransform : UVTransform; + /** + * Creates a new SubMeshBase object + */ + constructor(); + /** + * + */ + public dispose(): void; + /** + * + * @param camera + * @returns {away.geom.Matrix3D} + */ + public getRenderSceneTransform(camera: Camera): Matrix3D; + public _iAddRenderable(renderable: IRenderable): IRenderable; + public _iRemoveRenderable(renderable: IRenderable): IRenderable; + public _iInvalidateRenderableGeometry(): void; + public _iCollectRenderable(renderer: IRenderer): void; + public _iGetExplicitMaterial(): MaterialBase; + } + export = SubMeshBase; + +} +declare module "awayjs-core/lib/core/base/TriangleCulling" { + /** + * Defines codes for culling algorithms that determine which triangles not to + * render when drawing triangle paths. + * + * The terms POSITIVE
and NEGATIVE
refer to the
+ * sign of a triangle's normal along the z-axis. The normal is a 3D vector
+ * that is perpendicular to the surface of the triangle.
A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order
+ * has a positive normal value. That is, its normal points in a positive
+ * z-axis direction, away from the current view point. When the
+ * TriangleCulling.POSITIVE
algorithm is used, triangles with
+ * positive normals are not rendered. Another term for this is backface
+ * culling.
A triangle whose vertices are arranged in a counter-clockwise order has
+ * a negative normal value. That is, its normal points in a negative z-axis
+ * direction, toward the current view point. When the
+ * TriangleCulling.NEGATIVE
algorithm is used, triangles with
+ * negative normals will not be rendered.
The x
, y
, z
, width
,
+ * height
depth
properties of the Box class are
+ * independent of each other; changing the value of one property has no effect
+ * on the others. However, the right
, bottom
and
+ * back
properties are integrally related to those six
+ * properties. For example, if you change the value of the right
+ * property, the value of the width
property changes; if you
+ * change the bottom
property, the value of the
+ * height
property changes.
The following methods and properties use Box objects:
+ * + *bounds
property of the DisplayObject classYou can use the new Box()
constructor to create a
+ * Box object.
Note: The Box class does not define a cubic Shape
+ * display object.
+ */
+ class Box {
+ private _size;
+ private _bottomRightBack;
+ private _topLeftFront;
+ /**
+ * The height of the box, in pixels. Changing the height
value
+ * of a Box object has no effect on the x
, y
,
+ * z
, depth
and width
properties.
+ */
+ public height: number;
+ /**
+ * The width of the box, in pixels. Changing the width
value
+ * of a Box object has no effect on the x
, y
,
+ * z
, depth
and height
properties.
+ */
+ public width: number;
+ /**
+ * The deoth of the box, in pixels. Changing the depth
value
+ * of a Box object has no effect on the x
, y
,
+ * z
, width
and height
properties.
+ */
+ public depth: number;
+ /**
+ * The x coordinate of the top-left-front corner of the box.
+ * Changing the value of the x
property of a Box object has no
+ * effect on the y
, z
, width
,
+ * height
and depth
properties.
+ *
+ *
The value of the x
property is equal to the value of the
+ * left
property.
y
property of a Box object has no
+ * effect on the x
, z
, width
,
+ * height
and depth
properties.
+ *
+ * The value of the y
property is equal to the value of the
+ * top
property.
z
property of a Box object has no
+ * effect on the x
, y
, width
,
+ * height
and depth
properties.
+ *
+ * The value of the z
property is equal to the value of the
+ * front
property.
z
and height
properties.
+ */
+ public back : number;
+ /**
+ * The sum of the y
and height
properties.
+ */
+ public bottom : number;
+ /**
+ * The location of the Box object's bottom-right corner, determined by the
+ * values of the right
and bottom
properties.
+ */
+ public bottomRightBack : Vector3D;
+ /**
+ * The z coordinate of the top-left-front corner of the box. Changing
+ * the front
property of a Box object has no effect on the
+ * x
, y
, width
and height
+ * properties. However it does affect the depth
property,
+ * whereas changing the z
value does not affect the
+ * depth
property.
+ *
+ * The value of the left
property is equal to the value of
+ * the x
property.
left
property of a Box object has no effect on the
+ * y
and height
properties. However it does affect
+ * the width
property, whereas changing the x
value
+ * does not affect the width
property.
+ *
+ * The value of the left
property is equal to the value of
+ * the x
property.
x
and width
properties.
+ */
+ public right : number;
+ /**
+ * The size of the Box object, expressed as a Vector3D object with the
+ * values of the width
, height
and
+ * depth
properties.
+ */
+ public size : Vector3D;
+ /**
+ * The y coordinate of the top-left-front corner of the box. Changing
+ * the top
property of a Box object has no effect on the
+ * x
and width
properties. However it does affect
+ * the height
property, whereas changing the y
+ * value does not affect the height
property.
+ *
+ * The value of the top
property is equal to the value of the
+ * y
property.
x
, y
and z
parameters and with the
+ * specified width
, height
and depth
+ * parameters. If you call this public without parameters, a box with
+ * x
, y
, z
, width
,
+ * height
and depth
properties set to 0 is created.
+ *
+ * @param x The x coordinate of the top-left-front corner of the
+ * box.
+ * @param y The y coordinate of the top-left-front corner of the
+ * box.
+ * @param z The z coordinate of the top-left-front corner of the
+ * box.
+ * @param width The width of the box, in pixels.
+ * @param height The height of the box, in pixels.
+ * @param depth The depth of the box, in pixels.
+ */
+ constructor(x?: number, y?: number, z?: number, width?: number, height?: number, depth?: number);
+ /**
+ * Returns a new Box object with the same values for the x
,
+ * y
, z
, width
, height
+ * and depth
properties as the original Box object.
+ *
+ * @return A new Box object with the same values for the x
,
+ * y
, z
, width
,
+ * height
and depth
properties as the
+ * original Box object.
+ */
+ public clone(): Box;
+ /**
+ * Determines whether the specified position is contained within the cubic
+ * region defined by this Box object.
+ *
+ * @param x The x coordinate(horizontal component) of the position.
+ * @param y The y coordinate(vertical component) of the position.
+ * @param z The z coordinate(longitudinal component) of the position.
+ * @return A value of true
if the Box object contains the
+ * specified position; otherwise false
.
+ */
+ public contains(x: number, y: number, z: number): boolean;
+ /**
+ * Determines whether the specified position is contained within the cubic
+ * region defined by this Box object. This method is similar to the
+ * Box.contains()
method, except that it takes a Vector3D
+ * object as a parameter.
+ *
+ * @param position The position, as represented by its x, y and
+ * z coordinates.
+ * @return A value of true
if the Box object contains the
+ * specified position; otherwise false
.
+ */
+ public containsPoint(position: Vector3D): boolean;
+ /**
+ * Determines whether the Box object specified by the box
+ * parameter is contained within this Box object. A Box object is said to
+ * contain another if the second Box object falls entirely within the
+ * boundaries of the first.
+ *
+ * @param box The Box object being checked.
+ * @return A value of true
if the Box object that you specify
+ * is contained by this Box object; otherwise false
.
+ */
+ public containsRect(box: Box): boolean;
+ /**
+ * Copies all of box data from the source Box object into the calling
+ * Box object.
+ *
+ * @param sourceBox The Box object from which to copy the data.
+ */
+ public copyFrom(sourceBox: Box): void;
+ /**
+ * Determines whether the object specified in the toCompare
+ * parameter is equal to this Box object. This method compares the
+ * x
, y
, z
, width
,
+ * height
and depth
properties of an object against
+ * the same properties of this Box object.
+ *
+ * @param toCompare The box to compare to this Box object.
+ * @return A value of true
if the object has exactly the same
+ * values for the x
, y
, z
,
+ * width
, height
and depth
+ * properties as this Box object; otherwise false
.
+ */
+ public equals(toCompare: Box): boolean;
+ /**
+ * Increases the size of the Box object by the specified amounts, in
+ * pixels. The center point of the Box object stays the same, and its
+ * size increases to the left and right by the dx
value, to
+ * the top and the bottom by the dy
value, and to
+ * the front and the back by the dz
value.
+ *
+ * @param dx The value to be added to the left and the right of the Box
+ * object. The following equation is used to calculate the new
+ * width and position of the box:
+ * @param dy The value to be added to the top and the bottom of the Box
+ * object. The following equation is used to calculate the new
+ * height and position of the box:
+ * @param dz The value to be added to the front and the back of the Box
+ * object. The following equation is used to calculate the new
+ * depth and position of the box:
+ */
+ public inflate(dx: number, dy: number, dz: number): void;
+ /**
+ * Increases the size of the Box object. This method is similar to the
+ * Box.inflate()
method except it takes a Vector3D object as
+ * a parameter.
+ *
+ * The following two code examples give the same result:
+ * + * @param delta Thex
property of this Vector3D object is used to
+ * increase the horizontal dimension of the Box object.
+ * The y
property is used to increase the vertical
+ * dimension of the Box object.
+ * The z
property is used to increase the
+ * longitudinal dimension of the Box object.
+ */
+ public inflatePoint(delta: Vector3D): void;
+ /**
+ * If the Box object specified in the toIntersect
parameter
+ * intersects with this Box object, returns the area of intersection
+ * as a Box object. If the boxes do not intersect, this method returns an
+ * empty Box object with its properties set to 0.
+ *
+ * @param toIntersect The Box object to compare against to see if it
+ * intersects with this Box object.
+ * @return A Box object that equals the area of intersection. If the
+ * boxes do not intersect, this method returns an empty Box
+ * object; that is, a box with its x
, y
,
+ * z
, width
, height
, and
+ * depth
properties set to 0.
+ */
+ public intersection(toIntersect: Box): Box;
+ /**
+ * Determines whether the object specified in the toIntersect
+ * parameter intersects with this Box object. This method checks the
+ * x
, y
, z
, width
,
+ * height
, and depth
properties of the specified
+ * Box object to see if it intersects with this Box object.
+ *
+ * @param toIntersect The Box object to compare against this Box object.
+ * @return A value of true
if the specified object intersects
+ * with this Box object; otherwise false
.
+ */
+ public intersects(toIntersect: Box): boolean;
+ /**
+ * Determines whether or not this Box object is empty.
+ *
+ * @return A value of true
if the Box object's width, height or
+ * depth is less than or equal to 0; otherwise false
.
+ */
+ public isEmpty(): boolean;
+ /**
+ * Adjusts the location of the Box object, as determined by its
+ * top-left-front corner, by the specified amounts.
+ *
+ * @param dx Moves the x value of the Box object by this amount.
+ * @param dy Moves the y value of the Box object by this amount.
+ * @param dz Moves the z value of the Box object by this amount.
+ */
+ public offset(dx: number, dy: number, dz: number): void;
+ /**
+ * Adjusts the location of the Box object using a Vector3D object as a
+ * parameter. This method is similar to the Box.offset()
+ * method, except that it takes a Vector3D object as a parameter.
+ *
+ * @param position A Vector3D object to use to offset this Box object.
+ */
+ public offsetPosition(position: Vector3D): void;
+ /**
+ * Sets all of the Box object's properties to 0. A Box object is empty if its
+ * width, height or depth is less than or equal to 0.
+ *
+ * This method sets the values of the x
, y
,
+ * z
, width
, height
, and
+ * depth
properties to 0.
x
, y
, z
,
+ * width
, height
, and depth
.
+ */
+ public toString(): string;
+ /**
+ * Adds two boxes together to create a new Box object, by filling
+ * in the horizontal, vertical and longitudinal space between the two boxes.
+ *
+ * Note: The union()
method ignores boxes with
+ * 0
as the height, width or depth value, such as: var
+ * box2:Box = new Box(300,300,300,50,50,0);
When a ColorTransform object is applied to a display object, a new value + * for each color channel is calculated like this:
+ * + *redMultiplier
) +
+ * redOffset
greenMultiplier
) +
+ * greenOffset
blueMultiplier
) +
+ * blueOffset
alphaMultiplier
) +
+ * alphaOffset
If any of the color channel values is greater than 255 after the + * calculation, it is set to 255. If it is less than 0, it is set to 0.
+ * + *You can use ColorTransform objects in the following ways:
+ * + *colorTransform
parameter of the
+ * colorTransform()
method of the BitmapData classcolorTransform
property of a Transform object
+ * (which can be used as the transform
property of a display
+ * object)You must use the new ColorTransform()
constructor to create
+ * a ColorTransform object before you can call the methods of the
+ * ColorTransform object.
Color transformations do not apply to the background color of a movie + * clip(such as a loaded SWF object). They apply only to graphics and symbols + * that are attached to the movie clip.
+ */ + class ColorTransform { + /** + * A decimal value that is multiplied with the alpha transparency channel + * value. + * + *If you set the alpha transparency value of a display object directly by
+ * using the alpha
property of the DisplayObject instance, it
+ * affects the value of the alphaMultiplier
property of that
+ * display object's transform.colorTransform
property.
alphaMultiplier
+ * value.
+ */
+ public alphaOffset: number;
+ /**
+ * A decimal value that is multiplied with the blue channel value.
+ */
+ public blueMultiplier: number;
+ /**
+ * A number from -255 to 255 that is added to the blue channel value after it
+ * has been multiplied by the blueMultiplier
value.
+ */
+ public blueOffset: number;
+ /**
+ * A decimal value that is multiplied with the green channel value.
+ */
+ public greenMultiplier: number;
+ /**
+ * A number from -255 to 255 that is added to the green channel value after
+ * it has been multiplied by the greenMultiplier
value.
+ */
+ public greenOffset: number;
+ /**
+ * A decimal value that is multiplied with the red channel value.
+ */
+ public redMultiplier: number;
+ /**
+ * A number from -255 to 255 that is added to the red channel value after it
+ * has been multiplied by the redMultiplier
value.
+ */
+ public redOffset: number;
+ /**
+ * The RGB color value for a ColorTransform object.
+ *
+ * When you set this property, it changes the three color offset values
+ * (redOffset
, greenOffset
, and
+ * blueOffset
) accordingly, and it sets the three color
+ * multiplier values(redMultiplier
,
+ * greenMultiplier
, and blueMultiplier
) to 0. The
+ * alpha transparency multiplier and offset values do not change.
When you pass a value for this property, use the format + * 0xRRGGBB. RR, GG, and BB each consist of two + * hexadecimal digits that specify the offset of each color component. The 0x + * tells the ActionScript compiler that the number is a hexadecimal + * value.
+ */ + public color : number; + /** + * Creates a ColorTransform object for a display object with the specified + * color channel values and alpha values. + * + * @param redMultiplier The value for the red multiplier, in the range from + * 0 to 1. + * @param greenMultiplier The value for the green multiplier, in the range + * from 0 to 1. + * @param blueMultiplier The value for the blue multiplier, in the range + * from 0 to 1. + * @param alphaMultiplier The value for the alpha transparency multiplier, in + * the range from 0 to 1. + * @param redOffset The offset value for the red color channel, in the + * range from -255 to 255. + * @param greenOffset The offset value for the green color channel, in + * the range from -255 to 255. + * @param blueOffset The offset for the blue color channel value, in the + * range from -255 to 255. + * @param alphaOffset The offset for alpha transparency channel value, in + * the range from -255 to 255. + */ + constructor(redMultiplier?: number, greenMultiplier?: number, blueMultiplier?: number, alphaMultiplier?: number, redOffset?: number, greenOffset?: number, blueOffset?: number, alphaOffset?: number); + /** + * Concatenates the ColorTranform object specified by thesecond
+ * parameter with the current ColorTransform object and sets the current
+ * object as the result, which is an additive combination of the two color
+ * transformations. When you apply the concatenated ColorTransform object,
+ * the effect is the same as applying the second
color
+ * transformation after the original color transformation.
+ *
+ * @param second The ColorTransform object to be combined with the current
+ * ColorTransform object.
+ */
+ public concat(second: ColorTransform): void;
+ }
+ export = ColorTransform;
+
+}
+declare module "awayjs-core/lib/core/geom/MathConsts" {
+ /**
+ * MathConsts provides some commonly used mathematical constants
+ */
+ class MathConsts {
+ /**
+ * The amount to multiply with when converting radians to degrees.
+ */
+ static RADIANS_TO_DEGREES: number;
+ /**
+ * The amount to multiply with when converting degrees to radians.
+ */
+ static DEGREES_TO_RADIANS: number;
+ }
+ export = MathConsts;
+
+}
+declare module "awayjs-core/lib/core/geom/Matrix" {
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * The Matrix class represents a transformation matrix that determines how to
+ * map points from one coordinate space to another. You can perform various
+ * graphical transformations on a display object by setting the properties of
+ * a Matrix object, applying that Matrix object to the matrix
+ * property of a Transform object, and then applying that Transform object as
+ * the transform
property of the display object. These
+ * transformation functions include translation(x and y
+ * repositioning), rotation, scaling, and skewing.
+ *
+ * Together these types of transformations are known as affine + * transformations. Affine transformations preserve the straightness of + * lines while transforming, so that parallel lines stay parallel.
+ * + *To apply a transformation matrix to a display object, you create a
+ * Transform object, set its matrix
property to the
+ * transformation matrix, and then set the transform
property of
+ * the display object to the Transform object. Matrix objects are also used as
+ * parameters of some methods, such as the following:
draw()
method of a BitmapData objectbeginBitmapFill()
method,
+ * beginGradientFill()
method, or
+ * lineGradientStyle()
method of a Graphics objectA transformation matrix object is a 3 x 3 matrix with the following + * contents:
+ * + *In traditional transformation matrixes, the u
,
+ * v
, and w
properties provide extra capabilities.
+ * The Matrix class can only operate in two-dimensional space, so it always
+ * assumes that the property values u
and v
are 0.0,
+ * and that the property value w
is 1.0. The effective values of
+ * the matrix are as follows:
You can get and set the values of all six of the other properties in a
+ * Matrix object: a
, b
, c
,
+ * d
, tx
, and ty
.
The Matrix class supports the four major types of transformations: + * translation, scaling, rotation, and skewing. You can set three of these + * transformations by using specialized methods, as described in the following + * table:
+ * + *Each transformation function alters the current matrix properties so
+ * that you can effectively combine multiple transformations. To do this, you
+ * call more than one transformation function before applying the matrix to
+ * its display object target(by using the transform
property of
+ * that display object).
Use the new Matrix()
constructor to create a Matrix object
+ * before you can call the methods of the Matrix object.
If you do not provide any parameters to the new Matrix()
+ * constructor, it creates an identity matrix with the following
+ * values:
In matrix notation, the identity matrix looks like this:
+ * + * @param a The value that affects the positioning of pixels along the + * x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the + * y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the + * x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the + * y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x + * axis. + * @param ty The distance by which to translate each point along the y + * axis. + */ + constructor(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number); + /** + * Returns a new Matrix object that is a clone of this matrix, with an exact + * copy of the contained object. + * + * @return A Matrix object. + */ + public clone(): Matrix; + /** + * Concatenates a matrix with the current matrix, effectively combining the + * geometric effects of the two. In mathematical terms, concatenating two + * matrixes is the same as combining them using matrix multiplication. + * + *For example, if matrix m1
scales an object by a factor of
+ * four, and matrix m2
rotates an object by 1.5707963267949
+ * radians(Math.PI/2
), then m1.concat(m2)
+ * transforms m1
into a matrix that scales an object by a factor
+ * of four and rotates the object by Math.PI/2
radians.
This method replaces the source matrix with the concatenated matrix. If
+ * you want to concatenate two matrixes without altering either of the two
+ * source matrixes, first copy the source matrix by using the
+ * clone()
method, as shown in the Class Examples section.
Using the createBox()
method lets you obtain the same
+ * matrix as you would if you applied the identity()
,
+ * rotate()
, scale()
, and translate()
+ * methods in succession. For example, mat1.createBox(2,2,Math.PI/4,
+ * 100, 100)
has the same effect as the following:
beginGradientFill()
and lineGradientStyle()
+ * methods of the Graphics class. Width and height are scaled to a
+ * scaleX
/scaleY
pair and the
+ * tx
/ty
values are offset by half the width and
+ * height.
+ *
+ * For example, consider a gradient with the following + * characteristics:
+ * + *GradientType.LINEAR
[0,
+ * 255]
SpreadMethod.PAD
InterpolationMethod.LINEAR_RGB
The following illustrations show gradients in which the matrix was
+ * defined using the createGradientBox()
method with different
+ * parameter settings:
width
parameter.
+ * @param ty The distance, in pixels, to translate down along the
+ * y axis. This value is offset by half of the
+ * height
parameter.
+ */
+ public createGradientBox(width: number, height: number, rotation?: number, tx?: number, ty?: number): void;
+ /**
+ * Given a point in the pretransform coordinate space, returns the
+ * coordinates of that point after the transformation occurs. Unlike the
+ * standard transformation applied using the transformPoint()
+ * method, the deltaTransformPoint()
method's transformation
+ * does not consider the translation parameters tx
and
+ * ty
.
+ *
+ * @param point The point for which you want to get the result of the matrix
+ * transformation.
+ * @return The point resulting from applying the matrix transformation.
+ */
+ public deltaTransformPoint(point: Point): Point;
+ /**
+ * Sets each matrix property to a value that causes a null transformation. An
+ * object transformed by applying an identity matrix will be identical to the
+ * original.
+ *
+ * After calling the identity()
method, the resulting matrix
+ * has the following properties: a
=1, b
=0,
+ * c
=0, d
=1, tx
=0,
+ * ty
=0.
In matrix notation, the identity matrix looks like this:
+ * + */ + public identity(): void; + /** + * Performs the opposite transformation of the original matrix. You can apply + * an inverted matrix to an object to undo the transformation performed when + * applying the original matrix. + */ + public invert(): void; + /** + * Returns a new Matrix object that is a clone of this matrix, with an exact + * copy of the contained object. + * + * @param matrix The matrix for which you want to get the result of the matrix + * transformation. + * @return A Matrix object. + */ + public multiply(matrix: Matrix): Matrix; + /** + * Applies a rotation transformation to the Matrix object. + * + *The rotate()
method alters the a
,
+ * b
, c
, and d
properties of the
+ * Matrix object. In matrix notation, this is the same as concatenating the
+ * current matrix with the following:
sx
, and the y axis it is multiplied by
+ * sy
.
+ *
+ * The scale()
method alters the a
and
+ * d
properties of the Matrix object. In matrix notation, this
+ * is the same as concatenating the current matrix with the following
+ * matrix:
a
, b
, c
,
+ * d
, tx
, and ty
.
+ */
+ public toString(): string;
+ /**
+ * Returns the result of applying the geometric transformation represented by
+ * the Matrix object to the specified point.
+ *
+ * @param point The point for which you want to get the result of the Matrix
+ * transformation.
+ * @return The point resulting from applying the Matrix transformation.
+ */
+ public transformPoint(point: Point): Point;
+ /**
+ * Translates the matrix along the x and y axes, as specified
+ * by the dx
and dy
parameters.
+ *
+ * @param dx The amount of movement along the x axis to the right, in
+ * pixels.
+ * @param dy The amount of movement down along the y axis, in pixels.
+ */
+ public translate(dx: number, dy: number): void;
+ }
+ export = Matrix;
+
+}
+declare module "awayjs-core/lib/core/geom/Matrix3D" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ class Matrix3D {
+ /**
+ * A Vector of 16 Numbers, where every four elements is a column of a 4x4 matrix.
+ *
+ * An exception is thrown if the rawData property is set to a matrix that is not invertible. The Matrix3D + * object must be invertible. If a non-invertible matrix is needed, create a subclass of the Matrix3D object.
+ */ + public rawData: number[]; + /** + * Creates a Matrix3D object. + */ + constructor(v?: number[]); + /** + * Appends the matrix by multiplying another Matrix3D object by the current Matrix3D object. + */ + public append(lhs: Matrix3D): void; + /** + * Appends an incremental rotation to a Matrix3D object. + */ + public appendRotation(degrees: number, axis: Vector3D): void; + /** + * Appends an incremental scale change along the x, y, and z axes to a Matrix3D object. + */ + public appendScale(xScale: number, yScale: number, zScale: number): void; + /** + * Appends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object. + */ + public appendTranslation(x: number, y: number, z: number): void; + /** + * Returns a new Matrix3D object that is an exact copy of the current Matrix3D object. + */ + public clone(): Matrix3D; + /** + * Copies a Vector3D object into specific column of the calling Matrix3D object. + */ + public copyColumnFrom(column: number, vector3D: Vector3D): void; + /** + * Copies specific column of the calling Matrix3D object into the Vector3D object. + */ + public copyColumnTo(column: number, vector3D: Vector3D): void; + /** + * Copies all of the matrix data from the source Matrix3D object into the calling Matrix3D object. + */ + public copyFrom(sourceMatrix3D: Matrix3D): void; + public copyRawDataFrom(vector: number[], index?: number, transpose?: boolean): void; + public copyRawDataTo(vector: number[], index?: number, transpose?: boolean): void; + /** + * Copies a Vector3D object into specific row of the calling Matrix3D object. + */ + public copyRowFrom(row: number, vector3D: Vector3D): void; + /** + * Copies specific row of the calling Matrix3D object into the Vector3D object. + */ + public copyRowTo(row: number, vector3D: Vector3D): void; + /** + * Copies this Matrix3D object into a destination Matrix3D object. + */ + public copyToMatrix3D(dest: Matrix3D): void; + /** + * Returns the transformation matrix's translation, rotation, and scale settings as a Vector of three Vector3D objects. + */ + public decompose(orientationStyle?: string): Vector3D[]; + /** + * Uses the transformation matrix without its translation elements to transform a Vector3D object from one space + * coordinate to another. + */ + public deltaTransformVector(v: Vector3D): Vector3D; + /** + * Converts the current matrix to an identity or unit matrix. + */ + public identity(): void; + /** + * [static] Interpolates the translation, rotation, and scale transformation of one matrix toward those of the target matrix. + */ + static interpolate(thisMat: Matrix3D, toMat: Matrix3D, percent: number): Matrix3D; + /** + * Interpolates this matrix towards the translation, rotation, and scale transformations of the target matrix. + */ + public interpolateTo(toMat: Matrix3D, percent: number): void; + /** + * Inverts the current matrix. + */ + public invert(): boolean; + /** + * Prepends a matrix by multiplying the current Matrix3D object by another Matrix3D object. + */ + public prepend(rhs: Matrix3D): void; + /** + * Prepends an incremental rotation to a Matrix3D object. + */ + public prependRotation(degrees: number, axis: Vector3D): void; + /** + * Prepends an incremental scale change along the x, y, and z axes to a Matrix3D object. + */ + public prependScale(xScale: number, yScale: number, zScale: number): void; + /** + * Prepends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object. + */ + public prependTranslation(x: number, y: number, z: number): void; + /** + * Sets the transformation matrix's translation, rotation, and scale settings. + */ + public recompose(components: Vector3D[]): boolean; + public transformVector(v: Vector3D): Vector3D; + /** + * Uses the transformation matrix to transform a Vector of Numbers from one coordinate space to another. + */ + public transformVectors(vin: number[], vout: number[]): void; + /** + * Converts the current Matrix3D object to a matrix where the rows and columns are swapped. + */ + public transpose(): void; + static getAxisRotation(x: number, y: number, z: number, degrees: number): Matrix3D; + /** + * [read-only] A Number that determines whether a matrix is invertible. + */ + public determinant : number; + /** + * A Vector3D object that holds the position, the 3D coordinate (x,y,z) of a display object within the + * transformation's frame of reference. + */ + public position : Vector3D; + public toFixed(decimalPlace: number): string; + public toString(): string; + } + export = Matrix3D; + +} +declare module "awayjs-core/lib/core/geom/Matrix3DUtils" { + import Quaternion = require("awayjs-core/lib/core/geom/Quaternion"); + import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D"); + import Plane3D = require("awayjs-core/lib/core/geom/Plane3D"); + import Vector3D = require("awayjs-core/lib/core/geom/Vector3D"); + /** + * away.geom.Matrix3DUtils provides additional Matrix3D functions. + */ + class Matrix3DUtils { + /** + * A reference to a Vector to be used as a temporary raw data container, to prevent object creation. + */ + static RAW_DATA_CONTAINER: number[]; + static CALCULATION_MATRIX: Matrix3D; + /** + * Fills the 3d matrix object with values representing the transformation made by the given quaternion. + * + * @param quarternion The quarterion object to convert. + */ + static quaternion2matrix(quarternion: Quaternion, m?: Matrix3D): Matrix3D; + /** + * Returns a normalisedVector3D
object representing the forward vector of the given matrix.
+ * @param m The Matrix3D object to use to get the forward vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The forward vector
+ */
+ static getForward(m: Matrix3D, v?: Vector3D): Vector3D;
+ /**
+ * Returns a normalised Vector3D
object representing the up vector of the given matrix.
+ * @param m The Matrix3D object to use to get the up vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The up vector
+ */
+ static getUp(m: Matrix3D, v?: Vector3D): Vector3D;
+ /**
+ * Returns a normalised Vector3D
object representing the right vector of the given matrix.
+ * @param m The Matrix3D object to use to get the right vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The right vector
+ */
+ static getRight(m: Matrix3D, v?: Vector3D): Vector3D;
+ /**
+ * Returns a boolean value representing whether there is any significant difference between the two given 3d matrices.
+ */
+ static compare(m1: Matrix3D, m2: Matrix3D): boolean;
+ static lookAt(matrix: Matrix3D, pos: Vector3D, dir: Vector3D, up: Vector3D): void;
+ static reflection(plane: Plane3D, target?: Matrix3D): Matrix3D;
+ static transformVector(matrix: Matrix3D, vector: Vector3D, result?: Vector3D): Vector3D;
+ static deltaTransformVector(matrix: Matrix3D, vector: Vector3D, result?: Vector3D): Vector3D;
+ static getTranslation(transform: Matrix3D, result?: Vector3D): Vector3D;
+ static deltaTransformVectors(matrix: Matrix3D, vin: number[], vout: number[]): void;
+ }
+ export = Matrix3DUtils;
+
+}
+declare module "awayjs-core/lib/core/geom/Orientation3D" {
+ /**
+ * A Quaternion object which can be used to represent rotations.
+ */
+ class Orientation3D {
+ /**
+ * The axis angle orientation uses a combination of an axis and an angle to determine the orientation.
+ * @type {string}
+ */
+ static AXIS_ANGLE: string;
+ /**
+ * The default orientation for decompose() and recompose() methods, defines the orientation with three separate angles of rotation for each axis.
+ * @type {string}
+ */
+ static EULER_ANGLES: string;
+ /**
+ * The quaternion orientation uses complex numbers.
+ * @type {string}
+ */
+ static QUATERNION: string;
+ }
+ export = Orientation3D;
+
+}
+declare module "awayjs-core/lib/core/geom/PerspectiveProjection" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ /**
+ * The PerspectiveProjection class provides an easy way to assign or modify + * the perspective transformations of a display object and all of its + * children. For more complex or custom perspective transformations, use the + * Matrix3D class. While the PerspectiveProjection class provides basic + * three-dimensional presentation properties, the Matrix3D class provides more + * detailed control over the three-dimensional presentation of display objects. + *
+ * + *Projection is a way of representing a three-dimensional object in a + * two-dimensional space, like a cube projected onto a computer screen. + * Perspective projection uses a viewing frustum (a rectangular pyramid) to + * model and project a three-dimensional world and its objects on the screen. + * The viewing frustum becomes increasingly wider as it moves further from the + * origin of the viewpoint. The origin of the viewpoint could be a camera or + * the eyes of an observer facing the screen. The projected perspective + * produces the illusion of three dimensions with depth and distance, where + * the objects closer to the screen appear larger than the objects farther + * from the screen.
+ * + *A default PerspectiveProjection object is a framework defined for
+ * perspective transformation of the root object, based on the field of view
+ * and aspect ratio (dimensions) of the stage. The projection center, the
+ * vanishing point, is set to the center of the stage, which means the
+ * three-dimensional display objects disappear toward the center of the stage
+ * as they move back in the z axis. The default viewpoint is at point (0,0)
+ * looking down the positive z axis. The y-axis points down toward the bottom
+ * of the screen. You can gain access to the root display object's perspective
+ * projection settings and change the field of view and projection center
+ * properties of the perspectiveProjection property through the root object's
+ * DisplayObject.transform
property.
You can also set a different perspective projection setting for a
+ * display object through the parent's perspective projection. First, create a
+ * PerspectiveProjection object and set its fieldOfView
and
+ * projectionCenter
properties. Next, assign the
+ * PerspectiveProjection object to the parent display object using the
+ * DisplayObject.transform
property. The specified projection
+ * matrix and transformation will then apply to all the display object's
+ * three-dimensional children.
To modify a perspective projection of the stage or root object: use the
+ * transform.matrix
property of the root display object to gain
+ * access to the PerspectiveProjection object. Or, apply different perspective
+ * projection properties to a display object by setting the perspective
+ * projection properties of the display object's parent. The child display
+ * object inherits the new properties. Specifically, create a
+ * PerspectiveProjection object and set its properties, then assign the
+ * PerspectiveProjection object to the perspectiveProjection
+ * property of the parent display object's transform
property.
+ * The specified projection transformation then applies to all the display
+ * object's three-dimensional children.
Since both PerspectiveProjection and Matrix3D objects perform + * perspective transformations, do not assign both to a display object at the + * same time. Use the PerspectiveProjection object for focal length and + * projection center changes. For more control over the perspective + * transformation, create a perspective projection Matrix3D object.
+ */ + class PerspectiveProjection { + private _matrix3D; + /** + * Specifies an angle, as a degree between 0 and 180, for the field of + * view in three dimensions. This value determines how strong the + * perspective transformation and distortion apply to a + * three-dimensional display object with a non-zero z-coordinate. + * + *A degree close to 0 means that the screen's two-dimensional x- + * and y-coordinates are roughly the same as the three-dimensional x-, + * y-, and z-coordinates with little or no distortion. In other words, + * for a small angle, a display object moving down the z axis appears + * to stay near the same size and moves little.
+ * + *A value close to 180 degrees results in a fisheye projection effect: + * positions with a z value smaller than 0 are magnified, while + * positions with a z value larger than 0 are minimized. With a large + * angle, a display object moving down the z axis appears to change + * size quickly and moves a great distance. If the field of view is + * set to 0 or 180, nothing is seen on the screen.
+ */ + public fieldOfView: number; + /** + * The distance between the eye or the viewpoint's origin (0,0,0) and + * the display object located in the z axis. During the perspective + * transformation, thefocalLength
is calculated
+ * dynamically using the angle of the field of view and the stage's
+ * aspect ratio (stage width divided by stage height).
+ *
+ * @see away.geom.PerspectiveProjection#fieldOfView
+ */
+ public focalLength: number;
+ /**
+ * A two-dimensional point representing the center of the projection,
+ * the vanishing point for the display object.
+ *
+ * The projectionCenter
property is an offset to the
+ * default registration point that is the upper left of the stage,
+ * point (0,0). The default projection transformation center is in the
+ * middle of the stage, which means the three-dimensional display
+ * objects disappear toward the center of the stage as they move
+ * backwards in the z axis.
A display object, like the root object, can have a
+ * PerspectiveProjection object without needing a Matrix3D property
+ * defined for its transformations. In fact, use either a
+ * PerspectiveProjection or a Matrix3D object to specify the
+ * perspective transformation. If when using the PerspectiveProjection
+ * object, a Matrix3D object was needed, the toMatrix3D()
+ * method can retrieve the underlying Matrix3D object of the display
+ * object. For example, the toMatrix3D()
method can be
+ * used with the Utils3D.projectVectors()
method.
The following code creates a point at(0,0):
+ * + *Methods and properties of the following classes use Point objects:
+ * + *You can use the new Point()
constructor to create a Point
+ * object.
true
if the object is equal to this Point
+ * object; false
if it is not equal.
+ */
+ public equals(toCompare: Point): boolean;
+ /**
+ * Scales the line segment between(0,0) and the current point to a set
+ * length.
+ *
+ * @param thickness The scaling value. For example, if the current point is
+ * (0,5), and you normalize it to 1, the point returned is
+ * at(0,1).
+ */
+ public normalize(thickness?: number): void;
+ /**
+ * Offsets the Point object by the specified amount. The value of
+ * dx
is added to the original value of x to create the
+ * new x value. The value of dy
is added to the original
+ * value of y to create the new y value.
+ *
+ * @param dx The amount by which to offset the horizontal coordinate,
+ * x.
+ * @param dy The amount by which to offset the vertical coordinate, y.
+ */
+ public offset(dx: number, dy: number): void;
+ public setTo(xa: number, ya: number): void;
+ /**
+ * Subtracts the coordinates of another point from the coordinates of this
+ * point to create a new point.
+ *
+ * @param v The point to be subtracted.
+ * @return The new point.
+ */
+ public subtract(v: Point): Point;
+ /**
+ * Returns a string that contains the values of the x and y
+ * coordinates. The string has the form "(x=x,
+ * y=y)"
, so calling the toString()
method for a
+ * point at 23,17 would return "(x=23, y=17)"
.
+ *
+ * @return The string representation of the coordinates.
+ */
+ public toString(): string;
+ /**
+ * Returns the distance between pt1
and pt2
.
+ *
+ * @param pt1 The first point.
+ * @param pt2 The second point.
+ * @return The distance between the first and second points.
+ */
+ static distance(pt1: Point, pt2: Point): number;
+ /**
+ * Determines a point between two specified points. The parameter
+ * f
determines where the new interpolated point is located
+ * relative to the two end points specified by parameters pt1
+ * and pt2
. The closer the value of the parameter f
+ * is to 1.0
, the closer the interpolated point is to the first
+ * point(parameter pt1
). The closer the value of the parameter
+ * f
is to 0, the closer the interpolated point is to the second
+ * point(parameter pt2
).
+ *
+ * @param pt1 The first point.
+ * @param pt2 The second point.
+ * @param f The level of interpolation between the two points. Indicates
+ * where the new point will be, along the line between
+ * pt1
and pt2
. If f
=1,
+ * pt1
is returned; if f
=0,
+ * pt2
is returned.
+ * @return The new, interpolated point.
+ */
+ static interpolate(pt1: Point, pt2: Point, f: number): Point;
+ /**
+ * Converts a pair of polar coordinates to a Cartesian point coordinate.
+ *
+ * @param len The length coordinate of the polar pair.
+ * @param angle The angle, in radians, of the polar pair.
+ * @return The Cartesian point.
+ */
+ static polar(len: number, angle: number): Point;
+ }
+ export = Point;
+
+}
+declare module "awayjs-core/lib/core/geom/PoissonLookup" {
+ class PoissonLookup {
+ static _distributions: number[][];
+ static initDistributions(): void;
+ static getDistribution(n: number): number[];
+ }
+ export = PoissonLookup;
+
+}
+declare module "awayjs-core/lib/core/geom/Quaternion" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * A Quaternion object which can be used to represent rotations.
+ */
+ class Quaternion {
+ /**
+ * The x value of the quaternion.
+ */
+ public x: number;
+ /**
+ * The y value of the quaternion.
+ */
+ public y: number;
+ /**
+ * The z value of the quaternion.
+ */
+ public z: number;
+ /**
+ * The w value of the quaternion.
+ */
+ public w: number;
+ /**
+ * Creates a new Quaternion object.
+ * @param x The x value of the quaternion.
+ * @param y The y value of the quaternion.
+ * @param z The z value of the quaternion.
+ * @param w The w value of the quaternion.
+ */
+ constructor(x?: number, y?: number, z?: number, w?: number);
+ /**
+ * Returns the magnitude of the quaternion object.
+ */
+ public magnitude : number;
+ /**
+ * Fills the quaternion object with the result from a multiplication of two quaternion objects.
+ *
+ * @param qa The first quaternion in the multiplication.
+ * @param qb The second quaternion in the multiplication.
+ */
+ public multiply(qa: Quaternion, qb: Quaternion): void;
+ public multiplyVector(vector: Vector3D, target?: Quaternion): Quaternion;
+ /**
+ * Fills the quaternion object with values representing the given rotation around a vector.
+ *
+ * @param axis The axis around which to rotate
+ * @param angle The angle in radians of the rotation.
+ */
+ public fromAxisAngle(axis: Vector3D, angle: number): void;
+ /**
+ * Spherically interpolates between two quaternions, providing an interpolation between rotations with constant angle change rate.
+ * @param qa The first quaternion to interpolate.
+ * @param qb The second quaternion to interpolate.
+ * @param t The interpolation weight, a value between 0 and 1.
+ */
+ public slerp(qa: Quaternion, qb: Quaternion, t: number): void;
+ /**
+ * Linearly interpolates between two quaternions.
+ * @param qa The first quaternion to interpolate.
+ * @param qb The second quaternion to interpolate.
+ * @param t The interpolation weight, a value between 0 and 1.
+ */
+ public lerp(qa: Quaternion, qb: Quaternion, t: number): void;
+ /**
+ * Fills the quaternion object with values representing the given euler rotation.
+ *
+ * @param ax The angle in radians of the rotation around the ax axis.
+ * @param ay The angle in radians of the rotation around the ay axis.
+ * @param az The angle in radians of the rotation around the az axis.
+ */
+ public fromEulerAngles(ax: number, ay: number, az: number): void;
+ /**
+ * Fills a target Vector3D object with the Euler angles that form the rotation represented by this quaternion.
+ * @param target An optional Vector3D object to contain the Euler angles. If not provided, a new object is created.
+ * @return The Vector3D containing the Euler angles.
+ */
+ public toEulerAngles(target?: Vector3D): Vector3D;
+ /**
+ * Normalises the quaternion object.
+ */
+ public normalize(val?: number): void;
+ /**
+ * Used to trace the values of a quaternion.
+ *
+ * @return A string representation of the quaternion object.
+ */
+ public toString(): string;
+ /**
+ * Converts the quaternion to a Matrix3D object representing an equivalent rotation.
+ * @param target An optional Matrix3D container to store the transformation in. If not provided, a new object is created.
+ * @return A Matrix3D object representing an equivalent rotation.
+ */
+ public toMatrix3D(target?: Matrix3D): Matrix3D;
+ /**
+ * Extracts a quaternion rotation matrix out of a given Matrix3D object.
+ * @param matrix The Matrix3D out of which the rotation will be extracted.
+ */
+ public fromMatrix(matrix: Matrix3D): void;
+ /**
+ * Converts the quaternion to a Vector.<Number> matrix representation of a rotation equivalent to this quaternion.
+ * @param target The Vector.<Number> to contain the raw matrix data.
+ * @param exclude4thRow If true, the last row will be omitted, and a 4x3 matrix will be generated instead of a 4x4.
+ */
+ public toRawData(target: number[], exclude4thRow?: boolean): void;
+ /**
+ * Clones the quaternion.
+ * @return An exact duplicate of the current Quaternion.
+ */
+ public clone(): Quaternion;
+ /**
+ * Rotates a point.
+ * @param vector The Vector3D object to be rotated.
+ * @param target An optional Vector3D object that will contain the rotated coordinates. If not provided, a new object will be created.
+ * @return A Vector3D object containing the rotated point.
+ */
+ public rotatePoint(vector: Vector3D, target?: Vector3D): Vector3D;
+ /**
+ * Copies the data from a quaternion into this instance.
+ * @param q The quaternion to copy from.
+ */
+ public copyFrom(q: Quaternion): void;
+ }
+ export = Quaternion;
+
+}
+declare module "awayjs-core/lib/core/geom/Rectangle" {
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ /**
+ * A Rectangle object is an area defined by its position, as indicated by its
+ * top-left corner point(x, y) and by its width and its height.
+ *
+ *
+ * The x
, y
, width
, and
+ * height
properties of the Rectangle class are independent of
+ * each other; changing the value of one property has no effect on the others.
+ * However, the right
and bottom
properties are
+ * integrally related to those four properties. For example, if you change the
+ * value of the right
property, the value of the
+ * width
property changes; if you change the bottom
+ * property, the value of the height
property changes.
The following methods and properties use Rectangle objects:
+ * + *applyFilter()
, colorTransform()
,
+ * copyChannel()
, copyPixels()
, draw()
,
+ * fillRect()
, generateFilterRect()
,
+ * getColorBoundsRect()
, getPixels()
,
+ * merge()
, paletteMap()
,
+ * pixelDisolve()
, setPixels()
, and
+ * threshold()
methods, and the rect
property of the
+ * BitmapData classgetBounds()
and getRect()
methods, and
+ * the scrollRect
and scale9Grid
properties of the
+ * DisplayObject classgetCharBoundaries()
method of the TextField
+ * classpixelBounds
property of the Transform classbounds
parameter for the startDrag()
+ * method of the Sprite classprintArea
parameter of the addPage()
+ * method of the PrintJob classYou can use the new Rectangle()
constructor to create a
+ * Rectangle object.
Note: The Rectangle class does not define a rectangular Shape
+ * display object. To draw a rectangular Shape object onscreen, use the
+ * drawRect()
method of the Graphics class.
height
+ * value of a Rectangle object has no effect on the x
,
+ * y
, and width
properties.
+ */
+ public height: number;
+ /**
+ * The width of the rectangle, in pixels. Changing the width
+ * value of a Rectangle object has no effect on the x
,
+ * y
, and height
properties.
+ */
+ public width: number;
+ /**
+ * The x coordinate of the top-left corner of the rectangle. Changing
+ * the value of the x
property of a Rectangle object has no
+ * effect on the y
, width
, and height
+ * properties.
+ *
+ * The value of the x
property is equal to the value of the
+ * left
property.
y
property of a Rectangle object has no
+ * effect on the x
, width
, and height
+ * properties.
+ *
+ * The value of the y
property is equal to the value of the
+ * top
property.
y
and height
properties.
+ */
+ public bottom : number;
+ /**
+ * The location of the Rectangle object's bottom-right corner, determined by
+ * the values of the right
and bottom
properties.
+ */
+ public bottomRight : Point;
+ /**
+ * The x coordinate of the top-left corner of the rectangle. Changing
+ * the left
property of a Rectangle object has no effect on the
+ * y
and height
properties. However it does affect
+ * the width
property, whereas changing the x
value
+ * does not affect the width
property.
+ *
+ * The value of the left
property is equal to the value of
+ * the x
property.
x
and width
properties.
+ */
+ public right : number;
+ /**
+ * The size of the Rectangle object, expressed as a Point object with the
+ * values of the width
and height
properties.
+ */
+ public size : Point;
+ /**
+ * The y coordinate of the top-left corner of the rectangle. Changing
+ * the top
property of a Rectangle object has no effect on the
+ * x
and width
properties. However it does affect
+ * the height
property, whereas changing the y
+ * value does not affect the height
property.
+ *
+ * The value of the top
property is equal to the value of the
+ * y
property.
x
and y
parameters and with the specified
+ * width
and height
parameters. If you call this
+ * public without parameters, a rectangle with x
,
+ * y
, width
, and height
properties set
+ * to 0 is created.
+ *
+ * @param x The x coordinate of the top-left corner of the
+ * rectangle.
+ * @param y The y coordinate of the top-left corner of the
+ * rectangle.
+ * @param width The width of the rectangle, in pixels.
+ * @param height The height of the rectangle, in pixels.
+ */
+ constructor(x?: number, y?: number, width?: number, height?: number);
+ /**
+ * Returns a new Rectangle object with the same values for the
+ * x
, y
, width
, and
+ * height
properties as the original Rectangle object.
+ *
+ * @return A new Rectangle object with the same values for the
+ * x
, y
, width
, and
+ * height
properties as the original Rectangle object.
+ */
+ public clone(): Rectangle;
+ /**
+ * Determines whether the specified point is contained within the rectangular
+ * region defined by this Rectangle object.
+ *
+ * @param x The x coordinate(horizontal position) of the point.
+ * @param y The y coordinate(vertical position) of the point.
+ * @return A value of true
if the Rectangle object contains the
+ * specified point; otherwise false
.
+ */
+ public contains(x: number, y: number): boolean;
+ /**
+ * Determines whether the specified point is contained within the rectangular
+ * region defined by this Rectangle object. This method is similar to the
+ * Rectangle.contains()
method, except that it takes a Point
+ * object as a parameter.
+ *
+ * @param point The point, as represented by its x and y
+ * coordinates.
+ * @return A value of true
if the Rectangle object contains the
+ * specified point; otherwise false
.
+ */
+ public containsPoint(point: Point): boolean;
+ /**
+ * Determines whether the Rectangle object specified by the rect
+ * parameter is contained within this Rectangle object. A Rectangle object is
+ * said to contain another if the second Rectangle object falls entirely
+ * within the boundaries of the first.
+ *
+ * @param rect The Rectangle object being checked.
+ * @return A value of true
if the Rectangle object that you
+ * specify is contained by this Rectangle object; otherwise
+ * false
.
+ */
+ public containsRect(rect: Rectangle): boolean;
+ /**
+ * Copies all of rectangle data from the source Rectangle object into the
+ * calling Rectangle object.
+ *
+ * @param sourceRect The Rectangle object from which to copy the data.
+ */
+ public copyFrom(sourceRect: Rectangle): void;
+ /**
+ * Determines whether the object specified in the toCompare
+ * parameter is equal to this Rectangle object. This method compares the
+ * x
, y
, width
, and
+ * height
properties of an object against the same properties of
+ * this Rectangle object.
+ *
+ * @param toCompare The rectangle to compare to this Rectangle object.
+ * @return A value of true
if the object has exactly the same
+ * values for the x
, y
, width
,
+ * and height
properties as this Rectangle object;
+ * otherwise false
.
+ */
+ public equals(toCompare: Rectangle): boolean;
+ /**
+ * Increases the size of the Rectangle object by the specified amounts, in
+ * pixels. The center point of the Rectangle object stays the same, and its
+ * size increases to the left and right by the dx
value, and to
+ * the top and the bottom by the dy
value.
+ *
+ * @param dx The value to be added to the left and the right of the Rectangle
+ * object. The following equation is used to calculate the new
+ * width and position of the rectangle:
+ * @param dy The value to be added to the top and the bottom of the
+ * Rectangle. The following equation is used to calculate the new
+ * height and position of the rectangle:
+ */
+ public inflate(dx: number, dy: number): void;
+ /**
+ * Increases the size of the Rectangle object. This method is similar to the
+ * Rectangle.inflate()
method except it takes a Point object as
+ * a parameter.
+ *
+ * The following two code examples give the same result:
+ * + * @param point Thex
property of this Point object is used to
+ * increase the horizontal dimension of the Rectangle object.
+ * The y
property is used to increase the vertical
+ * dimension of the Rectangle object.
+ */
+ public inflatePoint(point: Point): void;
+ /**
+ * If the Rectangle object specified in the toIntersect
+ * parameter intersects with this Rectangle object, returns the area of
+ * intersection as a Rectangle object. If the rectangles do not intersect,
+ * this method returns an empty Rectangle object with its properties set to
+ * 0.
+ *
+ * @param toIntersect The Rectangle object to compare against to see if it
+ * intersects with this Rectangle object.
+ * @return A Rectangle object that equals the area of intersection. If the
+ * rectangles do not intersect, this method returns an empty
+ * Rectangle object; that is, a rectangle with its x
,
+ * y
, width
, and height
+ * properties set to 0.
+ */
+ public intersection(toIntersect: Rectangle): Rectangle;
+ /**
+ * Determines whether the object specified in the toIntersect
+ * parameter intersects with this Rectangle object. This method checks the
+ * x
, y
, width
, and
+ * height
properties of the specified Rectangle object to see if
+ * it intersects with this Rectangle object.
+ *
+ * @param toIntersect The Rectangle object to compare against this Rectangle
+ * object.
+ * @return A value of true
if the specified object intersects
+ * with this Rectangle object; otherwise false
.
+ */
+ public intersects(toIntersect: Rectangle): boolean;
+ /**
+ * Determines whether or not this Rectangle object is empty.
+ *
+ * @return A value of true
if the Rectangle object's width or
+ * height is less than or equal to 0; otherwise false
.
+ */
+ public isEmpty(): boolean;
+ /**
+ * Adjusts the location of the Rectangle object, as determined by its
+ * top-left corner, by the specified amounts.
+ *
+ * @param dx Moves the x value of the Rectangle object by this amount.
+ * @param dy Moves the y value of the Rectangle object by this amount.
+ */
+ public offset(dx: number, dy: number): void;
+ /**
+ * Adjusts the location of the Rectangle object using a Point object as a
+ * parameter. This method is similar to the Rectangle.offset()
+ * method, except that it takes a Point object as a parameter.
+ *
+ * @param point A Point object to use to offset this Rectangle object.
+ */
+ public offsetPoint(point: Point): void;
+ /**
+ * Sets all of the Rectangle object's properties to 0. A Rectangle object is
+ * empty if its width or height is less than or equal to 0.
+ *
+ * This method sets the values of the x
, y
,
+ * width
, and height
properties to 0.
x
, y
,
+ * width
, and height
.
+ */
+ public toString(): string;
+ /**
+ * Adds two rectangles together to create a new Rectangle object, by filling
+ * in the horizontal and vertical space between the two rectangles.
+ *
+ * Note: The union()
method ignores rectangles with
+ * 0
as the height or width value, such as: var
+ * rect2:Rectangle = new Rectangle(300,300,50,0);
concatenatedColorTransform
and concatenatedMatrix
+ * properties.
+ *
+ * To apply color transformations: create a ColorTransform object, set the
+ * color adjustments using the object's methods and properties, and then
+ * assign the colorTransformation
property of the
+ * transform
property of the display object to the new
+ * ColorTransformation object.
To apply two-dimensional transformations: create a Matrix object, set
+ * the matrix's two-dimensional transformation, and then assign the
+ * transform.matrix
property of the display object to the new
+ * Matrix object.
To apply three-dimensional transformations: start with a
+ * three-dimensional display object. A three-dimensional display object has a
+ * z
property value other than zero. You do not need to create
+ * the Matrix3D object. For all three-dimensional objects, a Matrix3D object
+ * is created automatically when you assign a z
value to a
+ * display object. You can access the display object's Matrix3D object through
+ * the display object's transform
property. Using the methods of
+ * the Matrix3D class, you can add to or modify the existing transformation
+ * settings. Also, you can create a custom Matrix3D object, set the custom
+ * Matrix3D object's transformation elements, and then assign the new Matrix3D
+ * object to the display object using the transform.matrix
+ * property.
To modify a perspective projection of the stage or root object: use the
+ * transform.matrix
property of the root display object to gain
+ * access to the PerspectiveProjection object. Or, apply different perspective
+ * projection properties to a display object by setting the perspective
+ * projection properties of the display object's parent. The child display
+ * object inherits the new properties. Specifically, create a
+ * PerspectiveProjection object and set its properties, then assign the
+ * PerspectiveProjection object to the perspectiveProjection
+ * property of the parent display object's transform
property.
+ * The specified projection transformation then applies to all the display
+ * object's three-dimensional children.
Since both PerspectiveProjection and Matrix3D objects perform + * perspective transformations, do not assign both to a display object at the + * same time. Use the PerspectiveProjection object for focal length and + * projection center changes. For more control over the perspective + * transformation, create a perspective projection Matrix3D object.
+ */ + class Transform { + private _displayObject; + private _concatenatedColorTransform; + private _concatenatedMatrix; + private _pixelBounds; + public _position: Vector3D; + /** + * + */ + public backVector : Vector3D; + /** + * A ColorTransform object containing values that universally adjust the + * colors in the display object. + * + * @throws TypeError The colorTransform is null when being set + */ + public colorTransform: ColorTransform; + /** + * A ColorTransform object representing the combined color transformations + * applied to the display object and all of its parent objects, back to the + * root level. If different color transformations have been applied at + * different levels, all of those transformations are concatenated into one + * ColorTransform object for this property. + */ + public concatenatedColorTransform : ColorTransform; + /** + * A Matrix object representing the combined transformation matrixes of the + * display object and all of its parent objects, back to the root level. If + * different transformation matrixes have been applied at different levels, + * all of those matrixes are concatenated into one matrix for this property. + * Also, for resizeable SWF content running in the browser, this property + * factors in the difference between stage coordinates and window coordinates + * due to window resizing. Thus, the property converts local coordinates to + * window coordinates, which may not be the same coordinate space as that of + * the Stage. + */ + public concatenatedMatrix : Matrix; + /** + * + */ + public downVector : Vector3D; + /** + * + */ + public forwardVector : Vector3D; + /** + * + */ + public leftVector : Vector3D; + /** + * A Matrix object containing values that alter the scaling, rotation, and + * translation of the display object. + * + *If the matrix
property is set to a value(not
+ * null
), the matrix3D
property is
+ * null
. And if the matrix3D
property is set to a
+ * value(not null
), the matrix
property is
+ * null
.
If the matrix
property is set to a value(not
+ * null
), the matrix3D
property is
+ * null
. And if the matrix3D
property is set to a
+ * value(not null
), the matrix
property is
+ * null
.
Based on the field of view and aspect ratio(dimensions) of the stage, + * a default PerspectiveProjection object is assigned to the root object.
+ */ + public perspectiveProjection: PerspectiveProjection; + /** + * A Rectangle object that defines the bounding rectangle of the display + * object on the stage. + */ + public pixelBounds : Rectangle; + /** + * Defines the position of the 3d object, relative to the local coordinates of the parentObjectContainer3D
.
+ */
+ public position : Vector3D;
+ /**
+ *
+ */
+ public rightVector : Vector3D;
+ /**
+ * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D
.
+ */
+ public rotation : Vector3D;
+ /**
+ * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D
.
+ */
+ public scale : Vector3D;
+ /**
+ *
+ */
+ public upVector : Vector3D;
+ constructor(displayObject: DisplayObject);
+ /**
+ * Returns a Matrix3D object, which can transform the space of a specified
+ * display object in relation to the current display object's space. You can
+ * use the getRelativeMatrix3D()
method to move one
+ * three-dimensional display object relative to another three-dimensional
+ * display object.
+ *
+ * @param relativeTo The display object relative to which the transformation
+ * occurs. To get a Matrix3D object relative to the stage,
+ * set the parameter to the root
or
+ * stage
object. To get the world-relative
+ * matrix of the display object, set the parameter to a
+ * display object that has a perspective transformation
+ * applied to it.
+ * @return A Matrix3D object that can be used to transform the space from the
+ * relativeTo
display object to the current display
+ * object space.
+ */
+ public getRelativeMatrix3D(relativeTo: DisplayObject): Matrix3D;
+ /**
+ * Moves the 3d object forwards along it's local z axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveForward(distance: number): void;
+ /**
+ * Moves the 3d object backwards along it's local z axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveBackward(distance: number): void;
+ /**
+ * Moves the 3d object backwards along it's local x axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveLeft(distance: number): void;
+ /**
+ * Moves the 3d object forwards along it's local x axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveRight(distance: number): void;
+ /**
+ * Moves the 3d object forwards along it's local y axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveUp(distance: number): void;
+ /**
+ * Moves the 3d object backwards along it's local y axis
+ *
+ * @param distance The length of the movement
+ */
+ public moveDown(distance: number): void;
+ }
+ export = Transform;
+
+}
+declare module "awayjs-core/lib/core/geom/UVTransform" {
+ import Matrix = require("awayjs-core/lib/core/geom/Matrix");
+ class UVTransform {
+ private _uvMatrix;
+ private _uvMatrixDirty;
+ private _rotation;
+ private _scaleU;
+ private _scaleV;
+ private _offsetU;
+ private _offsetV;
+ /**
+ *
+ */
+ public offsetU : number;
+ /**
+ *
+ */
+ public offsetV : number;
+ /**
+ *
+ */
+ public rotation : number;
+ /**
+ *
+ */
+ public scaleU : number;
+ /**
+ *
+ */
+ public scaleV : number;
+ /**
+ *
+ */
+ public matrix : Matrix;
+ constructor();
+ /**
+ * @private
+ */
+ private updateUVMatrix();
+ }
+ export = UVTransform;
+
+}
+declare module "awayjs-core/lib/core/geom/Vector3D" {
+ /**
+ * The Vector3D class represents a point or a location in the three-dimensional
+ * space using the Cartesian coordinates x, y, and z. As in a two-dimensional
+ * space, the x property represents the horizontal axis and the y property
+ * represents the vertical axis. In three-dimensional space, the z property
+ * represents depth. The value of the x property increases as the object moves
+ * to the right. The value of the y property increases as the object moves
+ * down. The z property increases as the object moves farther from the point
+ * of view. Using perspective projection and scaling, the object is seen to be
+ * bigger when near and smaller when farther away from the screen. As in a
+ * right-handed three-dimensional coordinate system, the positive z-axis points
+ * away from the viewer and the value of the z property increases as the object
+ * moves away from the viewer's eye. The origin point (0,0,0) of the global
+ * space is the upper-left corner of the stage.
+ *
+ * The Vector3D class can also represent a direction, an arrow pointing from + * the origin of the coordinates, such as (0,0,0), to an endpoint; or a + * floating-point component of an RGB (Red, Green, Blue) color model.
+ * + *Quaternion notation introduces a fourth element, the w property, which + * provides additional orientation information. For example, the w property can + * define an angle of rotation of a Vector3D object. The combination of the + * angle of rotation and the coordinates x, y, and z can determine the display + * object's orientation. Here is a representation of Vector3D elements in + * matrix notation:
+ */ + class Vector3D { + /** + * The x axis defined as a Vector3D object with coordinates (1,0,0). + */ + static X_AXIS: Vector3D; + /** + * The y axis defined as a Vector3D object with coordinates (0,1,0). + */ + static Y_AXIS: Vector3D; + /** + * The z axis defined as a Vector3D object with coordinates (0,0,1). + */ + static Z_AXIS: Vector3D; + /** + * The first element of a Vector3D object, such as the x coordinate of + * a point in the three-dimensional space. The default value is 0. + */ + public x: number; + public y: number; + /** + * The third element of a Vector3D object, such as the y coordinate of + * a point in the three-dimensional space. The default value is 0. + */ + public z: number; + /** + * TThe fourth element of a Vector3D object (in addition to the x, y, + * and z properties) can hold data such as the angle of rotation. The + * default value is 0. + * + *Quaternion notation employs an angle as the fourth element in + * its calculation of three-dimensional rotation. The w property can + * be used to define the angle of rotation about the Vector3D object. + * The combination of the rotation angle and the coordinates (x,y,z) + * determines the display object's orientation.
+ * + *In addition, the w property can be used as a perspective warp
+ * factor for a projected three-dimensional position or as a projection
+ * transform value in representing a three-dimensional coordinate
+ * projected into the two-dimensional space. For example, you can
+ * create a projection matrix using the Matrix3D.rawData
+ * property, that, when applied to a Vector3D object, produces a
+ * transform value in the Vector3D object's fourth element (the w
+ * property). Dividing the Vector3D object's other elements by the
+ * transform value then produces a projected Vector3D object. You can
+ * use the Vector3D.project()
method to divide the first
+ * three elements of a Vector3D object by its fourth element.
lengthSquared()
method whenever possible instead of the
+ * slower Math.sqrt()
method call of the
+ * Vector3D.length()
method.
+ */
+ public lengthSquared : number;
+ /**
+ * Creates an instance of a Vector3D object. If you do not specify a
+ * parameter for the constructor, a Vector3D object is created with
+ * the elements (0,0,0,0).
+ *
+ * @param x The first element, such as the x coordinate.
+ * @param y The second element, such as the y coordinate.
+ * @param z The third element, such as the z coordinate.
+ * @param w An optional element for additional data such as the angle
+ * of rotation.
+ */
+ constructor(x?: number, y?: number, z?: number, w?: number);
+ /**
+ * Adds the value of the x, y, and z elements of the current Vector3D
+ * object to the values of the x, y, and z elements of another Vector3D
+ * object. The add()
method does not change the current
+ * Vector3D object. Instead, it returns a new Vector3D object with
+ * the new values.
+ *
+ * The result of adding two vectors together is a resultant vector. + * One way to visualize the result is by drawing a vector from the + * origin or tail of the first vector to the end or head of the second + * vector. The resultant vector is the distance between the origin + * point of the first vector and the end point of the second vector. + *
+ */ + public add(a: Vector3D): Vector3D; + /** + * Returns the angle in radians between two vectors. The returned angle + * is the smallest radian the first Vector3D object rotates until it + * aligns with the second Vector3D object. + * + *The angleBetween()
method is a static method. You
+ * can use it directly as a method of the Vector3D class.
To convert a degree to a radian, you can use the following + * formula:
+ * + *radian = Math.PI/180 * degree
You can use the normalized cross product of two vertices of a + * polygon surface with the normalized vector of the camera or eye + * viewpoint to get a dot product. The value of the dot product can + * identify whether a surface of a three-dimensional object is hidden + * from the viewpoint.
+ * + * @param a A second Vector3D object. + * @returns A new Vector3D object that is perpendicular to the current + * Vector3D object and the Vector3D object specified as the + * parameter. + */ + public crossProduct(a: Vector3D): Vector3D; + /** + * Decrements the value of the x, y, and z elements of the current + * Vector3D object by the values of the x, y, and z elements of + * specified Vector3D object. Unlike the + *Vector3D.subtract()
method, the
+ * decrementBy()
method changes the current Vector3D
+ * object and does not return a new Vector3D object.
+ *
+ * @param a The Vector3D object containing the values to subtract from
+ * the current Vector3D object.
+ */
+ public decrementBy(a: Vector3D): void;
+ /**
+ * Returns the distance between two Vector3D objects. The
+ * distance()
method is a static method. You can use it
+ * directly as a method of the Vector3D class to get the Euclidean
+ * distance between two three-dimensional points.
+ *
+ * @param pt1 A Vector3D object as the first three-dimensional point.
+ * @param pt2 A Vector3D object as the second three-dimensional point.
+ * @returns The distance between two Vector3D objects.
+ */
+ static distance(pt1: Vector3D, pt2: Vector3D): number;
+ /**
+ * If the current Vector3D object and the one specified as the
+ * parameter are unit vertices, this method returns the cosine of the
+ * angle between the two vertices. Unit vertices are vertices that
+ * point to the same direction but their length is one. They remove the
+ * length of the vector as a factor in the result. You can use the
+ * normalize()
method to convert a vector to a unit
+ * vector.
+ *
+ * The dotProduct()
method finds the angle between two
+ * vertices. It is also used in backface culling or lighting
+ * calculations. Backface culling is a procedure for determining which
+ * surfaces are hidden from the viewpoint. You can use the normalized
+ * vertices from the camera, or eye, viewpoint and the cross product of
+ * the vertices of a polygon surface to get the dot product. If the dot
+ * product is less than zero, then the surface is facing the camera or
+ * the viewer. If the two unit vertices are perpendicular to each
+ * other, they are orthogonal and the dot product is zero. If the two
+ * vertices are parallel to each other, the dot product is one.
Vector3D.add()
+ * method, the incrementBy()
method changes the current
+ * Vector3D object and does not return a new Vector3D object.
+ *
+ * @param a The Vector3D object to be added to the current Vector3D
+ * object.
+ */
+ public incrementBy(a: Vector3D): void;
+ /**
+ * Compares the elements of the current Vector3D object with the
+ * elements of a specified Vector3D object to determine whether they
+ * are nearly equal. The two Vector3D objects are nearly equal if the
+ * value of all the elements of the two vertices are equal, or the
+ * result of the comparison is within the tolerance range. The
+ * difference between two elements must be less than the number
+ * specified as the tolerance parameter. If the third optional
+ * parameter is set to true
, all four elements of the
+ * Vector3D objects, including the w
property, are
+ * compared. Otherwise, only the x, y, and z elements are included in
+ * the comparison.
+ */
+ /**
+ *
+ * @param toCompare The Vector3D object to be compared with the current
+ * Vector3D object.
+ * @param tolerance A number determining the tolerance factor. If the
+ * difference between the values of the Vector3D
+ * element specified in the toCompare parameter and
+ * the current Vector3D element is less than the
+ * tolerance number, the two values are considered
+ * nearly equal.
+ * @param allFour An optional parameter that specifies whether the w
+ * property of the Vector3D objects is used in the
+ * comparison.
+ * @returns A value of true if the specified Vector3D object is nearly
+ * equal to the current Vector3D object; false if it is not
+ * equal.
+ *
+ * @see away.geom.Vector3D#equals()
+ */
+ public nearEquals(toCompare: Vector3D, tolerance: number, allFour?: boolean): boolean;
+ /**
+ * Sets the current Vector3D object to its inverse. The inverse object
+ * is also considered the opposite of the original object. The value of
+ * the x, y, and z properties of the current Vector3D object is changed
+ * to -x, -y, and -z.
+ */
+ public negate(): void;
+ /**
+ * Converts a Vector3D object to a unit vector by dividing the first
+ * three elements (x, y, z) by the length of the vector. Unit vertices
+ * are vertices that have a direction but their length is one. They
+ * simplify vector calculations by removing length as a factor.
+ */
+ /**
+ * Scales the line segment between(0,0) and the current point to a set
+ * length.
+ *
+ * @param thickness The scaling value. For example, if the current
+ * Vector3D object is (0,3,4), and you normalize it to
+ * 1, the point returned is at(0,0.6,0.8).
+ */
+ public normalize(thickness?: number): void;
+ /**
+ * Divides the value of the x
, y
, and
+ * z
properties of the current Vector3D object by the
+ * value of its w
property.
+ *
+ * If the current Vector3D object is the result of multiplying a
+ * Vector3D object by a projection Matrix3D object, the w property can
+ * hold the transform value. The project()
method then can
+ * complete the projection by dividing the elements by the
+ * w
property. Use the Matrix3D.rawData
+ * property to create a projection Matrix3D object.
subtract()
method does not
+ * change the current Vector3D object. Instead, this method returns a
+ * new Vector3D object with the new values.
+ *
+ * @param a The Vector3D object to be subtracted from the current
+ * Vector3D object.
+ * @returns A new Vector3D object that is the difference between the
+ * current Vector3D and the specified Vector3D object.
+ *
+ * @see away.geom.Vector3D#decrementBy()
+ */
+ public subtract(a: Vector3D): Vector3D;
+ /**
+ * Returns a string representation of the current Vector3D object. The
+ * string contains the values of the x, y, and z properties.
+ */
+ public toString(): string;
+ }
+ export = Vector3D;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLibrary" {
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import AssetLibraryBundle = require("awayjs-core/lib/core/library/AssetLibraryBundle");
+ import AssetLibraryIterator = require("awayjs-core/lib/core/library/AssetLibraryIterator");
+ import AssetLoaderContext = require("awayjs-core/lib/core/library/AssetLoaderContext");
+ import AssetLoaderToken = require("awayjs-core/lib/core/library/AssetLoaderToken");
+ import ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * AssetLibrary enforces a singleton pattern and is not intended to be instanced.
+ * It's purpose is to allow access to the default library bundle through a set of static shortcut methods.
+ * If you are interested in creating multiple library bundles, please use the getBundle()
method.
+ */
+ class AssetLibrary {
+ /**
+ * Creates a new AssetLibrary
object.
+ *
+ */
+ constructor();
+ /**
+ * Returns an AssetLibrary bundle instance. If no key is given, returns the default bundle (which is
+ * similar to using the AssetLibraryBundle as a singleton). To keep several separated library bundles,
+ * pass a string key to this method to define which bundle should be returned. This is
+ * referred to as using the AssetLibraryBundle as a multiton.
+ *
+ * @param key Defines which multiton instance should be returned.
+ * @return An instance of the asset library
+ */
+ static getBundle(key?: string): AssetLibraryBundle;
+ /**
+ *
+ */
+ static enableParser(parserClass: any): void;
+ /**
+ *
+ */
+ static enableParsers(parserClasses: Object[]): void;
+ /**
+ * Short-hand for conflictStrategy property on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.conflictStrategy
+ */
+ static conflictStrategy : ConflictStrategyBase;
+ /**
+ * Short-hand for conflictPrecedence property on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.conflictPrecedence
+ */
+ static conflictPrecedence : string;
+ /**
+ * Short-hand for createIterator() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.createIterator()
+ */
+ static createIterator(assetTypeFilter?: string, namespaceFilter?: string, filterFunc?: any): AssetLibraryIterator;
+ /**
+ * Short-hand for load() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.load()
+ */
+ static load(req: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Short-hand for loadData() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.loadData()
+ */
+ static loadData(data: any, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ static stopLoad(): void;
+ /**
+ * Short-hand for getAsset() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.getAsset()
+ */
+ static getAsset(name: string, ns?: string): IAsset;
+ /**
+ * Short-hand for addEventListener() method on default asset library bundle.
+ */
+ static addEventListener(type: string, listener: Function): void;
+ /**
+ * Short-hand for removeEventListener() method on default asset library bundle.
+ */
+ static removeEventListener(type: string, listener: Function): void;
+ /**
+ * Short-hand for hasEventListener() method on default asset library bundle.
+
+ public static hasEventListener(type:string):boolean
+ {
+ return AssetLibrary.getBundle().hasEventListener(type);
+ }
+
+ public static willTrigger(type:string):boolean
+ {
+ return getBundle().willTrigger(type);
+ }
+ */
+ /**
+ * Short-hand for addAsset() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.addAsset()
+ */
+ static addAsset(asset: IAsset): void;
+ /**
+ * Short-hand for removeAsset() method on default asset library bundle.
+ *
+ * @param asset The asset which should be removed from the library.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAsset()
+ */
+ static removeAsset(asset: IAsset, dispose?: boolean): void;
+ /**
+ * Short-hand for removeAssetByName() method on default asset library bundle.
+ *
+ * @param name The name of the asset to be removed.
+ * @param ns The namespace to which the desired asset belongs.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAssetByName()
+ */
+ static removeAssetByName(name: string, ns?: string, dispose?: boolean): IAsset;
+ /**
+ * Short-hand for removeAllAssets() method on default asset library bundle.
+ *
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAllAssets()
+ */
+ static removeAllAssets(dispose?: boolean): void;
+ /**
+ * Short-hand for removeNamespaceAssets() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.removeNamespaceAssets()
+ */
+ static removeNamespaceAssets(ns?: string, dispose?: boolean): void;
+ }
+ export = AssetLibrary;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLibraryBundle" {
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import AssetLibraryIterator = require("awayjs-core/lib/core/library/AssetLibraryIterator");
+ import AssetLoaderToken = require("awayjs-core/lib/core/library/AssetLoaderToken");
+ import AssetLoaderContext = require("awayjs-core/lib/core/library/AssetLoaderContext");
+ import ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * AssetLibraryBundle enforces a multiton pattern and is not intended to be instanced directly.
+ * Its purpose is to create a container for 3D data management, both before and after parsing.
+ * If you are interested in creating multiple library bundles, please use the getInstance()
method.
+ */
+ class AssetLibraryBundle extends EventDispatcher {
+ static _iInstances: Object;
+ private _loadingSessions;
+ private _strategy;
+ private _strategyPreference;
+ private _assets;
+ private _assetDictionary;
+ private _assetDictDirty;
+ private _loadingSessionsGarbage;
+ private _gcTimeoutIID;
+ private _onAssetRenameDelegate;
+ private _onAssetConflictResolvedDelegate;
+ private _onResourceCompleteDelegate;
+ private _onTextureSizeErrorDelegate;
+ private _onAssetCompleteDelegate;
+ private _onLoadErrorDelegate;
+ private _onParseErrorDelegate;
+ /**
+ * Creates a new AssetLibraryBundle
object.
+ *
+ * @param me A multiton enforcer for the AssetLibraryBundle ensuring it cannnot be instanced.
+ */
+ constructor();
+ /**
+ * Returns an AssetLibraryBundle instance. If no key is given, returns the default bundle instance (which is
+ * similar to using the AssetLibraryBundle as a singleton.) To keep several separated library bundles,
+ * pass a string key to this method to define which bundle should be returned. This is
+ * referred to as using the AssetLibrary as a multiton.
+ *
+ * @param key Defines which multiton instance should be returned.
+ * @return An instance of the asset library
+ */
+ static getInstance(key?: string): AssetLibraryBundle;
+ /**
+ *
+ */
+ public enableParser(parserClass: Object): void;
+ /**
+ *
+ */
+ public enableParsers(parserClasses: Object[]): void;
+ /**
+ * Defines which strategy should be used for resolving naming conflicts, when two library
+ * assets are given the same name. By default, ConflictStrategy.APPEND_NUM_SUFFIX
+ * is used which means that a numeric suffix is appended to one of the assets. The
+ * conflictPrecedence
property defines which of the two conflicting assets will
+ * be renamed.
+ *
+ * @see naming.ConflictStrategy
+ * @see AssetLibrary.conflictPrecedence
+ */
+ public conflictStrategy : ConflictStrategyBase;
+ /**
+ * Defines which asset should have precedence when resolving a naming conflict between
+ * two assets of which one has just been renamed by the user or by a parser. By default
+ * ConflictPrecedence.FAVOR_NEW
is used, meaning that the newly renamed
+ * asset will keep it's new name while the older asset gets renamed to not conflict.
+ *
+ * This property is ignored for conflict strategies that do not actually rename an
+ * asset automatically, such as ConflictStrategy.IGNORE and ConflictStrategy.THROW_ERROR.
+ *
+ * @see away.library.ConflictPrecedence
+ * @see away.library.ConflictStrategy
+ */
+ public conflictPrecedence : string;
+ /**
+ * Create an AssetLibraryIterator instance that can be used to iterate over the assets
+ * in this asset library instance. The iterator can filter assets on asset type and/or
+ * namespace. A "null" filter value means no filter of that type is used.
+ *
+ * @param assetTypeFilter Asset type to filter on (from the AssetType enum class.) Use
+ * null to not filter on asset type.
+ * @param namespaceFilter Namespace to filter on. Use null to not filter on namespace.
+ * @param filterFunc Callback function to use when deciding whether an asset should be
+ * included in the iteration or not. This needs to be a function that takes a single
+ * parameter of type IAsset and returns a boolean where true means it should be included.
+ *
+ * @see away.library.AssetType
+ */
+ public createIterator(assetTypeFilter?: string, namespaceFilter?: string, filterFunc?: any): AssetLibraryIterator;
+ /**
+ * Loads a file and (optionally) all of its dependencies.
+ *
+ * @param req The URLRequest object containing the URL of the file to be loaded.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ * @return A handle to the retrieved resource.
+ */
+ public load(req: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Loads a resource from existing data in memory.
+ *
+ * @param data The data object containing all resource information.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ * @return A handle to the retrieved resource.
+ */
+ public loadData(data: any, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ *
+ */
+ public getAsset(name: string, ns?: string): IAsset;
+ /**
+ * Adds an asset to the asset library, first making sure that it's name is unique
+ * using the method defined by the conflictStrategy
and
+ * conflictPrecedence
properties.
+ */
+ public addAsset(asset: IAsset): void;
+ /**
+ * Removes an asset from the library, and optionally disposes that asset by calling
+ * it's disposeAsset() method (which for most assets is implemented as a default
+ * version of that type's dispose() method.
+ *
+ * @param asset The asset which should be removed from this library.
+ * @param dispose Defines whether the assets should also be disposed.
+ */
+ public removeAsset(asset: IAsset, dispose?: boolean): void;
+ /**
+ * Removes an asset which is specified using name and namespace.
+ *
+ * @param name The name of the asset to be removed.
+ * @param ns The namespace to which the desired asset belongs.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see away.library.AssetLibrary.removeAsset()
+ */
+ public removeAssetByName(name: string, ns?: string, dispose?: boolean): IAsset;
+ /**
+ * Removes all assets from the asset library, optionally disposing them as they
+ * are removed.
+ *
+ * @param dispose Defines whether the assets should also be disposed.
+ */
+ public removeAllAssets(dispose?: boolean): void;
+ /**
+ * Removes all assets belonging to a particular namespace (null for default)
+ * from the asset library, and optionall disposes them by calling their
+ * disposeAsset() method.
+ *
+ * @param ns The namespace from which all assets should be removed.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see away.library.AssetLibrary.removeAsset()
+ */
+ public removeNamespaceAssets(ns?: string, dispose?: boolean): void;
+ private removeAssetFromDict(asset, autoRemoveEmptyNamespace?);
+ public stopAllLoadingSessions(): void;
+ private rehashAssetDict();
+ /**
+ * Called when a an error occurs during loading.
+ */
+ private onLoadError(event);
+ /**
+ * Called when a an error occurs during parsing.
+ */
+ private onParseError(event);
+ private onAssetComplete(event);
+ private onTextureSizeError(event);
+ /**
+ * Called when the resource and all of its dependencies was retrieved.
+ */
+ private onResourceComplete(event);
+ private loadingSessionGC();
+ private killLoadingSession(loader);
+ private onAssetRename(event);
+ private onAssetConflictResolved(event);
+ }
+ export = AssetLibraryBundle;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLibraryIterator" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ class AssetLibraryIterator {
+ private _assets;
+ private _filtered;
+ private _idx;
+ constructor(assets: IAsset[], assetTypeFilter: string, namespaceFilter: string, filterFunc: any);
+ public currentAsset : IAsset;
+ public numAssets : number;
+ public next(): IAsset;
+ public reset(): void;
+ public setIndex(index: number): void;
+ private filter(assetTypeFilter, namespaceFilter, filterFunc);
+ }
+ export = AssetLibraryIterator;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLoader" {
+ import AssetLoaderContext = require("awayjs-core/lib/core/library/AssetLoaderContext");
+ import AssetLoaderToken = require("awayjs-core/lib/core/library/AssetLoaderToken");
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ import ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+ /**
+ * AssetLoader can load any file format that away.supports (or for which a third-party parser
+ * has been plugged in) and it's dependencies. Events are dispatched when assets are encountered
+ * and for when the resource (or it's dependencies) have been loaded.
+ *
+ * The AssetLoader will not make assets available in any other way than through the dispatched
+ * events. To store assets and make them available at any point from any module in an application,
+ * use the AssetLibrary to load and manage assets.
+ *
+ * @see away.library.AssetLibrary
+ */
+ class AssetLoader extends EventDispatcher {
+ private _context;
+ private _token;
+ private _uri;
+ private _content;
+ private _materialMode;
+ private _errorHandlers;
+ private _parseErrorHandlers;
+ private _stack;
+ private _baseDependency;
+ private _currentDependency;
+ private _namespace;
+ private _onReadyForDependenciesDelegate;
+ private _onParseCompleteDelegate;
+ private _onParseErrorDelegate;
+ private _onLoadCompleteDelegate;
+ private _onLoadErrorDelegate;
+ private _onTextureSizeErrorDelegate;
+ private _onAssetCompleteDelegate;
+ private static _parsers;
+ /**
+ * Enables a specific parser.
+ * When no specific parser is set for a loading/parsing opperation,
+ * loader3d can autoselect the correct parser to use.
+ * A parser must have been enabled, to be considered when autoselecting the parser.
+ *
+ * @param parser The parser class to enable.
+ *
+ * @see away.parsers.Parsers
+ */
+ static enableParser(parser: any): void;
+ /**
+ * Enables a list of parsers.
+ * When no specific parser is set for a loading/parsing opperation,
+ * AssetLoader can autoselect the correct parser to use.
+ * A parser must have been enabled, to be considered when autoselecting the parser.
+ *
+ * @param parsers A Vector of parser classes to enable.
+ * @see away.parsers.Parsers
+ */
+ static enableParsers(parsers: Object[]): void;
+ /**
+ * Returns the base dependency of the loader
+ */
+ public baseDependency : ResourceDependency;
+ /**
+ * Create a new ResourceLoadSession object.
+ */
+ constructor(materialMode?: number);
+ /**
+ * Loads a file and (optionally) all of its dependencies.
+ *
+ * @param req The URLRequest object containing the URL of the file to be loaded.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ */
+ public load(req: URLRequest, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Loads a resource from already loaded data.
+ *
+ * @param data The data object containing all resource information.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ */
+ public loadData(data: any, id: string, context?: AssetLoaderContext, ns?: string, parser?: ParserBase): AssetLoaderToken;
+ /**
+ * Recursively retrieves the next to-be-loaded and parsed dependency on the stack, or pops the list off the
+ * stack when complete and continues on the top set.
+ * @param parser The parser that will translate the data into a usable resource.
+ */
+ private retrieveNext(parser?);
+ /**
+ * Retrieves a single dependency.
+ * @param parser The parser that will translate the data into a usable resource.
+ */
+ private retrieveDependency(dependency);
+ private joinUrl(base, end);
+ private resolveDependencyUrl(dependency);
+ private retrieveParserDependencies();
+ private resolveParserDependencies();
+ /**
+ * Called when a single dependency loading failed, and pushes further dependencies onto the stack.
+ * @param event
+ */
+ private onLoadError(event);
+ /**
+ * Called when a dependency parsing failed, and dispatches a ParserEvent.PARSE_ERROR
+ * @param event
+ */
+ private onParseError(event);
+ private onAssetComplete(event);
+ private onReadyForDependencies(event);
+ /**
+ * Called when a single dependency was parsed, and pushes further dependencies onto the stack.
+ * @param event
+ */
+ private onLoadComplete(event);
+ /**
+ * Called when parsing is complete.
+ */
+ private onParseComplete(event);
+ /**
+ * Called when an image is too large or it's dimensions are not a power of 2
+ * @param event
+ */
+ private onTextureSizeError(event);
+ private addEventListeners(loader);
+ private removeEventListeners(loader);
+ public stop(): void;
+ private dispose();
+ /**
+ * @private
+ * This method is used by other loader classes (e.g. Loader3D and AssetLibraryBundle) to
+ * add error event listeners to the AssetLoader instance. This system is used instead of
+ * the regular EventDispatcher system so that the AssetLibrary error handler can be sure
+ * that if hasEventListener() returns true, it's client code that's listening for the
+ * event. Secondly, functions added as error handler through this custom method are
+ * expected to return a boolean value indicating whether the event was handled (i.e.
+ * whether they in turn had any client code listening for the event.) If no handlers
+ * return true, the AssetLoader knows that the event wasn't handled and will throw an RTE.
+ */
+ public _iAddParseErrorHandler(handler: any): void;
+ public _iAddErrorHandler(handler: any): void;
+ /**
+ * Guesses the parser to be used based on the file contents.
+ * @param data The data to be parsed.
+ * @param uri The url or id of the object to be parsed.
+ * @return An instance of the guessed parser.
+ */
+ private getParserFromData(data);
+ /**
+ * Initiates parsing of the loaded dependency.
+ *
+ * @param The dependency to be parsed.
+ */
+ private parseDependency(dependency);
+ /**
+ * Guesses the parser to be used based on the file extension.
+ * @return An instance of the guessed parser.
+ */
+ private getParserFromSuffix(url);
+ }
+ export = AssetLoader;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLoaderContext" {
+ class AssetLoaderContext {
+ static UNDEFINED: number;
+ static SINGLEPASS_MATERIALS: number;
+ static MULTIPASS_MATERIALS: number;
+ private _includeDependencies;
+ private _dependencyBaseUrl;
+ private _embeddedDataByUrl;
+ private _remappedUrls;
+ private _materialMode;
+ private _overrideAbsPath;
+ private _overrideFullUrls;
+ /**
+ * AssetLoaderContext provides configuration for the AssetLoader load() and parse() operations.
+ * Use it to configure how (and if) dependencies are loaded, or to map dependency URLs to
+ * embedded data.
+ *
+ * @see away.loading.AssetLoader
+ */
+ constructor(includeDependencies?: boolean, dependencyBaseUrl?: string);
+ /**
+ * Defines whether dependencies (all files except the one at the URL given to the load() or
+ * parseData() operations) should be automatically loaded. Defaults to true.
+ */
+ public includeDependencies : boolean;
+ /**
+ * MaterialMode defines, if the Parser should create SinglePass or MultiPass Materials
+ * Options:
+ * 0 (Default / undefined) - All Parsers will create SinglePassMaterials, but the AWD2.1parser will create Materials as they are defined in the file
+ * 1 (Force SinglePass) - All Parsers create SinglePassMaterials
+ * 2 (Force MultiPass) - All Parsers will create MultiPassMaterials
+ *
+ */
+ public materialMode : number;
+ /**
+ * A base URL that will be prepended to all relative dependency URLs found in a loaded resource.
+ * Absolute paths will not be affected by the value of this property.
+ */
+ public dependencyBaseUrl : string;
+ /**
+ * Defines whether absolute paths (defined as paths that begin with a "/") should be overridden
+ * with the dependencyBaseUrl defined in this context. If this is true, and the base path is
+ * "base", /path/to/asset.jpg will be resolved as base/path/to/asset.jpg.
+ */
+ public overrideAbsolutePaths : boolean;
+ /**
+ * Defines whether "full" URLs (defined as a URL that includes a scheme, e.g. http://) should be
+ * overridden with the dependencyBaseUrl defined in this context. If this is true, and the base
+ * path is "base", http://example.com/path/to/asset.jpg will be resolved as base/path/to/asset.jpg.
+ */
+ public overrideFullURLs : boolean;
+ /**
+ * Map a URL to another URL, so that files that are referred to by the original URL will instead
+ * be loaded from the new URL. Use this when your file structure does not match the one that is
+ * expected by the loaded file.
+ *
+ * @param originalUrl The original URL which is referenced in the loaded resource.
+ * @param newUrl The URL from which away.should load the resource instead.
+ *
+ * @see mapUrlToData()
+ */
+ public mapUrl(originalUrl: string, newUrl: string): void;
+ /**
+ * Map a URL to embedded data, so that instead of trying to load a dependency from the URL at
+ * which it's referenced, the dependency data will be retrieved straight from the memory instead.
+ *
+ * @param originalUrl The original URL which is referenced in the loaded resource.
+ * @param data The embedded data. Can be ByteArray or a class which can be used to create a bytearray.
+ */
+ public mapUrlToData(originalUrl: string, data: any): void;
+ /**
+ * @private
+ * Defines whether embedded data has been mapped to a particular URL.
+ */
+ public _iHasDataForUrl(url: string): boolean;
+ /**
+ * @private
+ * Returns embedded data for a particular URL.
+ */
+ public _iGetDataForUrl(url: string): any;
+ /**
+ * @private
+ * Defines whether a replacement URL has been mapped to a particular URL.
+ */
+ public _iHasMappingForUrl(url: string): boolean;
+ /**
+ * @private
+ * Returns new (replacement) URL for a particular original URL.
+ */
+ public _iGetRemappedUrl(originalUrl: string): string;
+ }
+ export = AssetLoaderContext;
+
+}
+declare module "awayjs-core/lib/core/library/AssetLoaderToken" {
+ import AssetLoader = require("awayjs-core/lib/core/library/AssetLoader");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ /**
+ * Instances of this class are returned as tokens by loading operations
+ * to provide an object on which events can be listened for in cases where
+ * the actual asset loader is not directly available (e.g. when using the
+ * AssetLibrary to perform the load.)
+ *
+ * By listening for events on this class instead of directly on the
+ * AssetLibrary, one can distinguish different loads from each other.
+ *
+ * The token will dispatch all events that the original AssetLoader dispatches,
+ * while not providing an interface to obstruct the load and is as such a
+ * safer return value for loader wrappers than the loader itself.
+ */
+ class AssetLoaderToken extends EventDispatcher {
+ public _iLoader: AssetLoader;
+ constructor(loader: AssetLoader);
+ public addEventListener(type: string, listener: Function): void;
+ public removeEventListener(type: string, listener: Function): void;
+ public hasEventListener(type: string, listener?: Function): boolean;
+ }
+ export = AssetLoaderToken;
+
+}
+declare module "awayjs-core/lib/core/library/AssetType" {
+ class AssetType {
+ static ANIMATION_NODE: string;
+ static ANIMATION_SET: string;
+ static ANIMATION_STATE: string;
+ static ANIMATOR: string;
+ static BILLBOARD: string;
+ static CAMERA: string;
+ static CONTAINER: string;
+ static EFFECTS_METHOD: string;
+ static GEOMETRY: string;
+ static LINE_SEGMENT: string;
+ static LIGHT: string;
+ static LIGHT_PICKER: string;
+ static MATERIAL: string;
+ static MESH: string;
+ static TRIANGLE_SUB_MESH: string;
+ static LINE_SUB_MESH: string;
+ static PRIMITIVE_PREFAB: string;
+ static SHADOW_MAP_METHOD: string;
+ static SKELETON: string;
+ static SKELETON_POSE: string;
+ static SKYBOX: string;
+ static STATE_TRANSITION: string;
+ static TEXTURE: string;
+ static TEXTURE_PROJECTOR: string;
+ }
+ export = AssetType;
+
+}
+declare module "awayjs-core/lib/core/library/ConflictPrecedence" {
+ /**
+ * Enumaration class for precedence when resolving naming conflicts in the library.
+ *
+ * @see away.library.AssetLibrary.conflictPrecedence
+ * @see away.library.AssetLibrary.conflictStrategy
+ * @see away.library.naming.ConflictStrategy
+ */
+ class ConflictPrecedence {
+ /**
+ * Signals that in a conflict, the previous owner of the conflicting name
+ * should be favored (and keep it's name) and that the newly renamed asset
+ * is reverted to a non-conflicting name.
+ */
+ static FAVOR_OLD: string;
+ /**
+ * Signales that in a conflict, the newly renamed asset is favored (and keeps
+ * it's newly defined name) and that the previous owner of that name gets
+ * renamed to a non-conflicting name.
+ */
+ static FAVOR_NEW: string;
+ }
+ export = ConflictPrecedence;
+
+}
+declare module "awayjs-core/lib/core/library/ConflictStrategy" {
+ import ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+ /**
+ * Enumeration class for bundled conflict strategies. Set one of these values (or an
+ * instance of a self-defined sub-class of ConflictStrategyBase) to the conflictStrategy
+ * property on an AssetLibrary to define how that library resolves naming conflicts.
+ *
+ * The value of the AssetLibrary.conflictPrecedence
property defines which
+ * of the conflicting assets will get to keep it's name, and which is renamed (if any.)
+ *
+ * @see away.library.AssetLibrary.conflictStrategy
+ * @see away.library.naming.ConflictStrategyBase
+ */
+ class ConflictStrategy {
+ /**
+ * Specifies that in case of a naming conflict, one of the assets will be renamed and
+ * a numeric suffix appended to the base name.
+ */
+ static APPEND_NUM_SUFFIX: ConflictStrategyBase;
+ /**
+ * Specifies that naming conflicts should be ignored. This is not recommended in most
+ * cases, unless it can be 100% guaranteed that the application does not cause naming
+ * conflicts in the library (i.e. when an app-level system is in place to prevent this.)
+ */
+ static IGNORE: ConflictStrategyBase;
+ /**
+ * Specifies that an error should be thrown if a naming conflict is discovered. Use this
+ * to be 100% sure that naming conflicts never occur unnoticed, and when it's undesirable
+ * to have the library automatically rename assets to avoid such conflicts.
+ */
+ static THROW_ERROR: ConflictStrategyBase;
+ constructor(include?: ConflictStrategyBase);
+ }
+ export = ConflictStrategy;
+
+}
+declare module "awayjs-core/lib/core/library/ConflictStrategyBase" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ /**
+ * Abstract base class for naming conflict resolution classes. Extend this to create a
+ * strategy class which the asset library can use to resolve asset naming conflicts, or
+ * use one of the bundled concrete strategy classes:
+ *
+ * The UID has the form
+ * "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
+ * where X is a hexadecimal digit (0-9, A-F).
This UID will not be truly globally unique; but it is the best + * we can do without player support for UID generation.
+ * + * @return The newly-generated UID. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + static createUID(): string; + } + export = IDUtil; + +} +declare module "awayjs-core/lib/core/library/IgnoreConflictStrategy" { + import ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase"); + import IAsset = require("awayjs-core/lib/core/library/IAsset"); + class IgnoreConflictStrategy extends ConflictStrategyBase { + constructor(); + public resolveConflict(changedAsset: IAsset, oldAsset: IAsset, assetsDictionary: Object, precedence: string): void; + public create(): ConflictStrategyBase; + } + export = IgnoreConflictStrategy; + +} +declare module "awayjs-core/lib/core/library/NamedAssetBase" { + import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); + class NamedAssetBase extends EventDispatcher { + static ID_COUNT: number; + private _originalName; + private _namespace; + private _name; + private _id; + private _full_path; + static DEFAULT_NAMESPACE: string; + constructor(name?: string); + /** + * + */ + public assetType : string; + /** + * The original name used for this asset in the resource (e.g. file) in which + * it was found. This may not be the same asname
, which may
+ * have changed due to of a name conflict.
+ */
+ public originalName : string;
+ /**
+ * A unique id for the asset, used to identify assets in an associative array
+ */
+ public id : number;
+ public name : string;
+ public dispose(): void;
+ public assetNamespace : string;
+ public assetFullPath : string[];
+ public assetPathEquals(name: string, ns: string): boolean;
+ public resetAssetPath(name: string, ns?: string, overrideOriginal?: boolean): void;
+ private updateFullPath();
+ }
+ export = NamedAssetBase;
+
+}
+declare module "awayjs-core/lib/core/library/NumSuffixConflictStrategy" {
+ import ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ class NumSuffixConflictStrategy extends ConflictStrategyBase {
+ private _separator;
+ private _next_suffix;
+ constructor(separator?: string);
+ public resolveConflict(changedAsset: IAsset, oldAsset: IAsset, assetsDictionary: Object, precedence: string): void;
+ public create(): ConflictStrategyBase;
+ }
+ export = NumSuffixConflictStrategy;
+
+}
+declare module "awayjs-core/lib/core/net/CrossDomainPolicy" {
+ class CrossDomainPolicy {
+ static ANONYMOUS: string;
+ static USE_CREDENTIALS: string;
+ }
+ export = CrossDomainPolicy;
+
+}
+declare module "awayjs-core/lib/core/net/URLLoader" {
+ import URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ /**
+ * The URLLoader is used to load a single file, as part of a resource.
+ *
+ * While URLLoader can be used directly, e.g. to create a third-party asset
+ * management system, it's recommended to use any of the classes Loader3D, AssetLoader
+ * and AssetLibrary instead in most cases.
+ *
+ * @see AssetLoader
+ * @see away.library.AssetLibrary
+ */
+ class URLLoader extends EventDispatcher {
+ private _XHR;
+ private _bytesLoaded;
+ private _bytesTotal;
+ private _dataFormat;
+ private _loadError;
+ private _request;
+ private _data;
+ private _loadStartEvent;
+ private _loadErrorEvent;
+ private _loadCompleteEvent;
+ private _progressEvent;
+ /**
+ * Creates a new URLLoader object.
+ */
+ constructor();
+ /**
+ *
+ */
+ public url : string;
+ /**
+ *
+ */
+ public data : any;
+ /**
+ *
+ * URLLoaderDataFormat.BINARY
+ * URLLoaderDataFormat.TEXT
+ * URLLoaderDataFormat.VARIABLES
+ *
+ * @param format
+ */
+ public dataFormat : string;
+ /**
+ *
+ * @returns {number}
+ */
+ public bytesLoaded : number;
+ /**
+ *
+ * @returns {number}
+ */
+ public bytesTotal : number;
+ /**
+ * Load a resource from a file.
+ *
+ * @param request The URLRequest object containing the URL of the object to be loaded.
+ */
+ public load(request: URLRequest): void;
+ /**
+ *
+ */
+ public close(): void;
+ /**
+ *
+ */
+ public dispose(): void;
+ /**
+ *
+ * @param xhr
+ * @param responseType
+ */
+ private setResponseType(xhr, responseType);
+ /**
+ *
+ * @param request {URLRequest}
+ */
+ private getRequest(request);
+ /**
+ *
+ * @param request {URLRequest}
+ */
+ private postRequest(request);
+ /**
+ *
+ * @param error {XMLHttpRequestException}
+ */
+ private handleXmlHttpRequestException(error);
+ /**
+ *
+ */
+ private initXHR();
+ /**
+ *
+ */
+ private disposeXHR();
+ /**
+ *
+ * @param source
+ */
+ public decodeURLVariables(source: string): Object;
+ /**
+ * When XHR state changes
+ * @param event
+ */
+ private onReadyStateChange(event);
+ /**
+ * When the request has completed, regardless of whether or not it was successful.
+ * @param event
+ */
+ private onLoadEnd(event);
+ /**
+ * When the author specified timeout has passed before the request could complete.
+ * @param event
+ */
+ private onTimeOut(event);
+ /**
+ * When the request has been aborted, either by invoking the abort() method or navigating away from the page.
+ * @param event
+ */
+ private onAbort(event);
+ /**
+ * While loading and sending data.
+ * @param event
+ */
+ private onProgress(event);
+ /**
+ * When the request starts.
+ * @param event
+ */
+ private onLoadStart(event);
+ /**
+ * When the request has successfully completed.
+ * @param event
+ */
+ private onLoadComplete(event);
+ /**
+ * When the request has failed. ( due to network issues ).
+ * @param event
+ */
+ private onLoadError(event);
+ }
+ export = URLLoader;
+
+}
+declare module "awayjs-core/lib/core/net/URLLoaderDataFormat" {
+ class URLLoaderDataFormat {
+ /**
+ * TEXT
+ * @type {string}
+ */
+ static TEXT: string;
+ /**
+ * Variables / Value Pairs
+ * @type {string}
+ */
+ static VARIABLES: string;
+ /**
+ *
+ * @type {string}
+ */
+ static BLOB: string;
+ /**
+ *
+ * @type {string}
+ */
+ static ARRAY_BUFFER: string;
+ /**
+ *
+ * @type {string}
+ */
+ static BINARY: string;
+ }
+ export = URLLoaderDataFormat;
+
+}
+declare module "awayjs-core/lib/core/net/URLRequest" {
+ class URLRequest {
+ /**
+ * Object containing data to be transmited with URL Request ( URL Variables / binary / string )
+ *
+ */
+ public data: any;
+ /**
+ *
+ * away.net.URLRequestMethod.GET
+ * away.net.URLRequestMethod.POST
+ *
+ * @type {string}
+ */
+ public method: string;
+ /**
+ * Use asynchronous XMLHttpRequest
+ * @type {boolean}
+ */
+ public async: boolean;
+ /**
+ *
+ */
+ private _url;
+ /**
+
+ * @param url
+ */
+ constructor(url?: string);
+ /**
+ *
+ * @returns {string}
+ */
+ /**
+ *
+ * @param value
+ */
+ public url : string;
+ /**
+ * dispose
+ */
+ public dispose(): void;
+ }
+ export = URLRequest;
+
+}
+declare module "awayjs-core/lib/core/net/URLRequestMethod" {
+ class URLRequestMethod {
+ /**
+ *
+ * @type {string}
+ */
+ static POST: string;
+ /**
+ *
+ * @type {string}
+ */
+ static GET: string;
+ }
+ export = URLRequestMethod;
+
+}
+declare module "awayjs-core/lib/core/net/URLVariables" {
+ class URLVariables {
+ private _variables;
+ /**
+ *
+ * @param source
+ */
+ constructor(source?: string);
+ /**
+ *
+ * @param source
+ */
+ public decode(source: string): void;
+ /**
+ *
+ * @returns {string}
+ */
+ public toString(): string;
+ /**
+ *
+ * @returns {Object}
+ */
+ /**
+ *
+ * @returns {Object}
+ */
+ public variables : Object;
+ /**
+ *
+ * @returns {Object}
+ */
+ public formData : FormData;
+ }
+ export = URLVariables;
+
+}
+declare module "awayjs-core/lib/core/partition/CameraNode" {
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.CameraNode
+ */
+ class CameraNode extends EntityNode {
+ constructor(camera: IEntity);
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ }
+ export = CameraNode;
+
+}
+declare module "awayjs-core/lib/core/partition/DirectionalLightNode" {
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.DirectionalLightNode
+ */
+ class DirectionalLightNode extends EntityNode {
+ private _directionalLight;
+ /**
+ *
+ * @param directionalLight
+ */
+ constructor(directionalLight: IEntity);
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public isCastingShadow(): boolean;
+ }
+ export = DirectionalLightNode;
+
+}
+declare module "awayjs-core/lib/core/partition/EntityNode" {
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.EntityNode
+ */
+ class EntityNode extends NodeBase {
+ private _entity;
+ public _iUpdateQueueNext: EntityNode;
+ constructor(entity: IEntity);
+ public entity : IEntity;
+ public removeFromParent(): void;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public isCastingShadow(): boolean;
+ /**
+ *
+ * @param planes
+ * @param numPlanes
+ * @returns {boolean}
+ */
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ * @inheritDoc
+ */
+ public isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean;
+ /**
+ *
+ * @protected
+ */
+ public _pCreateBoundsPrimitive(): IEntity;
+ }
+ export = EntityNode;
+
+}
+declare module "awayjs-core/lib/core/partition/LightProbeNode" {
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.LightProbeNode
+ */
+ class LightProbeNode extends EntityNode {
+ private _lightProbe;
+ /**
+ *
+ * @param lightProbe
+ */
+ constructor(lightProbe: IEntity);
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public isCastingShadow(): boolean;
+ }
+ export = LightProbeNode;
+
+}
+declare module "awayjs-core/lib/core/partition/NodeBase" {
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.NodeBase
+ */
+ class NodeBase {
+ private _boundsChildrenVisible;
+ private _explicitBoundsVisible;
+ private _implicitBoundsVisible;
+ public _iParent: NodeBase;
+ public _pChildNodes: NodeBase[];
+ public _pNumChildNodes: number;
+ public _pBoundsPrimitive: IEntity;
+ public _iNumEntities: number;
+ public _iCollectionMark: number;
+ /**
+ *
+ */
+ public boundsVisible : boolean;
+ public boundsChildrenVisible : boolean;
+ /**
+ *
+ */
+ public parent : NodeBase;
+ /**
+ *
+ * @protected
+ */
+ public _pNumEntities : number;
+ /**
+ *
+ */
+ constructor();
+ /**
+ *
+ * @param planes
+ * @param numPlanes
+ * @returns {boolean}
+ * @internal
+ */
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ /**
+ *
+ * @param rayPosition
+ * @param rayDirection
+ * @returns {boolean}
+ */
+ public isIntersectingRay(rayPosition: Vector3D, rayDirection: Vector3D): boolean;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public isCastingShadow(): boolean;
+ /**
+ *
+ * @param entity
+ * @returns {away.partition.NodeBase}
+ */
+ public findPartitionForEntity(entity: IEntity): NodeBase;
+ /**
+ *
+ * @param traverser
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ *
+ * @protected
+ */
+ public _pCreateBoundsPrimitive(): IEntity;
+ /**
+ *
+ * @param node
+ * @internal
+ */
+ public iAddNode(node: NodeBase): void;
+ /**
+ *
+ * @param node
+ * @internal
+ */
+ public iRemoveNode(node: NodeBase): void;
+ private _iUpdateImplicitBoundsVisible(value);
+ /**
+ * @internal
+ */
+ public _iIsBoundsVisible(): boolean;
+ public _iUpdateEntityBounds(): void;
+ }
+ export = NodeBase;
+
+}
+declare module "awayjs-core/lib/core/partition/NullNode" {
+ /**
+ * @class away.partition.NullNode
+ */
+ class NullNode {
+ constructor();
+ }
+ export = NullNode;
+
+}
+declare module "awayjs-core/lib/core/partition/Partition" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ /**
+ * @class away.partition.Partition
+ */
+ class Partition {
+ public _rootNode: NodeBase;
+ private _updatesMade;
+ private _updateQueue;
+ constructor(rootNode: NodeBase);
+ public rootNode : NodeBase;
+ public traverse(traverser: ICollector): void;
+ public iMarkForUpdate(entity: DisplayObject): void;
+ public iRemoveEntity(entity: DisplayObject): void;
+ private updateEntities();
+ }
+ export = Partition;
+
+}
+declare module "awayjs-core/lib/core/partition/PointLightNode" {
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.partition.PointLightNode
+ */
+ class PointLightNode extends EntityNode {
+ private _pointLight;
+ /**
+ *
+ * @param pointLight
+ */
+ constructor(pointLight: IEntity);
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ *
+ * @returns {boolean}
+ */
+ public isCastingShadow(): boolean;
+ }
+ export = PointLightNode;
+
+}
+declare module "awayjs-core/lib/core/partition/SkyboxNode" {
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * SkyboxNode is a space partitioning leaf node that contains a Skybox object.
+ *
+ * @class away.partition.SkyboxNode
+ */
+ class SkyboxNode extends EntityNode {
+ private _skyBox;
+ /**
+ * Creates a new SkyboxNode object.
+ * @param skyBox The Skybox to be contained in the node.
+ */
+ constructor(skyBox: IEntity);
+ /**
+ * @inheritDoc
+ */
+ public acceptTraverser(traverser: ICollector): void;
+ /**
+ *
+ * @param planes
+ * @param numPlanes
+ * @returns {boolean}
+ */
+ public isInFrustum(planes: Plane3D[], numPlanes: number): boolean;
+ }
+ export = SkyboxNode;
+
+}
+declare module "awayjs-core/lib/core/pick/IPicker" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import View = require("awayjs-core/lib/containers/View");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ /**
+ * Provides an interface for picking objects that can pick 3d objects from a view or scene.
+ *
+ * @interface away.pick.IPicker
+ */
+ interface IPicker {
+ /**
+ * Gets the collision object from the screen coordinates of the picking ray.
+ *
+ * @param x The x coordinate of the picking ray in screen-space.
+ * @param y The y coordinate of the picking ray in screen-space.
+ * @param view The view on which the picking object acts.
+ */
+ getViewCollision(x: number, y: number, view: View): PickingCollisionVO;
+ /**
+ * Gets the collision object from the scene position and direction of the picking ray.
+ *
+ * @param position The position of the picking ray in scene-space.
+ * @param direction The direction of the picking ray in scene-space.
+ * @param scene The scene on which the picking object acts.
+ */
+ getSceneCollision(position: Vector3D, direction: Vector3D, scene: Scene): PickingCollisionVO;
+ /**
+ * Determines whether the picker takes account of the mouseEnabled properties of entities. Defaults to true.
+ */
+ onlyMouseEnabled: boolean;
+ /**
+ * Disposes memory used by the IPicker object
+ */
+ dispose(): any;
+ }
+ export = IPicker;
+
+}
+declare module "awayjs-core/lib/core/pick/IPickingCollider" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * Provides an interface for picking colliders that can be assigned to individual entities in a scene for specific picking behaviour.
+ * Used with the RaycastPicker
picking object.
+ *
+ * @see away.entities.Entity#pickingCollider
+ * @see away.pick.RaycastPicker
+ *
+ * @interface away.pick.IPickingCollider
+ */
+ interface IPickingCollider {
+ /**
+ * Sets the position and direction of a picking ray in local coordinates to the entity.
+ *
+ * @param localDirection The position vector in local coordinates
+ * @param localPosition The direction vector in local coordinates
+ */
+ setLocalRay(localPosition: Vector3D, localDirection: Vector3D): any;
+ /**
+ * Tests a Billboard
object for a collision with the picking ray.
+ *
+ * @param entity The entity instance to be tested.
+ * @param pickingCollisionVO The collision object used to store the collision results
+ * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray.
+ */
+ testBillboardCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean;
+ /**
+ * Tests a Mesh
object for a collision with the picking ray.
+ *
+ * @param entity The entity instance to be tested.
+ * @param pickingCollisionVO The collision object used to store the collision results
+ * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray.
+ * @param findClosest
+ */
+ testMeshCollision(entity: IEntity, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number, findClosest: boolean): boolean;
+ }
+ export = IPickingCollider;
+
+}
+declare module "awayjs-core/lib/core/pick/PickingCollisionVO" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * Value object for a picking collision returned by a picking collider. Created as unique objects on display objects
+ *
+ * @see away.base.DisplayObject#pickingCollisionVO
+ * @see away.core.pick.IPickingCollider
+ *
+ * @class away.pick.PickingCollisionVO
+ */
+ class PickingCollisionVO {
+ /**
+ * The display object to which this collision object belongs.
+ */
+ public displayObject: DisplayObject;
+ /**
+ * The local position of the collision on the entity's surface.
+ */
+ public localPosition: Vector3D;
+ /**
+ * The local normal vector at the position of the collision.
+ */
+ public localNormal: Vector3D;
+ /**
+ * The uv coordinate at the position of the collision.
+ */
+ public uv: Point;
+ /**
+ * The index of the face where the event took pl ace.
+ */
+ public index: number;
+ /**
+ * The starting position of the colliding ray in local coordinates.
+ */
+ public localRayPosition: Vector3D;
+ /**
+ * The direction of the colliding ray in local coordinates.
+ */
+ public localRayDirection: Vector3D;
+ /**
+ * The starting position of the colliding ray in scene coordinates.
+ */
+ public rayPosition: Vector3D;
+ /**
+ * The direction of the colliding ray in scene coordinates.
+ */
+ public rayDirection: Vector3D;
+ /**
+ * Determines if the ray position is contained within the entity bounds.
+ *
+ * @see away3d.entities.Entity#bounds
+ */
+ public rayOriginIsInsideBounds: boolean;
+ /**
+ * The distance along the ray from the starting position to the calculated intersection entry point with the entity.
+ */
+ public rayEntryDistance: number;
+ /**
+ * The material ownwer associated with a collision.
+ */
+ public materialOwner: IMaterialOwner;
+ /**
+ * Creates a new PickingCollisionVO
object.
+ *
+ * @param entity The entity to which this collision object belongs.
+ */
+ constructor(displayObject: DisplayObject);
+ }
+ export = PickingCollisionVO;
+
+}
+declare module "awayjs-core/lib/core/pick/RaycastPicker" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import View = require("awayjs-core/lib/containers/View");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import IPicker = require("awayjs-core/lib/core/pick/IPicker");
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ /**
+ * Picks a 3d object from a view or scene by 3D raycast calculations.
+ * Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,
+ * then triggers an optional picking collider on individual entity objects to further determine the precise values of the picking ray collision.
+ *
+ * @class away.pick.RaycastPicker
+ */
+ class RaycastPicker implements IPicker {
+ private _findClosestCollision;
+ private _raycastCollector;
+ private _ignoredEntities;
+ private _onlyMouseEnabled;
+ private _entities;
+ private _numEntities;
+ private _hasCollisions;
+ /**
+ * @inheritDoc
+ */
+ public onlyMouseEnabled : boolean;
+ /**
+ * Creates a new RaycastPicker
object.
+ *
+ * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,
+ * or simply returns the first collision encountered. Defaults to false.
+ */
+ constructor(findClosestCollision?: boolean);
+ /**
+ * @inheritDoc
+ */
+ public getViewCollision(x: number, y: number, view: View): PickingCollisionVO;
+ /**
+ * @inheritDoc
+ */
+ public getSceneCollision(rayPosition: Vector3D, rayDirection: Vector3D, scene: Scene): PickingCollisionVO;
+ public setIgnoreList(entities: any): void;
+ private isIgnored(entity);
+ private sortOnNearT(entity1, entity2);
+ private getPickingCollisionVO(collector);
+ private updateLocalPosition(pickingCollisionVO);
+ public dispose(): void;
+ }
+ export = RaycastPicker;
+
+}
+declare module "awayjs-core/lib/core/pool/CSSBillboardRenderable" {
+ import CSSRenderableBase = require("awayjs-core/lib/core/pool/CSSRenderableBase");
+ import RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+ import Billboard = require("awayjs-core/lib/entities/Billboard");
+ /**
+ * @class away.pool.RenderableListItem
+ */
+ class CSSBillboardRenderable extends CSSRenderableBase {
+ static id: string;
+ constructor(pool: RenderablePool, billboard: Billboard);
+ }
+ export = CSSBillboardRenderable;
+
+}
+declare module "awayjs-core/lib/core/pool/CSSLineSegmentRenderable" {
+ import CSSRenderableBase = require("awayjs-core/lib/core/pool/CSSRenderableBase");
+ import RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+ import LineSegment = require("awayjs-core/lib/entities/LineSegment");
+ /**
+ * @class away.pool.RenderableListItem
+ */
+ class CSSLineSegmentRenderable extends CSSRenderableBase {
+ static id: string;
+ constructor(pool: RenderablePool, lineSegment: LineSegment);
+ }
+ export = CSSLineSegmentRenderable;
+
+}
+declare module "awayjs-core/lib/core/pool/CSSRenderableBase" {
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.pool.RenderableListItem
+ */
+ class CSSRenderableBase implements IRenderable {
+ /**
+ *
+ */
+ private _pool;
+ /**
+ *
+ */
+ public next: CSSRenderableBase;
+ /**
+ *
+ */
+ public materialId: number;
+ /**
+ *
+ */
+ public renderOrderId: number;
+ /**
+ *
+ */
+ public zIndex: number;
+ /**
+ *
+ */
+ public cascaded: boolean;
+ /**
+ *
+ */
+ public renderSceneTransform: Matrix3D;
+ /**
+ *
+ */
+ public sourceEntity: IEntity;
+ /**
+ *
+ */
+ public materialOwner: IMaterialOwner;
+ /**
+ *
+ */
+ public htmlElement: HTMLElement;
+ /**
+ *
+ * @param sourceEntity
+ * @param material
+ * @param animator
+ */
+ constructor(pool: RenderablePool, sourceEntity: IEntity, materialOwner: IMaterialOwner);
+ /**
+ *
+ */
+ public dispose(): void;
+ /**
+ *
+ */
+ public invalidateGeometry(): void;
+ /**
+ *
+ */
+ public invalidateIndexData(): void;
+ /**
+ *
+ */
+ public invalidateVertexData(dataType: string): void;
+ }
+ export = CSSRenderableBase;
+
+}
+declare module "awayjs-core/lib/core/pool/CSSSkyboxRenderable" {
+ import CSSRenderableBase = require("awayjs-core/lib/core/pool/CSSRenderableBase");
+ import RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+ import Skybox = require("awayjs-core/lib/entities/Skybox");
+ /**
+ * @class away.pool.CSSSkyboxRenderable
+ */
+ class CSSSkyboxRenderable extends CSSRenderableBase {
+ static id: string;
+ constructor(pool: RenderablePool, skyBox: Skybox);
+ }
+ export = CSSSkyboxRenderable;
+
+}
+declare module "awayjs-core/lib/core/pool/EntityListItem" {
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.pool.EntityListItem
+ */
+ class EntityListItem {
+ /**
+ *
+ */
+ public entity: IEntity;
+ /**
+ *
+ */
+ public next: EntityListItem;
+ }
+ export = EntityListItem;
+
+}
+declare module "awayjs-core/lib/core/pool/EntityListItemPool" {
+ import EntityListItem = require("awayjs-core/lib/core/pool/EntityListItem");
+ /**
+ * @class away.pool.EntityListItemPool
+ */
+ class EntityListItemPool {
+ private _pool;
+ private _index;
+ private _poolSize;
+ /**
+ *
+ */
+ constructor();
+ /**
+ *
+ */
+ public getItem(): EntityListItem;
+ /**
+ *
+ */
+ public freeAll(): void;
+ public dispose(): void;
+ }
+ export = EntityListItemPool;
+
+}
+declare module "awayjs-core/lib/core/pool/IMaterialData" {
+ /**
+ * IMaterialData is an interface for classes that are used in the rendering pipeline to render the
+ * contents of a texture
+ *
+ * @class away.pool.IMaterialData
+ */
+ interface IMaterialData {
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ *
+ */
+ invalidateMaterial(): any;
+ /**
+ *
+ */
+ invalidateAnimation(): any;
+ }
+ export = IMaterialData;
+
+}
+declare module "awayjs-core/lib/core/pool/IMaterialPassData" {
+ import IMaterialPass = require("awayjs-core/lib/materials/passes/IMaterialPass");
+ /**
+ * IMaterialPassData is an interface for classes that are used in the rendering pipeline to render the
+ * contents of a material pass
+ *
+ * @class away.pool.IMaterialPassData
+ */
+ interface IMaterialPassData {
+ /**
+ *
+ */
+ materialPass: IMaterialPass;
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ *
+ */
+ invalidate(): any;
+ }
+ export = IMaterialPassData;
+
+}
+declare module "awayjs-core/lib/core/pool/IRenderable" {
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * IRenderable is an interface for classes that are used in the rendering pipeline to render the
+ * contents of a partition
+ *
+ * @class away.render.IRenderable
+ */
+ interface IRenderable {
+ /**
+ *
+ */
+ next: IRenderable;
+ /**
+ *
+ */
+ materialId: number;
+ /**
+ *
+ */
+ materialOwner: IMaterialOwner;
+ /**
+ *
+ */
+ sourceEntity: IEntity;
+ /**
+ *
+ */
+ renderOrderId: number;
+ /**
+ *
+ */
+ zIndex: number;
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ *
+ */
+ invalidateGeometry(): any;
+ /**
+ *
+ */
+ invalidateIndexData(): any;
+ /**
+ *
+ */
+ invalidateVertexData(dataType: string): any;
+ }
+ export = IRenderable;
+
+}
+declare module "awayjs-core/lib/core/pool/IRenderableClass" {
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+ /**
+ * IRenderableClass is an interface for the constructable class definition IRenderable that is used to
+ * create renderable objects in the rendering pipeline to render the contents of a partition
+ *
+ * @class away.render.IRenderableClass
+ */
+ interface IRenderableClass {
+ /**
+ *
+ */
+ id: string;
+ /**
+ *
+ */
+ new(pool: RenderablePool, materialOwner: IMaterialOwner): IRenderable;
+ }
+ export = IRenderableClass;
+
+}
+declare module "awayjs-core/lib/core/pool/ITextureData" {
+ /**
+ * ITextureData is an interface for classes that are used in the rendering pipeline to render the
+ * contents of a texture
+ *
+ * @class away.pool.ITextureData
+ */
+ interface ITextureData {
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ *
+ */
+ invalidate(): any;
+ }
+ export = ITextureData;
+
+}
+declare module "awayjs-core/lib/core/pool/RenderablePool" {
+ import IMaterialOwner = require("awayjs-core/lib/core/base/IMaterialOwner");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import IRenderableClass = require("awayjs-core/lib/core/pool/IRenderableClass");
+ /**
+ * @class away.pool.RenderablePool
+ */
+ class RenderablePool {
+ private static _pools;
+ private _pool;
+ private _renderableClass;
+ /**
+ * //TODO
+ *
+ * @param renderableClass
+ */
+ constructor(renderableClass: IRenderableClass);
+ /**
+ * //TODO
+ *
+ * @param materialOwner
+ * @returns IRenderable
+ */
+ public getItem(materialOwner: IMaterialOwner): IRenderable;
+ /**
+ * //TODO
+ *
+ * @param materialOwner
+ */
+ public disposeItem(materialOwner: IMaterialOwner): void;
+ /**
+ * //TODO
+ *
+ * @param renderableClass
+ * @returns RenderablePool
+ */
+ static getPool(renderableClass: IRenderableClass): RenderablePool;
+ /**
+ * //TODO
+ *
+ * @param renderableClass
+ */
+ static disposePool(renderableClass: any): void;
+ }
+ export = RenderablePool;
+
+}
+declare module "awayjs-core/lib/core/render/CSSDefaultRenderer" {
+ import CSSRendererBase = require("awayjs-core/lib/core/render/CSSRendererBase");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import EntityCollector = require("awayjs-core/lib/core/traverse/EntityCollector");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ /**
+ * The DefaultRenderer class provides the default rendering method. It renders the scene graph objects using the
+ * materials assigned to them.
+ *
+ * @class away.render.DefaultRenderer
+ */
+ class CSSDefaultRenderer extends CSSRendererBase implements IRenderer {
+ private _container;
+ private _context;
+ private _contextStyle;
+ private _contextMatrix;
+ private _activeMaterial;
+ private _skyboxProjection;
+ private _transform;
+ /**
+ * Creates a new CSSDefaultRenderer object.
+ */
+ constructor();
+ /**
+ *
+ * @param entityCollector
+ */
+ public render(entityCollector: ICollector): void;
+ /**
+ * @inheritDoc
+ */
+ public pDraw(entityCollector: EntityCollector): void;
+ /**
+ * Updates the backbuffer properties.
+ */
+ public pUpdateBackBuffer(): void;
+ /**
+ * Draw the skybox if present.
+ * @param entityCollector The EntityCollector containing all potentially visible information.
+ */
+ private drawSkybox(entityCollector);
+ /**
+ * Draw a list of renderables.
+ * @param renderables The renderables to draw.
+ * @param entityCollector The EntityCollector containing all potentially visible information.
+ */
+ private drawRenderables(item, entityCollector);
+ public dispose(): void;
+ public _iCreateEntityCollector(): ICollector;
+ }
+ export = CSSDefaultRenderer;
+
+}
+declare module "awayjs-core/lib/core/render/CSSRendererBase" {
+ import LineSubMesh = require("awayjs-core/lib/core/base/LineSubMesh");
+ import TriangleSubMesh = require("awayjs-core/lib/core/base/TriangleSubMesh");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import CSSRenderableBase = require("awayjs-core/lib/core/pool/CSSRenderableBase");
+ import IEntitySorter = require("awayjs-core/lib/core/sort/IEntitySorter");
+ import CSSEntityCollector = require("awayjs-core/lib/core/traverse/CSSEntityCollector");
+ import EntityCollector = require("awayjs-core/lib/core/traverse/EntityCollector");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import Billboard = require("awayjs-core/lib/entities/Billboard");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Skybox = require("awayjs-core/lib/entities/Skybox");
+ import EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ /**
+ * RendererBase forms an abstract base class for classes that are used in the rendering pipeline to render the
+ * contents of a partition
+ *
+ * @class away.render.RendererBase
+ */
+ class CSSRendererBase extends EventDispatcher {
+ private _billboardRenderablePool;
+ private _lineSegmentRenderablePool;
+ public _pCamera: Camera;
+ public _iEntryPoint: Vector3D;
+ public _pCameraForward: Vector3D;
+ private _backgroundR;
+ private _backgroundG;
+ private _backgroundB;
+ private _backgroundAlpha;
+ private _shareContext;
+ public _pBackBufferInvalid: boolean;
+ public _depthTextureInvalid: boolean;
+ public _renderableHead: CSSRenderableBase;
+ public _width: number;
+ public _height: number;
+ private _viewPort;
+ private _viewportDirty;
+ private _scissorRect;
+ private _scissorDirty;
+ private _localPos;
+ private _globalPos;
+ private _scissorUpdated;
+ private _viewPortUpdated;
+ /**
+ * A viewPort rectangle equivalent of the StageGL size and position.
+ */
+ public viewPort : Rectangle;
+ /**
+ * A scissor rectangle equivalent of the view size and position.
+ */
+ public scissorRect : Rectangle;
+ /**
+ *
+ */
+ public x : number;
+ /**
+ *
+ */
+ public y : number;
+ /**
+ *
+ */
+ public width : number;
+ /**
+ *
+ */
+ public height : number;
+ /**
+ *
+ */
+ public renderableSorter: IEntitySorter;
+ /**
+ * Creates a new RendererBase object.
+ */
+ constructor(renderToTexture?: boolean, forceSoftware?: boolean, profile?: string);
+ /**
+ * The background color's red component, used when clearing.
+ *
+ * @private
+ */
+ public _iBackgroundR : number;
+ /**
+ * The background color's green component, used when clearing.
+ *
+ * @private
+ */
+ public _iBackgroundG : number;
+ /**
+ * The background color's blue component, used when clearing.
+ *
+ * @private
+ */
+ public _iBackgroundB : number;
+ public shareContext : boolean;
+ /**
+ * Disposes the resources used by the RendererBase.
+ */
+ public dispose(): void;
+ public render(entityCollector: ICollector): void;
+ /**
+ * Renders the potentially visible geometry to the back buffer or texture.
+ * @param entityCollector The EntityCollector object containing the potentially visible geometry.
+ * @param scissorRect
+ */
+ public _iRender(entityCollector: EntityCollector, target?: TextureProxyBase, scissorRect?: Rectangle, surfaceSelector?: number): void;
+ public _iRenderCascades(entityCollector: ICollector, target: TextureProxyBase, numCascades: number, scissorRects: Rectangle[], cameras: Camera[]): void;
+ public pCollectRenderables(entityCollector: ICollector): void;
+ /**
+ * Renders the potentially visible geometry to the back buffer or texture. Only executed if everything is set up.
+ * @param entityCollector The EntityCollector object containing the potentially visible geometry.
+ * @param scissorRect
+ */
+ public pExecuteRender(entityCollector: CSSEntityCollector, scissorRect?: Rectangle): void;
+ /**
+ * Performs the actual drawing of dom objects to the target.
+ *
+ * @param entityCollector The EntityCollector object containing the potentially visible dom objects.
+ */
+ public pDraw(entityCollector: CSSEntityCollector): void;
+ public _iBackgroundAlpha : number;
+ /**
+ *
+ * @param billboard
+ */
+ public applyBillboard(billboard: Billboard): void;
+ /**
+ *
+ * @param lineSubMesh
+ */
+ public applyLineSubMesh(lineSubMesh: LineSubMesh): void;
+ /**
+ *
+ * @param skybox
+ */
+ public applySkybox(skybox: Skybox): void;
+ /**
+ *
+ * @param triangleSubMesh
+ */
+ public applyTriangleSubMesh(triangleSubMesh: TriangleSubMesh): void;
+ /**
+ *
+ * @param renderable
+ * @private
+ */
+ private _applyRenderable(renderable);
+ /**
+ * @private
+ */
+ private notifyScissorUpdate();
+ /**
+ * @private
+ */
+ private notifyViewportUpdate();
+ /**
+ *
+ */
+ public updateGlobalPos(): void;
+ public _iCreateEntityCollector(): ICollector;
+ }
+ export = CSSRendererBase;
+
+}
+declare module "awayjs-core/lib/core/render/IRenderer" {
+ import LineSubMesh = require("awayjs-core/lib/core/base/LineSubMesh");
+ import TriangleSubMesh = require("awayjs-core/lib/core/base/TriangleSubMesh");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import IEntitySorter = require("awayjs-core/lib/core/sort/IEntitySorter");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import Billboard = require("awayjs-core/lib/entities/Billboard");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ /**
+ * IRenderer is an interface for classes that are used in the rendering pipeline to render the
+ * contents of a partition
+ *
+ * @class away.render.IRenderer
+ */
+ interface IRenderer extends IEventDispatcher {
+ /**
+ *
+ */
+ renderableSorter: IEntitySorter;
+ /**
+ *
+ */
+ shareContext: boolean;
+ /**
+ *
+ */
+ x: number;
+ /**
+ *
+ */
+ y: number;
+ /**
+ *
+ */
+ width: number;
+ /**
+ *
+ */
+ height: number;
+ /**
+ *
+ */
+ viewPort: Rectangle;
+ /**
+ *
+ */
+ scissorRect: Rectangle;
+ /**
+ *
+ * @param billboard
+ */
+ applyBillboard(billboard: Billboard): any;
+ /**
+ *
+ * @param triangleSubMesh
+ */
+ applyLineSubMesh(triangleSubMesh: LineSubMesh): any;
+ /**
+ *
+ * @param triangleSubMesh
+ */
+ applyTriangleSubMesh(triangleSubMesh: TriangleSubMesh): any;
+ /**
+ *
+ */
+ dispose(): any;
+ /**
+ *
+ * @param entityCollector
+ */
+ render(entityCollector: ICollector): any;
+ /**
+ * @internal
+ */
+ _iBackgroundR: number;
+ /**
+ * @internal
+ */
+ _iBackgroundG: number;
+ /**
+ * @internal
+ */
+ _iBackgroundB: number;
+ /**
+ * @internal
+ */
+ _iBackgroundAlpha: number;
+ /**
+ * @internal
+ */
+ _iCreateEntityCollector(): ICollector;
+ _iRender(entityCollector: ICollector, target?: TextureProxyBase, scissorRect?: Rectangle, surfaceSelector?: number): any;
+ _iRenderCascades(entityCollector: ICollector, target: TextureProxyBase, numCascades: number, scissorRects: Rectangle[], cameras: Camera[]): any;
+ }
+ export = IRenderer;
+
+}
+declare module "awayjs-core/lib/core/sort/IEntitySorter" {
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ /**
+ * @interface away.sort.IEntitySorter
+ */
+ interface IEntitySorter {
+ sortBlendedRenderables(head: IRenderable): IRenderable;
+ sortOpaqueRenderables(head: IRenderable): IRenderable;
+ }
+ export = IEntitySorter;
+
+}
+declare module "awayjs-core/lib/core/sort/RenderableMergeSort" {
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import IEntitySorter = require("awayjs-core/lib/core/sort/IEntitySorter");
+ /**
+ * @class away.sort.RenderableMergeSort
+ */
+ class RenderableMergeSort implements IEntitySorter {
+ public sortBlendedRenderables(head: IRenderable): IRenderable;
+ public sortOpaqueRenderables(head: IRenderable): IRenderable;
+ }
+ export = RenderableMergeSort;
+
+}
+declare module "awayjs-core/lib/core/text/AntiAliasType" {
+ /**
+ * The AntiAliasType class provides values for anti-aliasing in the
+ * away.text.TextField class.
+ */
+ class AntiAliasType {
+ /**
+ * Sets anti-aliasing to advanced anti-aliasing. Advanced anti-aliasing
+ * allows font faces to be rendered at very high quality at small sizes. It
+ * is best used with applications that have a lot of small text. Advanced
+ * anti-aliasing is not recommended for very large fonts(larger than 48
+ * points). This constant is used for the antiAliasType
property
+ * in the TextField class. Use the syntax
+ * AntiAliasType.ADVANCED
.
+ */
+ static ADVANCED: string;
+ /**
+ * Sets anti-aliasing to the anti-aliasing that is used in Flash Player 7 and
+ * earlier. This setting is recommended for applications that do not have a
+ * lot of text. This constant is used for the antiAliasType
+ * property in the TextField class. Use the syntax
+ * AntiAliasType.NORMAL
.
+ */
+ static NORMAL: string;
+ }
+ export = AntiAliasType;
+
+}
+declare module "awayjs-core/lib/core/text/GridFitType" {
+ /**
+ * The GridFitType class defines values for grid fitting in the TextField class.
+ */
+ class GridFitType {
+ /**
+ * Doesn't set grid fitting. Horizontal and vertical lines in the glyphs are
+ * not forced to the pixel grid. This constant is used in setting the
+ * gridFitType
property of the TextField class. This is often a
+ * good setting for animation or for large font sizes. Use the syntax
+ * GridFitType.NONE
.
+ */
+ static NONE: string;
+ /**
+ * Fits strong horizontal and vertical lines to the pixel grid. This constant
+ * is used in setting the gridFitType
property of the TextField
+ * class. This setting only works for left-justified text fields and acts
+ * like the GridFitType.SUBPIXEL
constant in static text. This
+ * setting generally provides the best readability for left-aligned text. Use
+ * the syntax GridFitType.PIXEL
.
+ */
+ static PIXEL: string;
+ /**
+ * Fits strong horizontal and vertical lines to the sub-pixel grid on LCD
+ * monitors. (Red, green, and blue are actual pixels on an LCD screen.) This
+ * is often a good setting for right-aligned or center-aligned dynamic text,
+ * and it is sometimes a useful tradeoff for animation vs. text quality. This
+ * constant is used in setting the gridFitType
property of the
+ * TextField class. Use the syntax GridFitType.SUBPIXEL
.
+ */
+ static SUBPIXEL: string;
+ }
+ export = GridFitType;
+
+}
+declare module "awayjs-core/lib/core/text/TextFieldAutoSize" {
+ /**
+ * The TextFieldAutoSize class is an enumeration of constant values used in
+ * setting the autoSize
property of the TextField class.
+ */
+ class TextFieldAutoSize {
+ /**
+ * Specifies that the text is to be treated as center-justified text. Any
+ * resizing of a single line of a text field is equally distributed to both
+ * the right and left sides.
+ */
+ static CENTER: string;
+ /**
+ * Specifies that the text is to be treated as left-justified text, meaning
+ * that the left side of the text field remains fixed and any resizing of a
+ * single line is on the right side.
+ */
+ static LEFT: string;
+ /**
+ * Specifies that no resizing is to occur.
+ */
+ static NONE: string;
+ /**
+ * Specifies that the text is to be treated as right-justified text, meaning
+ * that the right side of the text field remains fixed and any resizing of a
+ * single line is on the left side.
+ */
+ static RIGHT: string;
+ }
+ export = TextFieldAutoSize;
+
+}
+declare module "awayjs-core/lib/core/text/TextFieldType" {
+ /**
+ * The TextFieldType class is an enumeration of constant values used in setting the
+ * type
property of the TextField class.
+ *
+ * @see away.entities.TextField#type
+ */
+ class TextFieldType {
+ /**
+ * Used to specify a dynamic
TextField.
+ */
+ static DYNAMIC: string;
+ /**
+ * Used to specify an input
TextField.
+ */
+ static INPUT: string;
+ }
+ export = TextFieldType;
+
+}
+declare module "awayjs-core/lib/core/text/TextFormat" {
+ /**
+ * The TextFormat class represents character formatting information. Use the
+ * TextFormat class to create specific text formatting for text fields. You
+ * can apply text formatting to both static and dynamic text fields. The
+ * properties of the TextFormat class apply to device and embedded fonts.
+ * However, for embedded fonts, bold and italic text actually require specific
+ * fonts. If you want to display bold or italic text with an embedded font,
+ * you need to embed the bold and italic variations of that font.
+ *
+ * You must use the constructor new TextFormat()
to create a
+ * TextFormat object before setting its properties. When you apply a
+ * TextFormat object to a text field using the
+ * TextField.defaultTextFormat
property or the
+ * TextField.setTextFormat()
method, only its defined properties
+ * are applied. Use the TextField.defaultTextFormat
property to
+ * apply formatting BEFORE you add text to the TextField
, and the
+ * setTextFormat()
method to add formatting AFTER you add text to
+ * the TextField
. The TextFormat properties are null
+ * by default because if you don't provide values for the properties, Flash
+ * Player uses its own default formatting. The default formatting that Flash
+ * Player uses for each property(if property's value is null
) is
+ * as follows:
The default formatting for each property is also described in each + * property description.
+ */ + class TextFormat { + /** + * Indicates the alignment of the paragraph. Valid values are TextFormatAlign + * constants. + * + * @default TextFormatAlign.LEFT + * @throws ArgumentError Thealign
specified is not a member of
+ * flash.text.TextFormatAlign.
+ */
+ public align: string;
+ /**
+ * Indicates the block indentation in pixels. Block indentation is applied to
+ * an entire block of text; that is, to all lines of the text. In contrast,
+ * normal indentation(TextFormat.indent
) affects only the first
+ * line of each paragraph. If this property is null
, the
+ * TextFormat object does not specify block indentation(block indentation is
+ * 0).
+ */
+ public blockIndent: number;
+ /**
+ * Specifies whether the text is boldface. The default value is
+ * null
, which means no boldface is used. If the value is
+ * true
, then the text is boldface.
+ */
+ public bold: boolean;
+ /**
+ * Indicates that the text is part of a bulleted list. In a bulleted list,
+ * each paragraph of text is indented. To the left of the first line of each
+ * paragraph, a bullet symbol is displayed. The default value is
+ * null
, which means no bulleted list is used.
+ */
+ public bullet: boolean;
+ /**
+ * Indicates the color of the text. A number containing three 8-bit RGB
+ * components; for example, 0xFF0000 is red, and 0x00FF00 is green. The
+ * default value is null
, which means that Flash Player uses the
+ * color black(0x000000).
+ */
+ public color: boolean;
+ /**
+ * The name of the font for text in this text format, as a string. The
+ * default value is null
, which means that Flash Player uses
+ * Times New Roman font for the text.
+ */
+ public font: string;
+ /**
+ * Indicates the indentation from the left margin to the first character in
+ * the paragraph. The default value is null
, which indicates
+ * that no indentation is used.
+ */
+ public indent: number;
+ /**
+ * Indicates whether text in this text format is italicized. The default
+ * value is null
, which means no italics are used.
+ */
+ public italic: boolean;
+ /**
+ * A Boolean value that indicates whether kerning is enabled
+ * (true
) or disabled(false
). Kerning adjusts the
+ * pixels between certain character pairs to improve readability, and should
+ * be used only when necessary, such as with headings in large fonts. Kerning
+ * is supported for embedded fonts only.
+ *
+ * Certain fonts such as Verdana and monospaced fonts, such as Courier + * New, do not support kerning.
+ * + *The default value is null
, which means that kerning is not
+ * enabled.
null
,
+ * which indicates that the amount of leading used is 0.
+ */
+ public leading: number;
+ /**
+ * The left margin of the paragraph, in pixels. The default value is
+ * null
, which indicates that the left margin is 0 pixels.
+ */
+ public leftMargin: number;
+ /**
+ * A number representing the amount of space that is uniformly distributed
+ * between all characters. The value specifies the number of pixels that are
+ * added to the advance after each character. The default value is
+ * null
, which means that 0 pixels of letter spacing is used.
+ * You can use decimal values such as 1.75
.
+ */
+ public letterSpacing: number;
+ /**
+ * The right margin of the paragraph, in pixels. The default value is
+ * null
, which indicates that the right margin is 0 pixels.
+ */
+ public rightMargin: number;
+ /**
+ * The size in pixels of text in this text format. The default value is
+ * null
, which means that a size of 12 is used.
+ */
+ public size: number;
+ /**
+ * Specifies custom tab stops as an array of non-negative integers. Each tab
+ * stop is specified in pixels. If custom tab stops are not specified
+ * (null
), the default tab stop is 4(average character width).
+ */
+ public tabStops: number[];
+ /**
+ * Indicates the target window where the hyperlink is displayed. If the
+ * target window is an empty string, the text is displayed in the default
+ * target window _self
. You can choose a custom name or one of
+ * the following four names: _self
specifies the current frame
+ * in the current window, _blank
specifies a new window,
+ * _parent
specifies the parent of the current frame, and
+ * _top
specifies the top-level frame in the current window. If
+ * the TextFormat.url
property is an empty string or
+ * null
, you can get or set this property, but the property will
+ * have no effect.
+ */
+ public target: string;
+ /**
+ * Indicates whether the text that uses this text format is underlined
+ * (true
) or not(false
). This underlining is
+ * similar to that produced by the
tag, but the latter is
+ * not true underlining, because it does not skip descenders correctly. The
+ * default value is null
, which indicates that underlining is
+ * not used.
+ */
+ public underline: boolean;
+ /**
+ * Indicates the target URL for the text in this text format. If the
+ * url
property is an empty string, the text does not have a
+ * hyperlink. The default value is null
, which indicates that
+ * the text does not have a hyperlink.
+ *
+ * Note: The text with the assigned text format must be set with
+ * the htmlText
property for the hyperlink to work.
Any parameter may be set to null
to indicate that it is
+ * not defined. All of the parameters are optional; any omitted parameters
+ * are treated as null
.
url
is an empty string, the
+ * text does not have a hyperlink.
+ * @param target The target window where the hyperlink is displayed. If
+ * the target window is an empty string, the text is
+ * displayed in the default target window
+ * _self
. If the url
parameter
+ * is set to an empty string or to the value
+ * null
, you can get or set this property,
+ * but the property will have no effect.
+ * @param align The alignment of the paragraph, as a TextFormatAlign
+ * value.
+ * @param leftMargin Indicates the left margin of the paragraph, in pixels.
+ * @param rightMargin Indicates the right margin of the paragraph, in pixels.
+ * @param indent An integer that indicates the indentation from the left
+ * margin to the first character in the paragraph.
+ * @param leading A number that indicates the amount of leading vertical
+ * space between lines.
+ */
+ constructor(font?: string, size?: number, color?: number, bold?: boolean, italic?: boolean, underline?: boolean, url?: string, target?: string, align?: string, leftMargin?: number, rightMargin?: number, indent?: number, leading?: number);
+ }
+ export = TextFormat;
+
+}
+declare module "awayjs-core/lib/core/text/TextFormatAlign" {
+ /**
+ * The TextFormatAlign class provides values for text alignment in the
+ * TextFormat class.
+ */
+ class TextFormatAlign {
+ /**
+ * Constant; centers the text in the text field. Use the syntax
+ * TextFormatAlign.CENTER
.
+ */
+ public CENTER: string;
+ /**
+ * Constant; justifies text within the text field. Use the syntax
+ * TextFormatAlign.JUSTIFY
.
+ */
+ public JUSTIFY: string;
+ /**
+ * Constant; aligns text to the left within the text field. Use the syntax
+ * TextFormatAlign.LEFT
.
+ */
+ public LEFT: string;
+ /**
+ * Constant; aligns text to the right within the text field. Use the syntax
+ * TextFormatAlign.RIGHT
.
+ */
+ public RIGHT: string;
+ }
+ export = TextFormatAlign;
+
+}
+declare module "awayjs-core/lib/core/text/TextInteractionMode" {
+ /**
+ * A class that defines the Interactive mode of a text field object.
+ *
+ * @see away.entities.TextField#textInteractionMode
+ */
+ class TextInteractionMode {
+ /**
+ * The text field's default interaction mode is NORMAL and it varies across
+ * platform. On Desktop, the normal mode implies that the text field is in
+ * scrollable + selection mode. On Mobile platforms like Android, normal mode
+ * implies that the text field can only be scrolled but the text can not be
+ * selected.
+ */
+ static NORMAL: string;
+ /**
+ * On mobile platforms like Android, the text field starts in normal mode
+ * (which implies scroll and non-selectable mode). The user can switch to
+ * selection mode through the in-built context menu of the text field object.
+ */
+ static SELECTION: string;
+ }
+ export = TextInteractionMode;
+
+}
+declare module "awayjs-core/lib/core/text/TextLineMetrics" {
+ /**
+ * The TextLineMetrics class contains information about the text position and
+ * measurements of a line of text within a text field. All measurements are in
+ * pixels. Objects of this class are returned by the
+ * away.entities.TextField.getLineMetrics()
method.
+ */
+ class TextLineMetrics {
+ /**
+ * The ascent value of the text is the length from the baseline to the top of
+ * the line height in pixels.
+ */
+ public ascent: number;
+ /**
+ * The descent value of the text is the length from the baseline to the
+ * bottom depth of the line in pixels.
+ */
+ public descent: number;
+ /**
+ * The height value of the text of the selected lines (not necessarily the
+ * complete text) in pixels. The height of the text line does not include the
+ * gutter height.
+ */
+ public height: number;
+ /**
+ * The leading value is the measurement of the vertical distance between the
+ * lines of text.
+ */
+ public leading: number;
+ /**
+ * The width value is the width of the text of the selected lines (not
+ * necessarily the complete text) in pixels. The width of the text line is
+ * not the same as the width of the text field. The width of the text line is
+ * relative to the text field width, minus the gutter width of 4 pixels
+ * (2 pixels on each side).
+ */
+ public width: number;
+ /**
+ * The x value is the left position of the first character in pixels. This
+ * value includes the margin, indent (if any), and gutter widths.
+ */
+ public x: number;
+ /**
+ * Creates a TextLineMetrics object. The TextLineMetrics object contains
+ * information about the text metrics of a line of text in a text field.
+ * Objects of this class are returned by the
+ * away.entities.TextField.getLineMetrics() method.
+ *
+ * @param x The left position of the first character in pixels.
+ * @param width The width of the text of the selected lines (not
+ * necessarily the complete text) in pixels.
+ * @param height The height of the text of the selected lines (not
+ * necessarily the complete text) in pixels.
+ * @param ascent The length from the baseline to the top of the line
+ * height in pixels.
+ * @param descent The length from the baseline to the bottom depth of
+ * the line in pixels.
+ * @param leading The measurement of the vertical distance between the
+ * lines of text.
+ */
+ constructor(x?: number, width?: number, height?: number, ascent?: number, descent?: number, leading?: number);
+ }
+ export = TextLineMetrics;
+
+}
+declare module "awayjs-core/lib/core/traverse/CSSEntityCollector" {
+ import CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ /**
+ * @class away.traverse.CSSEntityCollector
+ */
+ class CSSEntityCollector extends CollectorBase implements ICollector {
+ constructor();
+ }
+ export = CSSEntityCollector;
+
+}
+declare module "awayjs-core/lib/core/traverse/CollectorBase" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import EntityListItem = require("awayjs-core/lib/core/pool/EntityListItem");
+ import EntityListItemPool = require("awayjs-core/lib/core/pool/EntityListItemPool");
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import ICollector = require("awayjs-core/lib/core/traverse/ICollector");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.traverse.CollectorBase
+ */
+ class CollectorBase implements ICollector {
+ public scene: Scene;
+ public _pEntityHead: EntityListItem;
+ public _pEntityListItemPool: EntityListItemPool;
+ public _pCamera: Camera;
+ private _customCullPlanes;
+ private _cullPlanes;
+ private _numCullPlanes;
+ public _pNumEntities: number;
+ public _pNumInteractiveEntities: number;
+ constructor();
+ /**
+ *
+ */
+ public camera : Camera;
+ /**
+ *
+ */
+ public cullPlanes : Plane3D[];
+ /**
+ *
+ */
+ public entityHead : EntityListItem;
+ /**
+ *
+ */
+ public numEntities : number;
+ /**
+ *
+ */
+ public numInteractiveEntities : number;
+ /**
+ *
+ */
+ public clear(): void;
+ /**
+ *
+ * @param node
+ * @returns {boolean}
+ */
+ public enterNode(node: NodeBase): boolean;
+ /**
+ *
+ * @param entity
+ */
+ public applyDirectionalLight(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applyEntity(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applyLightProbe(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applyPointLight(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applySkybox(entity: IEntity): void;
+ }
+ export = CollectorBase;
+
+}
+declare module "awayjs-core/lib/core/traverse/EntityCollector" {
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+ import DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ import LightProbe = require("awayjs-core/lib/entities/LightProbe");
+ import PointLight = require("awayjs-core/lib/entities/PointLight");
+ import Skybox = require("awayjs-core/lib/entities/Skybox");
+ /**
+ * @class away.traverse.EntityCollector
+ */
+ class EntityCollector extends CollectorBase {
+ public _pSkybox: Skybox;
+ public _pLights: LightBase[];
+ private _directionalLights;
+ private _pointLights;
+ private _lightProbes;
+ public _pNumLights: number;
+ private _numDirectionalLights;
+ private _numPointLights;
+ private _numLightProbes;
+ /**
+ *
+ */
+ public directionalLights : DirectionalLight[];
+ /**
+ *
+ */
+ public lightProbes : LightProbe[];
+ /**
+ *
+ */
+ public lights : LightBase[];
+ /**
+ *
+ */
+ public pointLights : PointLight[];
+ /**
+ *
+ */
+ public skyBox : Skybox;
+ constructor();
+ /**
+ *
+ * @param entity
+ */
+ public applyDirectionalLight(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applyLightProbe(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applyPointLight(entity: IEntity): void;
+ /**
+ *
+ * @param entity
+ */
+ public applySkybox(entity: IEntity): void;
+ /**
+ *
+ */
+ public clear(): void;
+ }
+ export = EntityCollector;
+
+}
+declare module "awayjs-core/lib/core/traverse/ICollector" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEntity = require("awayjs-core/lib/entities/IEntity");
+ /**
+ * @class away.traverse.ICollector
+ */
+ interface ICollector {
+ /**
+ *
+ */
+ camera: Camera;
+ /**
+ *
+ */
+ scene: Scene;
+ /**
+ *
+ */
+ numEntities: number;
+ /**
+ *
+ */
+ numInteractiveEntities: number;
+ /**
+ *
+ */
+ clear(): any;
+ /**
+ *
+ */
+ entityHead: any;
+ /**
+ *
+ * @param node
+ */
+ enterNode(node: NodeBase): boolean;
+ /**
+ *
+ * @param entity
+ */
+ applyDirectionalLight(entity: IEntity): any;
+ /**
+ *
+ * @param entity
+ */
+ applyEntity(entity: IEntity): any;
+ /**
+ *
+ * @param entity
+ */
+ applyLightProbe(entity: IEntity): any;
+ /**
+ *
+ * @param entity
+ */
+ applyPointLight(entity: IEntity): any;
+ /**
+ *
+ * @param entity
+ */
+ applySkybox(entity: IEntity): any;
+ }
+ export = ICollector;
+
+}
+declare module "awayjs-core/lib/core/traverse/RaycastCollector" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+ /**
+ * The RaycastCollector class is a traverser for scene partitions that collects all scene graph entities that are
+ * considered intersecting with the defined ray.
+ *
+ * @see away.partition.Partition
+ * @see away.entities.IEntity
+ *
+ * @class away.traverse.RaycastCollector
+ */
+ class RaycastCollector extends CollectorBase {
+ private _rayPosition;
+ private _rayDirection;
+ public _iCollectionMark: number;
+ /**
+ * Provides the starting position of the ray.
+ */
+ public rayPosition : Vector3D;
+ /**
+ * Provides the direction vector of the ray.
+ */
+ public rayDirection : Vector3D;
+ /**
+ * Creates a new RaycastCollector object.
+ */
+ constructor();
+ /**
+ * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.
+ *
+ * @param node The Partition3DNode object to frustum-test.
+ */
+ public enterNode(node: NodeBase): boolean;
+ }
+ export = RaycastCollector;
+
+}
+declare module "awayjs-core/lib/core/traverse/ShadowCasterCollector" {
+ import NodeBase = require("awayjs-core/lib/core/partition/NodeBase");
+ import CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+ /**
+ * @class away.traverse.ShadowCasterCollector
+ */
+ class ShadowCasterCollector extends CollectorBase {
+ constructor();
+ /**
+ *
+ */
+ public enterNode(node: NodeBase): boolean;
+ }
+ export = ShadowCasterCollector;
+
+}
+declare module "awayjs-core/lib/core/ui/Keyboard" {
+ class Keyboard {
+ /**
+ * Constant associated with the key code value for the A key (65).
+ */
+ static A: number;
+ /**
+ * Constant associated with the key code value for the Alternate (Option) key (18).
+ */
+ static ALTERNATE: number;
+ /**
+ * Select the audio mode
+ */
+ static AUDIO: number;
+ /**
+ * Constant associated with the key code value for the B key (66).
+ */
+ static B: number;
+ /**
+ * Return to previous page in application
+ */
+ static BACK: number;
+ /**
+ * Constant associated with the key code value for the ` key (192).
+ */
+ static BACKQUOTE: number;
+ /**
+ * Constant associated with the key code value for the \ key (220).
+ */
+ static BACKSLASH: number;
+ /**
+ * Constant associated with the key code value for the Backspace key (8).
+ */
+ static BACKSPACE: number;
+ /**
+ * Blue function key button
+ */
+ static BLUE: number;
+ /**
+ * Constant associated with the key code value for the C key (67).
+ */
+ static C: number;
+ /**
+ * Constant associated with the key code value for the Caps Lock key (20).
+ */
+ static CAPS_LOCK: number;
+ /**
+ * Channel down
+ */
+ static CHANNEL_DOWN: number;
+ /**
+ * Channel up
+ */
+ static CHANNEL_UP: number;
+ /**
+ * Constant associated with the key code value for the , key (188).
+ */
+ static COMMA: number;
+ /**
+ * Constant associated with the Mac command key (15). This constant is
+ * currently only used for setting menu key equivalents.
+ */
+ static COMMAND: number;
+ /**
+ * Constant associated with the key code value for the Control key (17).
+ */
+ static CONTROL: number;
+ /**
+ * An array containing all the defined key name constants.
+ */
+ static CharCodeStrings: any[];
+ /**
+ * Constant associated with the key code value for the D key (68).
+ */
+ static D: number;
+ /**
+ * Constant associated with the key code value for the Delete key (46).
+ */
+ static DELETE: number;
+ /**
+ * Constant associated with the key code value for the Down Arrow key (40).
+ */
+ static DOWN: number;
+ /**
+ * Engage DVR application mode
+ */
+ static DVR: number;
+ /**
+ * Constant associated with the key code value for the E key (69).
+ */
+ static E: number;
+ /**
+ * Constant associated with the key code value for the End key (35).
+ */
+ static END: number;
+ /**
+ * Constant associated with the key code value for the Enter key (13).
+ */
+ static ENTER: number;
+ /**
+ * Constant associated with the key code value for the = key (187).
+ */
+ static EQUAL: number;
+ /**
+ * Constant associated with the key code value for the Escape key (27).
+ */
+ static ESCAPE: number;
+ /**
+ * Exits current application mode
+ */
+ static EXIT: number;
+ /**
+ * Constant associated with the key code value for the F key (70).
+ */
+ static F: number;
+ /**
+ * Constant associated with the key code value for the F1 key (112).
+ */
+ static F1: number;
+ /**
+ * Constant associated with the key code value for the F10 key (121).
+ */
+ static F10: number;
+ /**
+ * Constant associated with the key code value for the F11 key (122).
+ */
+ static F11: number;
+ /**
+ * Constant associated with the key code value for the F12 key (123).
+ */
+ static F12: number;
+ /**
+ * Constant associated with the key code value for the F13 key (124).
+ */
+ static F13: number;
+ /**
+ * Constant associated with the key code value for the F14 key (125).
+ */
+ static F14: number;
+ /**
+ * Constant associated with the key code value for the F15 key (126).
+ */
+ static F15: number;
+ /**
+ * Constant associated with the key code value for the F2 key (113).
+ */
+ static F2: number;
+ /**
+ * Constant associated with the key code value for the F3 key (114).
+ */
+ static F3: number;
+ /**
+ * Constant associated with the key code value for the F4 key (115).
+ */
+ static F4: number;
+ /**
+ * Constant associated with the key code value for the F5 key (116).
+ */
+ static F5: number;
+ /**
+ * Constant associated with the key code value for the F6 key (117).
+ */
+ static F6: number;
+ /**
+ * Constant associated with the key code value for the F7 key (118).
+ */
+ static F7: number;
+ /**
+ * Constant associated with the key code value for the F8 key (119).
+ */
+ static F8: number;
+ /**
+ * Constant associated with the key code value for the F9 key (120).
+ */
+ static F9: number;
+ /**
+ * Engage fast-forward transport mode
+ */
+ static FAST_FORWARD: number;
+ /**
+ * Constant associated with the key code value for the G key (71).
+ */
+ static G: number;
+ /**
+ * Green function key button
+ */
+ static GREEN: number;
+ /**
+ * Engage program guide
+ */
+ static GUIDE: number;
+ /**
+ * Constant associated with the key code value for the H key (72).
+ */
+ static H: number;
+ /**
+ * Engage help application or context-sensitive help
+ */
+ static HELP: number;
+ /**
+ * Constant associated with the key code value for the Home key (36).
+ */
+ static HOME: number;
+ /**
+ * Constant associated with the key code value for the I key (73).
+ */
+ static I: number;
+ /**
+ * Info button
+ */
+ static INFO: number;
+ /**
+ * Cycle input
+ */
+ static INPUT: number;
+ /**
+ * Constant associated with the key code value for the Insert key (45).
+ */
+ static INSERT: number;
+ /**
+ * Constant associated with the key code value for the J key (74).
+ */
+ static J: number;
+ /**
+ * Constant associated with the key code value for the K key (75).
+ */
+ static K: number;
+ /**
+ * The Begin key
+ */
+ static KEYNAME_BEGIN: string;
+ /**
+ * The Break key
+ */
+ static KEYNAME_BREAK: string;
+ /**
+ * The Clear Display key
+ */
+ static KEYNAME_CLEARDISPLAY: string;
+ /**
+ * The Clear Line key
+ */
+ static KEYNAME_CLEARLINE: string;
+ /**
+ * The Delete key
+ */
+ static KEYNAME_DELETE: string;
+ /**
+ * The Delete Character key
+ */
+ static KEYNAME_DELETECHAR: string;
+ /**
+ * The Delete Line key
+ */
+ static KEYNAME_DELETELINE: string;
+ /**
+ * The down arrow
+ */
+ static KEYNAME_DOWNARROW: string;
+ /**
+ * The End key
+ */
+ static KEYNAME_END: string;
+ /**
+ * The Execute key
+ */
+ static KEYNAME_EXECUTE: string;
+ /**
+ * The F1 key
+ */
+ static KEYNAME_F1: string;
+ /**
+ * The F10 key
+ */
+ static KEYNAME_F10: string;
+ /**
+ * The F11 key
+ */
+ static KEYNAME_F11: string;
+ /**
+ * The F12 key
+ */
+ static KEYNAME_F12: string;
+ /**
+ * The F13 key
+ */
+ static KEYNAME_F13: string;
+ /**
+ * The F14 key
+ */
+ static KEYNAME_F14: string;
+ /**
+ * The F15 key
+ */
+ static KEYNAME_F15: string;
+ /**
+ * The F16 key
+ */
+ static KEYNAME_F16: string;
+ /**
+ * The F17 key
+ */
+ static KEYNAME_F17: string;
+ /**
+ * The F18 key
+ */
+ static KEYNAME_F18: string;
+ /**
+ * The F19 key
+ */
+ static KEYNAME_F19: string;
+ /**
+ * The F2 key
+ */
+ static KEYNAME_F2: string;
+ /**
+ * The F20 key
+ */
+ static KEYNAME_F20: string;
+ /**
+ * The F21 key
+ */
+ static KEYNAME_F21: string;
+ /**
+ * The F22 key
+ */
+ static KEYNAME_F22: string;
+ /**
+ * The F23 key
+ */
+ static KEYNAME_F23: string;
+ /**
+ * The F24 key
+ */
+ static KEYNAME_F24: string;
+ /**
+ * The F25 key
+ */
+ static KEYNAME_F25: string;
+ /**
+ * The F26 key
+ */
+ static KEYNAME_F26: string;
+ /**
+ * The F27 key
+ */
+ static KEYNAME_F27: string;
+ /**
+ * The F28 key
+ */
+ static KEYNAME_F28: string;
+ /**
+ * The F29 key
+ */
+ static KEYNAME_F29: string;
+ /**
+ * The F3 key
+ */
+ static KEYNAME_F3: string;
+ /**
+ * The F30 key
+ */
+ static KEYNAME_F30: string;
+ /**
+ * The F31 key
+ */
+ static KEYNAME_F31: string;
+ /**
+ * The F32 key
+ */
+ static KEYNAME_F32: string;
+ /**
+ * The F33 key
+ */
+ static KEYNAME_F33: string;
+ /**
+ * The F34 key
+ */
+ static KEYNAME_F34: string;
+ /**
+ * The F35 key
+ */
+ static KEYNAME_F35: string;
+ /**
+ * The F4 key
+ */
+ static KEYNAME_F4: string;
+ /**
+ * The F5 key
+ */
+ static KEYNAME_F5: string;
+ /**
+ * The F6 key
+ */
+ static KEYNAME_F6: string;
+ /**
+ * The F7 key
+ */
+ static KEYNAME_F7: string;
+ /**
+ * The F8 key
+ */
+ static KEYNAME_F8: string;
+ /**
+ * The F9 key
+ */
+ static KEYNAME_F9: string;
+ /**
+ * The Find key
+ */
+ static KEYNAME_FIND: string;
+ /**
+ * The Help key
+ */
+ static KEYNAME_HELP: string;
+ /**
+ * The Home key
+ */
+ static KEYNAME_HOME: string;
+ /**
+ * The Insert key
+ */
+ static KEYNAME_INSERT: string;
+ /**
+ * The Insert Character key
+ */
+ static KEYNAME_INSERTCHAR: string;
+ /**
+ * The Insert Line key
+ */
+ static KEYNAME_INSERTLINE: string;
+ /**
+ * The left arrow
+ */
+ static KEYNAME_LEFTARROW: string;
+ /**
+ * The Menu key
+ */
+ static KEYNAME_MENU: string;
+ /**
+ * The Mode Switch key
+ */
+ static KEYNAME_MODESWITCH: string;
+ /**
+ * The Next key
+ */
+ static KEYNAME_NEXT: string;
+ /**
+ * The Page Down key
+ */
+ static KEYNAME_PAGEDOWN: string;
+ /**
+ * The Page Up key
+ */
+ static KEYNAME_PAGEUP: string;
+ /**
+ * The Pause key
+ */
+ static KEYNAME_PAUSE: string;
+ /**
+ * The Previous key
+ */
+ static KEYNAME_PREV: string;
+ /**
+ * The PRINT key
+ */
+ static KEYNAME_PRINT: string;
+ /**
+ * The PRINT Screen
+ */
+ static KEYNAME_PRINTSCREEN: string;
+ /**
+ * The Redo key
+ */
+ static KEYNAME_REDO: string;
+ /**
+ * The Reset key
+ */
+ static KEYNAME_RESET: string;
+ /**
+ * The right arrow
+ */
+ static KEYNAME_RIGHTARROW: string;
+ /**
+ * The Scroll Lock key
+ */
+ static KEYNAME_SCROLLLOCK: string;
+ /**
+ * The Select key
+ */
+ static KEYNAME_SELECT: string;
+ /**
+ * The Stop key
+ */
+ static KEYNAME_STOP: string;
+ /**
+ * The System Request key
+ */
+ static KEYNAME_SYSREQ: string;
+ /**
+ * The System key
+ */
+ static KEYNAME_SYSTEM: string;
+ /**
+ * The Undo key
+ */
+ static KEYNAME_UNDO: string;
+ /**
+ * The up arrow
+ */
+ static KEYNAME_UPARROW: string;
+ /**
+ * The User key
+ */
+ static KEYNAME_USER: string;
+ /**
+ * Constant associated with the key code value for the L key (76).
+ */
+ static L: number;
+ /**
+ * Watch last channel or show watched
+ */
+ static LAST: number;
+ /**
+ * Constant associated with the key code value for the Left Arrow key (37).
+ */
+ static LEFT: number;
+ /**
+ * Constant associated with the key code value for the [ key (219).
+ */
+ static LEFTBRACKET: number;
+ /**
+ * Return to live [position in broadcast]
+ */
+ static LIVE: number;
+ /**
+ * Constant associated with the key code value for the M key (77).
+ */
+ static M: number;
+ /**
+ * Engage "Master Shell" e.g. TiVo or other vendor button
+ */
+ static MASTER_SHELL: number;
+ /**
+ * Engage menu
+ */
+ static MENU: number;
+ /**
+ * Constant associated with the key code value for the - key (189).
+ */
+ static MINUS: number;
+ /**
+ * Constant associated with the key code value for the N key (78).
+ */
+ static N: number;
+ /**
+ * Skip to next track or chapter
+ */
+ static NEXT: number;
+ /**
+ * Constant associated with the key code value for the 0 key (48).
+ */
+ static NUMBER_0: number;
+ /**
+ * Constant associated with the key code value for the 1 key (49).
+ */
+ static NUMBER_1: number;
+ /**
+ * Constant associated with the key code value for the 2 key (50).
+ */
+ static NUMBER_2: number;
+ /**
+ * Constant associated with the key code value for the 3 key (51).
+ */
+ static NUMBER_3: number;
+ /**
+ * Constant associated with the key code value for the 4 key (52).
+ */
+ static NUMBER_4: number;
+ /**
+ * Constant associated with the key code value for the 5 key (53).
+ */
+ static NUMBER_5: number;
+ /**
+ * Constant associated with the key code value for the 6 key (54).
+ */
+ static NUMBER_6: number;
+ /**
+ * Constant associated with the key code value for the 7 key (55).
+ */
+ static NUMBER_7: number;
+ /**
+ * Constant associated with the key code value for the 8 key (56).
+ */
+ static NUMBER_8: number;
+ /**
+ * Constant associated with the key code value for the 9 key (57).
+ */
+ static NUMBER_9: number;
+ /**
+ * Constant associated with the pseudo-key code for the the number pad (21). Use to set numpad modifier on key equivalents
+ */
+ static NUMPAD: number;
+ /**
+ * Constant associated with the key code value for the number 0 key on the number pad (96).
+ */
+ static NUMPAD_0: number;
+ /**
+ * Constant associated with the key code value for the number 1 key on the number pad (97).
+ */
+ static NUMPAD_1: number;
+ /**
+ * Constant associated with the key code value for the number 2 key on the number pad (98).
+ */
+ static NUMPAD_2: number;
+ /**
+ * Constant associated with the key code value for the number 3 key on the number pad (99).
+ */
+ static NUMPAD_3: number;
+ /**
+ * Constant associated with the key code value for the number 4 key on the number pad (100).
+ */
+ static NUMPAD_4: number;
+ /**
+ * Constant associated with the key code value for the number 5 key on the number pad (101).
+ */
+ static NUMPAD_5: number;
+ /**
+ * Constant associated with the key code value for the number 6 key on the number pad (102).
+ */
+ static NUMPAD_6: number;
+ /**
+ * Constant associated with the key code value for the number 7 key on the number pad (103).
+ */
+ static NUMPAD_7: number;
+ /**
+ * Constant associated with the key code value for the number 8 key on the number pad (104).
+ */
+ static NUMPAD_8: number;
+ /**
+ * Constant associated with the key code value for the number 9 key on the number pad (105).
+ */
+ static NUMPAD_9: number;
+ /**
+ * Constant associated with the key code value for the addition key on the number pad (107).
+ */
+ static NUMPAD_ADD: number;
+ /**
+ * Constant associated with the key code value for the decimal key on the number pad (110).
+ */
+ static NUMPAD_DECIMAL: number;
+ /**
+ * Constant associated with the key code value for the division key on the number pad (111).
+ */
+ static NUMPAD_DIVIDE: number;
+ /**
+ * Constant associated with the key code value for the Enter key on the number pad (108).
+ */
+ static NUMPAD_ENTER: number;
+ /**
+ * Constant associated with the key code value for the multiplication key on the number pad (106).
+ */
+ static NUMPAD_MULTIPLY: number;
+ /**
+ * Constant associated with the key code value for the subtraction key on the number pad (109).
+ */
+ static NUMPAD_SUBTRACT: number;
+ /**
+ * Constant associated with the key code value for the O key (79).
+ */
+ static O: number;
+ /**
+ * Constant associated with the key code value for the P key (80).
+ */
+ static P: number;
+ /**
+ * Constant associated with the key code value for the Page Down key (34).
+ */
+ static PAGE_DOWN: number;
+ /**
+ * Constant associated with the key code value for the Page Up key (33).
+ */
+ static PAGE_UP: number;
+ /**
+ * Engage pause transport mode
+ */
+ static PAUSE: number;
+ /**
+ * Constant associated with the key code value for the . key (190).
+ */
+ static PERIOD: number;
+ /**
+ * Engage play transport mode
+ */
+ static PLAY: number;
+ /**
+ * Skip to previous track or chapter
+ */
+ static PREVIOUS: number;
+ /**
+ * Constant associated with the key code value for the Q key (81).
+ */
+ static Q: number;
+ /**
+ * Constant associated with the key code value for the ' key (222).
+ */
+ static QUOTE: number;
+ /**
+ * Constant associated with the key code value for the R key (82).
+ */
+ static R: number;
+ /**
+ * Record item or engage record transport mode
+ */
+ static RECORD: number;
+ /**
+ * Red function key button
+ */
+ static RED: number;
+ /**
+ * Engage rewind transport mode
+ */
+ static REWIND: number;
+ /**
+ * Constant associated with the key code value for the Right Arrow key (39).
+ */
+ static RIGHT: number;
+ /**
+ * Constant associated with the key code value for the ] key (221).
+ */
+ static RIGHTBRACKET: number;
+ /**
+ * Constant associated with the key code value for the S key (83).
+ */
+ static S: number;
+ /**
+ * Search button
+ */
+ static SEARCH: number;
+ /**
+ * Constant associated with the key code value for the ; key (186).
+ */
+ static SEMICOLON: number;
+ /**
+ * Engage setup application or menu
+ */
+ static SETUP: number;
+ /**
+ * Constant associated with the key code value for the Shift key (16).
+ */
+ static SHIFT: number;
+ /**
+ * Quick skip backward (usually 7-10 seconds)
+ */
+ static SKIP_BACKWARD: number;
+ /**
+ * Quick skip ahead (usually 30 seconds)
+ */
+ static SKIP_FORWARD: number;
+ /**
+ * Constant associated with the key code value for the / key (191).
+ */
+ static SLASH: number;
+ /**
+ * Constant associated with the key code value for the Spacebar (32).
+ */
+ static SPACE: number;
+ /**
+ * Engage stop transport mode
+ */
+ static STOP: number;
+ /**
+ * Toggle subtitles
+ */
+ static SUBTITLE: number;
+ /**
+ * Constant associated with the key code value for the T key (84).
+ */
+ static T: number;
+ /**
+ * Constant associated with the key code value for the Tab key (9).
+ */
+ static TAB: number;
+ /**
+ * Constant associated with the key code value for the U key (85).
+ */
+ static U: number;
+ /**
+ * Constant associated with the key code value for the Up Arrow key (38).
+ */
+ static UP: number;
+ /**
+ * Constant associated with the key code value for the V key (86).
+ */
+ static V: number;
+ /**
+ * Engage video-on-demand
+ */
+ static VOD: number;
+ /**
+ * Constant associated with the key code value for the W key (87).
+ */
+ static W: number;
+ /**
+ * Constant associated with the key code value for the X key (88).
+ */
+ static X: number;
+ /**
+ * Constant associated with the key code value for the Y key (89).
+ */
+ static Y: number;
+ /**
+ * Yellow function key button
+ */
+ static YELLOW: number;
+ /**
+ * Constant associated with the key code value for the Z key (90).
+ */
+ static Z: number;
+ }
+ export = Keyboard;
+
+}
+declare module "awayjs-core/lib/materials/lightpickers/LightPickerBase" {
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+ import LightProbe = require("awayjs-core/lib/entities/LightProbe");
+ import PointLight = require("awayjs-core/lib/entities/PointLight");
+ /**
+ * LightPickerBase provides an abstract base clase for light picker classes. These classes are responsible for
+ * feeding materials with relevant lights. Usually, StaticLightPicker can be used, but LightPickerBase can be
+ * extended to provide more application-specific dynamic selection of lights.
+ *
+ * @see StaticLightPicker
+ */
+ class LightPickerBase extends NamedAssetBase implements IAsset {
+ public _pNumPointLights: number;
+ public _pNumDirectionalLights: number;
+ public _pNumCastingPointLights: number;
+ public _pNumCastingDirectionalLights: number;
+ public _pNumLightProbes: number;
+ public _pAllPickedLights: LightBase[];
+ public _pPointLights: PointLight[];
+ public _pCastingPointLights: PointLight[];
+ public _pDirectionalLights: DirectionalLight[];
+ public _pCastingDirectionalLights: DirectionalLight[];
+ public _pLightProbes: LightProbe[];
+ public _pLightProbeWeights: number[];
+ /**
+ * Creates a new LightPickerBase object.
+ */
+ constructor();
+ /**
+ * Disposes resources used by the light picker.
+ */
+ public dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ public assetType : string;
+ /**
+ * The maximum amount of directional lights that will be provided.
+ */
+ public numDirectionalLights : number;
+ /**
+ * The maximum amount of point lights that will be provided.
+ */
+ public numPointLights : number;
+ /**
+ * The maximum amount of directional lights that cast shadows.
+ */
+ public numCastingDirectionalLights : number;
+ /**
+ * The amount of point lights that cast shadows.
+ */
+ public numCastingPointLights : number;
+ /**
+ * The maximum amount of light probes that will be provided.
+ */
+ public numLightProbes : number;
+ /**
+ * The collected point lights to be used for shading.
+ */
+ public pointLights : PointLight[];
+ /**
+ * The collected directional lights to be used for shading.
+ */
+ public directionalLights : DirectionalLight[];
+ /**
+ * The collected point lights that cast shadows to be used for shading.
+ */
+ public castingPointLights : PointLight[];
+ /**
+ * The collected directional lights that cast shadows to be used for shading.
+ */
+ public castingDirectionalLights : DirectionalLight[];
+ /**
+ * The collected light probes to be used for shading.
+ */
+ public lightProbes : LightProbe[];
+ /**
+ * The weights for each light probe, defining their influence on the object.
+ */
+ public lightProbeWeights : number[];
+ /**
+ * A collection of all the collected lights.
+ */
+ public allPickedLights : LightBase[];
+ /**
+ * Updates set of lights for a given renderable and EntityCollector. Always call super.collectLights() after custom overridden code.
+ */
+ public collectLights(renderable: IRenderable): void;
+ /**
+ * Updates the weights for the light probes, based on the renderable's position relative to them.
+ * @param renderable The renderble for which to calculate the light probes' influence.
+ */
+ private updateProbeWeights(renderable);
+ }
+ export = LightPickerBase;
+
+}
+declare module "awayjs-core/lib/materials/lightpickers/StaticLightPicker" {
+ import LightPickerBase = require("awayjs-core/lib/materials/lightpickers/LightPickerBase");
+ /**
+ * StaticLightPicker is a light picker that provides a static set of lights. The lights can be reassigned, but
+ * if the configuration changes (number of directional lights, point lights, etc), a material recompilation may
+ * occur.
+ */
+ class StaticLightPicker extends LightPickerBase {
+ private _lights;
+ private _onCastShadowChangeDelegate;
+ /**
+ * Creates a new StaticLightPicker object.
+ * @param lights The lights to be used for shading.
+ */
+ constructor(lights: any);
+ /**
+ * The lights used for shading.
+ */
+ public lights : any[];
+ /**
+ * Remove configuration change listeners on the lights.
+ */
+ private clearListeners();
+ /**
+ * Notifies the material of a configuration change.
+ */
+ private onCastShadowChange(event);
+ /**
+ * Called when a directional light's shadow casting configuration changes.
+ */
+ private updateDirectionalCasting(light);
+ /**
+ * Called when a point light's shadow casting configuration changes.
+ */
+ private updatePointCasting(light);
+ }
+ export = StaticLightPicker;
+
+}
+declare module "awayjs-core/lib/materials/passes/IMaterialPass" {
+ import IStage = require("awayjs-core/lib/core/base/IStage");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import IMaterialPassData = require("awayjs-core/lib/core/pool/IMaterialPassData");
+ import IRenderable = require("awayjs-core/lib/core/pool/IRenderable");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher");
+ import LightPickerBase = require("awayjs-core/lib/materials/lightpickers/LightPickerBase");
+ /**
+ * MaterialPassBase provides an abstract base class for material shader passes. A material pass constitutes at least
+ * a render call per required renderable.
+ */
+ interface IMaterialPass extends IEventDispatcher {
+ /**
+ * Cleans up any resources used by the current object.
+ * @param deep Indicates whether other resources should be cleaned up, that could potentially be shared across different instances.
+ */
+ dispose(): any;
+ /**
+ * Renders an object to the current render target.
+ *
+ * @private
+ */
+ _iRender(pass: IMaterialPassData, renderable: IRenderable, stage: IStage, camera: Camera, viewProjection: Matrix3D): any;
+ /**
+ * Sets the render state for the pass that is independent of the rendered object. This needs to be called before
+ * calling renderPass. Before activating a pass, the previously used pass needs to be deactivated.
+ * @param stage The Stage object which is currently used for rendering.
+ * @param camera The camera from which the scene is viewed.
+ * @private
+ */
+ _iActivate(pass: IMaterialPassData, stage: IStage, camera: Camera): any;
+ /**
+ * Clears the render state for the pass. This needs to be called before activating another pass.
+ * @param stage The Stage used for rendering
+ *
+ * @private
+ */
+ _iDeactivate(pass: IMaterialPassData, stage: IStage): any;
+ /**
+ * The light picker used by the material to provide lights to the material if it supports lighting.
+ *
+ * @see away.materials.LightPickerBase
+ * @see away.materials.StaticLightPicker
+ */
+ lightPicker: LightPickerBase;
+ }
+ export = IMaterialPass;
+
+}
+declare module "awayjs-core/lib/materials/shadowmappers/CascadeShadowMapper" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Event = require("awayjs-core/lib/events/Event");
+ import IEventDispatcher = require("awayjs-core/lib/events/IEventDispatcher");
+ import DirectionalShadowMapper = require("awayjs-core/lib/materials/shadowmappers/DirectionalShadowMapper");
+ import RenderTexture = require("awayjs-core/lib/textures/RenderTexture");
+ class CascadeShadowMapper extends DirectionalShadowMapper implements IEventDispatcher {
+ public _pScissorRects: Rectangle[];
+ private _pScissorRectsInvalid;
+ private _splitRatios;
+ private _numCascades;
+ private _depthCameras;
+ private _depthLenses;
+ private _texOffsetsX;
+ private _texOffsetsY;
+ private _changeDispatcher;
+ private _nearPlaneDistances;
+ constructor(numCascades?: number);
+ public getSplitRatio(index: number): number;
+ public setSplitRatio(index: number, value: number): void;
+ public getDepthProjections(partition: number): Matrix3D;
+ private init();
+ public _pSetDepthMapSize(value: number): void;
+ private invalidateScissorRects();
+ public numCascades : number;
+ public pDrawDepthMap(target: RenderTexture, scene: Scene, renderer: IRenderer): void;
+ private updateScissorRects();
+ public pUpdateDepthProjection(viewCamera: Camera): void;
+ private updateProjectionPartition(matrix, splitRatio, texOffsetX, texOffsetY);
+ public addEventListener(type: string, listener: Function): void;
+ public removeEventListener(type: string, listener: Function): void;
+ public dispatchEvent(event: Event): void;
+ public hasEventListener(type: string): boolean;
+ public _iNearPlaneDistances : number[];
+ }
+ export = CascadeShadowMapper;
+
+}
+declare module "awayjs-core/lib/materials/shadowmappers/CubeMapShadowMapper" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import ShadowMapperBase = require("awayjs-core/lib/materials/shadowmappers/ShadowMapperBase");
+ import RenderTexture = require("awayjs-core/lib/textures/RenderTexture");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ class CubeMapShadowMapper extends ShadowMapperBase {
+ private _depthCameras;
+ private _projections;
+ private _needsRender;
+ constructor();
+ private initCameras();
+ private addCamera(rotationX, rotationY, rotationZ);
+ public pCreateDepthTexture(): TextureProxyBase;
+ public pUpdateDepthProjection(viewCamera: Camera): void;
+ public pDrawDepthMap(target: RenderTexture, scene: Scene, renderer: IRenderer): void;
+ }
+ export = CubeMapShadowMapper;
+
+}
+declare module "awayjs-core/lib/materials/shadowmappers/DirectionalShadowMapper" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Plane3D = require("awayjs-core/lib/core/geom/Plane3D");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import ShadowMapperBase = require("awayjs-core/lib/materials/shadowmappers/ShadowMapperBase");
+ import FreeMatrixProjection = require("awayjs-core/lib/projections/FreeMatrixProjection");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ class DirectionalShadowMapper extends ShadowMapperBase {
+ public _pOverallDepthCamera: Camera;
+ public _pLocalFrustum: number[];
+ public _pLightOffset: number;
+ public _pMatrix: Matrix3D;
+ public _pOverallDepthProjection: FreeMatrixProjection;
+ public _pSnap: number;
+ public _pCullPlanes: Plane3D[];
+ public _pMinZ: number;
+ public _pMaxZ: number;
+ constructor();
+ public snap : number;
+ public lightOffset : number;
+ public iDepthProjection : Matrix3D;
+ public depth : number;
+ public pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void;
+ public pUpdateCullPlanes(viewCamera: Camera): void;
+ public pUpdateDepthProjection(viewCamera: Camera): void;
+ public pUpdateProjectionFromFrustumCorners(viewCamera: Camera, corners: number[], matrix: Matrix3D): void;
+ }
+ export = DirectionalShadowMapper;
+
+}
+declare module "awayjs-core/lib/materials/shadowmappers/NearDirectionalShadowMapper" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import DirectionalShadowMapper = require("awayjs-core/lib/materials/shadowmappers/DirectionalShadowMapper");
+ class NearDirectionalShadowMapper extends DirectionalShadowMapper {
+ private _coverageRatio;
+ constructor(coverageRatio?: number);
+ /**
+ * A value between 0 and 1 to indicate the ratio of the view frustum that needs to be covered by the shadow map.
+ */
+ public coverageRatio : number;
+ public pUpdateDepthProjection(viewCamera: Camera): void;
+ }
+ export = NearDirectionalShadowMapper;
+
+}
+declare module "awayjs-core/lib/materials/shadowmappers/ShadowMapperBase" {
+ import Scene = require("awayjs-core/lib/containers/Scene");
+ import LightBase = require("awayjs-core/lib/core/base/LightBase");
+ import IRenderer = require("awayjs-core/lib/core/render/IRenderer");
+ import EntityCollector = require("awayjs-core/lib/core/traverse/EntityCollector");
+ import ShadowCasterCollector = require("awayjs-core/lib/core/traverse/ShadowCasterCollector");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+ class ShadowMapperBase {
+ public _pCasterCollector: ShadowCasterCollector;
+ private _depthMap;
+ public _pDepthMapSize: number;
+ public _pLight: LightBase;
+ private _explicitDepthMap;
+ private _autoUpdateShadows;
+ public _iShadowsInvalid: boolean;
+ constructor();
+ public pCreateCasterCollector(): ShadowCasterCollector;
+ public autoUpdateShadows : boolean;
+ public updateShadows(): void;
+ public iSetDepthMap(depthMap: TextureProxyBase): void;
+ public light : LightBase;
+ public depthMap : TextureProxyBase;
+ public depthMapSize : number;
+ public dispose(): void;
+ public pCreateDepthTexture(): TextureProxyBase;
+ public iRenderDepthMap(entityCollector: EntityCollector, renderer: IRenderer): void;
+ public pUpdateDepthProjection(viewCamera: Camera): void;
+ public pDrawDepthMap(target: TextureProxyBase, scene: Scene, renderer: IRenderer): void;
+ public _pSetDepthMapSize(value: any): void;
+ }
+ export = ShadowMapperBase;
+
+}
\ No newline at end of file
diff --git a/build/awayjs-core.js b/build/awayjs-core.js
new file mode 100755
index 00000000..00db7c82
--- /dev/null
+++ b/build/awayjs-core.js
@@ -0,0 +1,34334 @@
+require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oAxisAlignedBoundingBox
object.
+ */
+ function AxisAlignedBoundingBox() {
+ _super.call(this);
+ this._centerX = 0;
+ this._centerY = 0;
+ this._centerZ = 0;
+ this._halfExtentsX = 0;
+ this._halfExtentsY = 0;
+ this._halfExtentsZ = 0;
+ }
+ /**
+ * @inheritDoc
+ */
+ AxisAlignedBoundingBox.prototype.nullify = function () {
+ _super.prototype.nullify.call(this);
+
+ this._centerX = this._centerY = this._centerZ = 0;
+ this._halfExtentsX = this._halfExtentsY = this._halfExtentsZ = 0;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ AxisAlignedBoundingBox.prototype.isInFrustum = function (planes, numPlanes) {
+ for (var i = 0; i < numPlanes; ++i) {
+ var plane = planes[i];
+ var a = plane.a;
+ var b = plane.b;
+ var c = plane.c;
+ var flippedExtentX = a < 0 ? -this._halfExtentsX : this._halfExtentsX;
+ var flippedExtentY = b < 0 ? -this._halfExtentsY : this._halfExtentsY;
+ var flippedExtentZ = c < 0 ? -this._halfExtentsZ : this._halfExtentsZ;
+ var projDist = a * (this._centerX + flippedExtentX) + b * (this._centerY + flippedExtentY) + c * (this._centerZ + flippedExtentZ) - plane.d;
+
+ if (projDist < 0)
+ return false;
+ }
+
+ return true;
+ };
+
+ AxisAlignedBoundingBox.prototype.rayIntersection = function (position, direction, targetNormal) {
+ if (this.containsPoint(position))
+ return 0;
+
+ var px = position.x - this._centerX;
+ var py = position.y - this._centerY;
+ var pz = position.z - this._centerZ;
+
+ var vx = direction.x;
+ var vy = direction.y;
+ var vz = direction.z;
+
+ var ix;
+ var iy;
+ var iz;
+ var rayEntryDistance;
+
+ // ray-plane tests
+ var intersects;
+ if (vx < 0) {
+ rayEntryDistance = (this._halfExtentsX - px) / vx;
+ if (rayEntryDistance > 0) {
+ iy = py + rayEntryDistance * vy;
+ iz = pz + rayEntryDistance * vz;
+ if (iy > -this._halfExtentsY && iy < this._halfExtentsY && iz > -this._halfExtentsZ && iz < this._halfExtentsZ) {
+ targetNormal.x = 1;
+ targetNormal.y = 0;
+ targetNormal.z = 0;
+
+ intersects = true;
+ }
+ }
+ }
+ if (!intersects && vx > 0) {
+ rayEntryDistance = (-this._halfExtentsX - px) / vx;
+ if (rayEntryDistance > 0) {
+ iy = py + rayEntryDistance * vy;
+ iz = pz + rayEntryDistance * vz;
+ if (iy > -this._halfExtentsY && iy < this._halfExtentsY && iz > -this._halfExtentsZ && iz < this._halfExtentsZ) {
+ targetNormal.x = -1;
+ targetNormal.y = 0;
+ targetNormal.z = 0;
+ intersects = true;
+ }
+ }
+ }
+ if (!intersects && vy < 0) {
+ rayEntryDistance = (this._halfExtentsY - py) / vy;
+ if (rayEntryDistance > 0) {
+ ix = px + rayEntryDistance * vx;
+ iz = pz + rayEntryDistance * vz;
+ if (ix > -this._halfExtentsX && ix < this._halfExtentsX && iz > -this._halfExtentsZ && iz < this._halfExtentsZ) {
+ targetNormal.x = 0;
+ targetNormal.y = 1;
+ targetNormal.z = 0;
+ intersects = true;
+ }
+ }
+ }
+ if (!intersects && vy > 0) {
+ rayEntryDistance = (-this._halfExtentsY - py) / vy;
+ if (rayEntryDistance > 0) {
+ ix = px + rayEntryDistance * vx;
+ iz = pz + rayEntryDistance * vz;
+ if (ix > -this._halfExtentsX && ix < this._halfExtentsX && iz > -this._halfExtentsZ && iz < this._halfExtentsZ) {
+ targetNormal.x = 0;
+ targetNormal.y = -1;
+ targetNormal.z = 0;
+ intersects = true;
+ }
+ }
+ }
+ if (!intersects && vz < 0) {
+ rayEntryDistance = (this._halfExtentsZ - pz) / vz;
+ if (rayEntryDistance > 0) {
+ ix = px + rayEntryDistance * vx;
+ iy = py + rayEntryDistance * vy;
+ if (iy > -this._halfExtentsY && iy < this._halfExtentsY && ix > -this._halfExtentsX && ix < this._halfExtentsX) {
+ targetNormal.x = 0;
+ targetNormal.y = 0;
+ targetNormal.z = 1;
+ intersects = true;
+ }
+ }
+ }
+ if (!intersects && vz > 0) {
+ rayEntryDistance = (-this._halfExtentsZ - pz) / vz;
+ if (rayEntryDistance > 0) {
+ ix = px + rayEntryDistance * vx;
+ iy = py + rayEntryDistance * vy;
+ if (iy > -this._halfExtentsY && iy < this._halfExtentsY && ix > -this._halfExtentsX && ix < this._halfExtentsX) {
+ targetNormal.x = 0;
+ targetNormal.y = 0;
+ targetNormal.z = -1;
+ intersects = true;
+ }
+ }
+ }
+
+ return intersects ? rayEntryDistance : -1;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ AxisAlignedBoundingBox.prototype.containsPoint = function (position) {
+ var px = position.x - this._centerX, py = position.y - this._centerY, pz = position.z - this._centerZ;
+ return px <= this._halfExtentsX && px >= -this._halfExtentsX && py <= this._halfExtentsY && py >= -this._halfExtentsY && pz <= this._halfExtentsZ && pz >= -this._halfExtentsZ;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ AxisAlignedBoundingBox.prototype.fromExtremes = function (minX, minY, minZ, maxX, maxY, maxZ) {
+ this._centerX = (maxX + minX) * .5;
+ this._centerY = (maxY + minY) * .5;
+ this._centerZ = (maxZ + minZ) * .5;
+ this._halfExtentsX = (maxX - minX) * .5;
+ this._halfExtentsY = (maxY - minY) * .5;
+ this._halfExtentsZ = (maxZ - minZ) * .5;
+
+ _super.prototype.fromExtremes.call(this, minX, minY, minZ, maxX, maxY, maxZ);
+ };
+
+ /**
+ * @inheritDoc
+ */
+ AxisAlignedBoundingBox.prototype.clone = function () {
+ var clone = new AxisAlignedBoundingBox();
+ clone.fromExtremes(this._aabb.x, this._aabb.y + this._aabb.height, this._aabb.z, this._aabb.x + this._aabb.width, this._aabb.y, this._aabb.z + this._aabb.depth);
+ return clone;
+ };
+
+ Object.defineProperty(AxisAlignedBoundingBox.prototype, "halfExtentsX", {
+ get: function () {
+ return this._halfExtentsX;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(AxisAlignedBoundingBox.prototype, "halfExtentsY", {
+ get: function () {
+ return this._halfExtentsY;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(AxisAlignedBoundingBox.prototype, "halfExtentsZ", {
+ get: function () {
+ return this._halfExtentsZ;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Finds the closest point on the bounding volume to another given point. This can be used for maximum error calculations for content within a given bound.
+ * @param point The point for which to find the closest point on the bounding volume
+ * @param target An optional Vector3D to store the result to prevent creating a new object.
+ * @return
+ */
+ AxisAlignedBoundingBox.prototype.closestPointToPoint = function (point, target) {
+ if (typeof target === "undefined") { target = null; }
+ var p;
+
+ if (target == null)
+ target = new Vector3D();
+
+ p = point.x;
+ if (p < this._aabb.x)
+ p = this._aabb.x;
+ if (p > this._aabb.x + this._aabb.width)
+ p = this._aabb.x + this._aabb.width;
+ target.x = p;
+
+ p = point.y;
+ if (p < this._aabb.y + this._aabb.height)
+ p = this._aabb.y + this._aabb.height;
+ if (p > this._aabb.y)
+ p = this._aabb.y;
+ target.y = p;
+
+ p = point.z;
+ if (p < this._aabb.z)
+ p = this._aabb.z;
+ if (p > this._aabb.z + this._aabb.depth)
+ p = this._aabb.z + this._aabb.depth;
+ target.z = p;
+
+ return target;
+ };
+
+ AxisAlignedBoundingBox.prototype.pUpdateBoundingRenderable = function () {
+ this._pBoundingEntity.transform.scale.x = Math.max(this._halfExtentsX * 2, 0.001);
+ this._pBoundingEntity.transform.scale.y = Math.max(this._halfExtentsY * 2, 0.001);
+ this._pBoundingEntity.transform.scale.z = Math.max(this._halfExtentsZ * 2, 0.001);
+ this._pBoundingEntity.transform.position.x = this._centerX;
+ this._pBoundingEntity.transform.position.y = this._centerY;
+ this._pBoundingEntity.transform.position.z = this._centerZ;
+ };
+
+ AxisAlignedBoundingBox.prototype.pCreateBoundingEntity = function () {
+ return null;
+ };
+
+ AxisAlignedBoundingBox.prototype.classifyToPlane = function (plane) {
+ var a = plane.a;
+ var b = plane.b;
+ var c = plane.c;
+ var centerDistance = a * this._centerX + b * this._centerY + c * this._centerZ - plane.d;
+
+ if (a < 0)
+ a = -a;
+
+ if (b < 0)
+ b = -b;
+
+ if (c < 0)
+ c = -c;
+
+ var boundOffset = a * this._halfExtentsX + b * this._halfExtentsY + c * this._halfExtentsZ;
+
+ return centerDistance > boundOffset ? PlaneClassification.FRONT : centerDistance < -boundOffset ? PlaneClassification.BACK : PlaneClassification.INTERSECT;
+ };
+
+ AxisAlignedBoundingBox.prototype.transformFrom = function (bounds, matrix) {
+ var aabb = bounds;
+ var cx = aabb._centerX;
+ var cy = aabb._centerY;
+ var cz = aabb._centerZ;
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+
+ matrix.copyRawDataTo(raw);
+
+ var m11 = raw[0], m12 = raw[4], m13 = raw[8], m14 = raw[12];
+ var m21 = raw[1], m22 = raw[5], m23 = raw[9], m24 = raw[13];
+ var m31 = raw[2], m32 = raw[6], m33 = raw[10], m34 = raw[14];
+
+ this._centerX = cx * m11 + cy * m12 + cz * m13 + m14;
+ this._centerY = cx * m21 + cy * m22 + cz * m23 + m24;
+ this._centerZ = cx * m31 + cy * m32 + cz * m33 + m34;
+
+ if (m11 < 0)
+ m11 = -m11;
+ if (m12 < 0)
+ m12 = -m12;
+ if (m13 < 0)
+ m13 = -m13;
+ if (m21 < 0)
+ m21 = -m21;
+ if (m22 < 0)
+ m22 = -m22;
+ if (m23 < 0)
+ m23 = -m23;
+ if (m31 < 0)
+ m31 = -m31;
+ if (m32 < 0)
+ m32 = -m32;
+ if (m33 < 0)
+ m33 = -m33;
+ var hx = aabb._halfExtentsX;
+ var hy = aabb._halfExtentsY;
+ var hz = aabb._halfExtentsZ;
+ this._halfExtentsX = hx * m11 + hy * m12 + hz * m13;
+ this._halfExtentsY = hx * m21 + hy * m22 + hz * m23;
+ this._halfExtentsZ = hx * m31 + hy * m32 + hz * m33;
+
+ this._aabb.width = this._aabb.height = this._aabb.depth = this._halfExtentsX * 2;
+ this._aabb.x = this._centerX - this._halfExtentsX;
+ this._aabb.y = this._centerY + this._halfExtentsY;
+ this._aabb.z = this._centerZ - this._halfExtentsZ;
+ };
+ return AxisAlignedBoundingBox;
+})(BoundingVolumeBase);
+
+module.exports = AxisAlignedBoundingBox;
+
+
+},{"awayjs-core/lib/bounds/BoundingVolumeBase":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/core/geom/PlaneClassification":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/bounds/BoundingSphere":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+
+var PlaneClassification = require("awayjs-core/lib/core/geom/PlaneClassification");
+
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var BoundingSphere = (function (_super) {
+ __extends(BoundingSphere, _super);
+ function BoundingSphere() {
+ _super.call(this);
+ this._radius = 0;
+ this._centerX = 0;
+ this._centerY = 0;
+ this._centerZ = 0;
+ }
+ Object.defineProperty(BoundingSphere.prototype, "radius", {
+ get: function () {
+ return this._radius;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ BoundingSphere.prototype.nullify = function () {
+ _super.prototype.nullify.call(this);
+ this._centerX = this._centerY = this._centerZ = 0;
+ this._radius = 0;
+ };
+
+ BoundingSphere.prototype.isInFrustum = function (planes, numPlanes) {
+ for (var i = 0; i < numPlanes; ++i) {
+ var plane = planes[i];
+ var flippedExtentX = plane.a < 0 ? -this._radius : this._radius;
+ var flippedExtentY = plane.b < 0 ? -this._radius : this._radius;
+ var flippedExtentZ = plane.c < 0 ? -this._radius : this._radius;
+ var projDist = plane.a * (this._centerX + flippedExtentX) + plane.b * (this._centerY + flippedExtentY) + plane.c * (this._centerZ + flippedExtentZ) - plane.d;
+ if (projDist < 0) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ BoundingSphere.prototype.fromSphere = function (center, radius) {
+ this._centerX = center.x;
+ this._centerY = center.y;
+ this._centerZ = center.z;
+ this._radius = radius;
+ this._aabb.width = this._aabb.height = this._aabb.depth = radius * 2;
+ this._aabb.x = this._centerX - radius;
+ this._aabb.y = this._centerY + radius;
+ this._aabb.z = this._centerZ - radius;
+ this._pAabbPointsDirty = true;
+
+ if (this._pBoundingEntity)
+ this.pUpdateBoundingEntity();
+ };
+
+ BoundingSphere.prototype.fromExtremes = function (minX, minY, minZ, maxX, maxY, maxZ) {
+ this._centerX = (maxX + minX) * .5;
+ this._centerY = (maxY + minY) * .5;
+ this._centerZ = (maxZ + minZ) * .5;
+
+ var d = maxX - minX;
+ var y = maxY - minY;
+ var z = maxZ - minZ;
+
+ if (y > d)
+ d = y;
+
+ if (z > d)
+ d = z;
+
+ this._radius = d * Math.sqrt(.5);
+ _super.prototype.fromExtremes.call(this, minX, minY, minZ, maxX, maxY, maxZ);
+ };
+
+ BoundingSphere.prototype.clone = function () {
+ var clone = new BoundingSphere();
+ clone.fromSphere(new Vector3D(this._centerX, this._centerY, this._centerZ), this._radius);
+ return clone;
+ };
+
+ BoundingSphere.prototype.rayIntersection = function (position, direction, targetNormal) {
+ if (this.containsPoint(position)) {
+ return 0;
+ }
+
+ var px = position.x - this._centerX, py = position.y - this._centerY, pz = position.z - this._centerZ;
+ var vx = direction.x, vy = direction.y, vz = direction.z;
+ var rayEntryDistance;
+
+ var a = vx * vx + vy * vy + vz * vz;
+ var b = 2 * (px * vx + py * vy + pz * vz);
+ var c = px * px + py * py + pz * pz - this._radius * this._radius;
+ var det = b * b - 4 * a * c;
+
+ if (det >= 0) {
+ var sqrtDet = Math.sqrt(det);
+ rayEntryDistance = (-b - sqrtDet) / (2 * a);
+ if (rayEntryDistance >= 0) {
+ targetNormal.x = px + rayEntryDistance * vx;
+ targetNormal.y = py + rayEntryDistance * vy;
+ targetNormal.z = pz + rayEntryDistance * vz;
+ targetNormal.normalize();
+
+ return rayEntryDistance;
+ }
+ }
+
+ // ray misses sphere
+ return -1;
+ };
+
+ BoundingSphere.prototype.containsPoint = function (position) {
+ var px = position.x - this._centerX;
+ var py = position.y - this._centerY;
+ var pz = position.z - this._centerZ;
+ var distance = Math.sqrt(px * px + py * py + pz * pz);
+ return distance <= this._radius;
+ };
+
+ BoundingSphere.prototype.pUpdateBoundingEntity = function () {
+ var sc = this._radius;
+ if (sc == 0)
+ sc = 0.001;
+
+ var transform = this._pBoundingEntity.transform;
+ transform.scale = new Vector3D(sc, sc, sc);
+ transform.position = new Vector3D(this._centerX, this._centerY, this._centerZ);
+ };
+
+ // TODO pCreateBoundingRenderable():WireframePrimitiveBase
+ BoundingSphere.prototype.pCreateBoundingEntity = function () {
+ return null;
+ };
+
+ //@override
+ BoundingSphere.prototype.classifyToPlane = function (plane) {
+ var a = plane.a;
+ var b = plane.b;
+ var c = plane.c;
+ var dd = a * this._centerX + b * this._centerY + c * this._centerZ - plane.d;
+
+ if (a < 0)
+ a = -a;
+
+ if (b < 0)
+ b = -b;
+
+ if (c < 0)
+ c = -c;
+
+ var rr = (a + b + c) * this._radius;
+
+ return dd > rr ? PlaneClassification.FRONT : dd < -rr ? PlaneClassification.BACK : PlaneClassification.INTERSECT;
+ };
+
+ BoundingSphere.prototype.transformFrom = function (bounds, matrix) {
+ var sphere = bounds;
+ var cx = sphere._centerX;
+ var cy = sphere._centerY;
+ var cz = sphere._centerZ;
+ var raw = new Array(16);
+
+ matrix.copyRawDataTo(raw);
+
+ var m11 = raw[0], m12 = raw[4], m13 = raw[8], m14 = raw[12];
+ var m21 = raw[1], m22 = raw[5], m23 = raw[9], m24 = raw[13];
+ var m31 = raw[2], m32 = raw[6], m33 = raw[10], m34 = raw[14];
+
+ this._centerX = cx * m11 + cy * m12 + cz * m13 + m14;
+ this._centerY = cx * m21 + cy * m22 + cz * m23 + m24;
+ this._centerZ = cx * m31 + cy * m32 + cz * m33 + m34;
+
+ if (m11 < 0)
+ m11 = -m11;
+ if (m12 < 0)
+ m12 = -m12;
+ if (m13 < 0)
+ m13 = -m13;
+ if (m21 < 0)
+ m21 = -m21;
+ if (m22 < 0)
+ m22 = -m22;
+ if (m23 < 0)
+ m23 = -m23;
+ if (m31 < 0)
+ m31 = -m31;
+ if (m32 < 0)
+ m32 = -m32;
+ if (m33 < 0)
+ m33 = -m33;
+
+ var r = sphere._radius;
+ var rx = m11 + m12 + m13;
+ var ry = m21 + m22 + m23;
+ var rz = m31 + m32 + m33;
+ this._radius = r * Math.sqrt(rx * rx + ry * ry + rz * rz);
+
+ this._aabb.width = this._aabb.height = this._aabb.depth = this._radius * 2;
+ this._aabb.x = this._centerX - this._radius;
+ this._aabb.y = this._centerY + this._radius;
+ this._aabb.z = this._centerZ - this._radius;
+ };
+ return BoundingSphere;
+})(BoundingVolumeBase);
+
+module.exports = BoundingSphere;
+
+
+},{"awayjs-core/lib/bounds/BoundingVolumeBase":undefined,"awayjs-core/lib/core/geom/PlaneClassification":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/bounds/BoundingVolumeBase":[function(require,module,exports){
+var Box = require("awayjs-core/lib/core/geom/Box");
+
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+
+var BoundingVolumeBase = (function () {
+ function BoundingVolumeBase() {
+ this._pAabbPoints = new Array();
+ this._pAabbPointsDirty = true;
+ this._aabb = new Box();
+ }
+ Object.defineProperty(BoundingVolumeBase.prototype, "aabb", {
+ get: function () {
+ return this._aabb;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(BoundingVolumeBase.prototype, "aabbPoints", {
+ get: function () {
+ if (this._pAabbPointsDirty)
+ this.pUpdateAABBPoints();
+
+ return this._pAabbPoints;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(BoundingVolumeBase.prototype, "boundingEntity", {
+ get: function () {
+ if (!this._pBoundingEntity) {
+ this._pBoundingEntity = this.pCreateBoundingEntity();
+ this.pUpdateBoundingEntity();
+ }
+
+ return this._pBoundingEntity;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ BoundingVolumeBase.prototype.nullify = function () {
+ this._aabb.x = this._aabb.y = this._aabb.z = 0;
+ this._aabb.width = this._aabb.height = this._aabb.depth = 0;
+ this._pAabbPointsDirty = true;
+
+ if (this._pBoundingEntity)
+ this.pUpdateBoundingEntity();
+ };
+
+ BoundingVolumeBase.prototype.disposeRenderable = function () {
+ if (this._pBoundingEntity)
+ this._pBoundingEntity.dispose();
+
+ this._pBoundingEntity = null;
+ };
+
+ BoundingVolumeBase.prototype.fromVertices = function (vertices) {
+ var i;
+ var len = vertices.length;
+ var minX, minY, minZ;
+ var maxX, maxY, maxZ;
+
+ if (len == 0) {
+ this.nullify();
+ return;
+ }
+
+ var v;
+
+ minX = maxX = vertices[i++];
+ minY = maxY = vertices[i++];
+ minZ = maxZ = vertices[i++];
+
+ while (i < len) {
+ v = vertices[i++];
+ if (v < minX)
+ minX = v;
+ else if (v > maxX)
+ maxX = v;
+ v = vertices[i++];
+ if (v < minY)
+ minY = v;
+ else if (v > maxY)
+ maxY = v;
+ v = vertices[i++];
+ if (v < minZ)
+ minZ = v;
+ else if (v > maxZ)
+ maxZ = v;
+ }
+
+ this.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);
+ };
+
+ /**
+ * Updates the bounds to fit a Geometry object.
+ *
+ * @param geometry The Geometry object to be bounded.
+ */
+ BoundingVolumeBase.prototype.fromGeometry = function (geometry) {
+ var i, j, p;
+ var subGeoms = geometry.subGeometries;
+ var subGeom;
+ var boundingPositions;
+ var numSubGeoms = subGeoms.length;
+ var minX, minY, minZ;
+ var maxX, maxY, maxZ;
+
+ if (numSubGeoms > 0) {
+ i = 0;
+ subGeom = subGeoms[0];
+ boundingPositions = subGeom.getBoundingPositions();
+ minX = maxX = boundingPositions[i];
+ minY = maxY = boundingPositions[i + 1];
+ minZ = maxZ = boundingPositions[i + 2];
+
+ j = numSubGeoms;
+ while (j--) {
+ subGeom = subGeoms[j];
+ boundingPositions = subGeom.getBoundingPositions();
+ i = boundingPositions.length;
+ while (i--) {
+ p = boundingPositions[i];
+ if (p < minX)
+ minX = p;
+ else if (p > maxX)
+ maxX = p;
+
+ p = boundingPositions[i + 1];
+
+ if (p < minY)
+ minY = p;
+ else if (p > maxY)
+ maxY = p;
+
+ p = boundingPositions[i + 2];
+
+ if (p < minZ)
+ minZ = p;
+ else if (p > maxZ)
+ maxZ = p;
+ }
+ }
+
+ this.fromExtremes(minX, minY, minZ, maxX, maxY, maxZ);
+ } else {
+ this.fromExtremes(0, 0, 0, 0, 0, 0);
+ }
+ };
+
+ BoundingVolumeBase.prototype.fromSphere = function (center, radius) {
+ this.fromExtremes(center.x - radius, center.y - radius, center.z - radius, center.x + radius, center.y + radius, center.z + radius);
+ };
+
+ BoundingVolumeBase.prototype.fromExtremes = function (minX, minY, minZ, maxX, maxY, maxZ) {
+ this._aabb.x = minX;
+ this._aabb.y = maxY;
+ this._aabb.z = minZ;
+ this._aabb.width = maxX - minX;
+ this._aabb.height = maxY - minY;
+ this._aabb.depth = maxZ - minZ;
+ this._pAabbPointsDirty = true;
+
+ if (this._pBoundingEntity)
+ this.pUpdateBoundingEntity();
+ };
+
+ BoundingVolumeBase.prototype.isInFrustum = function (planes, numPlanes) {
+ throw new AbstractMethodError();
+ };
+
+ BoundingVolumeBase.prototype.overlaps = function (bounds) {
+ return this._aabb.intersects(bounds.aabb);
+ };
+
+ BoundingVolumeBase.prototype.clone = function () {
+ throw new AbstractMethodError();
+ };
+
+ BoundingVolumeBase.prototype.rayIntersection = function (position, direction, targetNormal) {
+ return -1;
+ };
+
+ BoundingVolumeBase.prototype.containsPoint = function (position) {
+ return false;
+ };
+
+ BoundingVolumeBase.prototype.pUpdateAABBPoints = function () {
+ var minX = this._aabb.x;
+ var minY = this._aabb.y - this._aabb.height;
+ var minZ = this._aabb.z;
+ var maxX = this._aabb.x + this._aabb.width;
+ var maxY = this._aabb.y;
+ var maxZ = this._aabb.z + this._aabb.depth;
+
+ this._pAabbPoints[0] = minX;
+ this._pAabbPoints[1] = minY;
+ this._pAabbPoints[2] = minZ;
+ this._pAabbPoints[3] = maxX;
+ this._pAabbPoints[4] = minY;
+ this._pAabbPoints[5] = minZ;
+ this._pAabbPoints[6] = minX;
+ this._pAabbPoints[7] = maxY;
+ this._pAabbPoints[8] = minZ;
+ this._pAabbPoints[9] = maxX;
+ this._pAabbPoints[10] = maxY;
+ this._pAabbPoints[11] = minZ;
+ this._pAabbPoints[12] = minX;
+ this._pAabbPoints[13] = minY;
+ this._pAabbPoints[14] = maxZ;
+ this._pAabbPoints[15] = maxX;
+ this._pAabbPoints[16] = minY;
+ this._pAabbPoints[17] = maxZ;
+ this._pAabbPoints[18] = minX;
+ this._pAabbPoints[19] = maxY;
+ this._pAabbPoints[20] = maxZ;
+ this._pAabbPoints[21] = maxX;
+ this._pAabbPoints[22] = maxY;
+ this._pAabbPoints[23] = maxZ;
+ this._pAabbPointsDirty = false;
+ };
+
+ BoundingVolumeBase.prototype.pUpdateBoundingEntity = function () {
+ throw new AbstractMethodError();
+ };
+
+ BoundingVolumeBase.prototype.pCreateBoundingEntity = function () {
+ throw new AbstractMethodError();
+ };
+
+ BoundingVolumeBase.prototype.classifyToPlane = function (plane) {
+ throw new AbstractMethodError();
+ };
+
+ BoundingVolumeBase.prototype.transformFrom = function (bounds, matrix) {
+ throw new AbstractMethodError();
+ };
+ return BoundingVolumeBase;
+})();
+
+module.exports = BoundingVolumeBase;
+
+
+},{"awayjs-core/lib/core/geom/Box":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined}],"awayjs-core/lib/bounds/NullBounds":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var BoundingVolumeBase = require("awayjs-core/lib/bounds/BoundingVolumeBase");
+
+var PlaneClassification = require("awayjs-core/lib/core/geom/PlaneClassification");
+
+var NullBounds = (function (_super) {
+ __extends(NullBounds, _super);
+ function NullBounds(alwaysIn) {
+ if (typeof alwaysIn === "undefined") { alwaysIn = true; }
+ _super.call(this);
+
+ this._alwaysIn = alwaysIn;
+
+ this._aabb.width = this._aabb.height = this._aabb.depth = Number.POSITIVE_INFINITY;
+ this._aabb.x = this._aabb.y = this._aabb.z = this._alwaysIn ? Number.NEGATIVE_INFINITY / 2 : Number.POSITIVE_INFINITY;
+ }
+ //@override
+ NullBounds.prototype.clone = function () {
+ return new NullBounds(this._alwaysIn);
+ };
+
+ //@override
+ NullBounds.prototype.pCreateBoundingEntity = function () {
+ //return this._renderable || new away.primitives.WireframeSphere( 100, 16, 12, 0xffffff, 0.5 );
+ return null;
+ };
+
+ //@override
+ NullBounds.prototype.isInFrustum = function (planes, numPlanes) {
+ return this._alwaysIn;
+ };
+
+ // //@override
+ // public fromGeometry(geometry:away.base.Geometry)
+ // {
+ // }
+ //@override
+ NullBounds.prototype.fromSphere = function (center, radius) {
+ };
+
+ //@override
+ NullBounds.prototype.fromExtremes = function (minX, minY, minZ, maxX, maxY, maxZ) {
+ };
+
+ NullBounds.prototype.classifyToPlane = function (plane) {
+ return PlaneClassification.INTERSECT;
+ };
+
+ //@override
+ NullBounds.prototype.transformFrom = function (bounds, matrix) {
+ this._alwaysIn = bounds._alwaysIn;
+ };
+ return NullBounds;
+})(BoundingVolumeBase);
+
+module.exports = NullBounds;
+
+
+},{"awayjs-core/lib/bounds/BoundingVolumeBase":undefined,"awayjs-core/lib/core/geom/PlaneClassification":undefined}],"awayjs-core/lib/containers/DisplayObjectContainer":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+var ArgumentError = require("awayjs-core/lib/errors/ArgumentError");
+var Error = require("awayjs-core/lib/errors/Error");
+var RangeError = require("awayjs-core/lib/errors/RangeError");
+
+/**
+* The DisplayObjectContainer class is the base class for all objects that can
+* serve as display object containers on the display list. The display list
+* manages all objects displayed in the Flash runtimes. Use the
+* DisplayObjectContainer class to arrange the display objects in the display
+* list. Each DisplayObjectContainer object has its own child list for
+* organizing the z-order of the objects. The z-order is the front-to-back
+* order that determines which object is drawn in front, which is behind, and
+* so on.
+*
+* DisplayObject is an abstract base class; therefore, you cannot call
+* DisplayObject directly. Invoking new DisplayObject()
throws an
+* ArgumentError
exception.
new DisplayObjectContainer()
constructor throws an
+* ArgumentError
exception.
+*
+* For more information, see the "Display Programming" chapter of the +* ActionScript 3.0 Developer's Guide.
+*/ +var DisplayObjectContainer = (function (_super) { + __extends(DisplayObjectContainer, _super); + /** + * Calling thenew DisplayObjectContainer()
constructor throws
+ * an ArgumentError
exception. You can, however, call
+ * constructors for the following subclasses of DisplayObjectContainer:
+ * new Loader()
new Sprite()
new MovieClip()
true
.
+ *
+ * This property is useful when you create a button with an instance of
+ * the Sprite class(instead of using the SimpleButton class). When you use a
+ * Sprite instance to create a button, you can choose to decorate the button
+ * by using the addChild()
method to add additional Sprite
+ * instances. This process can cause unexpected behavior with mouse events
+ * because the Sprite instances you add as children can become the target
+ * object of a mouse event when you expect the parent instance to be the
+ * target object. To ensure that the parent instance serves as the target
+ * objects for mouse events, you can set the mouseChildren
+ * property of the parent instance to false
.
No event is dispatched by setting this property. You must use the
+ * addEventListener()
method to create interactive
+ * functionality.
addChildAt()
method.)
+ *
+ * If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.
+ * + *Note: The command stage.addChild()
can cause
+ * problems with a published SWF file, including security problems and
+ * conflicts with other loaded SWF files. There is only one Stage within a
+ * Flash runtime instance, no matter how many SWF files you load into the
+ * runtime. So, generally, objects should not be added to the Stage,
+ * directly, at all. The only object the Stage should contain is the root
+ * object. Create a DisplayObjectContainer to contain all of the items on the
+ * display list. Then, if necessary, add that DisplayObjectContainer instance
+ * to the Stage.
child
+ * parameter.
+ * @throws ArgumentError Throws if the child is the same as the parent. Also
+ * throws if the caller is a child(or grandchild etc.)
+ * of the child being added.
+ * @event added Dispatched when a display object is added to the display
+ * list.
+ */
+ DisplayObjectContainer.prototype.addChild = function (child) {
+ if (child == null)
+ throw new Error("Parameter child cannot be null.");
+
+ //if child already has a parent, remove it.
+ if (child._pParent)
+ child._pParent.removeChildInternal(child);
+
+ child.iSetParent(this);
+
+ this._children.push(child);
+
+ return child;
+ };
+
+ /**
+ * Adds a child DisplayObject instance to this DisplayObjectContainer
+ * instance. The child is added at the index position specified. An index of
+ * 0 represents the back(bottom) of the display list for this
+ * DisplayObjectContainer object.
+ *
+ * For example, the following example shows three display objects, labeled + * a, b, and c, at index positions 0, 2, and 1, respectively:
+ * + *If you add a child object that already has a different display object + * container as a parent, the object is removed from the child list of the + * other display object container.
+ * + * @param child The DisplayObject instance to add as a child of this + * DisplayObjectContainer instance. + * @param index The index position to which the child is added. If you + * specify a currently occupied index position, the child object + * that exists at that position and all higher positions are + * moved up one position in the child list. + * @return The DisplayObject instance that you pass in thechild
+ * parameter.
+ * @throws ArgumentError Throws if the child is the same as the parent. Also
+ * throws if the caller is a child(or grandchild etc.)
+ * of the child being added.
+ * @throws RangeError Throws if the index position does not exist in the
+ * child list.
+ * @event added Dispatched when a display object is added to the display
+ * list.
+ */
+ DisplayObjectContainer.prototype.addChildAt = function (child, index /*int*/ ) {
+ return child;
+ };
+
+ DisplayObjectContainer.prototype.addChildren = function () {
+ var childarray = [];
+ for (var _i = 0; _i < (arguments.length - 0); _i++) {
+ childarray[_i] = arguments[_i + 0];
+ }
+ var len = childarray.length;
+ for (var i = 0; i < len; i++)
+ this.addChild(childarray[i]);
+ };
+
+ /**
+ *
+ */
+ DisplayObjectContainer.prototype.clone = function () {
+ var clone = new DisplayObjectContainer();
+ clone.pivot = this.pivot;
+ clone._iMatrix3D = this._iMatrix3D;
+ clone.partition = this.partition;
+ clone.name = name;
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ clone.addChild(this._children[i].clone());
+
+ // todo: implement for all subtypes
+ return clone;
+ };
+
+ /**
+ * Determines whether the specified display object is a child of the
+ * DisplayObjectContainer instance or the instance itself. The search
+ * includes the entire display list including this DisplayObjectContainer
+ * instance. Grandchildren, great-grandchildren, and so on each return
+ * true
.
+ *
+ * @param child The child object to test.
+ * @return true
if the child
object is a child of
+ * the DisplayObjectContainer or the container itself; otherwise
+ * false
.
+ */
+ DisplayObjectContainer.prototype.contains = function (child) {
+ return this._children.indexOf(child) >= 0;
+ };
+
+ /**
+ *
+ */
+ DisplayObjectContainer.prototype.disposeWithChildren = function () {
+ this.dispose();
+
+ while (this.numChildren > 0)
+ this.getChildAt(0).dispose();
+ };
+
+ /**
+ * Returns the child display object instance that exists at the specified
+ * index.
+ *
+ * @param index The index position of the child object.
+ * @return The child display object at the specified index position.
+ * @throws RangeError Throws if the index does not exist in the child
+ * list.
+ */
+ DisplayObjectContainer.prototype.getChildAt = function (index /*int*/ ) {
+ var child = this._children[index];
+
+ if (child == null)
+ throw new RangeError("Index does not exist in the child list of the caller");
+
+ return child;
+ };
+
+ /**
+ * Returns the child display object that exists with the specified name. If
+ * more that one child display object has the specified name, the method
+ * returns the first object in the child list.
+ *
+ * The getChildAt()
method is faster than the
+ * getChildByName()
method. The getChildAt()
method
+ * accesses a child from a cached array, whereas the
+ * getChildByName()
method has to traverse a linked list to
+ * access a child.
child
DisplayObject instance.
+ *
+ * @param child The DisplayObject instance to identify.
+ * @return The index position of the child display object to identify.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ */
+ DisplayObjectContainer.prototype.getChildIndex = function (child) {
+ var childIndex = this._children.indexOf(child);
+
+ if (childIndex == -1)
+ throw new ArgumentError("Child parameter is not a child of the caller");
+
+ return childIndex;
+ };
+
+ /**
+ * Returns an array of objects that lie under the specified point and are
+ * children(or grandchildren, and so on) of this DisplayObjectContainer
+ * instance. Any child objects that are inaccessible for security reasons are
+ * omitted from the returned array. To determine whether this security
+ * restriction affects the returned array, call the
+ * areInaccessibleObjectsUnderPoint()
method.
+ *
+ * The point
parameter is in the coordinate space of the
+ * Stage, which may differ from the coordinate space of the display object
+ * container(unless the display object container is the Stage). You can use
+ * the globalToLocal()
and the localToGlobal()
+ * methods to convert points between these coordinate spaces.
child
DisplayObject instance from the
+ * child list of the DisplayObjectContainer instance. The parent
+ * property of the removed child is set to null
, and the object
+ * is garbage collected if no other references to the child exist. The index
+ * positions of any display objects above the child in the
+ * DisplayObjectContainer are decreased by 1.
+ *
+ * The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.
+ * + * @param child The DisplayObject instance to remove. + * @return The DisplayObject instance that you pass in thechild
+ * parameter.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ */
+ DisplayObjectContainer.prototype.removeChild = function (child) {
+ if (child == null)
+ throw new Error("Parameter child cannot be null");
+
+ this.removeChildInternal(child);
+
+ child.iSetParent(null);
+
+ return child;
+ };
+
+ /**
+ * Removes a child DisplayObject from the specified index
+ * position in the child list of the DisplayObjectContainer. The
+ * parent
property of the removed child is set to
+ * null
, and the object is garbage collected if no other
+ * references to the child exist. The index positions of any display objects
+ * above the child in the DisplayObjectContainer are decreased by 1.
+ *
+ * The garbage collector reallocates unused memory space. When a variable + * or object is no longer actively referenced or stored somewhere, the + * garbage collector sweeps through and wipes out the memory space it used to + * occupy if no other references to it exist.
+ * + * @param index The child index of the DisplayObject to remove. + * @return The DisplayObject instance that was removed. + * @throws RangeError Throws if the index does not exist in the child + * list. + * @throws SecurityError This child display object belongs to a sandbox to + * which the calling object does not have access. You + * can avoid this situation by having the child movie + * call theSecurity.allowDomain()
method.
+ */
+ DisplayObjectContainer.prototype.removeChildAt = function (index /*int*/ ) {
+ return this.removeChild(this._children[index]);
+ };
+
+ /**
+ * Removes all child
DisplayObject instances from the child list
+ * of the DisplayObjectContainer instance. The parent
property
+ * of the removed children is set to null
, and the objects are
+ * garbage collected if no other references to the children exist.
+ *
+ * The garbage collector reallocates unused memory space. When a variable or
+ * object is no longer actively referenced or stored somewhere, the garbage
+ * collector sweeps through and wipes out the memory space it used to occupy
+ * if no other references to it exist.
+ *
+ * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.
+ * @param endIndex The ending position. A value smaller than 0 throws a RangeError.
+ * @throws RangeError Throws if the beginIndex or endIndex positions do
+ * not exist in the child list.
+ */
+ DisplayObjectContainer.prototype.removeChildren = function (beginIndex, endIndex) {
+ if (typeof beginIndex === "undefined") { beginIndex = 0; }
+ if (typeof endIndex === "undefined") { endIndex = 2147483647; }
+ if (beginIndex < 0)
+ throw new RangeError("beginIndex is out of range of the child list");
+
+ if (endIndex > this._children.length)
+ throw new RangeError("endIndex is out of range of the child list");
+
+ for (var i = beginIndex; i < endIndex; i++)
+ this.removeChild(this._children[i]);
+ };
+
+ /**
+ * Changes the position of an existing child in the display object container.
+ * This affects the layering of child objects. For example, the following
+ * example shows three display objects, labeled a, b, and c, at index
+ * positions 0, 1, and 2, respectively:
+ *
+ * When you use the setChildIndex()
method and specify an
+ * index position that is already occupied, the only positions that change
+ * are those in between the display object's former and new position. All
+ * others will stay the same. If a child is moved to an index LOWER than its
+ * current index, all children in between will INCREASE by 1 for their index
+ * reference. If a child is moved to an index HIGHER than its current index,
+ * all children in between will DECREASE by 1 for their index reference. For
+ * example, if the display object container in the previous example is named
+ * container
, you can swap the position of the display objects
+ * labeled a and b by calling the following code:
This code results in the following arrangement of objects:
+ * + * @param child The child DisplayObject instance for which you want to change + * the index number. + * @param index The resulting index number for thechild
display
+ * object.
+ * @throws ArgumentError Throws if the child parameter is not a child of this
+ * object.
+ * @throws RangeError Throws if the index does not exist in the child
+ * list.
+ */
+ DisplayObjectContainer.prototype.setChildIndex = function (child, index /*int*/ ) {
+ //TODO
+ };
+
+ /**
+ * Swaps the z-order (front-to-back order) of the two specified child
+ * objects. All other child objects in the display object container remain in
+ * the same index positions.
+ *
+ * @param child1 The first child object.
+ * @param child2 The second child object.
+ * @throws ArgumentError Throws if either child parameter is not a child of
+ * this object.
+ */
+ DisplayObjectContainer.prototype.swapChildren = function (child1, child2) {
+ //TODO
+ };
+
+ /**
+ * Swaps the z-order(front-to-back order) of the child objects at the two
+ * specified index positions in the child list. All other child objects in
+ * the display object container remain in the same index positions.
+ *
+ * @param index1 The index position of the first child object.
+ * @param index2 The index position of the second child object.
+ * @throws RangeError If either index does not exist in the child list.
+ */
+ DisplayObjectContainer.prototype.swapChildrenAt = function (index1 /*int*/ , index2 /*int*/ ) {
+ //TODO
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObjectContainer.prototype.pInvalidateSceneTransform = function () {
+ _super.prototype.pInvalidateSceneTransform.call(this);
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ this._children[i].pInvalidateSceneTransform();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObjectContainer.prototype._pUpdateScene = function (value) {
+ _super.prototype._pUpdateScene.call(this, value);
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ this._children[i]._pUpdateScene(value);
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObjectContainer.prototype._pUpdateImplicitMouseEnabled = function (value) {
+ _super.prototype._pUpdateImplicitMouseEnabled.call(this, value);
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ this._children[i]._pUpdateImplicitMouseEnabled(this._mouseChildren);
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObjectContainer.prototype._pUpdateImplicitVisibility = function (value) {
+ _super.prototype._pUpdateImplicitVisibility.call(this, value);
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ this._children[i]._pUpdateImplicitVisibility(this._pImplicitVisibility);
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObjectContainer.prototype._pUpdateImplicitPartition = function (value) {
+ _super.prototype._pUpdateImplicitPartition.call(this, value);
+
+ var len = this._children.length;
+ for (var i = 0; i < len; ++i)
+ this._children[i]._pUpdateImplicitPartition(this._pImplicitPartition);
+ };
+
+ /**
+ * @private
+ *
+ * @param child
+ */
+ DisplayObjectContainer.prototype.removeChildInternal = function (child) {
+ this._children.splice(this.getChildIndex(child), 1);
+
+ return child;
+ };
+ return DisplayObjectContainer;
+})(DisplayObject);
+
+module.exports = DisplayObjectContainer;
+
+
+},{"awayjs-core/lib/core/base/DisplayObject":undefined,"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/errors/ArgumentError":undefined,"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/errors/RangeError":undefined}],"awayjs-core/lib/containers/Loader":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+
+var AssetLibraryBundle = require("awayjs-core/lib/core/library/AssetLibraryBundle");
+var AssetLoader = require("awayjs-core/lib/core/library/AssetLoader");
+
+var AssetEvent = require("awayjs-core/lib/events/AssetEvent");
+
+var IOErrorEvent = require("awayjs-core/lib/events/IOErrorEvent");
+var LoaderEvent = require("awayjs-core/lib/events/LoaderEvent");
+var ParserEvent = require("awayjs-core/lib/events/ParserEvent");
+
+/**
+* The Loader class is used to load SWF files or image(JPG, PNG, or GIF)
+* files. Use the load()
method to initiate loading. The loaded
+* display object is added as a child of the Loader object.
+*
+* Use the URLLoader class to load text or binary data.
+* +*The Loader class overrides the following methods that it inherits,
+* because a Loader object can only have one child display object - the
+* display object that it loads. Calling the following methods throws an
+* exception: addChild()
, addChildAt()
,
+* removeChild()
, removeChildAt()
, and
+* setChildIndex()
. To remove a loaded display object, you must
+* remove the Loader object from its parent DisplayObjectContainer
+* child array.
Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes +* are not used in ActionScript 3.0. The Loader and URLLoader classes replace +* them.
+* +*When you use the Loader class, consider the Flash Player and Adobe AIR +* security model:
+* +*System.allowDomain()
or the
+* System.allowInsecureDomain()
method in the loaded content
+* file.However, in AIR, content in the application
security
+* sandbox(content installed with the AIR application) are not restricted by
+* these security limitations.
For more information related to security, see the Flash Player Developer +* Center Topic: Security.
+* +*When loading a SWF file from an untrusted source(such as a domain other +* than that of the Loader object's root SWF file), you may want to define a +* mask for the Loader object, to prevent the loaded content(which is a child +* of the Loader object) from drawing to portions of the Stage outside of that +* mask, as shown in the following code:
+*/ +var Loader = (function (_super) { + __extends(Loader, _super); + /** + * Creates a Loader object that you can use to load files, such as SWF, JPEG, + * GIF, or PNG files. Call theload()
method to load the asset
+ * as a child of the Loader instance. You can then add the Loader object to
+ * the display list(for instance, by using the addChild()
+ * method of a DisplayObjectContainer instance). The asset appears on the
+ * Stage as it loads.
+ *
+ * You can also use a Loader instance "offlist," that is without adding it + * to a display object container on the display list. In this mode, the + * Loader instance might be used to load a SWF file that contains additional + * modules of an application.
+ * + *To detect when the SWF file is finished loading, you can use the events
+ * of the LoaderInfo object associated with the
+ * contentLoaderInfo
property of the Loader object. At that
+ * point, the code in the module SWF file can be executed to initialize and
+ * start the module. In the offlist mode, a Loader instance might also be
+ * used to load a SWF file that contains components or media assets. Again,
+ * you can use the LoaderInfo object event notifications to detect when the
+ * components are finished loading. At that point, the application can start
+ * using the components and media assets in the library of the SWF file by
+ * instantiating the ActionScript 3.0 classes that represent those components
+ * and assets.
To determine the status of a Loader object, monitor the following
+ * events that the LoaderInfo object associated with the
+ * contentLoaderInfo
property of the Loader object:
open
event is dispatched when loading begins.ioError
or securityError
event is
+ * dispatched if the file cannot be loaded or if an error occured during the
+ * load process. progress
event fires continuously while the file is
+ * being loaded.complete
event is dispatched when a file completes
+ * downloading, but before the loaded movie clip's methods and properties are
+ * available. init
event is dispatched after the properties and
+ * methods of the loaded SWF file are accessible, so you can begin
+ * manipulating the loaded SWF file. This event is dispatched before the
+ * complete
handler. In streaming SWF files, the
+ * init
event can occur significantly earlier than the
+ * complete
event. For most purposes, use the init
+ * handler.load()
or
+ * loadBytes()
methods.
+ *
+ * @throws SecurityError The loaded SWF file or image file belongs to a
+ * security sandbox to which you do not have access.
+ * For a loaded SWF file, you can avoid this situation
+ * by having the file call the
+ * Security.allowDomain()
method or by
+ * having the loading file specify a
+ * loaderContext
parameter with its
+ * securityDomain
property set to
+ * SecurityDomain.currentDomain
when you
+ * call the load()
or
+ * loadBytes()
method.
+ */
+ get: function () {
+ return this._content;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Loader.prototype, "contentLoaderInfo", {
+ /**
+ * Returns a LoaderInfo object corresponding to the object being loaded.
+ * LoaderInfo objects are shared between the Loader object and the loaded
+ * content object. The LoaderInfo object supplies loading progress
+ * information and statistics about the loaded file.
+ *
+ * Events related to the load are dispatched by the LoaderInfo object
+ * referenced by the contentLoaderInfo
property of the Loader
+ * object. The contentLoaderInfo
property is set to a valid
+ * LoaderInfo object, even before the content is loaded, so that you can add
+ * event listeners to the object prior to the load.
To detect uncaught errors that happen in a loaded SWF, use the
+ * Loader.uncaughtErrorEvents
property, not the
+ * Loader.contentLoaderInfo.uncaughtErrorEvents
property.
load()
method operation that is currently in
+ * progress for the Loader instance.
+ *
+ */
+ Loader.prototype.close = function () {
+ if (this._useAssetLib) {
+ var lib;
+ lib = AssetLibraryBundle.getInstance(this._assetLibId);
+ lib.stopAllLoadingSessions();
+ this._loadingSessions = null;
+ return;
+ }
+ var i;
+ var length = this._loadingSessions.length;
+ for (i = 0; i < length; i++) {
+ this.removeListeners(this._loadingSessions[i]);
+ this._loadingSessions[i].stop();
+ this._loadingSessions[i] = null;
+ }
+ this._loadingSessions = null;
+ };
+
+ /**
+ * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an
+ * object that is a child of this Loader object. If you load an animated GIF
+ * file, only the first frame is displayed. As the Loader object can contain
+ * only a single child, issuing a subsequent load()
request
+ * terminates the previous request, if still pending, and commences a new
+ * load.
+ *
+ * Note: In AIR 1.5 and Flash Player 10, the maximum size for a + * loaded image is 8,191 pixels in width or height, and the total number of + * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191 + * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and + * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height + * and 2,880 pixels in width.
+ * + *A SWF file or image loaded into a Loader object inherits the position, + * rotation, and scale properties of the parent display objects of the Loader + * object.
+ * + *Use the unload()
method to remove movies or images loaded
+ * with this method, or to cancel a load operation that is in progress.
You can prevent a SWF file from using this method by setting the
+ * allowNetworking
parameter of the the object
and
+ * embed
tags in the HTML page that contains the SWF
+ * content.
When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.
+ * + *In Flash Player 10 and later, if you use a multipart Content-Type(for + * example "multipart/form-data") that contains an upload(indicated by a + * "filename" parameter in a "content-disposition" header within the POST + * body), the POST operation is subject to the security rules applied to + * uploads:
+ * + *Also, for any multipart Content-Type, the syntax must be valid + * (according to the RFC2046 standard). If the syntax appears to be invalid, + * the POST operation is subject to the security rules applied to + * uploads.
+ * + *For more information related to security, see the Flash Player + * Developer Center Topic: Security.
+ * + * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG + * file to be loaded. A relative path must be relative to the + * main SWF file. Absolute URLs must include the protocol + * reference, such as http:// or file:///. Filenames cannot + * include disk drive specifications. + * @param context A LoaderContext object, which has properties that define + * the following: + *If the context
parameter is not specified
+ * or refers to a null object, the loaded content remains in
+ * its own security domain.
For complete details, see the description of the + * properties in the LoaderContext + * class.
+ * @param ns An optional namespace string under which the file is to be + * loaded, allowing the differentiation of two resources with + * identical assets. + * @param parser An optional parser object for translating the loaded data + * into a usable resource. If not provided, AssetLoader will + * attempt to auto-detect the file type. + * @throws IOError Thedigest
property of the
+ * request
object is not
+ * null
. You should only set the
+ * digest
property of a URLRequest
+ * object when calling the
+ * URLLoader.load()
method when
+ * loading a SWZ file(an Adobe platform
+ * component).
+ * @throws IllegalOperationError If the requestedContentParent
+ * property of the context
+ * parameter is a Loader
.
+ * @throws IllegalOperationError If the LoaderContext.parameters
+ * parameter is set to non-null and has some
+ * values which are not Strings.
+ * @throws SecurityError The value of
+ * LoaderContext.securityDomain
+ * must be either null
or
+ * SecurityDomain.currentDomain
.
+ * This reflects the fact that you can only
+ * place the loaded media in its natural
+ * security sandbox or your own(the latter
+ * requires a policy file).
+ * @throws SecurityError Local SWF files may not set
+ * LoaderContext.securityDomain to anything
+ * other than null
. It is not
+ * permitted to import non-local media into a
+ * local sandbox, or to place other local media
+ * in anything other than its natural sandbox.
+ * @throws SecurityError You cannot connect to commonly reserved
+ * ports. For a complete list of blocked ports,
+ * see "Restricting Networking APIs" in the
+ * ActionScript 3.0 Developer's Guide.
+ * @throws SecurityError If the applicationDomain
or
+ * securityDomain
properties of
+ * the context
parameter are from
+ * a disallowed domain.
+ * @throws SecurityError If a local SWF file is attempting to use the
+ * securityDomain
property of the
+ * context
parameter.
+ * @event asyncError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and it is not possible to
+ * add the loaded content as a child to the specified
+ * DisplayObjectContainer. This could happen if the
+ * loaded content is a
+ * flash.display.AVM1Movie
or if the
+ * addChild()
call to the
+ * requestedContentParent throws an error.
+ * @event complete Dispatched by the contentLoaderInfo
+ * object when the file has completed loading. The
+ * complete
event is always dispatched
+ * after the init
event.
+ * @event httpStatus Dispatched by the contentLoaderInfo
+ * object when a network request is made over HTTP and
+ * Flash Player can detect the HTTP status code.
+ * @event init Dispatched by the contentLoaderInfo
+ * object when the properties and methods of the loaded
+ * SWF file are accessible. The init
event
+ * always precedes the complete
event.
+ * @event ioError Dispatched by the contentLoaderInfo
+ * object when an input or output error occurs that
+ * causes a load operation to fail.
+ * @event open Dispatched by the contentLoaderInfo
+ * object when the loading operation starts.
+ * @event progress Dispatched by the contentLoaderInfo
+ * object as data is received while load operation
+ * progresses.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if a SWF file in the local-with-filesystem
+ * sandbox attempts to load content in the
+ * local-with-networking sandbox, or vice versa.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and the security sandbox
+ * of the
+ * LoaderContext.requestedContentParent
+ * does not have access to the loaded SWF.
+ * @event unload Dispatched by the contentLoaderInfo
+ * object when a loaded object is removed.
+ */
+ Loader.prototype.load = function (request, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ var token;
+
+ if (this._useAssetLib) {
+ var lib;
+ lib = AssetLibraryBundle.getInstance(this._assetLibId);
+ token = lib.load(request, context, ns, parser);
+ } else {
+ var loader = new AssetLoader();
+ this._loadingSessions.push(loader);
+ token = loader.load(request, context, ns, parser);
+ }
+
+ token.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);
+ token.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+
+ // Error are handled separately (see documentation for addErrorHandler)
+ token._iLoader._iAddErrorHandler(this.onLoadError);
+ token._iLoader._iAddParseErrorHandler(this.onParseError);
+
+ return token;
+ };
+
+ /**
+ * Loads from binary data stored in a ByteArray object.
+ *
+ * The loadBytes()
method is asynchronous. You must wait for
+ * the "init" event before accessing the properties of a loaded object.
When you use this method, consider the Flash Player security model, + * which is described in the Loader class description.
+ * + * @param bytes A ByteArray object. The contents of the ByteArray can be + * any of the file formats supported by the Loader class: SWF, + * GIF, JPEG, or PNG. + * @param context A LoaderContext object. Only the + *applicationDomain
property of the
+ * LoaderContext object applies; the
+ * checkPolicyFile
and
+ * securityDomain
properties of the LoaderContext
+ * object do not apply.
+ *
+ * If the context
parameter is not specified
+ * or refers to a null object, the content is loaded into the
+ * current security domain - a process referred to as "import
+ * loading" in Flash Player security documentation.
+ * Specifically, if the loading SWF file trusts the remote SWF
+ * by incorporating the remote SWF into its code, then the
+ * loading SWF can import it directly into its own security
+ * domain.
For more information related to security, see the Flash + * Player Developer Center Topic: Security.
+ * @throws ArgumentError If thelength
property of the
+ * ByteArray object is not greater than 0.
+ * @throws IllegalOperationError If the checkPolicyFile
or
+ * securityDomain
property of the
+ * context
parameter are non-null.
+ * @throws IllegalOperationError If the requestedContentParent
+ * property of the context
+ * parameter is a Loader
.
+ * @throws IllegalOperationError If the LoaderContext.parameters
+ * parameter is set to non-null and has some
+ * values which are not Strings.
+ * @throws SecurityError If the provided
+ * applicationDomain
property of
+ * the context
property is from a
+ * disallowed domain.
+ * @throws SecurityError You cannot connect to commonly reserved
+ * ports. For a complete list of blocked ports,
+ * see "Restricting Networking APIs" in the
+ * ActionScript 3.0 Developer's Guide.
+ * @event asyncError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and it is not possible to
+ * add the loaded content as a child to the specified
+ * DisplayObjectContainer. This could happen if the
+ * loaded content is a
+ * flash.display.AVM1Movie
or if the
+ * addChild()
call to the
+ * requestedContentParent throws an error.
+ * @event complete Dispatched by the contentLoaderInfo
+ * object when the operation is complete. The
+ * complete
event is always dispatched
+ * after the init
event.
+ * @event init Dispatched by the contentLoaderInfo
+ * object when the properties and methods of the loaded
+ * data are accessible. The init
event
+ * always precedes the complete
event.
+ * @event ioError Dispatched by the contentLoaderInfo
+ * object when the runtime cannot parse the data in the
+ * byte array.
+ * @event open Dispatched by the contentLoaderInfo
+ * object when the operation starts.
+ * @event progress Dispatched by the contentLoaderInfo
+ * object as data is transfered in memory.
+ * @event securityError Dispatched by the contentLoaderInfo
+ * object if the
+ * LoaderContext.requestedContentParent
+ * property has been specified and the security sandbox
+ * of the
+ * LoaderContext.requestedContentParent
+ * does not have access to the loaded SWF.
+ * @event unload Dispatched by the contentLoaderInfo
+ * object when a loaded object is removed.
+ */
+ Loader.prototype.loadData = function (data, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ var token;
+
+ if (this._useAssetLib) {
+ var lib;
+ lib = AssetLibraryBundle.getInstance(this._assetLibId);
+ token = lib.loadData(data, context, ns, parser);
+ } else {
+ var loader = new AssetLoader();
+ this._loadingSessions.push(loader);
+ token = loader.loadData(data, '', context, ns, parser);
+ }
+
+ token.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);
+ token.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+
+ // Error are handled separately (see documentation for addErrorHandler)
+ token._iLoader._iAddErrorHandler(this.onLoadError);
+ token._iLoader._iAddParseErrorHandler(this.onParseError);
+
+ return token;
+ };
+
+ /**
+ * Removes a child of this Loader object that was loaded by using the
+ * load()
method. The property
of the associated
+ * LoaderInfo object is reset to null
. The child is not
+ * necessarily destroyed because other objects might have references to it;
+ * however, it is no longer a child of the Loader object.
+ *
+ * As a best practice, before you unload a child SWF file, you should
+ * explicitly close any streams in the child SWF file's objects, such as
+ * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,
+ * audio in the child SWF file might continue to play, even though the child
+ * SWF file was unloaded. To close streams in the child SWF file, add an
+ * event listener to the child that listens for the unload
+ * event. When the parent calls Loader.unload()
, the
+ * unload
event is dispatched to the child. The following code
+ * shows how you might do this:
public closeAllStreams(evt:Event) { + * myNetStream.close(); mySound.close(); myNetConnection.close(); + * myLocalConnection.close(); } + * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD, + * closeAllStreams);+ * + */ + Loader.prototype.unload = function () { + //TODO + }; + + /** + * Enables a specific parser. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClass The parser class to enable. + * @see away.parsers.Parsers + */ + Loader.enableParser = function (parserClass) { + AssetLoader.enableParser(parserClass); + }; + + /** + * Enables a list of parsers. + * When no specific parser is set for a loading/parsing opperation, + * loader3d can autoselect the correct parser to use. + * A parser must have been enabled, to be considered when autoselecting the parser. + * + * @param parserClasses A Vector of parser classes to enable. + * @see away.parsers.Parsers + */ + Loader.enableParsers = function (parserClasses) { + AssetLoader.enableParsers(parserClasses); + }; + + Loader.prototype.removeListeners = function (dispatcher) { + dispatcher.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate); + dispatcher.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate); + }; + + Loader.prototype.onAssetComplete = function (event) { + this.dispatchEvent(event); + }; + + /** + * Called when an error occurs during loading + */ + Loader.prototype.onLoadError = function (event) { + if (this.hasEventListener(IOErrorEvent.IO_ERROR)) { + this.dispatchEvent(event); + return true; + } else { + return false; + } + }; + + /** + * Called when a an error occurs during parsing + */ + Loader.prototype.onParseError = function (event) { + if (this.hasEventListener(ParserEvent.PARSE_ERROR)) { + this.dispatchEvent(event); + return true; + } else { + return false; + } + }; + + /** + * Called when the resource and all of its dependencies was retrieved. + */ + Loader.prototype.onResourceComplete = function (event) { + var content = event.content; + + this._content = content; + + if (content) + this.addChild(content); + + this.dispatchEvent(event); + }; + return Loader; +})(DisplayObjectContainer); + +module.exports = Loader; + + +},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/library/AssetLibraryBundle":undefined,"awayjs-core/lib/core/library/AssetLoader":undefined,"awayjs-core/lib/events/AssetEvent":undefined,"awayjs-core/lib/events/IOErrorEvent":undefined,"awayjs-core/lib/events/LoaderEvent":undefined,"awayjs-core/lib/events/ParserEvent":undefined}],"awayjs-core/lib/containers/Scene":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer"); + +var NodeBase = require("awayjs-core/lib/core/partition/NodeBase"); +var Partition = require("awayjs-core/lib/core/partition/Partition"); + +var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); +var SceneEvent = require("awayjs-core/lib/events/SceneEvent"); + +var Scene = (function (_super) { + __extends(Scene, _super); + function Scene() { + _super.call(this); + this._expandedPartitions = new Array(); + this._partitions = new Array(); + this._iCollectionMark = 0; + + this._iSceneGraphRoot = new DisplayObjectContainer(); + + this._iSceneGraphRoot._iSetScene(this); + this._iSceneGraphRoot._iIsRoot = true; + this._iSceneGraphRoot.partition = new Partition(new NodeBase()); + } + Scene.prototype.traversePartitions = function (traverser) { + var i = 0; + var len = this._partitions.length; + + traverser.scene = this; + + while (i < len) { + this._iCollectionMark++; + this._partitions[i++].traverse(traverser); + } + }; + + Object.defineProperty(Scene.prototype, "partition", { + get: function () { + return this._iSceneGraphRoot.partition; + }, + set: function (value) { + this._iSceneGraphRoot.partition = value; + + this.dispatchEvent(new SceneEvent(SceneEvent.PARTITION_CHANGED, this._iSceneGraphRoot)); + }, + enumerable: true, + configurable: true + }); + + + Scene.prototype.contains = function (child) { + return this._iSceneGraphRoot.contains(child); + }; + + Scene.prototype.addChild = function (child) { + return this._iSceneGraphRoot.addChild(child); + }; + + Scene.prototype.removeChild = function (child) { + this._iSceneGraphRoot.removeChild(child); + }; + + Scene.prototype.removeChildAt = function (index) { + this._iSceneGraphRoot.removeChildAt(index); + }; + + Scene.prototype.getChildAt = function (index) { + return this._iSceneGraphRoot.getChildAt(index); + }; + + Object.defineProperty(Scene.prototype, "numChildren", { + get: function () { + return this._iSceneGraphRoot.numChildren; + }, + enumerable: true, + configurable: true + }); + + /** + * @internal + */ + Scene.prototype.iRegisterEntity = function (displayObject) { + if (displayObject.partition) + this.iRegisterPartition(displayObject.partition); + + if (displayObject.isEntity) + displayObject._iAssignedPartition.iMarkForUpdate(displayObject); + }; + + /** + * @internal + */ + Scene.prototype.iRegisterPartition = function (partition) { + this._expandedPartitions.push(partition); + + //ensure duplicates are not found in partitions array + if (this._partitions.indexOf(partition) == -1) + this._partitions.push(partition); + }; + + /** + * @internal + */ + Scene.prototype.iUnregisterEntity = function (displayObject) { + if (displayObject.partition) + this.iUnregisterPartition(displayObject.partition); + + if (displayObject.isEntity) + displayObject._iAssignedPartition.iRemoveEntity(displayObject); + }; + + /** + * @internal + */ + Scene.prototype.iUnregisterPartition = function (partition) { + this._expandedPartitions.splice(this._expandedPartitions.indexOf(partition), 1); + + //if no more partition references found, remove from partitions array + if (this._expandedPartitions.indexOf(partition) == -1) + this._partitions.splice(this._partitions.indexOf(partition), 1); + }; + return Scene; +})(EventDispatcher); + +module.exports = Scene; + + +},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/partition/NodeBase":undefined,"awayjs-core/lib/core/partition/Partition":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/SceneEvent":undefined}],"awayjs-core/lib/containers/View":[function(require,module,exports){ +var Scene = require("awayjs-core/lib/containers/Scene"); + +var RaycastPicker = require("awayjs-core/lib/core/pick/RaycastPicker"); + +var Camera = require("awayjs-core/lib/entities/Camera"); +var CameraEvent = require("awayjs-core/lib/events/CameraEvent"); +var SceneEvent = require("awayjs-core/lib/events/SceneEvent"); +var RendererEvent = require("awayjs-core/lib/events/RendererEvent"); +var MouseManager = require("awayjs-core/lib/managers/MouseManager"); +var getTimer = require("awayjs-core/lib/utils/getTimer"); + +var View = (function () { + /* + *********************************************************************** + * Disabled / Not yet implemented + *********************************************************************** + * + * private _background:away.textures.Texture2DBase; + * + * public _pTouch3DManager:away.managers.Touch3DManager; + * + */ + function View(renderer, scene, camera) { + if (typeof scene === "undefined") { scene = null; } + if (typeof camera === "undefined") { camera = null; } + var _this = this; + this._width = 0; + this._height = 0; + this._time = 0; + this._deltaTime = 0; + this._backgroundColor = 0x000000; + this._backgroundAlpha = 1; + this._viewportDirty = true; + this._scissorDirty = true; + this._mousePicker = new RaycastPicker(); + this._onScenePartitionChangedDelegate = function (event) { + return _this.onScenePartitionChanged(event); + }; + this._onProjectionChangedDelegate = function (event) { + return _this.onProjectionChanged(event); + }; + this._onViewportUpdatedDelegate = function (event) { + return _this.onViewportUpdated(event); + }; + this._onScissorUpdatedDelegate = function (event) { + return _this.onScissorUpdated(event); + }; + + this.scene = scene || new Scene(); + this.camera = camera || new Camera(); + this.renderer = renderer; + + //make sure document border is zero + document.body.style.margin = "0px"; + + this._htmlElement = document.createElement("div"); + this._htmlElement.style.position = "absolute"; + + document.body.appendChild(this._htmlElement); + + this._mouseManager = MouseManager.getInstance(); + this._mouseManager.registerView(this); + // if (this._shareContext) + // this._mouse3DManager.addViewLayer(this); + } + /** + * + * @param e + */ + View.prototype.onScenePartitionChanged = function (event) { + if (this._pCamera) + this._pCamera.partition = this.scene.partition; + }; + + Object.defineProperty(View.prototype, "mouseX", { + get: function () { + return this._pMouseX; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(View.prototype, "mouseY", { + get: function () { + return this._pMouseY; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(View.prototype, "htmlElement", { + /** + * + */ + get: function () { + return this._htmlElement; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(View.prototype, "renderer", { + /** + * + */ + get: function () { + return this._pRenderer; + }, + set: function (value) { + if (this._pRenderer == value) + return; + + if (this._pRenderer) { + this._pRenderer.dispose(); + this._pRenderer.removeEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate); + this._pRenderer.removeEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate); + } + + this._pRenderer = value; + + this._pRenderer.addEventListener(RendererEvent.VIEWPORT_UPDATED, this._onViewportUpdatedDelegate); + this._pRenderer.addEventListener(RendererEvent.SCISSOR_UPDATED, this._onScissorUpdatedDelegate); + + //reset entity collector + this._pEntityCollector = this._pRenderer._iCreateEntityCollector(); + + if (this._pCamera) + this._pEntityCollector.camera = this._pCamera; + + //reset back buffer + this._pRenderer._iBackgroundR = ((this._backgroundColor >> 16) & 0xff) / 0xff; + this._pRenderer._iBackgroundG = ((this._backgroundColor >> 8) & 0xff) / 0xff; + this._pRenderer._iBackgroundB = (this._backgroundColor & 0xff) / 0xff; + this._pRenderer._iBackgroundAlpha = this._backgroundAlpha; + this._pRenderer.width = this._width; + this._pRenderer.height = this._height; + this._pRenderer.shareContext = this._shareContext; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "shareContext", { + /** + * + */ + get: function () { + return this._shareContext; + }, + set: function (value) { + if (this._shareContext == value) + return; + + this._shareContext = value; + + if (this._pRenderer) + this._pRenderer.shareContext = this._shareContext; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "backgroundColor", { + /** + * + */ + get: function () { + return this._backgroundColor; + }, + set: function (value) { + if (this._backgroundColor == value) + return; + + this._backgroundColor = value; + + this._pRenderer._iBackgroundR = ((value >> 16) & 0xff) / 0xff; + this._pRenderer._iBackgroundG = ((value >> 8) & 0xff) / 0xff; + this._pRenderer._iBackgroundB = (value & 0xff) / 0xff; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "backgroundAlpha", { + /** + * + * @returns {number} + */ + get: function () { + return this._backgroundAlpha; + }, + /** + * + * @param value + */ + set: function (value) { + if (value > 1) + value = 1; + else if (value < 0) + value = 0; + + if (this._backgroundAlpha == value) + return; + + this._pRenderer._iBackgroundAlpha = this._backgroundAlpha = value; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "camera", { + /** + * + * @returns {Camera3D} + */ + get: function () { + return this._pCamera; + }, + /** + * Set camera that's used to render the scene for this viewport + */ + set: function (value) { + if (this._pCamera == value) + return; + + if (this._pCamera) + this._pCamera.removeEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate); + + this._pCamera = value; + + if (this._pEntityCollector) + this._pEntityCollector.camera = this._pCamera; + + if (this._pScene) + this._pCamera.partition = this._pScene.partition; + + this._pCamera.addEventListener(CameraEvent.PROJECTION_CHANGED, this._onProjectionChangedDelegate); + this._scissorDirty = true; + this._viewportDirty = true; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "scene", { + /** + * + * @returns {away.containers.Scene3D} + */ + get: function () { + return this._pScene; + }, + /** + * Set the scene that's used to render for this viewport + */ + set: function (value) { + if (this._pScene == value) + return; + + if (this._pScene) + this._pScene.removeEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate); + + this._pScene = value; + + this._pScene.addEventListener(SceneEvent.PARTITION_CHANGED, this._onScenePartitionChangedDelegate); + + if (this._pCamera) + this._pCamera.partition = this._pScene.partition; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "deltaTime", { + /** + * + * @returns {number} + */ + get: function () { + return this._deltaTime; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(View.prototype, "width", { + /** + * + */ + get: function () { + return this._width; + }, + set: function (value) { + if (this._width == value) + return; + + this._width = value; + this._aspectRatio = this._width / this._height; + this._pCamera.projection._iAspectRatio = this._aspectRatio; + this._pRenderer.width = value; + this._htmlElement.style.width = value + "px"; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "height", { + /** + * + */ + get: function () { + return this._height; + }, + set: function (value) { + if (this._height == value) + return; + + this._height = value; + this._aspectRatio = this._width / this._height; + this._pCamera.projection._iAspectRatio = this._aspectRatio; + this._pRenderer.height = value; + this._htmlElement.style.height = value + "px"; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "mousePicker", { + /** + * + */ + get: function () { + return this._mousePicker; + }, + set: function (value) { + if (this._mousePicker == value) + return; + + if (value == null) + this._mousePicker = new RaycastPicker(); + else + this._mousePicker = value; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "x", { + /** + * + */ + get: function () { + return this._pRenderer.x; + }, + set: function (value) { + if (this._pRenderer.x == value) + return; + + this._pRenderer.x == value; + this._htmlElement.style.left = value + "px"; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "y", { + /** + * + */ + get: function () { + return this._pRenderer.y; + }, + set: function (value) { + if (this._pRenderer.y == value) + return; + + this._pRenderer.y == value; + this._htmlElement.style.top = value + "px"; + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "visible", { + /** + * + */ + get: function () { + return (this._htmlElement.style.visibility == "visible"); + }, + set: function (value) { + this._htmlElement.style.visibility = value ? "visible" : "hidden"; + //TODO transfer visible property to associated context (if one exists) + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(View.prototype, "renderedFacesCount", { + /** + * + * @returns {number} + */ + get: function () { + return 0; + //return this._pEntityCollector._pNumTriangles;//numTriangles; + }, + enumerable: true, + configurable: true + }); + + /** + * Renders the view. + */ + View.prototype.render = function () { + this.pUpdateTime(); + + //update view and size data + this._pCamera.projection._iAspectRatio = this._aspectRatio; + + if (this._scissorDirty) { + this._scissorDirty = false; + this._pCamera.projection._iUpdateScissorRect(this._pRenderer.scissorRect.x, this._pRenderer.scissorRect.y, this._pRenderer.scissorRect.width, this._pRenderer.scissorRect.height); + } + + if (this._viewportDirty) { + this._viewportDirty = false; + this._pCamera.projection._iUpdateViewport(this._pRenderer.viewPort.x, this._pRenderer.viewPort.y, this._pRenderer.viewPort.width, this._pRenderer.viewPort.height); + } + + // update picking + if (!this._shareContext) { + if (this.forceMouseMove && this._htmlElement == this._mouseManager._iActiveDiv && !this._mouseManager._iUpdateDirty) + this._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this); + + this._mouseManager.fireMouseEvents(this.forceMouseMove); + //_touch3DManager.fireTouchEvents(); + } + + //_touch3DManager.updateCollider(); + //clear entity collector ready for collection + this._pEntityCollector.clear(); + + // collect stuff to render + this._pScene.traversePartitions(this._pEntityCollector); + + //render the contents of the entity collector + this._pRenderer.render(this._pEntityCollector); + }; + + /** + * + */ + View.prototype.pUpdateTime = function () { + var time = getTimer(); + + if (this._time == 0) + this._time = time; + + this._deltaTime = time - this._time; + this._time = time; + }; + + /** + * + */ + View.prototype.dispose = function () { + this._pRenderer.dispose(); + + // TODO: imeplement mouseManager / touch3DManager + this._mouseManager.unregisterView(this); + + //this._touch3DManager.disableTouchListeners(this); + //this._touch3DManager.dispose(); + this._mouseManager = null; + + //this._touch3DManager = null; + this._pRenderer = null; + this._pEntityCollector = null; + }; + + Object.defineProperty(View.prototype, "iEntityCollector", { + /** + * + */ + get: function () { + return this._pEntityCollector; + }, + enumerable: true, + configurable: true + }); + + /** + * + */ + View.prototype.onProjectionChanged = function (event) { + this._scissorDirty = true; + this._viewportDirty = true; + }; + + /** + * + */ + View.prototype.onViewportUpdated = function (event) { + this._viewportDirty = true; + }; + + /** + * + */ + View.prototype.onScissorUpdated = function (event) { + this._scissorDirty = true; + }; + + View.prototype.project = function (point3d) { + var v = this._pCamera.project(point3d); + v.x = v.x * this._pRenderer.viewPort.width / 2 + this._width * this._pCamera.projection.originX; + v.y = v.y * this._pRenderer.viewPort.height / 2 + this._height * this._pCamera.projection.originY; + + return v; + }; + + View.prototype.unproject = function (sX, sY, sZ) { + return this._pCamera.unproject(2 * (sX - this._width * this._pCamera.projection.originX) / this._pRenderer.viewPort.width, 2 * (sY - this._height * this._pCamera.projection.originY) / this._pRenderer.viewPort.height, sZ); + }; + + View.prototype.getRay = function (sX, sY, sZ) { + return this._pCamera.getRay((sX * 2 - this._width) / this._width, (sY * 2 - this._height) / this._height, sZ); + }; + + /*TODO: implement Background + public get background():away.textures.Texture2DBase + { + return this._background; + } + */ + /*TODO: implement Background + public set background( value:away.textures.Texture2DBase ) + { + this._background = value; + this._renderer.background = _background; + } + */ + // TODO: required dependency stageGL + View.prototype.updateCollider = function () { + if (!this._shareContext) { + if (this._htmlElement == this._mouseManager._iActiveDiv) + this._mouseManager._iCollidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this); + } else { + var collidingObject = this.mousePicker.getViewCollision(this._pMouseX, this._pMouseY, this); + + if (this.layeredView || this._mouseManager._iCollidingObject == null || collidingObject.rayEntryDistance < this._mouseManager._iCollidingObject.rayEntryDistance) + this._mouseManager._iCollidingObject = collidingObject; + } + }; + return View; +})(); + +module.exports = View; + + +},{"awayjs-core/lib/containers/Scene":undefined,"awayjs-core/lib/core/pick/RaycastPicker":undefined,"awayjs-core/lib/entities/Camera":undefined,"awayjs-core/lib/events/CameraEvent":undefined,"awayjs-core/lib/events/RendererEvent":undefined,"awayjs-core/lib/events/SceneEvent":undefined,"awayjs-core/lib/managers/MouseManager":undefined,"awayjs-core/lib/utils/getTimer":undefined}],"awayjs-core/lib/controllers/ControllerBase":[function(require,module,exports){ +var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError"); + +var ControllerBase = (function () { + function ControllerBase(targetObject) { + if (typeof targetObject === "undefined") { targetObject = null; } + this._pAutoUpdate = true; + this.targetObject = targetObject; + } + ControllerBase.prototype.pNotifyUpdate = function () { + if (this._pTargetObject && this._pTargetObject._iAssignedPartition && this._pAutoUpdate) { + this._pTargetObject._iAssignedPartition.iMarkForUpdate(this._pTargetObject); + } + }; + + Object.defineProperty(ControllerBase.prototype, "targetObject", { + get: function () { + return this._pTargetObject; + }, + set: function (val) { + if (this._pTargetObject == val) { + return; + } + + if (this._pTargetObject && this._pAutoUpdate) { + this._pTargetObject._iController = null; + } + this._pTargetObject = val; + + if (this._pTargetObject && this._pAutoUpdate) { + this._pTargetObject._iController = this; + } + this.pNotifyUpdate(); + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(ControllerBase.prototype, "autoUpdate", { + get: function () { + return this._pAutoUpdate; + }, + set: function (val) { + if (this._pAutoUpdate == val) { + return; + } + this._pAutoUpdate = val; + + if (this._pTargetObject) { + if (this._pTargetObject) { + this._pTargetObject._iController = this; + } else { + this._pTargetObject._iController = null; + } + } + }, + enumerable: true, + configurable: true + }); + + + ControllerBase.prototype.update = function (interpolate) { + if (typeof interpolate === "undefined") { interpolate = true; } + throw new AbstractMethodError(); + }; + return ControllerBase; +})(); + +module.exports = ControllerBase; + + +},{"awayjs-core/lib/errors/AbstractMethodError":undefined}],"awayjs-core/lib/controllers/FirstPersonController":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var ControllerBase = require("awayjs-core/lib/controllers/ControllerBase"); + +var MathConsts = require("awayjs-core/lib/core/geom/MathConsts"); + +/** +* Extended camera used to hover round a specified target object. +* +* @see away3d.containers.View3D +*/ +var FirstPersonController = (function (_super) { + __extends(FirstPersonController, _super); + /** + * Creates a new
HoverController
object.
+ */
+ function FirstPersonController(targetObject, panAngle, tiltAngle, minTiltAngle, maxTiltAngle, steps, wrapPanAngle) {
+ if (typeof targetObject === "undefined") { targetObject = null; }
+ if (typeof panAngle === "undefined") { panAngle = 0; }
+ if (typeof tiltAngle === "undefined") { tiltAngle = 90; }
+ if (typeof minTiltAngle === "undefined") { minTiltAngle = -90; }
+ if (typeof maxTiltAngle === "undefined") { maxTiltAngle = 90; }
+ if (typeof steps === "undefined") { steps = 8; }
+ if (typeof wrapPanAngle === "undefined") { wrapPanAngle = false; }
+ _super.call(this, targetObject);
+ this._iCurrentPanAngle = 0;
+ this._iCurrentTiltAngle = 90;
+ this._panAngle = 0;
+ this._tiltAngle = 90;
+ this._minTiltAngle = -90;
+ this._maxTiltAngle = 90;
+ this._steps = 8;
+ this._walkIncrement = 0;
+ this._strafeIncrement = 0;
+ this._wrapPanAngle = false;
+ this.fly = false;
+
+ this.panAngle = panAngle;
+ this.tiltAngle = tiltAngle;
+ this.minTiltAngle = minTiltAngle;
+ this.maxTiltAngle = maxTiltAngle;
+ this.steps = steps;
+ this.wrapPanAngle = wrapPanAngle;
+
+ //values passed in contrustor are applied immediately
+ this._iCurrentPanAngle = this._panAngle;
+ this._iCurrentTiltAngle = this._tiltAngle;
+ }
+ Object.defineProperty(FirstPersonController.prototype, "steps", {
+ /**
+ * Fractional step taken each time the hover()
method is called. Defaults to 8.
+ *
+ * Affects the speed at which the tiltAngle
and panAngle
resolve to their targets.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ */
+ get: function () {
+ return this._steps;
+ },
+ set: function (val) {
+ val = (val < 1) ? 1 : val;
+
+ if (this._steps == val)
+ return;
+
+ this._steps = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(FirstPersonController.prototype, "panAngle", {
+ /**
+ * Rotation of the camera in degrees around the y axis. Defaults to 0.
+ */
+ get: function () {
+ return this._panAngle;
+ },
+ set: function (val) {
+ if (this._panAngle == val)
+ return;
+
+ this._panAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(FirstPersonController.prototype, "tiltAngle", {
+ /**
+ * Elevation angle of the camera in degrees. Defaults to 90.
+ */
+ get: function () {
+ return this._tiltAngle;
+ },
+ set: function (val) {
+ val = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));
+
+ if (this._tiltAngle == val)
+ return;
+
+ this._tiltAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(FirstPersonController.prototype, "minTiltAngle", {
+ /**
+ * Minimum bounds for the tiltAngle
. Defaults to -90.
+ *
+ * @see #tiltAngle
+ */
+ get: function () {
+ return this._minTiltAngle;
+ },
+ set: function (val) {
+ if (this._minTiltAngle == val)
+ return;
+
+ this._minTiltAngle = val;
+
+ this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(FirstPersonController.prototype, "maxTiltAngle", {
+ /**
+ * Maximum bounds for the tiltAngle
. Defaults to 90.
+ *
+ * @see #tiltAngle
+ */
+ get: function () {
+ return this._maxTiltAngle;
+ },
+ set: function (val) {
+ if (this._maxTiltAngle == val)
+ return;
+
+ this._maxTiltAngle = val;
+
+ this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(FirstPersonController.prototype, "wrapPanAngle", {
+ /**
+ * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.
+ */
+ get: function () {
+ return this._wrapPanAngle;
+ },
+ set: function (val) {
+ if (this._wrapPanAngle == val)
+ return;
+
+ this._wrapPanAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Updates the current tilt angle and pan angle values.
+ *
+ * Values are calculated using the defined tiltAngle
, panAngle
and steps
variables.
+ *
+ * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ * @see #steps
+ */
+ FirstPersonController.prototype.update = function (interpolate) {
+ if (typeof interpolate === "undefined") { interpolate = true; }
+ if (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {
+ this.pNotifyUpdate();
+
+ if (this._wrapPanAngle) {
+ if (this._panAngle < 0) {
+ this._iCurrentPanAngle += this._panAngle % 360 + 360 - this._panAngle;
+ this._panAngle = this._panAngle % 360 + 360;
+ } else {
+ this._iCurrentPanAngle += this._panAngle % 360 - this._panAngle;
+ this._panAngle = this._panAngle % 360;
+ }
+
+ while (this._panAngle - this._iCurrentPanAngle < -180)
+ this._iCurrentPanAngle -= 360;
+
+ while (this._panAngle - this._iCurrentPanAngle > 180)
+ this._iCurrentPanAngle += 360;
+ }
+
+ if (interpolate) {
+ this._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle) / (this.steps + 1);
+ this._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle) / (this.steps + 1);
+ } else {
+ this._iCurrentTiltAngle = this._tiltAngle;
+ this._iCurrentPanAngle = this._panAngle;
+ }
+
+ //snap coords if angle differences are close
+ if ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {
+ this._iCurrentTiltAngle = this._tiltAngle;
+ this._iCurrentPanAngle = this._panAngle;
+ }
+ }
+
+ this.targetObject.rotationX = this._iCurrentTiltAngle;
+ this.targetObject.rotationY = this._iCurrentPanAngle;
+
+ if (this._walkIncrement) {
+ if (this.fly) {
+ this.targetObject.transform.moveForward(this._walkIncrement);
+ } else {
+ this.targetObject.x += this._walkIncrement * Math.sin(this._panAngle * MathConsts.DEGREES_TO_RADIANS);
+ this.targetObject.z += this._walkIncrement * Math.cos(this._panAngle * MathConsts.DEGREES_TO_RADIANS);
+ }
+ this._walkIncrement = 0;
+ }
+
+ if (this._strafeIncrement) {
+ this.targetObject.transform.moveRight(this._strafeIncrement);
+ this._strafeIncrement = 0;
+ }
+ };
+
+ FirstPersonController.prototype.incrementWalk = function (val) {
+ if (val == 0)
+ return;
+
+ this._walkIncrement += val;
+
+ this.pNotifyUpdate();
+ };
+
+ FirstPersonController.prototype.incrementStrafe = function (val) {
+ if (val == 0)
+ return;
+
+ this._strafeIncrement += val;
+
+ this.pNotifyUpdate();
+ };
+ return FirstPersonController;
+})(ControllerBase);
+
+module.exports = FirstPersonController;
+
+
+},{"awayjs-core/lib/controllers/ControllerBase":undefined,"awayjs-core/lib/core/geom/MathConsts":undefined}],"awayjs-core/lib/controllers/FollowController":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var HoverController = require("awayjs-core/lib/controllers/HoverController");
+
+/**
+* Controller used to follow behind an object on the XZ plane, with an optional
+* elevation (tiltAngle).
+*
+* @see away3d.containers.View3D
+*/
+var FollowController = (function (_super) {
+ __extends(FollowController, _super);
+ function FollowController(targetObject, lookAtObject, tiltAngle, distance) {
+ if (typeof targetObject === "undefined") { targetObject = null; }
+ if (typeof lookAtObject === "undefined") { lookAtObject = null; }
+ if (typeof tiltAngle === "undefined") { tiltAngle = 45; }
+ if (typeof distance === "undefined") { distance = 700; }
+ _super.call(this, targetObject, lookAtObject, 0, tiltAngle, distance);
+ }
+ FollowController.prototype.update = function (interpolate) {
+ if (typeof interpolate === "undefined") { interpolate = true; }
+ interpolate = interpolate; // unused: prevents warning
+
+ if (!this.lookAtObject)
+ return;
+
+ this.panAngle = this._pLookAtObject.rotationY - 180;
+ _super.prototype.update.call(this);
+ };
+ return FollowController;
+})(HoverController);
+
+module.exports = FollowController;
+
+
+},{"awayjs-core/lib/controllers/HoverController":undefined}],"awayjs-core/lib/controllers/HoverController":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var LookAtController = require("awayjs-core/lib/controllers/LookAtController");
+
+var MathConsts = require("awayjs-core/lib/core/geom/MathConsts");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+/**
+* Extended camera used to hover round a specified target object.
+*
+* @see away.containers.View
+*/
+var HoverController = (function (_super) {
+ __extends(HoverController, _super);
+ /**
+ * Creates a new HoverController
object.
+ */
+ function HoverController(targetObject, lookAtObject, panAngle, tiltAngle, distance, minTiltAngle, maxTiltAngle, minPanAngle, maxPanAngle, steps, yFactor, wrapPanAngle) {
+ if (typeof targetObject === "undefined") { targetObject = null; }
+ if (typeof lookAtObject === "undefined") { lookAtObject = null; }
+ if (typeof panAngle === "undefined") { panAngle = 0; }
+ if (typeof tiltAngle === "undefined") { tiltAngle = 90; }
+ if (typeof distance === "undefined") { distance = 1000; }
+ if (typeof minTiltAngle === "undefined") { minTiltAngle = -90; }
+ if (typeof maxTiltAngle === "undefined") { maxTiltAngle = 90; }
+ if (typeof minPanAngle === "undefined") { minPanAngle = null; }
+ if (typeof maxPanAngle === "undefined") { maxPanAngle = null; }
+ if (typeof steps === "undefined") { steps = 8; }
+ if (typeof yFactor === "undefined") { yFactor = 2; }
+ if (typeof wrapPanAngle === "undefined") { wrapPanAngle = false; }
+ _super.call(this, targetObject, lookAtObject);
+ this._iCurrentPanAngle = 0;
+ this._iCurrentTiltAngle = 90;
+ this._panAngle = 0;
+ this._tiltAngle = 90;
+ this._distance = 1000;
+ this._minPanAngle = -Infinity;
+ this._maxPanAngle = Infinity;
+ this._minTiltAngle = -90;
+ this._maxTiltAngle = 90;
+ this._steps = 8;
+ this._yFactor = 2;
+ this._wrapPanAngle = false;
+ this._upAxis = new Vector3D();
+
+ this.distance = distance;
+ this.panAngle = panAngle;
+ this.tiltAngle = tiltAngle;
+ this.minPanAngle = (minPanAngle != null) ? minPanAngle : -Infinity;
+ this.maxPanAngle = (maxPanAngle != null) ? maxPanAngle : Infinity;
+ this.minTiltAngle = minTiltAngle;
+ this.maxTiltAngle = maxTiltAngle;
+ this.steps = steps;
+ this.yFactor = yFactor;
+ this.wrapPanAngle = wrapPanAngle;
+
+ //values passed in contrustor are applied immediately
+ this._iCurrentPanAngle = this._panAngle;
+ this._iCurrentTiltAngle = this._tiltAngle;
+ }
+ Object.defineProperty(HoverController.prototype, "steps", {
+ /**
+ * Fractional step taken each time the hover()
method is called. Defaults to 8.
+ *
+ * Affects the speed at which the tiltAngle
and panAngle
resolve to their targets.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ */
+ get: function () {
+ return this._steps;
+ },
+ set: function (val) {
+ val = (val < 1) ? 1 : val;
+
+ if (this._steps == val)
+ return;
+
+ this._steps = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "panAngle", {
+ /**
+ * Rotation of the camera in degrees around the y axis. Defaults to 0.
+ */
+ get: function () {
+ return this._panAngle;
+ },
+ set: function (val) {
+ val = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, val));
+
+ if (this._panAngle == val)
+ return;
+
+ this._panAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "tiltAngle", {
+ /**
+ * Elevation angle of the camera in degrees. Defaults to 90.
+ */
+ get: function () {
+ return this._tiltAngle;
+ },
+ set: function (val) {
+ val = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, val));
+
+ if (this._tiltAngle == val)
+ return;
+
+ this._tiltAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "distance", {
+ /**
+ * Distance between the camera and the specified target. Defaults to 1000.
+ */
+ get: function () {
+ return this._distance;
+ },
+ set: function (val) {
+ if (this._distance == val)
+ return;
+
+ this._distance = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "minPanAngle", {
+ /**
+ * Minimum bounds for the panAngle
. Defaults to -Infinity.
+ *
+ * @see #panAngle
+ */
+ get: function () {
+ return this._minPanAngle;
+ },
+ set: function (val) {
+ if (this._minPanAngle == val)
+ return;
+
+ this._minPanAngle = val;
+
+ this.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "maxPanAngle", {
+ /**
+ * Maximum bounds for the panAngle
. Defaults to Infinity.
+ *
+ * @see #panAngle
+ */
+ get: function () {
+ return this._maxPanAngle;
+ },
+ set: function (val) {
+ if (this._maxPanAngle == val)
+ return;
+
+ this._maxPanAngle = val;
+
+ this.panAngle = Math.max(this._minPanAngle, Math.min(this._maxPanAngle, this._panAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "minTiltAngle", {
+ /**
+ * Minimum bounds for the tiltAngle
. Defaults to -90.
+ *
+ * @see #tiltAngle
+ */
+ get: function () {
+ return this._minTiltAngle;
+ },
+ set: function (val) {
+ if (this._minTiltAngle == val)
+ return;
+
+ this._minTiltAngle = val;
+
+ this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "maxTiltAngle", {
+ /**
+ * Maximum bounds for the tiltAngle
. Defaults to 90.
+ *
+ * @see #tiltAngle
+ */
+ get: function () {
+ return this._maxTiltAngle;
+ },
+ set: function (val) {
+ if (this._maxTiltAngle == val)
+ return;
+
+ this._maxTiltAngle = val;
+
+ this.tiltAngle = Math.max(this._minTiltAngle, Math.min(this._maxTiltAngle, this._tiltAngle));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "yFactor", {
+ /**
+ * Fractional difference in distance between the horizontal camera orientation and vertical camera orientation. Defaults to 2.
+ *
+ * @see #distance
+ */
+ get: function () {
+ return this._yFactor;
+ },
+ set: function (val) {
+ if (this._yFactor == val)
+ return;
+
+ this._yFactor = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(HoverController.prototype, "wrapPanAngle", {
+ /**
+ * Defines whether the value of the pan angle wraps when over 360 degrees or under 0 degrees. Defaults to false.
+ */
+ get: function () {
+ return this._wrapPanAngle;
+ },
+ set: function (val) {
+ if (this._wrapPanAngle == val)
+ return;
+
+ this._wrapPanAngle = val;
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Updates the current tilt angle and pan angle values.
+ *
+ * Values are calculated using the defined tiltAngle
, panAngle
and steps
variables.
+ *
+ * @param interpolate If the update to a target pan- or tiltAngle is interpolated. Default is true.
+ *
+ * @see #tiltAngle
+ * @see #panAngle
+ * @see #steps
+ */
+ HoverController.prototype.update = function (interpolate) {
+ if (typeof interpolate === "undefined") { interpolate = true; }
+ if (this._tiltAngle != this._iCurrentTiltAngle || this._panAngle != this._iCurrentPanAngle) {
+ this.pNotifyUpdate();
+
+ if (this._wrapPanAngle) {
+ if (this._panAngle < 0) {
+ this._iCurrentPanAngle += this._panAngle % 360 + 360 - this._panAngle;
+ this._panAngle = this._panAngle % 360 + 360;
+ } else {
+ this._iCurrentPanAngle += this._panAngle % 360 - this._panAngle;
+ this._panAngle = this._panAngle % 360;
+ }
+
+ while (this._panAngle - this._iCurrentPanAngle < -180)
+ this._iCurrentPanAngle -= 360;
+
+ while (this._panAngle - this._iCurrentPanAngle > 180)
+ this._iCurrentPanAngle += 360;
+ }
+
+ if (interpolate) {
+ this._iCurrentTiltAngle += (this._tiltAngle - this._iCurrentTiltAngle) / (this.steps + 1);
+ this._iCurrentPanAngle += (this._panAngle - this._iCurrentPanAngle) / (this.steps + 1);
+ } else {
+ this._iCurrentPanAngle = this._panAngle;
+ this._iCurrentTiltAngle = this._tiltAngle;
+ }
+
+ //snap coords if angle differences are close
+ if ((Math.abs(this.tiltAngle - this._iCurrentTiltAngle) < 0.01) && (Math.abs(this._panAngle - this._iCurrentPanAngle) < 0.01)) {
+ this._iCurrentTiltAngle = this._tiltAngle;
+ this._iCurrentPanAngle = this._panAngle;
+ }
+ }
+
+ var pos = (this.lookAtObject) ? this.lookAtObject.transform.position : (this.lookAtPosition) ? this.lookAtPosition : this._pOrigin;
+ this.targetObject.x = pos.x + this.distance * Math.sin(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);
+ this.targetObject.y = pos.y + this.distance * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS) * this.yFactor;
+ this.targetObject.z = pos.z + this.distance * Math.cos(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);
+
+ this._upAxis.x = -Math.sin(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);
+ this._upAxis.y = Math.cos(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);
+ this._upAxis.z = -Math.cos(this._iCurrentPanAngle * MathConsts.DEGREES_TO_RADIANS) * Math.sin(this._iCurrentTiltAngle * MathConsts.DEGREES_TO_RADIANS);
+
+ if (this._pTargetObject) {
+ if (this._pLookAtPosition)
+ this._pTargetObject.lookAt(this._pLookAtPosition, this._upAxis);
+ else if (this._pLookAtObject)
+ this._pTargetObject.lookAt(this._pLookAtObject.scene ? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position, this._upAxis);
+ }
+ };
+ return HoverController;
+})(LookAtController);
+
+module.exports = HoverController;
+
+
+},{"awayjs-core/lib/controllers/LookAtController":undefined,"awayjs-core/lib/core/geom/MathConsts":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/controllers/LookAtController":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var ControllerBase = require("awayjs-core/lib/controllers/ControllerBase");
+
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var DisplayObjectEvent = require("awayjs-core/lib/events/DisplayObjectEvent");
+
+var LookAtController = (function (_super) {
+ __extends(LookAtController, _super);
+ function LookAtController(targetObject, lookAtObject) {
+ if (typeof targetObject === "undefined") { targetObject = null; }
+ if (typeof lookAtObject === "undefined") { lookAtObject = null; }
+ var _this = this;
+ _super.call(this, targetObject);
+ this._pOrigin = new Vector3D(0.0, 0.0, 0.0);
+
+ this._onLookAtObjectChangedDelegate = function (event) {
+ return _this.onLookAtObjectChanged(event);
+ };
+
+ if (lookAtObject)
+ this.lookAtObject = lookAtObject;
+ else
+ this.lookAtPosition = new Vector3D();
+ }
+ Object.defineProperty(LookAtController.prototype, "lookAtPosition", {
+ get: function () {
+ return this._pLookAtPosition;
+ },
+ set: function (val) {
+ if (this._pLookAtObject) {
+ this._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);
+ this._pLookAtObject = null;
+ }
+
+ this._pLookAtPosition = val;
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(LookAtController.prototype, "lookAtObject", {
+ get: function () {
+ return this._pLookAtObject;
+ },
+ set: function (val) {
+ if (this._pLookAtPosition)
+ this._pLookAtPosition = null;
+
+ if (this._pLookAtObject == val)
+ return;
+
+ if (this._pLookAtObject)
+ this._pLookAtObject.removeEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);
+
+ this._pLookAtObject = val;
+
+ if (this._pLookAtObject)
+ this._pLookAtObject.addEventListener(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this._onLookAtObjectChangedDelegate);
+
+ this.pNotifyUpdate();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ //@override
+ LookAtController.prototype.update = function (interpolate) {
+ if (typeof interpolate === "undefined") { interpolate = true; }
+ if (this._pTargetObject) {
+ if (this._pLookAtPosition)
+ this._pTargetObject.lookAt(this._pLookAtPosition);
+ else if (this._pLookAtObject)
+ this._pTargetObject.lookAt(this._pLookAtObject.scene ? this._pLookAtObject.scenePosition : this._pLookAtObject.transform.position);
+ }
+ };
+
+ LookAtController.prototype.onLookAtObjectChanged = function (event) {
+ this.pNotifyUpdate();
+ };
+ return LookAtController;
+})(ControllerBase);
+
+module.exports = LookAtController;
+
+
+},{"awayjs-core/lib/controllers/ControllerBase":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/events/DisplayObjectEvent":undefined}],"awayjs-core/lib/controllers/SpringController":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var LookAtController = require("awayjs-core/lib/controllers/LookAtController");
+
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+/**
+* Uses spring physics to animate the target object towards a position that is
+* defined as the lookAtTarget object's position plus the vector defined by the
+* positionOffset property.
+*/
+var SpringController = (function (_super) {
+ __extends(SpringController, _super);
+ function SpringController(targetObject, lookAtObject, stiffness, mass, damping) {
+ if (typeof targetObject === "undefined") { targetObject = null; }
+ if (typeof lookAtObject === "undefined") { lookAtObject = null; }
+ if (typeof stiffness === "undefined") { stiffness = 1; }
+ if (typeof mass === "undefined") { mass = 40; }
+ if (typeof damping === "undefined") { damping = 4; }
+ _super.call(this, targetObject, lookAtObject);
+ /**
+ * Offset of spring center from target in target object space, ie: Where the camera should ideally be in the target object space.
+ */
+ this.positionOffset = new Vector3D(0, 500, -1000);
+
+ this.stiffness = stiffness;
+ this.damping = damping;
+ this.mass = mass;
+
+ this._velocity = new Vector3D();
+ this._dv = new Vector3D();
+ this._stretch = new Vector3D();
+ this._force = new Vector3D();
+ this._acceleration = new Vector3D();
+ this._desiredPosition = new Vector3D();
+ }
+ SpringController.prototype.update = function (interpolate) {
+ if (typeof interpolate === "undefined") { interpolate = true; }
+ var offs;
+
+ if (!this._pLookAtObject || !this._pTargetObject)
+ return;
+
+ offs = this._pLookAtObject.transform.matrix3D.deltaTransformVector(this.positionOffset);
+ this._desiredPosition.x = this._pLookAtObject.x + offs.x;
+ this._desiredPosition.y = this._pLookAtObject.y + offs.y;
+ this._desiredPosition.z = this._pLookAtObject.z + offs.z;
+
+ this._stretch = this._pTargetObject.transform.position.add(this._desiredPosition);
+ this._stretch.scaleBy(-this.stiffness);
+
+ this._dv.copyFrom(this._velocity);
+ this._dv.scaleBy(this.damping);
+
+ this._force.x = this._stretch.x - this._dv.x;
+ this._force.y = this._stretch.y - this._dv.y;
+ this._force.z = this._stretch.z - this._dv.z;
+
+ this._acceleration.copyFrom(this._force);
+ this._acceleration.scaleBy(1 / this.mass);
+
+ this._velocity.incrementBy(this._acceleration);
+
+ this._pTargetObject.transform.position = this._pTargetObject.transform.position.add(this._velocity);
+
+ _super.prototype.update.call(this);
+ };
+ return SpringController;
+})(LookAtController);
+
+module.exports = SpringController;
+
+
+},{"awayjs-core/lib/controllers/LookAtController":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/core/base/AlignmentMode":[function(require,module,exports){
+/**
+*
+*/
+var AlignmentMode = (function () {
+ function AlignmentMode() {
+ }
+ AlignmentMode.REGISTRATION_POINT = "registrationPoint";
+
+ AlignmentMode.PIVOT_POINT = "pivot";
+ return AlignmentMode;
+})();
+
+module.exports = AlignmentMode;
+
+
+},{}],"awayjs-core/lib/core/base/BitmapDataChannel":[function(require,module,exports){
+var BitmapDataChannel = (function () {
+ function BitmapDataChannel() {
+ }
+ BitmapDataChannel.ALPHA = 8;
+ BitmapDataChannel.BLUE = 4;
+ BitmapDataChannel.GREEN = 2;
+ BitmapDataChannel.RED = 1;
+ return BitmapDataChannel;
+})();
+
+module.exports = BitmapDataChannel;
+
+
+},{}],"awayjs-core/lib/core/base/BitmapData":[function(require,module,exports){
+var Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+
+var ColorUtils = require("awayjs-core/lib/utils/ColorUtils");
+
+/**
+*
+*/
+var BitmapData = (function () {
+ /**
+ *
+ * @param width
+ * @param height
+ * @param transparent
+ * @param fillColor
+ */
+ function BitmapData(width, height, transparent, fillColor) {
+ if (typeof transparent === "undefined") { transparent = true; }
+ if (typeof fillColor === "undefined") { fillColor = null; }
+ this._alpha = 0;
+ this._locked = false;
+ this._transparent = transparent;
+ this._imageCanvas = document.createElement("canvas");
+ this._imageCanvas.width = width;
+ this._imageCanvas.height = height;
+ this._context = this._imageCanvas.getContext("2d");
+ this._rect = new Rectangle(0, 0, width, height);
+
+ if (fillColor != null) {
+ if (this._transparent) {
+ this._alpha = ColorUtils.float32ColorToARGB(fillColor)[0] / 255;
+ } else {
+ this._alpha = 1;
+ }
+
+ this.fillRect(this._rect, fillColor);
+ }
+ }
+ /**
+ *
+ */
+ BitmapData.prototype.dispose = function () {
+ this._context = null;
+ this._imageCanvas = null;
+ this._imageData = null;
+ this._rect = null;
+ this._transparent = null;
+ this._locked = null;
+ };
+
+ /**
+ *
+ */
+ BitmapData.prototype.lock = function () {
+ this._locked = true;
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ };
+
+ /**
+ *
+ */
+ BitmapData.prototype.unlock = function () {
+ this._locked = false;
+
+ if (this._imageData) {
+ this._context.putImageData(this._imageData, 0, 0); // at coords 0,0
+ this._imageData = null;
+ }
+ };
+
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ BitmapData.prototype.getPixel = function (x, y) {
+ var r;
+ var g;
+ var b;
+ var a;
+
+ if (!this._locked) {
+ var pixelData = this._context.getImageData(x, y, 1, 1);
+
+ r = pixelData.data[0];
+ g = pixelData.data[1];
+ b = pixelData.data[2];
+ a = pixelData.data[3];
+ } else {
+ var index = (x + y * this._imageCanvas.width) * 4;
+
+ if (!this._imageData)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ r = this._imageData.data[index + 0];
+ g = this._imageData.data[index + 1];
+ b = this._imageData.data[index + 2];
+ a = this._imageData.data[index + 3];
+ }
+
+ if (!this._locked) {
+ this._imageData = null;
+ }
+
+ return (a << 24) | (r << 16) | (g << 8) | b;
+ };
+
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ BitmapData.prototype.setPixel = function (x, y, color) {
+ var argb = ColorUtils.float32ColorToARGB(color);
+
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ var index = (x + y * this._imageCanvas.width) * 4;
+
+ this._imageData.data[index + 0] = argb[1];
+ this._imageData.data[index + 1] = argb[2];
+ this._imageData.data[index + 2] = argb[3];
+ this._imageData.data[index + 3] = 255;
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+ /**
+ *
+ * @param rect
+ * @param inputByteArray
+ */
+ BitmapData.prototype.setPixels = function (rect, inputByteArray) {
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ inputByteArray.position = 0;
+ var i, j, index;
+ for (i = 0; i < rect.width; ++i) {
+ for (j = 0; j < rect.height; ++j) {
+ index = (i + rect.x + (j + rect.y) * this._imageCanvas.width) * 4;
+
+ this._imageData.data[index + 0] = inputByteArray.readUnsignedInt();
+ this._imageData.data[index + 1] = inputByteArray.readUnsignedInt();
+ this._imageData.data[index + 2] = inputByteArray.readUnsignedInt();
+ this._imageData.data[index + 3] = inputByteArray.readUnsignedInt();
+ }
+ }
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+ /**
+ *
+ * @param x
+ * @param y
+ * @param color
+ */
+ BitmapData.prototype.setPixel32 = function (x, y, color) {
+ var argb = ColorUtils.float32ColorToARGB(color);
+
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ var index = (x + y * this._imageCanvas.width) * 4;
+
+ this._imageData.data[index + 0] = argb[1];
+ this._imageData.data[index + 1] = argb[2];
+ this._imageData.data[index + 2] = argb[3];
+ this._imageData.data[index + 3] = argb[0];
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+ BitmapData.prototype.setVector = function (rect, inputVector) {
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ var i, j, index, argb;
+ for (i = 0; i < rect.width; ++i) {
+ for (j = 0; j < rect.height; ++j) {
+ argb = ColorUtils.float32ColorToARGB(inputVector[i + j * rect.width]);
+ index = (i + rect.x + (j + rect.y) * this._imageCanvas.width) * 4;
+
+ this._imageData.data[index + 0] = argb[1];
+ this._imageData.data[index + 1] = argb[2];
+ this._imageData.data[index + 2] = argb[3];
+ this._imageData.data[index + 3] = argb[0];
+ }
+ }
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+ BitmapData.prototype.drawImage = function (img, sourceRect, destRect) {
+ if (this._locked) {
+ // If canvas is locked:
+ //
+ // 1) copy image data back to canvas
+ // 2) draw object
+ // 3) read _imageData back out
+ if (this._imageData) {
+ this._context.putImageData(this._imageData, 0, 0); // at coords 0,0
+ }
+
+ this._drawImage(img, sourceRect, destRect);
+
+ if (this._imageData) {
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ }
+ } else {
+ this._drawImage(img, sourceRect, destRect);
+ }
+ };
+
+ BitmapData.prototype._drawImage = function (img, sourceRect, destRect) {
+ if (img instanceof BitmapData)
+ this._context.drawImage(img.canvas, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, destRect.x, destRect.y, destRect.width, destRect.height);
+ else if (img instanceof HTMLImageElement)
+ this._context.drawImage(img, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, destRect.x, destRect.y, destRect.width, destRect.height);
+ };
+
+ BitmapData.prototype.copyPixels = function (bmpd, sourceRect, destRect) {
+ if (this._locked) {
+ // If canvas is locked:
+ //
+ // 1) copy image data back to canvas
+ // 2) draw object
+ // 3) read _imageData back out
+ if (this._imageData) {
+ this._context.putImageData(this._imageData, 0, 0); // at coords 0,0
+ }
+
+ this._copyPixels(bmpd, sourceRect, destRect);
+
+ if (this._imageData) {
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ }
+ } else {
+ this._copyPixels(bmpd, sourceRect, destRect);
+ }
+ };
+
+ BitmapData.prototype._copyPixels = function (bmpd, sourceRect, destRect) {
+ if (bmpd instanceof BitmapData) {
+ this._context.drawImage(bmpd.canvas, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, destRect.x, destRect.y, destRect.width, destRect.height);
+ } else if (bmpd instanceof HTMLImageElement) {
+ this._context.drawImage(bmpd, sourceRect.x, sourceRect.y, sourceRect.width, sourceRect.height, destRect.x, destRect.y, destRect.width, destRect.height);
+ }
+ };
+
+ /**
+ *
+ * @param rect
+ * @param color
+ */
+ BitmapData.prototype.fillRect = function (rect, color) {
+ if (this._locked) {
+ // If canvas is locked:
+ //
+ // 1) copy image data back to canvas
+ // 2) apply fill
+ // 3) read _imageData back out
+ if (this._imageData)
+ this._context.putImageData(this._imageData, 0, 0); // at coords 0,0
+
+ this._context.fillStyle = this.hexToRGBACSS(color);
+ this._context.fillRect(rect.x, rect.y, rect.width, rect.height);
+
+ if (this._imageData)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ } else {
+ this._context.fillStyle = this.hexToRGBACSS(color);
+ this._context.fillRect(rect.x, rect.y, rect.width, rect.height);
+ }
+ };
+
+ BitmapData.prototype.draw = function (source, matrix) {
+ if (this._locked) {
+ // If canvas is locked:
+ //
+ // 1) copy image data back to canvas
+ // 2) draw object
+ // 3) read _imageData back out
+ if (this._imageData)
+ this._context.putImageData(this._imageData, 0, 0); // at coords 0,0
+
+ this._draw(source, matrix);
+
+ if (this._imageData)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ } else {
+ this._draw(source, matrix);
+ }
+ };
+
+ BitmapData.prototype._draw = function (source, matrix) {
+ if (source instanceof BitmapData) {
+ this._context.save();
+
+ if (matrix != null)
+ this._context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
+
+ this._context.drawImage(source.canvas, 0, 0);
+ this._context.restore();
+ } else if (source instanceof HTMLImageElement) {
+ this._context.save();
+
+ if (matrix != null)
+ this._context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
+
+ this._context.drawImage(source, 0, 0);
+ this._context.restore();
+ }
+ };
+
+ BitmapData.prototype.copyChannel = function (sourceBitmap, sourceRect, destPoint, sourceChannel, destChannel) {
+ var imageData = sourceBitmap.imageData;
+
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ var sourceData = sourceBitmap.imageData.data;
+ var destData = this._imageData.data;
+
+ var sourceOffset = Math.round(Math.log(sourceChannel) / Math.log(2));
+ var destOffset = Math.round(Math.log(destChannel) / Math.log(2));
+
+ var i, j, sourceIndex, destIndex;
+ for (i = 0; i < sourceRect.width; ++i) {
+ for (j = 0; j < sourceRect.height; ++j) {
+ sourceIndex = (i + sourceRect.x + (j + sourceRect.y) * sourceBitmap.width) * 4;
+ destIndex = (i + destPoint.x + (j + destPoint.y) * this.width) * 4;
+
+ destData[destIndex + destOffset] = sourceData[sourceIndex + sourceOffset];
+ }
+ }
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+ BitmapData.prototype.colorTransform = function (rect, colorTransform) {
+ if (!this._locked)
+ this._imageData = this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+
+ if (this._imageData) {
+ var data = this._imageData.data;
+
+ var i, j, index;
+ for (i = 0; i < rect.width; ++i) {
+ for (j = 0; j < rect.height; ++j) {
+ index = (i + rect.x + (j + rect.y) * this.width) * 4;
+
+ data[index] = data[index] * colorTransform.redMultiplier + colorTransform.redOffset;
+ data[index + 1] = data[index + 1] * colorTransform.greenMultiplier + colorTransform.greenOffset;
+ data[index + 2] = data[index + 2] * colorTransform.blueMultiplier + colorTransform.blueOffset;
+ data[index + 3] = data[index + 3] * colorTransform.alphaMultiplier + colorTransform.alphaOffset;
+ }
+ }
+ }
+
+ if (!this._locked) {
+ this._context.putImageData(this._imageData, 0, 0);
+ this._imageData = null;
+ }
+ };
+
+
+ Object.defineProperty(BitmapData.prototype, "imageData", {
+ /**
+ *
+ * @returns {ImageData}
+ */
+ get: function () {
+ return this._context.getImageData(0, 0, this._rect.width, this._rect.height);
+ },
+ /**
+ *
+ * @param {ImageData}
+ */
+ set: function (value) {
+ this._context.putImageData(value, 0, 0);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(BitmapData.prototype, "width", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._imageCanvas.width;
+ },
+ /**
+ *
+ * @param {number}
+ */
+ set: function (value) {
+ this._rect.width = value;
+ this._imageCanvas.width = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapData.prototype, "height", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._imageCanvas.height;
+ },
+ /**
+ *
+ * @param {number}
+ */
+ set: function (value) {
+ this._rect.height = value;
+ this._imageCanvas.height = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapData.prototype, "rect", {
+ /**
+ *
+ * @param {Rectangle}
+ */
+ get: function () {
+ return this._rect;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(BitmapData.prototype, "canvas", {
+ /**
+ *
+ * @returns {HTMLCanvasElement}
+ */
+ get: function () {
+ return this._imageCanvas;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(BitmapData.prototype, "context", {
+ /**
+ *
+ * @returns {HTMLCanvasElement}
+ */
+ get: function () {
+ return this._context;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ // Private
+ /**
+ * convert decimal value to Hex
+ */
+ BitmapData.prototype.hexToRGBACSS = function (d) {
+ var argb = ColorUtils.float32ColorToARGB(d);
+
+ if (this._transparent == false) {
+ argb[0] = 1;
+
+ return 'rgba(' + argb[1] + ',' + argb[2] + ',' + argb[3] + ',' + argb[0] + ')';
+ }
+
+ return 'rgba(' + argb[1] + ',' + argb[2] + ',' + argb[3] + ',' + argb[0] / 255 + ')';
+ };
+ return BitmapData;
+})();
+
+module.exports = BitmapData;
+
+
+},{"awayjs-core/lib/core/geom/Rectangle":undefined,"awayjs-core/lib/utils/ColorUtils":undefined}],"awayjs-core/lib/core/base/BlendMode":[function(require,module,exports){
+/**
+* A class that provides constant values for visual blend mode effects. These
+* constants are used in the following:
+* blendMode
property of the
+* flash.display.DisplayObject class.blendMode
parameter of the draw()
+* method of the flash.display.BitmapData classcaps
parameter of the
+* flash.display.Graphics.lineStyle()
method. You can specify the
+* following three types of caps:
+*/
+var CapsStyle = (function () {
+ function CapsStyle() {
+ }
+ CapsStyle.ROUND = "round";
+
+ CapsStyle.NONE = "none";
+
+ CapsStyle.SQUARE = "square";
+ return CapsStyle;
+})();
+
+module.exports = CapsStyle;
+
+
+},{}],"awayjs-core/lib/core/base/DisplayObject":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AxisAlignedBoundingBox = require("awayjs-core/lib/bounds/AxisAlignedBoundingBox");
+
+var AlignmentMode = require("awayjs-core/lib/core/base/AlignmentMode");
+
+var OrientationMode = require("awayjs-core/lib/core/base/OrientationMode");
+
+var MathConsts = require("awayjs-core/lib/core/geom/MathConsts");
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var Matrix3DUtils = require("awayjs-core/lib/core/geom/Matrix3DUtils");
+var Point = require("awayjs-core/lib/core/geom/Point");
+
+var Transform = require("awayjs-core/lib/core/geom/Transform");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var DisplayObjectEvent = require("awayjs-core/lib/events/DisplayObjectEvent");
+var SceneEvent = require("awayjs-core/lib/events/SceneEvent");
+
+/**
+* The DisplayObject class is the base class for all objects that can be
+* placed on the display list. The display list manages all objects displayed
+* in flash. Use the DisplayObjectContainer class to arrange the
+* display objects in the display list. DisplayObjectContainer objects can
+* have child display objects, while other display objects, such as Shape and
+* TextField objects, are "leaf" nodes that have only parents and siblings, no
+* children.
+*
+* The DisplayObject class supports basic functionality like the x +* and y position of an object, as well as more advanced properties of +* the object such as its transformation matrix.
+* +*DisplayObject is an abstract base class; therefore, you cannot call
+* DisplayObject directly. Invoking new DisplayObject()
throws an
+* ArgumentError
exception.
All display objects inherit from the DisplayObject class.
+* +*The DisplayObject class itself does not include any APIs for rendering +* content onscreen. For that reason, if you want create a custom subclass of +* the DisplayObject class, you will want to extend one of its subclasses that +* do have APIs for rendering content onscreen, such as the Shape, Sprite, +* Bitmap, SimpleButton, TextField, or MovieClip class.
+* +*The DisplayObject class contains several broadcast events. Normally, the
+* target of any particular event is a specific DisplayObject instance. For
+* example, the target of an added
event is the specific
+* DisplayObject instance that was added to the display list. Having a single
+* target restricts the placement of event listeners to that target and in
+* some cases the target's ancestors on the display list. With broadcast
+* events, however, the target is not a specific DisplayObject instance, but
+* rather all DisplayObject instances, including those that are not on the
+* display list. This means that you can add a listener to any DisplayObject
+* instance to listen for broadcast events. In addition to the broadcast
+* events listed in the DisplayObject class's Events table, the DisplayObject
+* class also inherits two broadcast events from the EventDispatcher class:
+* activate
and deactivate
.
Some properties previously used in the ActionScript 1.0 and 2.0
+* MovieClip, TextField, and Button classes(such as _alpha
,
+* _height
, _name
, _width
,
+* _x
, _y
, and others) have equivalents in the
+* ActionScript 3.0 DisplayObject class that are renamed so that they no
+* longer begin with the underscore(_) character.
For more information, see the "Display Programming" chapter of the +* ActionScript 3.0 Developer's Guide.
+* +* @event added Dispatched when a display object is added to the +* display list. The following methods trigger this +* event: +*DisplayObjectContainer.addChild()
,
+* DisplayObjectContainer.addChildAt()
.
+* @event addedToStage Dispatched when a display object is added to the on
+* stage display list, either directly or through the
+* addition of a sub tree in which the display object
+* is contained. The following methods trigger this
+* event:
+* DisplayObjectContainer.addChild()
,
+* DisplayObjectContainer.addChildAt()
.
+* @event enterFrame [broadcast event] Dispatched when the playhead is
+* entering a new frame. If the playhead is not
+* moving, or if there is only one frame, this event
+* is dispatched continuously in conjunction with the
+* frame rate. This event is a broadcast event, which
+* means that it is dispatched by all display objects
+* with a listener registered for this event.
+* @event exitFrame [broadcast event] Dispatched when the playhead is
+* exiting the current frame. All frame scripts have
+* been run. If the playhead is not moving, or if
+* there is only one frame, this event is dispatched
+* continuously in conjunction with the frame rate.
+* This event is a broadcast event, which means that
+* it is dispatched by all display objects with a
+* listener registered for this event.
+* @event frameConstructed [broadcast event] Dispatched after the constructors
+* of frame display objects have run but before frame
+* scripts have run. If the playhead is not moving, or
+* if there is only one frame, this event is
+* dispatched continuously in conjunction with the
+* frame rate. This event is a broadcast event, which
+* means that it is dispatched by all display objects
+* with a listener registered for this event.
+* @event removed Dispatched when a display object is about to be
+* removed from the display list. Two methods of the
+* DisplayObjectContainer class generate this event:
+* removeChild()
and
+* removeChildAt()
.
+*
+* The following methods of a
+* DisplayObjectContainer object also generate this
+* event if an object must be removed to make room for
+* the new object: addChild()
,
+* addChildAt()
, and
+* setChildIndex()
.
removeChild()
and
+* removeChildAt()
.
+*
+* The following methods of a
+* DisplayObjectContainer object also generate this
+* event if an object must be removed to make room for
+* the new object: addChild()
,
+* addChildAt()
, and
+* setChildIndex()
.
invalidate()
method of the Stage
+* object each time you want a render
+* event to be dispatched. Render
events
+* are dispatched to an object only if there is mutual
+* trust between it and the object that called
+* Stage.invalidate()
. This event is a
+* broadcast event, which means that it is dispatched
+* by all display objects with a listener registered
+* for this event.
+*
+* Note: This event is not dispatched if the +* display is not rendering. This is the case when the +* content is either minimized or obscured.
+*/ +var DisplayObject = (function (_super) { + __extends(DisplayObject, _super); + /** + * Creates a newDisplayObject
instance.
+ */
+ function DisplayObject() {
+ _super.call(this);
+ this._pSceneTransform = new Matrix3D();
+ this._pSceneTransformDirty = true;
+ this._matrix3D = new Matrix3D();
+ this._matrix3DDirty = true;
+ this._inverseSceneTransform = new Matrix3D();
+ this._inverseSceneTransformDirty = true;
+ this._scenePosition = new Vector3D();
+ this._scenePositionDirty = true;
+ this._explicitVisibility = true;
+ this._pImplicitVisibility = true;
+ this._explicitMouseEnabled = true;
+ this._pImplicitMouseEnabled = true;
+ this._positionDirty = true;
+ this._rotationDirty = true;
+ this._scaleDirty = true;
+ this._rotationX = 0;
+ this._rotationY = 0;
+ this._rotationZ = 0;
+ this._eulers = new Vector3D();
+ this._flipY = new Matrix3D();
+ this._zOffset = 0;
+ this._pScaleX = 1;
+ this._pScaleY = 1;
+ this._pScaleZ = 1;
+ this._x = 0;
+ this._y = 0;
+ this._z = 0;
+ this._pivot = new Vector3D();
+ this._orientationMatrix = new Matrix3D();
+ this._pivotZero = true;
+ this._pivotDirty = true;
+ this._pos = new Vector3D();
+ this._rot = new Vector3D();
+ this._sca = new Vector3D();
+ this._pIgnoreTransform = false;
+ this._pBoundsInvalid = true;
+ this._worldBoundsInvalid = true;
+ this._pRenderables = new Array();
+ /**
+ *
+ */
+ this.alignmentMode = AlignmentMode.REGISTRATION_POINT;
+ /**
+ *
+ */
+ this.castsShadows = true;
+ /**
+ *
+ */
+ this.orientationMode = OrientationMode.DEFAULT;
+
+ // Cached vector of transformation components used when
+ // recomposing the transform matrix in updateTransform()
+ this._transformComponents = new Array(3); //_transformComponents = new Vector.depth
property, the scaleZ
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content (such as an empty sprite) has a depth of 0, even if you try to
+ * set depth
to a different value.
Vector3D
object containing euler angles for rotation around x, y and z axis.
+ */
+ get: function () {
+ this._eulers.x = this._rotationX * MathConsts.RADIANS_TO_DEGREES;
+ this._eulers.y = this._rotationY * MathConsts.RADIANS_TO_DEGREES;
+ this._eulers.z = this._rotationZ * MathConsts.RADIANS_TO_DEGREES;
+
+ return this._eulers;
+ },
+ set: function (value) {
+ this._rotationX = value.x * MathConsts.DEGREES_TO_RADIANS;
+ this._rotationY = value.y * MathConsts.DEGREES_TO_RADIANS;
+ this._rotationZ = value.z * MathConsts.DEGREES_TO_RADIANS;
+
+ this.invalidateRotation();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "height", {
+ /**
+ * An indexed array that contains each filter object currently associated
+ * with the display object. The flash.filters package contains several
+ * classes that define specific filters you can use.
+ *
+ * Filters can be applied in Flash Professional at design time, or at run
+ * time by using ActionScript code. To apply a filter by using ActionScript,
+ * you must make a temporary copy of the entire filters
array,
+ * modify the temporary array, then assign the value of the temporary array
+ * back to the filters
array. You cannot directly add a new
+ * filter object to the filters
array.
To add a filter by using ActionScript, perform the following steps
+ * (assume that the target display object is named
+ * myDisplayObject
):
myDisplayObject.filters
array
+ * to a temporary array, such as one named myFilters
.myFilters
temporary
+ * array.myDisplayObject.filters
array.If the filters
array is undefined, you do not need to use
+ * a temporary array. Instead, you can directly assign an array literal that
+ * contains one or more filter objects that you create. The first example in
+ * the Examples section adds a drop shadow filter by using code that handles
+ * both defined and undefined filters
arrays.
To modify an existing filter object, you must use the technique of
+ * modifying a copy of the filters
array:
filters
array to a temporary
+ * array, such as one named myFilters
.myFilters
. For example, to set the quality property of the
+ * first filter in the array, you could use the following code:
+ * myFilters[0].quality = 1;
filters
+ * array.At load time, if a display object has an associated filter, it is + * marked to cache itself as a transparent bitmap. From this point forward, + * as long as the display object has a valid filter list, the player caches + * the display object as a bitmap. This source bitmap is used as a source + * image for the filter effects. Each display object usually has two bitmaps: + * one with the original unfiltered source display object and another for the + * final image after filtering. The final image is used when rendering. As + * long as the display object does not change, the final image does not need + * updating.
+ * + *The flash.filters package includes classes for filters. For example, to + * create a DropShadow filter, you would write:
+ * + * @throws ArgumentError Whenfilters
includes a ShaderFilter
+ * and the shader output type is not compatible with
+ * this operation(the shader must specify a
+ * pixel4
output).
+ * @throws ArgumentError When filters
includes a ShaderFilter
+ * and the shader doesn't specify any image input or
+ * the first input is not an image4
input.
+ * @throws ArgumentError When filters
includes a ShaderFilter
+ * and the shader specifies an image input that isn't
+ * provided.
+ * @throws ArgumentError When filters
includes a ShaderFilter, a
+ * ByteArray or Vector.width
and
+ * height
properties aren't specified for
+ * the ShaderInput object, or the specified values
+ * don't match the amount of data in the input data.
+ * See the ShaderInput.input
property for
+ * more information.
+ */
+ // public filters:Arrayheight
property, the scaleY
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content (such as an empty sprite) has a height of 0, even if you try to
+ * set height
to a different value.
getChildByIndex()
method of the display object
+ * container.
+ *
+ * If the DisplayObject has no parent container, index defaults to 0.
+ */ + get: function () { + if (this._pParent) + return this._pParent.getChildIndex(this); + + return 0; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "inverseSceneTransform", { + /** + * + */ + get: function () { + if (this._inverseSceneTransformDirty) { + this._inverseSceneTransform.copyFrom(this.sceneTransform); + this._inverseSceneTransform.invert(); + this._inverseSceneTransformDirty = false; + } + return this._inverseSceneTransform; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "ignoreTransform", { + /** + * + */ + get: function () { + return this._pIgnoreTransform; + }, + set: function (value) { + if (this._pIgnoreTransform == value) + return; + + this._pIgnoreTransform = value; + + if (value) { + this._pSceneTransform.identity(); + this._scenePosition.setTo(0, 0, 0); + } + + this.pInvalidateSceneTransform(); + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(DisplayObject.prototype, "isEntity", { + /** + * + */ + get: function () { + return this._pIsEntity; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "loaderInfo", { + /** + * Returns a LoaderInfo object containing information about loading the file + * to which this display object belongs. TheloaderInfo
property
+ * is defined only for the root display object of a SWF file or for a loaded
+ * Bitmap(not for a Bitmap that is drawn with ActionScript). To find the
+ * loaderInfo
object associated with the SWF file that contains
+ * a display object named myDisplayObject
, use
+ * myDisplayObject.root.loaderInfo
.
+ *
+ * A large SWF file can monitor its download by calling
+ * this.root.loaderInfo.addEventListener(Event.COMPLETE,
+ * func)
.
true
, which means that by
+ * default any InteractiveObject instance that is on the display list
+ * receives mouse events or other user input events. If
+ * mouseEnabled
is set to false
, the instance does
+ * not receive any mouse events(or other user input events like keyboard
+ * events). Any children of this instance on the display list are not
+ * affected. To change the mouseEnabled
behavior for all
+ * children of an object on the display list, use
+ * flash.display.DisplayObjectContainer.mouseChildren
.
+ *
+ * No event is dispatched by setting this property. You must use the
+ * addEventListener()
method to create interactive
+ * functionality.
Note: For a DisplayObject that has been rotated, the returned x + * coordinate will reflect the non-rotated object.
+ */ + get: function () { + return this._mouseX; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "mouseY", { + /** + * Indicates the y coordinate of the mouse or user input device position, in + * pixels. + * + *Note: For a DisplayObject that has been rotated, the returned y + * coordinate will reflect the non-rotated object.
+ */ + get: function () { + return this._mouseY; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "parent", { + /** + * Indicates the DisplayObjectContainer object that contains this display + * object. Use theparent
property to specify a relative path to
+ * display objects that are above the current display object in the display
+ * list hierarchy.
+ *
+ * You can use parent
to move up multiple levels in the
+ * display list as in the following:
Security.allowDomain()
method.
+ */
+ get: function () {
+ return this._pParent;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(DisplayObject.prototype, "partition", {
+ /**
+ *
+ */
+ get: function () {
+ return this._explicitPartition;
+ },
+ set: function (value) {
+ if (this._explicitPartition == value)
+ return;
+
+ if (this._pScene && this._explicitPartition)
+ this._pScene.iUnregisterPartition(this._explicitPartition);
+
+ this._explicitPartition = value;
+
+ if (this._pScene && value)
+ this._pScene.iRegisterPartition(value);
+
+ this._pUpdateImplicitPartition(this._pParent ? this._pParent._iAssignedPartition : null);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "partitionNode", {
+ /**
+ *
+ */
+ get: function () {
+ if (!this._partitionNode)
+ this._partitionNode = this.pCreateEntityPartitionNode();
+
+ return this._partitionNode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(DisplayObject.prototype, "pickingCollider", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pPickingCollider;
+ },
+ set: function (value) {
+ this._pPickingCollider = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "pivot", {
+ /**
+ * Defines the local point around which the object rotates.
+ */
+ get: function () {
+ return this._pivot;
+ },
+ set: function (pivot) {
+ this._pivot = pivot.clone();
+
+ this.invalidatePivot();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "root", {
+ /**
+ * For a display object in a loaded SWF file, the root
property
+ * is the top-most display object in the portion of the display list's tree
+ * structure represented by that SWF file. For a Bitmap object representing a
+ * loaded image file, the root
property is the Bitmap object
+ * itself. For the instance of the main class of the first SWF file loaded,
+ * the root
property is the display object itself. The
+ * root
property of the Stage object is the Stage object itself.
+ * The root
property is set to null
for any display
+ * object that has not been added to the display list, unless it has been
+ * added to a display object container that is off the display list but that
+ * is a child of the top-most display object in a loaded SWF file.
+ *
+ * For example, if you create a new Sprite object by calling the
+ * Sprite()
constructor method, its root
property
+ * is null
until you add it to the display list(or to a display
+ * object container that is off the display list but that is a child of the
+ * top-most display object in a SWF file).
For a loaded SWF file, even though the Loader object used to load the
+ * file may not be on the display list, the top-most display object in the
+ * SWF file has its root
property set to itself. The Loader
+ * object does not have its root
property set until it is added
+ * as a child of a display object for which the root
property is
+ * set.
Scaling the local coordinate system changes the x
and
+ * y
property values, which are defined in whole pixels.
Scaling the local coordinate system changes the x
and
+ * y
property values, which are defined in whole pixels.
Scaling the local coordinate system changes the x
,
+ * y
and z
property values, which are defined in
+ * whole pixels.
concatenatedMatrix
, concatenatedColorTransform
,
+ * and pixelBounds
) - are described in the entry for the
+ * Transform class.
+ *
+ * Each of the transform object's properties is itself an object. This + * concept is important because the only way to set new values for the matrix + * or colorTransform objects is to create a new object and copy that object + * into the transform.matrix or transform.colorTransform property.
+ * + *For example, to increase the tx
value of a display
+ * object's matrix, you must make a copy of the entire matrix object, then
+ * copy the new object into the matrix property of the transform object:
public myMatrix:Matrix =
+ * myDisplayObject.transform.matrix; myMatrix.tx += 10;
+ * myDisplayObject.transform.matrix = myMatrix;
+ *
+ * You cannot directly set the tx
property. The following
+ * code has no effect on myDisplayObject
:
myDisplayObject.transform.matrix.tx +=
+ * 10;
+ *
+ * You can also copy an entire transform object and assign it to another
+ * display object's transform property. For example, the following code
+ * copies the entire transform object from myOldDisplayObj
to
+ * myNewDisplayObj
:
myNewDisplayObj.transform = myOldDisplayObj.transform;
+ *
+ * The resulting display object, myNewDisplayObj
, now has the
+ * same values for its matrix, color transform, and pixel bounds as the old
+ * display object, myOldDisplayObj
.
Note that AIR for TV devices use hardware acceleration, if it is + * available, for color transforms.
+ */ + get: function () { + return this._transform; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(DisplayObject.prototype, "visible", { + /** + * Whether or not the display object is visible. Display objects that are not + * visible are disabled. For example, ifvisible=false
for an
+ * InteractiveObject instance, it cannot be clicked.
+ */
+ get: function () {
+ return this._explicitVisibility;
+ },
+ set: function (value) {
+ if (this._explicitVisibility == value)
+ return;
+
+ this._explicitVisibility = value;
+
+ this._pUpdateImplicitVisibility(this._pParent ? this._pParent._iIsVisible() : true);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "width", {
+ /**
+ * Indicates the width of the display object, in pixels. The width is
+ * calculated based on the bounds of the content of the display object. When
+ * you set the width
property, the scaleX
property
+ * is adjusted accordingly, as shown in the following code:
+ *
+ * Except for TextField and Video objects, a display object with no
+ * content(such as an empty sprite) has a width of 0, even if you try to set
+ * width
to a different value.
When you set a z
property for a display object to
+ * something other than the default value of 0
, a corresponding
+ * Matrix3D object is automatically created. for adjusting a display object's
+ * position and orientation in three dimensions. When working with the
+ * z-axis, the existing behavior of x and y properties changes from screen or
+ * pixel coordinates to positions relative to the 3D parent container.
For example, a child of the _root
at position x = 100, y =
+ * 100, z = 200 is not drawn at pixel location(100,100). The child is drawn
+ * wherever the 3D projection calculation puts it. The calculation is:
(x~~cameraFocalLength/cameraRelativeZPosition,
+ * y~~cameraFocalLength/cameraRelativeZPosition)
targetCoordinateSpace
object.
+ * Consider the following code, which shows how the rectangle returned can
+ * vary depending on the targetCoordinateSpace
parameter that
+ * you pass to the method:
+ *
+ * Note: Use the localToGlobal()
and
+ * globalToLocal()
methods to convert the display object's local
+ * coordinates to display coordinates, or display coordinates to local
+ * coordinates, respectively.
The getBounds()
method is similar to the
+ * getRect()
method; however, the Rectangle returned by the
+ * getBounds()
method includes any strokes on shapes, whereas
+ * the Rectangle returned by the getRect()
method does not. For
+ * an example, see the description of the getRect()
method.
targetCoordinateSpace
object's coordinate
+ * system.
+ */
+ DisplayObject.prototype.getBounds = function (targetCoordinateSpace) {
+ return this._bounds;
+ };
+
+ /**
+ * Returns a rectangle that defines the boundary of the display object, based
+ * on the coordinate system defined by the targetCoordinateSpace
+ * parameter, excluding any strokes on shapes. The values that the
+ * getRect()
method returns are the same or smaller than those
+ * returned by the getBounds()
method.
+ *
+ * Note: Use localToGlobal()
and
+ * globalToLocal()
methods to convert the display object's local
+ * coordinates to Stage coordinates, or Stage coordinates to local
+ * coordinates, respectively.
targetCoordinateSpace
object's coordinate
+ * system.
+ */
+ DisplayObject.prototype.getRect = function (targetCoordinateSpace) {
+ return this._bounds;
+ };
+
+ /**
+ * Converts the point
object from the Stage(global) coordinates
+ * to the display object's(local) coordinates.
+ *
+ * To use this method, first create an instance of the Point class. The
+ * x and y values that you assign represent global coordinates
+ * because they relate to the origin(0,0) of the main display area. Then
+ * pass the Point instance as the parameter to the
+ * globalToLocal()
method. The method returns a new Point object
+ * with x and y values that relate to the origin of the display
+ * object instead of the origin of the Stage.
To use this method, first create an instance of the Point class. The x
+ * and y values that you assign to the Point object represent global
+ * coordinates because they are relative to the origin(0,0) of the main
+ * display area. Then pass the Point object to the
+ * globalToLocal3D()
method as the point
parameter.
+ * The method returns three-dimensional coordinates as a Vector3D object
+ * containing x
, y
, and z
values that
+ * are relative to the origin of the three-dimensional display object.
obj
display object.
+ *
+ * @param obj The display object to test against.
+ * @return true
if the bounding boxes of the display objects
+ * intersect; false
if not.
+ */
+ DisplayObject.prototype.hitTestObject = function (obj) {
+ return false;
+ };
+
+ /**
+ * Evaluates the display object to see if it overlaps or intersects with the
+ * point specified by the x
and y
parameters. The
+ * x
and y
parameters specify a point in the
+ * coordinate space of the Stage, not the display object container that
+ * contains the display object(unless that display object container is the
+ * Stage).
+ *
+ * @param x The x coordinate to test against this object.
+ * @param y The y coordinate to test against this object.
+ * @param shapeFlag Whether to check against the actual pixels of the object
+ * (true
) or the bounding box
+ * (false
).
+ * @return true
if the display object overlaps or intersects
+ * with the specified point; false
otherwise.
+ */
+ DisplayObject.prototype.hitTestPoint = function (x, y, shapeFlag) {
+ if (typeof shapeFlag === "undefined") { shapeFlag = false; }
+ return false;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ DisplayObject.prototype.isIntersectingRay = function (rayPosition, rayDirection) {
+ var localRayPosition = this.inverseSceneTransform.transformVector(rayPosition);
+ var localRayDirection = this.inverseSceneTransform.deltaTransformVector(rayDirection);
+ var pickingCollisionVO = this._iPickingCollisionVO;
+
+ if (!pickingCollisionVO.localNormal)
+ pickingCollisionVO.localNormal = new Vector3D();
+
+ var rayEntryDistance = this.bounds.rayIntersection(localRayPosition, localRayDirection, pickingCollisionVO.localNormal);
+
+ if (rayEntryDistance < 0)
+ return false;
+
+ pickingCollisionVO.rayEntryDistance = rayEntryDistance;
+ pickingCollisionVO.localRayPosition = localRayPosition;
+ pickingCollisionVO.localRayDirection = localRayDirection;
+ pickingCollisionVO.rayPosition = rayPosition;
+ pickingCollisionVO.rayDirection = rayDirection;
+ pickingCollisionVO.rayOriginIsInsideBounds = rayEntryDistance == 0;
+
+ return true;
+ };
+
+ /**
+ * Converts a three-dimensional point of the three-dimensional display
+ * object's(local) coordinates to a two-dimensional point in the Stage
+ * (global) coordinates.
+ *
+ * For example, you can only use two-dimensional coordinates(x,y) to draw
+ * with the display.Graphics
methods. To draw a
+ * three-dimensional object, you need to map the three-dimensional
+ * coordinates of a display object to two-dimensional coordinates. First,
+ * create an instance of the Vector3D class that holds the x-, y-, and z-
+ * coordinates of the three-dimensional display object. Then pass the
+ * Vector3D object to the local3DToGlobal()
method as the
+ * point3d
parameter. The method returns a two-dimensional Point
+ * object that can be used with the Graphics API to draw the
+ * three-dimensional object.
ObjectContainer3D
.
+ *
+ * @param target The vector defining the point to be looked at
+ * @param upAxis An optional vector used to define the desired up orientation of the 3d object after rotation has occurred
+ */
+ DisplayObject.prototype.lookAt = function (target, upAxis) {
+ if (typeof upAxis === "undefined") { upAxis = null; }
+ var yAxis;
+ var zAxis;
+ var xAxis;
+ var raw;
+
+ if (upAxis == null)
+ upAxis = Vector3D.Y_AXIS;
+ else
+ upAxis.normalize();
+
+ zAxis = target.subtract(this._iMatrix3D.position);
+ zAxis.normalize();
+
+ xAxis = upAxis.crossProduct(zAxis);
+ xAxis.normalize();
+
+ if (xAxis.length < 0.05) {
+ xAxis.x = upAxis.y;
+ xAxis.y = upAxis.x;
+ xAxis.z = 0;
+ xAxis.normalize();
+ }
+
+ yAxis = zAxis.crossProduct(xAxis);
+
+ raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+
+ raw[0] = xAxis.x;
+ raw[1] = xAxis.y;
+ raw[2] = xAxis.z;
+ raw[3] = 0;
+
+ raw[4] = yAxis.x;
+ raw[5] = yAxis.y;
+ raw[6] = yAxis.z;
+ raw[7] = 0;
+
+ raw[8] = zAxis.x;
+ raw[9] = zAxis.y;
+ raw[10] = zAxis.z;
+ raw[11] = 0;
+
+ var m = new Matrix3D();
+ m.copyRawDataFrom(raw);
+
+ var vec = m.decompose()[1];
+
+ this._rotationX = vec.x;
+ this._rotationY = vec.y;
+ this._rotationZ = vec.z;
+
+ this.invalidateRotation();
+ };
+
+ /**
+ * Converts the point
object from the display object's(local)
+ * coordinates to the Stage(global) coordinates.
+ *
+ * This method allows you to convert any given x and y + * coordinates from values that are relative to the origin(0,0) of a + * specific display object(local coordinates) to values that are relative to + * the origin of the Stage(global coordinates).
+ * + *To use this method, first create an instance of the Point class. The + * x and y values that you assign represent local coordinates + * because they relate to the origin of the display object.
+ * + *You then pass the Point instance that you created as the parameter to
+ * the localToGlobal()
method. The method returns a new Point
+ * object with x and y values that relate to the origin of the
+ * Stage instead of the origin of the display object.
ObjectContainer3D
.
+ *
+ * @internal
+ */
+ get: function () {
+ if (this._matrix3DDirty)
+ this._pUpdateMatrix3D();
+
+ return this._matrix3D;
+ },
+ set: function (val) {
+ // TODO: From AS3 - Do we still need this in JS ?
+ //ridiculous matrix error
+ /*
+ if (!val.rawData[0]) {
+
+ var raw:number[] = Matrix3DUtils.RAW_DATA_CONTAINER;
+ val.copyRawDataTo(raw);
+ raw[0] = this._smallestNumber;
+ val.copyRawDataFrom(raw);
+ }
+ //*/
+ var elements = val.decompose();
+ var vec;
+
+ vec = elements[0];
+
+ if (this._x != vec.x || this._y != vec.y || this._z != vec.z) {
+ this._x = vec.x;
+ this._y = vec.y;
+ this._z = vec.z;
+
+ this.invalidatePosition();
+ }
+
+ vec = elements[1];
+
+ if (this._rotationX != vec.x || this._rotationY != vec.y || this._rotationZ != vec.z) {
+ this._rotationX = vec.x;
+ this._rotationY = vec.y;
+ this._rotationZ = vec.z;
+
+ this.invalidateRotation();
+ }
+
+ vec = elements[2];
+
+ if (this._pScaleX != vec.x || this._pScaleY != vec.y || this._pScaleZ != vec.z) {
+ this._pScaleX = vec.x;
+ this._pScaleY = vec.y;
+ this._pScaleZ = vec.z;
+
+ this.invalidateScale();
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(DisplayObject.prototype, "_iPickingCollisionVO", {
+ /**
+ * @internal
+ */
+ get: function () {
+ if (!this._pPickingCollisionVO)
+ this._pPickingCollisionVO = new PickingCollisionVO(this);
+
+ return this._pPickingCollisionVO;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * @internal
+ */
+ DisplayObject.prototype.iSetParent = function (value) {
+ this._pParent = value;
+
+ if (value) {
+ this._pUpdateImplicitMouseEnabled(value.mouseChildren);
+ this._pUpdateImplicitVisibility(value._iIsVisible());
+ this._pUpdateImplicitPartition(value._iAssignedPartition);
+ this._iSetScene(value._pScene);
+ } else {
+ this._pUpdateImplicitMouseEnabled(true);
+ this._pUpdateImplicitVisibility(true);
+ this._pUpdateImplicitPartition(null);
+
+ this._iSetScene(null);
+ }
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pCreateDefaultBoundingVolume = function () {
+ // point lights should be using sphere bounds
+ // directional lights should be using null bounds
+ return new AxisAlignedBoundingBox();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pCreateEntityPartitionNode = function () {
+ throw new AbstractMethodError();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pInvalidateBounds = function () {
+ this._pBoundsInvalid = true;
+ this._worldBoundsInvalid = true;
+
+ if (this.isEntity)
+ this.invalidatePartition();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pInvalidateSceneTransform = function () {
+ this._pSceneTransformDirty = !this._pIgnoreTransform;
+ this._inverseSceneTransformDirty = !this._pIgnoreTransform;
+ this._scenePositionDirty = !this._pIgnoreTransform;
+
+ this._worldBoundsInvalid = !this._pIgnoreTransform;
+
+ if (this.isEntity)
+ this.invalidatePartition();
+
+ if (this._listenToSceneTransformChanged)
+ this.notifySceneTransformChange();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pUpdateBounds = function () {
+ this._width = this._pBounds.aabb.width * this._pScaleX;
+ this._height = this._pBounds.aabb.height * this._pScaleY;
+ this._depth = this._pBounds.aabb.depth * this._pScaleZ;
+
+ this._pBoundsInvalid = false;
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype._pUpdateImplicitMouseEnabled = function (value) {
+ this._pImplicitMouseEnabled = this._explicitMouseEnabled && value;
+
+ // If there is a parent and this child does not have a picking collider, use its parent's picking collider.
+ if (this._pImplicitMouseEnabled && this._pParent && !this._pPickingCollider)
+ this._pPickingCollider = this._pParent._pPickingCollider;
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype._pUpdateImplicitPartition = function (value) {
+ // assign parent implicit partition if no explicit one is given
+ this._pImplicitPartition = this._explicitPartition || value;
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype._pUpdateImplicitVisibility = function (value) {
+ this._pImplicitVisibility = this._explicitVisibility && value;
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype._pUpdateMatrix3D = function () {
+ this._pos.x = this._x;
+ this._pos.y = this._y;
+ this._pos.z = this._z;
+
+ this._rot.x = this._rotationX;
+ this._rot.y = this._rotationY;
+ this._rot.z = this._rotationZ;
+
+ this._sca.x = this._pScaleX;
+ this._sca.y = this._pScaleY;
+ this._sca.z = this._pScaleZ;
+
+ this._matrix3D.recompose(this._transformComponents);
+
+ if (!this._pivotZero) {
+ this._matrix3D.prependTranslation(-this._pivot.x / this._pScaleX, -this._pivot.y / this._pScaleY, -this._pivot.z / this._pScaleZ);
+ if (this.alignmentMode != AlignmentMode.PIVOT_POINT)
+ this._matrix3D.appendTranslation(this._pivot.x, this._pivot.y, this._pivot.z);
+ }
+
+ this._matrix3DDirty = false;
+ this._positionDirty = false;
+ this._rotationDirty = false;
+ this._scaleDirty = false;
+ this._pivotDirty = false;
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype.pUpdateSceneTransform = function () {
+ if (this._pParent && !this._pParent._iIsRoot) {
+ this._pSceneTransform.copyFrom(this._pParent.sceneTransform);
+ this._pSceneTransform.prepend(this._iMatrix3D);
+ } else {
+ this._pSceneTransform.copyFrom(this._iMatrix3D);
+ }
+
+ this._pSceneTransformDirty = false;
+ };
+
+ DisplayObject.prototype._iAddRenderable = function (renderable) {
+ this._pRenderables.push(renderable);
+
+ return renderable;
+ };
+
+ DisplayObject.prototype._iRemoveRenderable = function (renderable) {
+ var index = this._pRenderables.indexOf(renderable);
+
+ this._pRenderables.splice(index, 1);
+
+ return renderable;
+ };
+
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ DisplayObject.prototype._iTestCollision = function (shortestCollisionDistance, findClosest) {
+ return false;
+ };
+
+ /**
+ *
+ */
+ DisplayObject.prototype._iInternalUpdate = function () {
+ if (this._iController)
+ this._iController.update();
+ };
+
+ /**
+ * @internal
+ */
+ DisplayObject.prototype._iIsVisible = function () {
+ return this._pImplicitVisibility;
+ };
+
+ /**
+ * @internal
+ */
+ DisplayObject.prototype._iIsMouseEnabled = function () {
+ return this._pImplicitMouseEnabled;
+ };
+
+ /**
+ * @internal
+ */
+ DisplayObject.prototype._iSetScene = function (value) {
+ // test to see if we're switching roots while we're already using a scene partition
+ /*
+ if (value == null)
+ this._oldScene = this._pScene;
+
+ if (this._explicitPartition && this._oldScene && this._oldScene != this._pScene)
+ this.partition = null;
+
+ if (value)
+ this._oldScene = null;
+
+ // end of stupid partition test code
+ //*/
+ if (this._pScene == value)
+ return;
+
+ this._pUpdateScene(value);
+
+ if (!this._pSceneTransformDirty && !this._pIgnoreTransform)
+ this.pInvalidateSceneTransform();
+ };
+
+ /**
+ * @protected
+ */
+ DisplayObject.prototype._pUpdateScene = function (value) {
+ if (this._pScene) {
+ this._pScene.dispatchEvent(new SceneEvent(SceneEvent.REMOVED_FROM_SCENE, this));
+
+ //unregister entity from current scene
+ this._pScene.iUnregisterEntity(this);
+ }
+
+ this._pScene = value;
+
+ if (value) {
+ value.dispatchEvent(new SceneEvent(SceneEvent.ADDED_TO_SCENE, this));
+
+ //register entity with new scene
+ value.iRegisterEntity(this);
+ }
+
+ this.notifySceneChange();
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.notifyPositionChanged = function () {
+ if (!this._positionChanged)
+ this._positionChanged = new DisplayObjectEvent(DisplayObjectEvent.POSITION_CHANGED, this);
+
+ this.dispatchEvent(this._positionChanged);
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.notifyRotationChanged = function () {
+ if (!this._rotationChanged)
+ this._rotationChanged = new DisplayObjectEvent(DisplayObjectEvent.ROTATION_CHANGED, this);
+
+ this.dispatchEvent(this._rotationChanged);
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.notifyScaleChanged = function () {
+ if (!this._scaleChanged)
+ this._scaleChanged = new DisplayObjectEvent(DisplayObjectEvent.SCALE_CHANGED, this);
+
+ this.dispatchEvent(this._scaleChanged);
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.notifySceneChange = function () {
+ if (this._listenToSceneChanged) {
+ if (!this._scenechanged)
+ this._scenechanged = new DisplayObjectEvent(DisplayObjectEvent.SCENE_CHANGED, this);
+
+ this.dispatchEvent(this._scenechanged);
+ }
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.notifySceneTransformChange = function () {
+ if (!this._sceneTransformChanged)
+ this._sceneTransformChanged = new DisplayObjectEvent(DisplayObjectEvent.SCENETRANSFORM_CHANGED, this);
+
+ this.dispatchEvent(this._sceneTransformChanged);
+ };
+
+ /**
+ * Invalidates the 3D transformation matrix, causing it to be updated upon the next request
+ *
+ * @private
+ */
+ DisplayObject.prototype.invalidateMatrix3D = function () {
+ if (this._matrix3DDirty)
+ return;
+
+ this._matrix3DDirty = true;
+
+ if (!this._pSceneTransformDirty && !this._pIgnoreTransform)
+ this.pInvalidateSceneTransform();
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.invalidatePartition = function () {
+ if (this._iAssignedPartition)
+ this._iAssignedPartition.iMarkForUpdate(this);
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.invalidatePivot = function () {
+ this._pivotZero = (this._pivot.x == 0) && (this._pivot.y == 0) && (this._pivot.z == 0);
+
+ if (this._pivotDirty)
+ return;
+
+ this._pivotDirty = true;
+
+ this.invalidateMatrix3D();
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.invalidatePosition = function () {
+ if (this._positionDirty)
+ return;
+
+ this._positionDirty = true;
+
+ this.invalidateMatrix3D();
+
+ if (this._listenToPositionChanged)
+ this.notifyPositionChanged();
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.invalidateRotation = function () {
+ if (this._rotationDirty)
+ return;
+
+ this._rotationDirty = true;
+
+ this.invalidateMatrix3D();
+
+ if (this._listenToRotationChanged)
+ this.notifyRotationChanged();
+ };
+
+ /**
+ * @private
+ */
+ DisplayObject.prototype.invalidateScale = function () {
+ if (this._scaleDirty)
+ return;
+
+ this._scaleDirty = true;
+
+ this.invalidateMatrix3D();
+
+ if (this._listenToScaleChanged)
+ this.notifyScaleChanged();
+ };
+ return DisplayObject;
+})(NamedAssetBase);
+
+module.exports = DisplayObject;
+
+
+},{"awayjs-core/lib/bounds/AxisAlignedBoundingBox":undefined,"awayjs-core/lib/core/base/AlignmentMode":undefined,"awayjs-core/lib/core/base/OrientationMode":undefined,"awayjs-core/lib/core/geom/MathConsts":undefined,"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/core/geom/Transform":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-core/lib/core/pick/PickingCollisionVO":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/DisplayObjectEvent":undefined,"awayjs-core/lib/events/SceneEvent":undefined}],"awayjs-core/lib/core/base/Geometry":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+var GeometryEvent = require("awayjs-core/lib/events/GeometryEvent");
+
+/**
+*
+* Geometry is a collection of SubGeometries, each of which contain the actual geometrical data such as vertices,
+* normals, uvs, etc. It also contains a reference to an animation class, which defines how the geometry moves.
+* A Geometry object is assigned to a Mesh, a scene graph occurence of the geometry, which in turn assigns
+* the SubGeometries to its respective TriangleSubMesh objects.
+*
+*
+*
+* @see away.core.base.SubGeometry
+* @see away.entities.Mesh
+*
+* @class Geometry
+*/
+var Geometry = (function (_super) {
+ __extends(Geometry, _super);
+ /**
+ * Creates a new Geometry object.
+ */
+ function Geometry() {
+ _super.call(this);
+
+ this._subGeometries = new Array();
+ }
+ Object.defineProperty(Geometry.prototype, "assetType", {
+ get: function () {
+ return AssetType.GEOMETRY;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Geometry.prototype, "subGeometries", {
+ /**
+ * A collection of TriangleSubGeometry objects, each of which contain geometrical data such as vertices, normals, etc.
+ */
+ get: function () {
+ return this._subGeometries;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Geometry.prototype.getSubGeometries = function () {
+ return this._subGeometries;
+ };
+
+ Geometry.prototype.applyTransformation = function (transform) {
+ var len = this._subGeometries.length;
+ for (var i = 0; i < len; ++i)
+ this._subGeometries[i].applyTransformation(transform);
+ };
+
+ /**
+ * Adds a new TriangleSubGeometry object to the list.
+ * @param subGeometry The TriangleSubGeometry object to be added.
+ */
+ Geometry.prototype.addSubGeometry = function (subGeometry) {
+ this._subGeometries.push(subGeometry);
+
+ subGeometry.parentGeometry = this;
+
+ if (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_ADDED))
+ this.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_ADDED, subGeometry));
+
+ this.iInvalidateBounds(subGeometry);
+ };
+
+ /**
+ * Removes a new TriangleSubGeometry object from the list.
+ * @param subGeometry The TriangleSubGeometry object to be removed.
+ */
+ Geometry.prototype.removeSubGeometry = function (subGeometry) {
+ this._subGeometries.splice(this._subGeometries.indexOf(subGeometry), 1);
+
+ subGeometry.parentGeometry = null;
+
+ if (this.hasEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED))
+ this.dispatchEvent(new GeometryEvent(GeometryEvent.SUB_GEOMETRY_REMOVED, subGeometry));
+
+ this.iInvalidateBounds(subGeometry);
+ };
+
+ /**
+ * Clones the geometry.
+ * @return An exact duplicate of the current Geometry object.
+ */
+ Geometry.prototype.clone = function () {
+ var clone = new Geometry();
+ var len = this._subGeometries.length;
+
+ for (var i = 0; i < len; ++i)
+ clone.addSubGeometry(this._subGeometries[i].clone());
+
+ return clone;
+ };
+
+ /**
+ * Scales the geometry.
+ * @param scale The amount by which to scale.
+ */
+ Geometry.prototype.scale = function (scale) {
+ var numSubGeoms = this._subGeometries.length;
+ for (var i = 0; i < numSubGeoms; ++i)
+ this._subGeometries[i].scale(scale);
+ };
+
+ /**
+ * Clears all resources used by the Geometry object, including SubGeometries.
+ */
+ Geometry.prototype.dispose = function () {
+ var numSubGeoms = this._subGeometries.length;
+
+ for (var i = 0; i < numSubGeoms; ++i) {
+ var subGeom = this._subGeometries[0];
+ this.removeSubGeometry(subGeom);
+ subGeom.dispose();
+ }
+ };
+
+ /**
+ * Scales the uv coordinates (tiling)
+ * @param scaleU The amount by which to scale on the u axis. Default is 1;
+ * @param scaleV The amount by which to scale on the v axis. Default is 1;
+ */
+ Geometry.prototype.scaleUV = function (scaleU, scaleV) {
+ if (typeof scaleU === "undefined") { scaleU = 1; }
+ if (typeof scaleV === "undefined") { scaleV = 1; }
+ var numSubGeoms = this._subGeometries.length;
+
+ for (var i = 0; i < numSubGeoms; ++i)
+ this._subGeometries[i].scaleUV(scaleU, scaleV);
+ };
+
+ Geometry.prototype.iInvalidateBounds = function (subGeom) {
+ if (this.hasEventListener(GeometryEvent.BOUNDS_INVALID))
+ this.dispatchEvent(new GeometryEvent(GeometryEvent.BOUNDS_INVALID, subGeom));
+ };
+ return Geometry;
+})(NamedAssetBase);
+
+module.exports = Geometry;
+
+
+},{"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-core/lib/events/GeometryEvent":undefined}],"awayjs-core/lib/core/base/GradientType":[function(require,module,exports){
+/**
+* The GradientType class provides values for the type
parameter
+* in the beginGradientFill()
and
+* lineGradientStyle()
methods of the flash.display.Graphics
+* class.
+*/
+var GradientType = (function () {
+ function GradientType() {
+ }
+ GradientType.LINEAR = "linear";
+
+ GradientType.RADIAL = "radial";
+ return GradientType;
+})();
+
+module.exports = GradientType;
+
+
+},{}],"awayjs-core/lib/core/base/GraphicsPathWinding":[function(require,module,exports){
+/**
+* The GraphicsPathWinding class provides values for the
+* flash.display.GraphicsPath.winding
property and the
+* flash.display.Graphics.drawPath()
method to determine the
+* direction to draw a path. A clockwise path is positively wound, and a
+* counter-clockwise path is negatively wound:
+*
+* When paths intersect or overlap, the winding direction determines the +* rules for filling the areas created by the intersection or overlap:
+*/ +var GraphicsPathWinding = (function () { + function GraphicsPathWinding() { + } + GraphicsPathWinding.EVEN_ODD = "evenOdd"; + GraphicsPathWinding.NON_ZERO = "nonZero"; + return GraphicsPathWinding; +})(); + +module.exports = GraphicsPathWinding; + + +},{}],"awayjs-core/lib/core/base/Graphics":[function(require,module,exports){ +/** +* The Graphics class contains a set of methods that you can use to create a +* vector shape. Display objects that support drawing include Sprite and Shape +* objects. Each of these classes includes agraphics
property
+* that is a Graphics object. The following are among those helper functions
+* provided for ease of use: drawRect()
,
+* drawRoundRect()
, drawCircle()
, and
+* drawEllipse()
.
+*
+* You cannot create a Graphics object directly from ActionScript code. If
+* you call new Graphics()
, an exception is thrown.
The Graphics class is final; it cannot be subclassed.
+*/ +var Graphics = (function () { + function Graphics() { + } + /** + * Fills a drawing area with a bitmap image. The bitmap can be repeated or + * tiled to fill the area. The fill remains in effect until you call the + *beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
true
, the bitmap image repeats in a tiled
+ * pattern. If false
, the bitmap image does not
+ * repeat, and the edges of the bitmap are used for any fill
+ * area that extends beyond the bitmap.
+ *
+ * For example, consider the following bitmap(a 20 x + * 20-pixel checkerboard pattern):
+ * + *When repeat
is set to true
(as
+ * in the following example), the bitmap fill repeats the
+ * bitmap:
When repeat
is set to false
,
+ * the bitmap fill uses the edge pixels for the fill area
+ * outside the bitmap:
false
, upscaled bitmap images are rendered
+ * by using a nearest-neighbor algorithm and look pixelated. If
+ * true
, upscaled bitmap images are rendered by
+ * using a bilinear algorithm. Rendering by using the nearest
+ * neighbor algorithm is faster.
+ */
+ Graphics.prototype.beginBitmapFill = function (bitmap, matrix, repeat, smooth) {
+ if (typeof matrix === "undefined") { matrix = null; }
+ if (typeof repeat === "undefined") { repeat = true; }
+ if (typeof smooth === "undefined") { smooth = false; }
+ };
+
+ /**
+ * Specifies a simple one-color fill that subsequent calls to other Graphics
+ * methods(such as lineTo()
or drawCircle()
) use
+ * when drawing. The fill remains in effect until you call the
+ * beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
lineTo()
or drawCircle()
) for
+ * the object. The fill remains in effect until you call the
+ * beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
GradientType.LINEAR
or
+ * GradientType.RADIAL
.
+ * @param colors An array of RGB hexadecimal color values used
+ * in the gradient; for example, red is 0xFF0000,
+ * blue is 0x0000FF, and so on. You can specify
+ * up to 15 colors. For each color, specify a
+ * corresponding value in the alphas and ratios
+ * parameters.
+ * @param alphas An array of alpha values for the corresponding
+ * colors in the colors array; valid values are 0
+ * to 1. If the value is less than 0, the default
+ * is 0. If the value is greater than 1, the
+ * default is 1.
+ * @param ratios An array of color distribution ratios; valid
+ * values are 0-255. This value defines the
+ * percentage of the width where the color is
+ * sampled at 100%. The value 0 represents the
+ * left position in the gradient box, and 255
+ * represents the right position in the gradient
+ * box.
+ * @param matrix A transformation matrix as defined by the
+ * flash.geom.Matrix class. The flash.geom.Matrix
+ * class includes a
+ * createGradientBox()
method, which
+ * lets you conveniently set up the matrix for use
+ * with the beginGradientFill()
+ * method.
+ * @param spreadMethod A value from the SpreadMethod class that
+ * specifies which spread method to use, either:
+ * SpreadMethod.PAD
,
+ * SpreadMethod.REFLECT
, or
+ * SpreadMethod.REPEAT
.
+ *
+ * For example, consider a simple linear + * gradient between two colors:
+ * + *This example uses
+ * SpreadMethod.PAD
for the spread
+ * method, and the gradient fill looks like the
+ * following:
If you use SpreadMethod.REFLECT
+ * for the spread method, the gradient fill looks
+ * like the following:
If you use SpreadMethod.REPEAT
+ * for the spread method, the gradient fill looks
+ * like the following:
InterpolationMethod.LINEAR_RGB
or
+ * InterpolationMethod.RGB
+ *
+ * For example, consider a simple linear
+ * gradient between two colors(with the
+ * spreadMethod
parameter set to
+ * SpreadMethod.REFLECT
). The
+ * different interpolation methods affect the
+ * appearance as follows:
focalPointRatio
set to 0.75:
+ * @throws ArgumentError If the type
parameter is not valid.
+ */
+ Graphics.prototype.beginGradientFill = function (type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio) {
+ if (typeof matrix === "undefined") { matrix = null; }
+ if (typeof spreadMethod === "undefined") { spreadMethod = "pad"; }
+ if (typeof interpolationMethod === "undefined") { interpolationMethod = "rgb"; }
+ if (typeof focalPointRatio === "undefined") { focalPointRatio = 0; }
+ };
+
+ /**
+ * Specifies a shader fill used by subsequent calls to other Graphics methods
+ * (such as lineTo()
or drawCircle()
) for the
+ * object. The fill remains in effect until you call the
+ * beginFill()
, beginBitmapFill()
,
+ * beginGradientFill()
, or beginShaderFill()
+ * method. Calling the clear()
method clears the fill.
+ *
+ * The application renders the fill whenever three or more points are
+ * drawn, or when the endFill()
method is called.
Shader fills are not supported under GPU rendering; filled areas will + * be colored cyan.
+ * + * @param shader The shader to use for the fill. This Shader instance is not + * required to specify an image input. However, if an image + * input is specified in the shader, the input must be provided + * manually. To specify the input, set theinput
+ * property of the corresponding ShaderInput property of the
+ * Shader.data
property.
+ *
+ * When you pass a Shader instance as an argument the shader + * is copied internally. The drawing fill operation uses that + * internal copy, not a reference to the original shader. Any + * changes made to the shader, such as changing a parameter + * value, input, or bytecode, are not applied to the copied + * shader that's used for the fill.
+ * @param matrix A matrix object(of the flash.geom.Matrix class), which you + * can use to define transformations on the shader. For + * example, you can use the following matrix to rotate a shader + * by 45 degrees(pi/4 radians): + * + *The coordinates received in the shader are based on the
+ * matrix that is specified for the matrix
+ * parameter. For a default(null
) matrix, the
+ * coordinates in the shader are local pixel coordinates which
+ * can be used to sample an input.
pixel3
or pixel4
output).
+ * @throws ArgumentError When the shader specifies an image input that isn't
+ * provided.
+ * @throws ArgumentError When a ByteArray or Vector.width
and
+ * height
properties aren't specified for
+ * the ShaderInput, or the specified values don't match
+ * the amount of data in the input object. See the
+ * ShaderInput.input
property for more
+ * information.
+ */
+ // public beginShaderFill(shader:Shader, matrix:Matrix = null)
+ // {
+ //
+ // }
+ /**
+ * Clears the graphics that were drawn to this Graphics object, and resets
+ * fill and line style settings.
+ *
+ */
+ Graphics.prototype.clear = function () {
+ };
+
+ /**
+ * Copies all of drawing commands from the source Graphics object into the
+ * calling Graphics object.
+ *
+ * @param sourceGraphics The Graphics object from which to copy the drawing
+ * commands.
+ */
+ Graphics.prototype.copyFrom = function (sourceGraphics) {
+ };
+
+ /**
+ * Draws a cubic Bezier curve from the current drawing position to the
+ * specified anchor point. Cubic Bezier curves consist of two anchor points
+ * and two control points. The curve interpolates the two anchor points and
+ * curves toward the two control points.
+ *
+ * The four points you use to draw a cubic Bezier curve with the
+ * cubicCurveTo()
method are as follows:
+ *
+ * controlX1
and controlY1
parameters
+ * specify the first control point.controlX2
and controlY2
parameters
+ * specify the second control point.cubicCurveTo()
method before calling the
+ * moveTo()
method, your curve starts at position (0, 0).
+ *
+ * If the cubicCurveTo()
method succeeds, the Flash runtime sets
+ * the current drawing position to (anchorX
,
+ * anchorY
). If the cubicCurveTo()
method fails,
+ * the current drawing position remains unchanged.
+ *
+ * If your movie clip contains content created with the Flash drawing tools,
+ * the results of calls to the cubicCurveTo()
method are drawn
+ * underneath that content.
+ *
+ * @param controlX1 Specifies the horizontal position of the first control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlY1 Specifies the vertical position of the first control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlX2 Specifies the horizontal position of the second control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param controlY2 Specifies the vertical position of the second control
+ * point relative to the registration point of the parent
+ * display object.
+ * @param anchorX Specifies the horizontal position of the anchor point
+ * relative to the registration point of the parent display
+ * object.
+ * @param anchorY Specifies the vertical position of the anchor point
+ * relative to the registration point of the parent display
+ * object.
+ */
+ Graphics.prototype.cubicCurveTo = function (controlX1, controlY1, controlX2, controlY2, anchorX, anchorY) {
+ };
+
+ /**
+ * Draws a curve using the current line style from the current drawing
+ * position to(anchorX, anchorY) and using the control point that
+ * (controlX
, controlY
) specifies. The current
+ * drawing position is then set to(anchorX
,
+ * anchorY
). If the movie clip in which you are drawing contains
+ * content created with the Flash drawing tools, calls to the
+ * curveTo()
method are drawn underneath this content. If you
+ * call the curveTo()
method before any calls to the
+ * moveTo()
method, the default of the current drawing position
+ * is(0, 0). If any of the parameters are missing, this method fails and the
+ * current drawing position is not changed.
+ *
+ * The curve drawn is a quadratic Bezier curve. Quadratic Bezier curves + * consist of two anchor points and one control point. The curve interpolates + * the two anchor points and curves toward the control point.
+ * + * @param controlX A number that specifies the horizontal position of the + * control point relative to the registration point of the + * parent display object. + * @param controlY A number that specifies the vertical position of the + * control point relative to the registration point of the + * parent display object. + * @param anchorX A number that specifies the horizontal position of the + * next anchor point relative to the registration point of + * the parent display object. + * @param anchorY A number that specifies the vertical position of the next + * anchor point relative to the registration point of the + * parent display object. + */ + Graphics.prototype.curveTo = function (controlX, controlY, anchorX, anchorY) { + }; + + /** + * Draws a circle. Set the line style, fill, or both before you call the + *drawCircle()
method, by calling the linestyle()
,
+ * lineGradientStyle()
, beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method.
+ *
+ * @param x The x location of the center of the circle relative
+ * to the registration point of the parent display object(in
+ * pixels).
+ * @param y The y location of the center of the circle relative
+ * to the registration point of the parent display object(in
+ * pixels).
+ * @param radius The radius of the circle(in pixels).
+ */
+ Graphics.prototype.drawCircle = function (x, y, radius) {
+ };
+
+ /**
+ * Draws an ellipse. Set the line style, fill, or both before you call the
+ * drawEllipse()
method, by calling the
+ * linestyle()
, lineGradientStyle()
,
+ * beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method.
+ *
+ * @param x The x location of the top-left of the bounding-box of
+ * the ellipse relative to the registration point of the parent
+ * display object(in pixels).
+ * @param y The y location of the top left of the bounding-box of
+ * the ellipse relative to the registration point of the parent
+ * display object(in pixels).
+ * @param width The width of the ellipse(in pixels).
+ * @param height The height of the ellipse(in pixels).
+ */
+ Graphics.prototype.drawEllipse = function (x, y, width, height) {
+ };
+
+ /**
+ * Submits a series of IGraphicsData instances for drawing. This method
+ * accepts a Vector containing objects including paths, fills, and strokes
+ * that implement the IGraphicsData interface. A Vector of IGraphicsData
+ * instances can refer to a part of a shape, or a complex fully defined set
+ * of data for rendering a complete shape.
+ *
+ * Graphics paths can contain other graphics paths. If the
+ * graphicsData
Vector includes a path, that path and all its
+ * sub-paths are rendered during this operation.
drawPath()
+ * method uses vector arrays to consolidate individual moveTo()
,
+ * lineTo()
, and curveTo()
drawing commands into a
+ * single call. The drawPath()
method parameters combine drawing
+ * commands with x- and y-coordinate value pairs and a drawing direction. The
+ * drawing commands are values from the GraphicsPathCommand class. The x- and
+ * y-coordinate value pairs are Numbers in an array where each pair defines a
+ * coordinate location. The drawing direction is a value from the
+ * GraphicsPathWinding class.
+ *
+ * Generally, drawings render faster with drawPath()
than
+ * with a series of individual lineTo()
and
+ * curveTo()
methods.
The drawPath()
method uses a uses a floating computation
+ * so rotation and scaling of shapes is more accurate and gives better
+ * results. However, curves submitted using the drawPath()
+ * method can have small sub-pixel alignment errors when used in conjunction
+ * with the lineTo()
and curveTo()
methods.
The drawPath()
method also uses slightly different rules
+ * for filling and drawing lines. They are:
drawRect()
method, by calling the linestyle()
,
+ * lineGradientStyle()
, beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method.
+ *
+ * @param x A number indicating the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number indicating the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param width The width of the rectangle(in pixels).
+ * @param height The height of the rectangle(in pixels).
+ * @throws ArgumentError If the width
or height
+ * parameters are not a number
+ * (Number.NaN
).
+ */
+ Graphics.prototype.drawRect = function (x, y, width, height) {
+ };
+
+ /**
+ * Draws a rounded rectangle. Set the line style, fill, or both before you
+ * call the drawRoundRect()
method, by calling the
+ * linestyle()
, lineGradientStyle()
,
+ * beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method.
+ *
+ * @param x A number indicating the horizontal position relative
+ * to the registration point of the parent display
+ * object(in pixels).
+ * @param y A number indicating the vertical position relative to
+ * the registration point of the parent display object
+ * (in pixels).
+ * @param width The width of the round rectangle(in pixels).
+ * @param height The height of the round rectangle(in pixels).
+ * @param ellipseWidth The width of the ellipse used to draw the rounded
+ * corners(in pixels).
+ * @param ellipseHeight The height of the ellipse used to draw the rounded
+ * corners(in pixels). Optional; if no value is
+ * specified, the default value matches that provided
+ * for the ellipseWidth
parameter.
+ * @throws ArgumentError If the width
, height
,
+ * ellipseWidth
or
+ * ellipseHeight
parameters are not a
+ * number(Number.NaN
).
+ */
+ Graphics.prototype.drawRoundRect = function (x, y, width, height, ellipseWidth, ellipseHeight) {
+ if (typeof ellipseHeight === "undefined") { ellipseHeight = NaN; }
+ };
+
+ //public drawRoundRectComplex(x:Float, y:Float, width:Float, height:Float, topLeftRadius:Float, topRightRadius:Float, bottomLeftRadius:Float, bottomRightRadius:Float):Void;
+ /**
+ * Renders a set of triangles, typically to distort bitmaps and give them a
+ * three-dimensional appearance. The drawTriangles()
method maps
+ * either the current fill, or a bitmap fill, to the triangle faces using a
+ * set of(u,v) coordinates.
+ *
+ * Any type of fill can be used, but if the fill has a transform matrix + * that transform matrix is ignored.
+ * + * A uvtData
parameter improves texture mapping when a
+ * bitmap fill is used.
beginFill()
, beginGradientFill()
, or
+ * beginBitmapFill()
method. Flash uses the fill that was
+ * specified in the previous call to the beginFill()
,
+ * beginGradientFill()
, or beginBitmapFill()
+ * method. If the current drawing position does not equal the previous
+ * position specified in a moveTo()
method and a fill is
+ * defined, the path is closed with a line and then filled.
+ *
+ */
+ Graphics.prototype.endFill = function () {
+ };
+
+ /**
+ * Specifies a bitmap to use for the line stroke when drawing lines.
+ *
+ * The bitmap line style is used for subsequent calls to Graphics methods
+ * such as the lineTo()
method or the drawCircle()
+ * method. The line style remains in effect until you call the
+ * lineStyle()
or lineGradientStyle()
methods, or
+ * the lineBitmapStyle()
method again with different parameters.
+ *
You can call the lineBitmapStyle()
method in the middle of
+ * drawing a path to specify different styles for different line segments
+ * within a path.
Call the lineStyle()
method before you call the
+ * lineBitmapStyle()
method to enable a stroke, or else the
+ * value of the line style is undefined
.
Calls to the clear()
method set the line style back to
+ * undefined
.
The gradient line style is used for subsequent calls to Graphics
+ * methods such as the lineTo()
methods or the
+ * drawCircle()
method. The line style remains in effect until
+ * you call the lineStyle()
or lineBitmapStyle()
+ * methods, or the lineGradientStyle()
method again with
+ * different parameters.
You can call the lineGradientStyle()
method in the middle
+ * of drawing a path to specify different styles for different line segments
+ * within a path.
Call the lineStyle()
method before you call the
+ * lineGradientStyle()
method to enable a stroke, or else the
+ * value of the line style is undefined
.
Calls to the clear()
method set the line style back to
+ * undefined
.
createGradientBox()
method, which
+ * lets you conveniently set up the matrix for use
+ * with the lineGradientStyle()
+ * method.
+ * @param spreadMethod A value from the SpreadMethod class that
+ * specifies which spread method to use:
+ * @param interpolationMethod A value from the InterpolationMethod class that
+ * specifies which value to use. For example,
+ * consider a simple linear gradient between two
+ * colors(with the spreadMethod
+ * parameter set to
+ * SpreadMethod.REFLECT
). The
+ * different interpolation methods affect the
+ * appearance as follows:
+ * @param focalPointRatio A number that controls the location of the
+ * focal point of the gradient. The value 0 means
+ * the focal point is in the center. The value 1
+ * means the focal point is at one border of the
+ * gradient circle. The value -1 means that the
+ * focal point is at the other border of the
+ * gradient circle. Values less than -1 or greater
+ * than 1 are rounded to -1 or 1. The following
+ * image shows a gradient with a
+ * focalPointRatio
of -0.75:
+ */
+ Graphics.prototype.lineGradientStyle = function (type, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio) {
+ if (typeof matrix === "undefined") { matrix = null; }
+ if (typeof spreadMethod === "undefined") { spreadMethod = null; }
+ if (typeof interpolationMethod === "undefined") { interpolationMethod = null; }
+ if (typeof focalPointRatio === "undefined") { focalPointRatio = 0; }
+ };
+
+ /**
+ * Specifies a shader to use for the line stroke when drawing lines.
+ *
+ * The shader line style is used for subsequent calls to Graphics methods
+ * such as the lineTo()
method or the drawCircle()
+ * method. The line style remains in effect until you call the
+ * lineStyle()
or lineGradientStyle()
methods, or
+ * the lineBitmapStyle()
method again with different parameters.
+ *
You can call the lineShaderStyle()
method in the middle of
+ * drawing a path to specify different styles for different line segments
+ * within a path.
Call the lineStyle()
method before you call the
+ * lineShaderStyle()
method to enable a stroke, or else the
+ * value of the line style is undefined
.
Calls to the clear()
method set the line style back to
+ * undefined
.
lineTo()
method or the drawCircle()
+ * method. The line style remains in effect until you call the
+ * lineGradientStyle()
method, the
+ * lineBitmapStyle()
method, or the lineStyle()
+ * method with different parameters.
+ *
+ * You can call the lineStyle()
method in the middle of
+ * drawing a path to specify different styles for different line segments
+ * within the path.
Note: Calls to the clear()
method set the line
+ * style back to undefined
.
Note: Flash Lite 4 supports only the first three parameters
+ * (thickness
, color
, and alpha
).
pixelHinting
set to true
,
+ * line widths are adjusted to full pixel widths. With
+ * pixelHinting
set to false
,
+ * disjoints can appear for curves and straight lines.
+ * For example, the following illustrations show how
+ * Flash Player or Adobe AIR renders two rounded
+ * rectangles that are identical, except that the
+ * pixelHinting
parameter used in the
+ * lineStyle()
method is set differently
+ * (the images are scaled by 200%, to emphasize the
+ * difference):
+ *
+ * If a value is not supplied, the line does not use + * pixel hinting.
+ * @param scaleMode (Not supported in Flash Lite 4) A value from the + * LineScaleMode class that specifies which scale mode to + * use: + *LineScaleMode.NORMAL
- Always
+ * scale the line thickness when the object is scaled
+ * (the default). LineScaleMode.NONE
- Never scale
+ * the line thickness. LineScaleMode.VERTICAL
- Do not
+ * scale the line thickness if the object is scaled
+ * vertically only. For example, consider the
+ * following circles, drawn with a one-pixel line, and
+ * each with the scaleMode
parameter set to
+ * LineScaleMode.VERTICAL
. The circle on the
+ * left is scaled vertically only, and the circle on the
+ * right is scaled both vertically and horizontally:
+ * LineScaleMode.HORIZONTAL
- Do not
+ * scale the line thickness if the object is scaled
+ * horizontally only. For example, consider the
+ * following circles, drawn with a one-pixel line, and
+ * each with the scaleMode
parameter set to
+ * LineScaleMode.HORIZONTAL
. The circle on
+ * the left is scaled horizontally only, and the circle
+ * on the right is scaled both vertically and
+ * horizontally: CapsStyle.NONE
,
+ * CapsStyle.ROUND
, and
+ * CapsStyle.SQUARE
. If a value is not
+ * indicated, Flash uses round caps.
+ *
+ * For example, the following illustrations show the
+ * different capsStyle
settings. For each
+ * setting, the illustration shows a blue line with a
+ * thickness of 30(for which the capsStyle
+ * applies), and a superimposed black line with a
+ * thickness of 1(for which no capsStyle
+ * applies):
JointStyle.BEVEL
,
+ * JointStyle.MITER
, and
+ * JointStyle.ROUND
. If a value is not
+ * indicated, Flash uses round joints.
+ *
+ * For example, the following illustrations show the
+ * different joints
settings. For each
+ * setting, the illustration shows an angled blue line
+ * with a thickness of 30(for which the
+ * jointStyle
applies), and a superimposed
+ * angled black line with a thickness of 1(for which no
+ * jointStyle
applies):
Note: For joints
set to
+ * JointStyle.MITER
, you can use the
+ * miterLimit
parameter to limit the length
+ * of the miter.
jointStyle
is set to
+ * "miter"
. The miterLimit
+ * value represents the length that a miter can extend
+ * beyond the point at which the lines meet to form a
+ * joint. The value expresses a factor of the line
+ * thickness
. For example, with a
+ * miterLimit
factor of 2.5 and a
+ * thickness
of 10 pixels, the miter is cut
+ * off at 25 pixels.
+ *
+ * For example, consider the following angled lines,
+ * each drawn with a thickness
of 20, but
+ * with miterLimit
set to 1, 2, and 4.
+ * Superimposed are black reference lines showing the
+ * meeting points of the joints:
Notice that a given miterLimit
value
+ * has a specific maximum angle for which the miter is
+ * cut off. The following table lists some examples:
x
, y
); the current drawing position
+ * is then set to(x
, y
). If the display object in
+ * which you are drawing contains content that was created with the Flash
+ * drawing tools, calls to the lineTo()
method are drawn
+ * underneath the content. If you call lineTo()
before any calls
+ * to the moveTo()
method, the default position for the current
+ * drawing is(0, 0). If any of the parameters are missing, this
+ * method fails and the current drawing position is not changed.
+ *
+ * @param x A number that indicates the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number that indicates the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ */
+ Graphics.prototype.lineTo = function (x, y) {
+ };
+
+ /**
+ * Moves the current drawing position to(x
, y
). If
+ * any of the parameters are missing, this method fails and the current
+ * drawing position is not changed.
+ *
+ * @param x A number that indicates the horizontal position relative to the
+ * registration point of the parent display object(in pixels).
+ * @param y A number that indicates the vertical position relative to the
+ * registration point of the parent display object(in pixels).
+ */
+ Graphics.prototype.moveTo = function (x, y) {
+ };
+ return Graphics;
+})();
+
+module.exports = Graphics;
+
+
+},{}],"awayjs-core/lib/core/base/IBitmapDrawable":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/IGraphicsData":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/IMaterialOwner":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/IStage":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/ISubMeshClass":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/ISubMesh":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/base/InterpolationMethod":[function(require,module,exports){
+/**
+* The InterpolationMethod class provides values for the
+* interpolationMethod
parameter in the
+* Graphics.beginGradientFill()
and
+* Graphics.lineGradientStyle()
methods. This parameter
+* determines the RGB space to use when rendering the gradient.
+*/
+var InterpolationMethod = (function () {
+ function InterpolationMethod() {
+ }
+ InterpolationMethod.LINEAR_RGB = "linearRGB";
+
+ InterpolationMethod.RGB = "rgb";
+ return InterpolationMethod;
+})();
+
+module.exports = InterpolationMethod;
+
+
+},{}],"awayjs-core/lib/core/base/JointStyle":[function(require,module,exports){
+/**
+* The JointStyle class is an enumeration of constant values that specify the
+* joint style to use in drawing lines. These constants are provided for use
+* as values in the joints
parameter of the
+* flash.display.Graphics.lineStyle()
method. The method supports
+* three types of joints: miter, round, and bevel, as the following example
+* shows:
+*/
+var JointStyle = (function () {
+ function JointStyle() {
+ }
+ JointStyle.BEVEL = "bevel";
+
+ JointStyle.MITER = "miter";
+
+ JointStyle.ROUND = "round";
+ return JointStyle;
+})();
+
+module.exports = JointStyle;
+
+
+},{}],"awayjs-core/lib/core/base/LightBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var LightEvent = require("awayjs-core/lib/events/LightEvent");
+
+var LightBase = (function (_super) {
+ __extends(LightBase, _super);
+ function LightBase() {
+ _super.call(this);
+ this._color = 0xffffff;
+ this._colorR = 1;
+ this._colorG = 1;
+ this._colorB = 1;
+ this._ambientColor = 0xffffff;
+ this._ambient = 0;
+ this._iAmbientR = 0;
+ this._iAmbientG = 0;
+ this._iAmbientB = 0;
+ this._specular = 1;
+ this._iSpecularR = 1;
+ this._iSpecularG = 1;
+ this._iSpecularB = 1;
+ this._diffuse = 1;
+ this._iDiffuseR = 1;
+ this._iDiffuseG = 1;
+ this._iDiffuseB = 1;
+ this._castsShadows = false;
+ }
+ Object.defineProperty(LightBase.prototype, "castsShadows", {
+ get: function () {
+ return this._castsShadows;
+ },
+ set: function (value) {
+ if (this._castsShadows == value)
+ return;
+
+ this._castsShadows = value;
+
+ if (value) {
+ if (this._shadowMapper == null)
+ this._shadowMapper = this.pCreateShadowMapper();
+
+ this._shadowMapper.light = this;
+ } else {
+ this._shadowMapper.dispose();
+ this._shadowMapper = null;
+ }
+
+ //*/
+ this.dispatchEvent(new LightEvent(LightEvent.CASTS_SHADOW_CHANGE));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ LightBase.prototype.pCreateShadowMapper = function () {
+ throw new AbstractMethodError();
+ };
+
+ Object.defineProperty(LightBase.prototype, "specular", {
+ get: function () {
+ return this._specular;
+ },
+ set: function (value) {
+ if (value < 0)
+ value = 0;
+
+ this._specular = value;
+ this.updateSpecular();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(LightBase.prototype, "diffuse", {
+ get: function () {
+ return this._diffuse;
+ },
+ set: function (value) {
+ if (value < 0)
+ value = 0;
+
+ this._diffuse = value;
+ this.updateDiffuse();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(LightBase.prototype, "color", {
+ get: function () {
+ return this._color;
+ },
+ set: function (value) {
+ this._color = value;
+ this._colorR = ((this._color >> 16) & 0xff) / 0xff;
+ this._colorG = ((this._color >> 8) & 0xff) / 0xff;
+ this._colorB = (this._color & 0xff) / 0xff;
+
+ this.updateDiffuse();
+ this.updateSpecular();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(LightBase.prototype, "ambient", {
+ get: function () {
+ return this._ambient;
+ },
+ set: function (value) {
+ if (value < 0)
+ value = 0;
+ else if (value > 1)
+ value = 1;
+
+ this._ambient = value;
+ this.updateAmbient();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(LightBase.prototype, "ambientColor", {
+ get: function () {
+ return this._ambientColor;
+ },
+ set: function (value) {
+ this._ambientColor = value;
+ this.updateAmbient();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ LightBase.prototype.updateAmbient = function () {
+ this._iAmbientR = ((this._ambientColor >> 16) & 0xff) / 0xff * this._ambient;
+ this._iAmbientG = ((this._ambientColor >> 8) & 0xff) / 0xff * this._ambient;
+ this._iAmbientB = (this._ambientColor & 0xff) / 0xff * this._ambient;
+ };
+
+ LightBase.prototype.iGetObjectProjectionMatrix = function (entity, camera, target) {
+ if (typeof target === "undefined") { target = null; }
+ throw new AbstractMethodError();
+ };
+
+ Object.defineProperty(LightBase.prototype, "assetType", {
+ //@override
+ get: function () {
+ return AssetType.LIGHT;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ LightBase.prototype.updateSpecular = function () {
+ this._iSpecularR = this._colorR * this._specular;
+ this._iSpecularG = this._colorG * this._specular;
+ this._iSpecularB = this._colorB * this._specular;
+ };
+
+ LightBase.prototype.updateDiffuse = function () {
+ this._iDiffuseR = this._colorR * this._diffuse;
+ this._iDiffuseG = this._colorG * this._diffuse;
+ this._iDiffuseB = this._colorB * this._diffuse;
+ };
+
+ Object.defineProperty(LightBase.prototype, "shadowMapper", {
+ get: function () {
+ return this._shadowMapper;
+ },
+ set: function (value) {
+ this._shadowMapper = value;
+ this._shadowMapper.light = this;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ return LightBase;
+})(DisplayObjectContainer);
+
+module.exports = LightBase;
+
+
+},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/LightEvent":undefined}],"awayjs-core/lib/core/base/LineScaleMode":[function(require,module,exports){
+/**
+* The LineScaleMode class provides values for the scaleMode
+* parameter in the Graphics.lineStyle()
method.
+*/
+var LineScaleMode = (function () {
+ function LineScaleMode() {
+ }
+ LineScaleMode.HORIZONTAL = "horizontal";
+
+ LineScaleMode.NONE = "none";
+
+ LineScaleMode.NORMAL = "normal";
+
+ LineScaleMode.VERTICAL = "vertical";
+ return LineScaleMode;
+})();
+
+module.exports = LineScaleMode;
+
+
+},{}],"awayjs-core/lib/core/base/LineSubGeometry":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var LineSubMesh = require("awayjs-core/lib/core/base/LineSubMesh");
+var SubGeometryBase = require("awayjs-core/lib/core/base/SubGeometryBase");
+var TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var SubGeometryEvent = require("awayjs-core/lib/events/SubGeometryEvent");
+
+/**
+* @class LineSubGeometry
+*/
+var LineSubGeometry = (function (_super) {
+ __extends(LineSubGeometry, _super);
+ /**
+ *
+ */
+ function LineSubGeometry() {
+ _super.call(this, true);
+ this._positionsDirty = true;
+ this._boundingPositionDirty = true;
+ this._thicknessDirty = true;
+ this._colorsDirty = true;
+
+ this._pSubMeshClass = LineSubMesh;
+ }
+ LineSubGeometry.prototype._pUpdateStrideOffset = function () {
+ this._pOffset[LineSubGeometry.VERTEX_DATA] = 0;
+
+ var stride = 0;
+ this._pOffset[LineSubGeometry.START_POSITION_DATA] = stride;
+ stride += 3;
+
+ this._pOffset[LineSubGeometry.END_POSITION_DATA] = stride;
+ stride += 3;
+
+ this._pOffset[LineSubGeometry.THICKNESS_DATA] = stride;
+ stride += 1;
+
+ this._pOffset[LineSubGeometry.COLOR_DATA] = stride;
+ stride += 4;
+
+ this._pStride[LineSubGeometry.VERTEX_DATA] = stride;
+ this._pStride[LineSubGeometry.START_POSITION_DATA] = stride;
+ this._pStride[LineSubGeometry.END_POSITION_DATA] = stride;
+ this._pStride[LineSubGeometry.THICKNESS_DATA] = stride;
+ this._pStride[LineSubGeometry.COLOR_DATA] = stride;
+
+ var len = this._pNumVertices * stride;
+
+ if (this._pVertices == null)
+ this._pVertices = new Array(len);
+ else if (this._pVertices.length != len)
+ this._pVertices.length = len;
+
+ this._pStrideOffsetDirty = false;
+ };
+
+ Object.defineProperty(LineSubGeometry.prototype, "vertices", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._positionsDirty)
+ this.updatePositions(this._startPositions, this._endPositions);
+
+ if (this._thicknessDirty)
+ this.updateThickness(this._thickness);
+
+ if (this._colorsDirty)
+ this.updateColors(this._startColors, this._endColors);
+
+ return this._pVertices;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "startPositions", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._positionsDirty)
+ this.updatePositions(this._startPositions, this._endPositions);
+
+ return this._startPositions;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "endPositions", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._positionsDirty)
+ this.updatePositions(this._startPositions, this._endPositions);
+
+ return this._endPositions;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "thickness", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._thicknessDirty)
+ this.updateThickness(this._thickness);
+
+ return this._thickness;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "startColors", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._colorsDirty)
+ this.updateColors(this._startColors, this._endColors);
+
+ return this._startColors;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "endColors", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._colorsDirty)
+ this.updateColors(this._startColors, this._endColors);
+
+ return this._endColors;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubGeometry.prototype, "numSegments", {
+ /**
+ * The total amount of segments in the TriangleSubGeometry.
+ */
+ get: function () {
+ return this._numSegments;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ LineSubGeometry.prototype.getBoundingPositions = function () {
+ if (this._boundingPositionDirty)
+ this._boundingPositions = this.startPositions.concat(this.endPositions);
+
+ return this._boundingPositions;
+ };
+
+ /**
+ *
+ */
+ LineSubGeometry.prototype.updatePositions = function (startValues, endValues) {
+ var i;
+ var j;
+ var values;
+ var index;
+ var stride;
+ var positions;
+ var indices;
+
+ this._startPositions = startValues;
+
+ if (this._startPositions == null)
+ this._startPositions = new Array();
+
+ this._endPositions = endValues;
+
+ if (this._endPositions == null)
+ this._endPositions = new Array();
+
+ this._boundingPositionDirty = true;
+
+ this._numSegments = this._startPositions.length / 3;
+
+ this._pNumVertices = this._numSegments * 4;
+
+ var lenV = this._pNumVertices * this.getStride(LineSubGeometry.VERTEX_DATA);
+
+ if (this._pVertices == null)
+ this._pVertices = new Array(lenV);
+ else if (this._pVertices.length != lenV)
+ this._pVertices.length = lenV;
+
+ i = 0;
+ j = 0;
+ index = this.getOffset(LineSubGeometry.START_POSITION_DATA);
+ stride = this.getStride(LineSubGeometry.START_POSITION_DATA);
+ positions = this._pVertices;
+ indices = new Array();
+
+ while (i < startValues.length) {
+ values = (index / stride & 1) ? endValues : startValues;
+ positions[index] = values[i];
+ positions[index + 1] = values[i + 1];
+ positions[index + 2] = values[i + 2];
+
+ values = (index / stride & 1) ? startValues : endValues;
+ positions[index + 3] = values[i];
+ positions[index + 4] = values[i + 1];
+ positions[index + 5] = values[i + 2];
+
+ if (++j == 4) {
+ var o = index / stride - 3;
+ indices.push(o, o + 1, o + 2, o + 3, o + 2, o + 1);
+ j = 0;
+ i += 3;
+ }
+
+ index += stride;
+ }
+
+ this.updateIndices(indices);
+
+ this.pInvalidateBounds();
+
+ this.notifyPositionsUpdate();
+
+ this._positionsDirty = false;
+ };
+
+ /**
+ * Updates the thickness.
+ */
+ LineSubGeometry.prototype.updateThickness = function (values) {
+ var i;
+ var j;
+ var index;
+ var offset;
+ var stride;
+ var thickness;
+
+ this._thickness = values;
+
+ if (values != null) {
+ i = 0;
+ j = 0;
+ offset = this.getOffset(LineSubGeometry.THICKNESS_DATA);
+ stride = this.getStride(LineSubGeometry.THICKNESS_DATA);
+ thickness = this._pVertices;
+
+ index = offset;
+ while (i < values.length) {
+ thickness[index] = (Math.floor(0.5 * (index - offset) / stride + 0.5) & 1) ? -values[i] : values[i];
+
+ if (++j == 4) {
+ j = 0;
+ i++;
+ }
+ index += stride;
+ }
+ }
+
+ this.notifyThicknessUpdate();
+
+ this._thicknessDirty = false;
+ };
+
+ /**
+ *
+ */
+ LineSubGeometry.prototype.updateColors = function (startValues, endValues) {
+ var i;
+ var j;
+ var values;
+ var index;
+ var offset;
+ var stride;
+ var colors;
+
+ this._startColors = startValues;
+
+ this._endColors = endValues;
+
+ //default to white
+ if (this._startColors == null) {
+ this._startColors = new Array(this._numSegments * 4);
+
+ i = 0;
+ while (i < this._startColors.length)
+ this._startColors[i++] = 1;
+ }
+
+ if (this._endColors == null) {
+ this._endColors = new Array(this._numSegments * 4);
+
+ i = 0;
+ while (i < this._endColors.length)
+ this._endColors[i++] = 1;
+ }
+
+ i = 0;
+ j = 0;
+ offset = this.getOffset(LineSubGeometry.COLOR_DATA);
+ stride = this.getStride(LineSubGeometry.COLOR_DATA);
+ colors = this._pVertices;
+
+ index = offset;
+
+ while (i < this._startColors.length) {
+ values = ((index - offset) / stride & 1) ? this._endColors : this._startColors;
+ colors[index] = values[i];
+ colors[index + 1] = values[i + 1];
+ colors[index + 2] = values[i + 2];
+ colors[index + 3] = values[i + 3];
+
+ if (++j == 4) {
+ j = 0;
+ i += 4;
+ }
+
+ index += stride;
+ }
+
+ this.notifyColorsUpdate();
+
+ this._colorsDirty = false;
+ };
+
+ /**
+ *
+ */
+ LineSubGeometry.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ this._startPositions = null;
+ this._endPositions = null;
+ this._thickness = null;
+ this._startColors = null;
+ this._endColors = null;
+ };
+
+ /**
+ * @protected
+ */
+ LineSubGeometry.prototype.pInvalidateBounds = function () {
+ if (this.parentGeometry)
+ this.parentGeometry.iInvalidateBounds(this);
+ };
+
+ /**
+ * Clones the current object
+ * @return An exact duplicate of the current object.
+ */
+ LineSubGeometry.prototype.clone = function () {
+ var clone = new LineSubGeometry();
+ clone.updateIndices(this._pIndices.concat());
+ clone.updatePositions(this._startPositions.concat(), this._endPositions.concat());
+ clone.updateThickness(this._thickness.concat());
+ clone.updatePositions(this._startPositions.concat(), this._endPositions.concat());
+
+ return clone;
+ };
+
+ LineSubGeometry.prototype._pNotifyVerticesUpdate = function () {
+ this._pStrideOffsetDirty = true;
+
+ this.notifyPositionsUpdate();
+ this.notifyThicknessUpdate();
+ this.notifyColorsUpdate();
+ };
+
+ LineSubGeometry.prototype.notifyPositionsUpdate = function () {
+ if (this._positionsDirty)
+ return;
+
+ this._positionsDirty = true;
+
+ if (!this._positionsUpdated)
+ this._positionsUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, TriangleSubGeometry.POSITION_DATA);
+
+ this.dispatchEvent(this._positionsUpdated);
+ };
+
+ LineSubGeometry.prototype.notifyThicknessUpdate = function () {
+ if (this._thicknessDirty)
+ return;
+
+ this._thicknessDirty = true;
+
+ if (!this._thicknessUpdated)
+ this._thicknessUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.THICKNESS_DATA);
+
+ this.dispatchEvent(this._thicknessUpdated);
+ };
+
+ LineSubGeometry.prototype.notifyColorsUpdate = function () {
+ if (this._colorsDirty)
+ return;
+
+ this._colorsDirty = true;
+
+ if (!this._colorUpdated)
+ this._colorUpdated = new SubGeometryEvent(SubGeometryEvent.VERTICES_UPDATED, LineSubGeometry.COLOR_DATA);
+
+ this.dispatchEvent(this._colorUpdated);
+ };
+ LineSubGeometry.VERTEX_DATA = "vertices";
+ LineSubGeometry.START_POSITION_DATA = "startPositions";
+ LineSubGeometry.END_POSITION_DATA = "endPositions";
+ LineSubGeometry.THICKNESS_DATA = "thickness";
+ LineSubGeometry.COLOR_DATA = "colors";
+
+ LineSubGeometry.POSITION_FORMAT = "float3";
+ LineSubGeometry.COLOR_FORMAT = "float4";
+ LineSubGeometry.THICKNESS_FORMAT = "float1";
+ return LineSubGeometry;
+})(SubGeometryBase);
+
+module.exports = LineSubGeometry;
+
+
+},{"awayjs-core/lib/core/base/LineSubMesh":undefined,"awayjs-core/lib/core/base/SubGeometryBase":undefined,"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/events/SubGeometryEvent":undefined}],"awayjs-core/lib/core/base/LineSubMesh":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var SubMeshBase = require("awayjs-core/lib/core/base/SubMeshBase");
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+/**
+* LineSubMesh wraps a LineSubGeometry as a scene graph instantiation. A LineSubMesh is owned by a Mesh object.
+*
+*
+* @see away.base.LineSubGeometry
+* @see away.entities.Mesh
+*
+* @class away.base.LineSubMesh
+*/
+var LineSubMesh = (function (_super) {
+ __extends(LineSubMesh, _super);
+ /**
+ * Creates a new LineSubMesh object
+ * @param subGeometry The LineSubGeometry object which provides the geometry data for this LineSubMesh.
+ * @param parentMesh The Mesh object to which this LineSubMesh belongs.
+ * @param material An optional material used to render this LineSubMesh.
+ */
+ function LineSubMesh(subGeometry, parentMesh, material) {
+ if (typeof material === "undefined") { material = null; }
+ _super.call(this);
+
+ this._pParentMesh = parentMesh;
+ this._subGeometry = subGeometry;
+ this.material = material;
+ }
+ Object.defineProperty(LineSubMesh.prototype, "assetType", {
+ /**
+ *
+ */
+ get: function () {
+ return AssetType.LINE_SUB_MESH;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LineSubMesh.prototype, "subGeometry", {
+ /**
+ * The LineSubGeometry object which provides the geometry data for this LineSubMesh.
+ */
+ get: function () {
+ return this._subGeometry;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ *
+ */
+ LineSubMesh.prototype.dispose = function () {
+ this.material = null;
+
+ _super.prototype.dispose.call(this);
+ };
+
+ LineSubMesh.prototype._iCollectRenderable = function (renderer) {
+ renderer.applyLineSubMesh(this);
+ };
+ return LineSubMesh;
+})(SubMeshBase);
+
+module.exports = LineSubMesh;
+
+
+},{"awayjs-core/lib/core/base/SubMeshBase":undefined,"awayjs-core/lib/core/library/AssetType":undefined}],"awayjs-core/lib/core/base/LoaderInfo":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+
+/**
+* The LoaderInfo class provides information about a loaded SWF file or a
+* loaded image file(JPEG, GIF, or PNG). LoaderInfo objects are available for
+* any display object. The information provided includes load progress, the
+* URLs of the loader and loaded content, the number of bytes total for the
+* media, and the nominal height and width of the media.
+*
+* You can access LoaderInfo objects in two ways:
+* +*contentLoaderInfo
property of a flash.display.Loader
+* object - The contentLoaderInfo
property is always available
+* for any Loader object. For a Loader object that has not called the
+* load()
or loadBytes()
method, or that has not
+* sufficiently loaded, attempting to access many of the properties of the
+* contentLoaderInfo
property throws an error.loaderInfo
property of a display object. The contentLoaderInfo
property of a Loader object provides
+* information about the content that the Loader object is loading, whereas
+* the loaderInfo
property of a DisplayObject provides
+* information about the root SWF file for that display object.
When you use a Loader object to load a display object(such as a SWF
+* file or a bitmap), the loaderInfo
property of the display
+* object is the same as the contentLoaderInfo
property of the
+* Loader object(DisplayObject.loaderInfo =
+* Loader.contentLoaderInfo
). Because the instance of the main class of
+* the SWF file has no Loader object, the loaderInfo
property is
+* the only way to access the LoaderInfo for the instance of the main class of
+* the SWF file.
The following diagram shows the different uses of the LoaderInfo
+* object - for the instance of the main class of the SWF file, for the
+* contentLoaderInfo
property of a Loader object, and for the
+* loaderInfo
property of a loaded object:
When a loading operation is not complete, some properties of the
+* contentLoaderInfo
property of a Loader object are not
+* available. You can obtain some properties, such as
+* bytesLoaded
, bytesTotal
, url
,
+* loaderURL
, and applicationDomain
. When the
+* loaderInfo
object dispatches the init
event, you
+* can access all properties of the loaderInfo
object and the
+* loaded image or SWF file.
Note: All properties of LoaderInfo objects are read-only.
+* +*The EventDispatcher.dispatchEvent()
method is not
+* applicable to LoaderInfo objects. If you call dispatchEvent()
+* on a LoaderInfo object, an IllegalOperationError exception is thrown.
complete
event is always dispatched after
+* the init
event. The init
event
+* is dispatched when the object is ready to access, though
+* the content may still be downloading.
+* @event httpStatus Dispatched when a network request is made over HTTP and
+* an HTTP status code can be detected.
+* @event init Dispatched when the properties and methods of a loaded
+* SWF file are accessible and ready for use. The content,
+* however, can still be downloading. A LoaderInfo object
+* dispatches the init
event when the following
+* conditions exist:
+* For example, an Event.INIT
is dispatched
+* when the first frame of a movie or animation is loaded.
+* The movie is then accessible and can be added to the
+* display list. The complete movie, however, can take
+* longer to download. The Event.COMPLETE
is
+* only dispatched once the full movie is loaded.
The init
event always precedes the
+* complete
event.
unload()
+* method of the Loader object, or when a second load is
+* performed by the same Loader object and the original
+* content is removed prior to the load beginning.
+*/
+var LoaderInfo = (function (_super) {
+ __extends(LoaderInfo, _super);
+ function LoaderInfo() {
+ _super.apply(this, arguments);
+ }
+ Object.defineProperty(LoaderInfo.prototype, "bytes", {
+ /**
+ * The bytes associated with a LoaderInfo object.
+ *
+ * @throws SecurityError If the object accessing this API is prevented from
+ * accessing the loaded object due to security
+ * restrictions. This situation can occur, for
+ * instance, when a Loader object attempts to access
+ * the contentLoaderInfo.content
property
+ * and it is not granted security permission to access
+ * the loaded content.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + get: function () { + return this._bytes; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(LoaderInfo.prototype, "bytesLoaded", { + /** + * The number of bytes that are loaded for the media. When this number equals + * the value ofbytesTotal
, all of the bytes are loaded.
+ */
+ get: function () {
+ return this._bytesLoaded;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LoaderInfo.prototype, "bytesTotal", {
+ /**
+ * The number of compressed bytes in the entire media file.
+ *
+ * Before the first progress
event is dispatched by this
+ * LoaderInfo object's corresponding Loader object, bytesTotal
+ * is 0. After the first progress
event from the Loader object,
+ * bytesTotal
reflects the actual number of bytes to be
+ * downloaded.
contentLoaderInfo.content
property
+ * and it is not granted security permission to access
+ * the loaded content.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + get: function () { + return this._content; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(LoaderInfo.prototype, "contentType", { + /** + * The MIME type of the loaded file. The value isnull
if not
+ * enough of the file has loaded in order to determine the type. The
+ * following list gives the possible values:
+ * "application/x-shockwave-flash"
"image/jpeg"
"image/gif"
"image/png"
loaderInfo
property of the instance
+ * of the main class of the SWF file, no Loader object is associated.
+ *
+ * @throws SecurityError If the object accessing this API is prevented from
+ * accessing the Loader object because of security
+ * restrictions. This can occur, for instance, when a
+ * loaded SWF file attempts to access its
+ * loaderInfo.loader
property and it is
+ * not granted security permission to access the
+ * loading SWF file.
+ *
+ * For more information related to security, see the + * Flash Player Developer Center Topic: Security.
+ */ + get: function () { + return this._loader; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(LoaderInfo.prototype, "url", { + /** + * The URL of the media being loaded. + * + *Before the first progress
event is dispatched by this
+ * LoaderInfo object's corresponding Loader object, the value of the
+ * url
property might reflect only the initial URL specified in
+ * the call to the load()
method of the Loader object. After the
+ * first progress
event, the url
property reflects
+ * the media's final URL, after any redirects and relative URLs are
+ * resolved.
In some cases, the value of the url
property is truncated;
+ * see the isURLInaccessible
property for details.
pixelSnapping
property
+* of a Bitmap object.
+*/
+var PixelSnapping = (function () {
+ function PixelSnapping() {
+ }
+ PixelSnapping.ALWAYS = "always";
+
+ PixelSnapping.AUTO = "auto";
+
+ PixelSnapping.NEVER = "never";
+ return PixelSnapping;
+})();
+
+module.exports = PixelSnapping;
+
+
+},{}],"awayjs-core/lib/core/base/SpreadMethod":[function(require,module,exports){
+/**
+* The SpreadMethod class provides values for the spreadMethod
+* parameter in the beginGradientFill()
and
+* lineGradientStyle()
methods of the Graphics class.
+*
+* The following example shows the same gradient fill using various spread +* methods:
+*/ +var SpreadMethod = (function () { + function SpreadMethod() { + } + SpreadMethod.PAD = "pad"; + + SpreadMethod.REFLECT = "reflect"; + + SpreadMethod.REPEAT = "repeat"; + return SpreadMethod; +})(); + +module.exports = SpreadMethod; + + +},{}],"awayjs-core/lib/core/base/SubGeometryBase":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase"); + +var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError"); +var SubGeometryEvent = require("awayjs-core/lib/events/SubGeometryEvent"); + +/** +* @class away.base.TriangleSubGeometry +*/ +var SubGeometryBase = (function (_super) { + __extends(SubGeometryBase, _super); + /** + * + */ + function SubGeometryBase(concatenatedArrays) { + _super.call(this); + this._pStrideOffsetDirty = true; + this._pConcatenateArrays = true; + this._pStride = new Object(); + this._pOffset = new Object(); + + this._pConcatenateArrays = concatenatedArrays; + } + SubGeometryBase.prototype._pUpdateStrideOffset = function () { + throw new AbstractMethodError(); + }; + + Object.defineProperty(SubGeometryBase.prototype, "subMeshClass", { + get: function () { + return this._pSubMeshClass; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubGeometryBase.prototype, "concatenateArrays", { + /** + * + */ + get: function () { + return this._pConcatenateArrays; + }, + set: function (value) { + if (this._pConcatenateArrays == value) + return; + + this._pConcatenateArrays = value; + + this._pStrideOffsetDirty = true; + + if (value) + this._pNotifyVerticesUpdate(); + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(SubGeometryBase.prototype, "indices", { + /** + * The raw index data that define the faces. + */ + get: function () { + return this._pIndices; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubGeometryBase.prototype, "vertices", { + /** + * + */ + get: function () { + this.updateVertices(); + + return this._pVertices; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubGeometryBase.prototype, "numTriangles", { + /** + * The total amount of triangles in the TriangleSubGeometry. + */ + get: function () { + return this._numTriangles; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubGeometryBase.prototype, "numVertices", { + get: function () { + return this._pNumVertices; + }, + enumerable: true, + configurable: true + }); + + /** + * + */ + SubGeometryBase.prototype.getStride = function (dataType) { + if (this._pStrideOffsetDirty) + this._pUpdateStrideOffset(); + + return this._pStride[dataType]; + }; + + /** + * + */ + SubGeometryBase.prototype.getOffset = function (dataType) { + if (this._pStrideOffsetDirty) + this._pUpdateStrideOffset(); + + return this._pOffset[dataType]; + }; + + SubGeometryBase.prototype.updateVertices = function () { + throw new AbstractMethodError(); + }; + + /** + * + */ + SubGeometryBase.prototype.dispose = function () { + this._pIndices = null; + this._pVertices = null; + }; + + /** + * Updates the face indices of the TriangleSubGeometry. + * + * @param indices The face indices to upload. + */ + SubGeometryBase.prototype.updateIndices = function (indices) { + this._pIndices = indices; + this._numIndices = indices.length; + + this._numTriangles = this._numIndices / 3; + + this.notifyIndicesUpdate(); + }; + + /** + * @protected + */ + SubGeometryBase.prototype.pInvalidateBounds = function () { + if (this.parentGeometry) + this.parentGeometry.iInvalidateBounds(this); + }; + + /** + * Clones the current object + * @return An exact duplicate of the current object. + */ + SubGeometryBase.prototype.clone = function () { + throw new AbstractMethodError(); + }; + + SubGeometryBase.prototype.applyTransformation = function (transform) { + }; + + /** + * Scales the geometry. + * @param scale The amount by which to scale. + */ + SubGeometryBase.prototype.scale = function (scale) { + }; + + SubGeometryBase.prototype.scaleUV = function (scaleU, scaleV) { + if (typeof scaleU === "undefined") { scaleU = 1; } + if (typeof scaleV === "undefined") { scaleV = 1; } + }; + + SubGeometryBase.prototype.getBoundingPositions = function () { + throw new AbstractMethodError(); + }; + + SubGeometryBase.prototype.notifyIndicesUpdate = function () { + if (!this._indicesUpdated) + this._indicesUpdated = new SubGeometryEvent(SubGeometryEvent.INDICES_UPDATED); + + this.dispatchEvent(this._indicesUpdated); + }; + + SubGeometryBase.prototype._pNotifyVerticesUpdate = function () { + throw new AbstractMethodError(); + }; + SubGeometryBase.VERTEX_DATA = "vertices"; + return SubGeometryBase; +})(NamedAssetBase); + +module.exports = SubGeometryBase; + + +},{"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/SubGeometryEvent":undefined}],"awayjs-core/lib/core/base/SubMeshBase":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase"); + +var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError"); + +/** +* SubMeshBase wraps a TriangleSubGeometry as a scene graph instantiation. A SubMeshBase is owned by a Mesh object. +* +* +* @see away.base.TriangleSubGeometry +* @see away.entities.Mesh +* +* @class away.base.SubMeshBase +*/ +var SubMeshBase = (function (_super) { + __extends(SubMeshBase, _super); + /** + * Creates a new SubMeshBase object + */ + function SubMeshBase() { + _super.call(this); + this._iIndex = 0; + this._renderables = new Array(); + } + Object.defineProperty(SubMeshBase.prototype, "animator", { + //TODO test shader picking + // public get shaderPickingDetails():boolean + // { + // + // return this.sourceEntity.shaderPickingDetails; + // } + /** + * The animator object that provides the state for the TriangleSubMesh's animation. + */ + get: function () { + return this._pParentMesh.animator; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubMeshBase.prototype, "material", { + /** + * The material used to render the current TriangleSubMesh. If set to null, its parent Mesh's material will be used instead. + */ + get: function () { + return this._material || this._pParentMesh.material; + }, + set: function (value) { + if (this.material) + this.material.iRemoveOwner(this); + + this._material = value; + + if (this.material) + this.material.iAddOwner(this); + }, + enumerable: true, + configurable: true + }); + + + Object.defineProperty(SubMeshBase.prototype, "sceneTransform", { + /** + * The scene transform object that transforms from model to world space. + */ + get: function () { + return this._pParentMesh.sceneTransform; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubMeshBase.prototype, "parentMesh", { + /** + * The entity that that initially provided the IRenderable to the render pipeline (ie: the owning Mesh object). + */ + get: function () { + return this._pParentMesh; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(SubMeshBase.prototype, "uvTransform", { + /** + * + */ + get: function () { + return this._uvTransform || this._pParentMesh.uvTransform; + }, + set: function (value) { + this._uvTransform = value; + }, + enumerable: true, + configurable: true + }); + + + /** + * + */ + SubMeshBase.prototype.dispose = function () { + this.material = null; + + var len = this._renderables.length; + for (var i = 0; i < len; i++) + this._renderables[i].dispose(); + }; + + /** + * + * @param camera + * @returns {away.geom.Matrix3D} + */ + SubMeshBase.prototype.getRenderSceneTransform = function (camera) { + return this._pParentMesh.getRenderSceneTransform(camera); + }; + + SubMeshBase.prototype._iAddRenderable = function (renderable) { + this._renderables.push(renderable); + + return renderable; + }; + + SubMeshBase.prototype._iRemoveRenderable = function (renderable) { + var index = this._renderables.indexOf(renderable); + + this._renderables.splice(index, 1); + + return renderable; + }; + + SubMeshBase.prototype._iInvalidateRenderableGeometry = function () { + var len = this._renderables.length; + for (var i = 0; i < len; i++) + this._renderables[i].invalidateGeometry(); + }; + + SubMeshBase.prototype._iCollectRenderable = function (renderer) { + throw new AbstractMethodError(); + }; + + SubMeshBase.prototype._iGetExplicitMaterial = function () { + return this._material; + }; + return SubMeshBase; +})(NamedAssetBase); + +module.exports = SubMeshBase; + + +},{"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined}],"awayjs-core/lib/core/base/TriangleCulling":[function(require,module,exports){ +/** +* Defines codes for culling algorithms that determine which triangles not to +* render when drawing triangle paths. +* +* The terms POSITIVE
and NEGATIVE
refer to the
+* sign of a triangle's normal along the z-axis. The normal is a 3D vector
+* that is perpendicular to the surface of the triangle.
A triangle whose vertices 0, 1, and 2 are arranged in a clockwise order
+* has a positive normal value. That is, its normal points in a positive
+* z-axis direction, away from the current view point. When the
+* TriangleCulling.POSITIVE
algorithm is used, triangles with
+* positive normals are not rendered. Another term for this is backface
+* culling.
A triangle whose vertices are arranged in a counter-clockwise order has
+* a negative normal value. That is, its normal points in a negative z-axis
+* direction, toward the current view point. When the
+* TriangleCulling.NEGATIVE
algorithm is used, triangles with
+* negative normals will not be rendered.
The x
, y
, z
, width
,
+* height
depth
properties of the Box class are
+* independent of each other; changing the value of one property has no effect
+* on the others. However, the right
, bottom
and
+* back
properties are integrally related to those six
+* properties. For example, if you change the value of the right
+* property, the value of the width
property changes; if you
+* change the bottom
property, the value of the
+* height
property changes.
The following methods and properties use Box objects:
+* +*bounds
property of the DisplayObject classYou can use the new Box()
constructor to create a
+* Box object.
Note: The Box class does not define a cubic Shape
+* display object.
+*/
+var Box = (function () {
+ /**
+ * Creates a new Box object with the top-left-front corner specified by the
+ * x
, y
and z
parameters and with the
+ * specified width
, height
and depth
+ * parameters. If you call this public without parameters, a box with
+ * x
, y
, z
, width
,
+ * height
and depth
properties set to 0 is created.
+ *
+ * @param x The x coordinate of the top-left-front corner of the
+ * box.
+ * @param y The y coordinate of the top-left-front corner of the
+ * box.
+ * @param z The z coordinate of the top-left-front corner of the
+ * box.
+ * @param width The width of the box, in pixels.
+ * @param height The height of the box, in pixels.
+ * @param depth The depth of the box, in pixels.
+ */
+ function Box(x, y, z, width, height, depth) {
+ if (typeof x === "undefined") { x = 0; }
+ if (typeof y === "undefined") { y = 0; }
+ if (typeof z === "undefined") { z = 0; }
+ if (typeof width === "undefined") { width = 0; }
+ if (typeof height === "undefined") { height = 0; }
+ if (typeof depth === "undefined") { depth = 0; }
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.width = width;
+ this.height = height;
+ this.depth = depth;
+ }
+ Object.defineProperty(Box.prototype, "back", {
+ /**
+ * The sum of the z
and height
properties.
+ */
+ get: function () {
+ return this.z + this.depth;
+ },
+ set: function (val) {
+ this.depth = val - this.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Box.prototype, "bottom", {
+ /**
+ * The sum of the y
and height
properties.
+ */
+ get: function () {
+ return this.y + this.height;
+ },
+ set: function (val) {
+ this.height = val - this.y;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Box.prototype, "bottomRightBack", {
+ /**
+ * The location of the Box object's bottom-right corner, determined by the
+ * values of the right
and bottom
properties.
+ */
+ get: function () {
+ if (this._bottomRightBack == null)
+ this._bottomRightBack = new Vector3D();
+
+ this._bottomRightBack.x = this.x + this.width;
+ this._bottomRightBack.y = this.y + this.height;
+ this._bottomRightBack.z = this.z + this.depth;
+
+ return this._bottomRightBack;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Box.prototype, "front", {
+ /**
+ * The z coordinate of the top-left-front corner of the box. Changing
+ * the front
property of a Box object has no effect on the
+ * x
, y
, width
and height
+ * properties. However it does affect the depth
property,
+ * whereas changing the z
value does not affect the
+ * depth
property.
+ *
+ *
The value of the left
property is equal to the value of
+ * the x
property.
left
property of a Box object has no effect on the
+ * y
and height
properties. However it does affect
+ * the width
property, whereas changing the x
value
+ * does not affect the width
property.
+ *
+ * The value of the left
property is equal to the value of
+ * the x
property.
x
and width
properties.
+ */
+ get: function () {
+ return this.x + this.width;
+ },
+ set: function (val) {
+ this.width = val - this.x;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Box.prototype, "size", {
+ /**
+ * The size of the Box object, expressed as a Vector3D object with the
+ * values of the width
, height
and
+ * depth
properties.
+ */
+ get: function () {
+ if (this._size == null)
+ this._size = new Vector3D();
+
+ this._size.x = this.width;
+ this._size.y = this.height;
+ this._size.z = this.depth;
+
+ return this._size;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Box.prototype, "top", {
+ /**
+ * The y coordinate of the top-left-front corner of the box. Changing
+ * the top
property of a Box object has no effect on the
+ * x
and width
properties. However it does affect
+ * the height
property, whereas changing the y
+ * value does not affect the height
property.
+ *
+ * The value of the top
property is equal to the value of the
+ * y
property.
x
,
+ * y
, z
, width
, height
+ * and depth
properties as the original Box object.
+ *
+ * @return A new Box object with the same values for the x
,
+ * y
, z
, width
,
+ * height
and depth
properties as the
+ * original Box object.
+ */
+ Box.prototype.clone = function () {
+ return new Box(this.x, this.y, this.z, this.width, this.height, this.depth);
+ };
+
+ /**
+ * Determines whether the specified position is contained within the cubic
+ * region defined by this Box object.
+ *
+ * @param x The x coordinate(horizontal component) of the position.
+ * @param y The y coordinate(vertical component) of the position.
+ * @param z The z coordinate(longitudinal component) of the position.
+ * @return A value of true
if the Box object contains the
+ * specified position; otherwise false
.
+ */
+ Box.prototype.contains = function (x, y, z) {
+ return (this.x <= x && this.x + this.width >= x && this.y <= y && this.y + this.height >= y && this.z <= z && this.z + this.depth >= z);
+ };
+
+ /**
+ * Determines whether the specified position is contained within the cubic
+ * region defined by this Box object. This method is similar to the
+ * Box.contains()
method, except that it takes a Vector3D
+ * object as a parameter.
+ *
+ * @param position The position, as represented by its x, y and
+ * z coordinates.
+ * @return A value of true
if the Box object contains the
+ * specified position; otherwise false
.
+ */
+ Box.prototype.containsPoint = function (position) {
+ return (this.x <= position.x && this.x + this.width >= position.x && this.y <= position.y && this.y + this.height >= position.y && this.z <= position.z && this.z + this.depth >= position.z);
+ };
+
+ /**
+ * Determines whether the Box object specified by the box
+ * parameter is contained within this Box object. A Box object is said to
+ * contain another if the second Box object falls entirely within the
+ * boundaries of the first.
+ *
+ * @param box The Box object being checked.
+ * @return A value of true
if the Box object that you specify
+ * is contained by this Box object; otherwise false
.
+ */
+ Box.prototype.containsRect = function (box) {
+ return (this.x <= box.x && this.x + this.width >= box.x + box.width && this.y <= box.y && this.y + this.height >= box.y + box.height && this.z <= box.z && this.z + this.depth >= box.z + box.depth);
+ };
+
+ /**
+ * Copies all of box data from the source Box object into the calling
+ * Box object.
+ *
+ * @param sourceBox The Box object from which to copy the data.
+ */
+ Box.prototype.copyFrom = function (sourceBox) {
+ //TODO
+ };
+
+ /**
+ * Determines whether the object specified in the toCompare
+ * parameter is equal to this Box object. This method compares the
+ * x
, y
, z
, width
,
+ * height
and depth
properties of an object against
+ * the same properties of this Box object.
+ *
+ * @param toCompare The box to compare to this Box object.
+ * @return A value of true
if the object has exactly the same
+ * values for the x
, y
, z
,
+ * width
, height
and depth
+ * properties as this Box object; otherwise false
.
+ */
+ Box.prototype.equals = function (toCompare) {
+ return (this.x == toCompare.x && this.y == toCompare.y && this.z == toCompare.z && this.width == toCompare.width && this.height == toCompare.height && this.depth == toCompare.depth);
+ };
+
+ /**
+ * Increases the size of the Box object by the specified amounts, in
+ * pixels. The center point of the Box object stays the same, and its
+ * size increases to the left and right by the dx
value, to
+ * the top and the bottom by the dy
value, and to
+ * the front and the back by the dz
value.
+ *
+ * @param dx The value to be added to the left and the right of the Box
+ * object. The following equation is used to calculate the new
+ * width and position of the box:
+ * @param dy The value to be added to the top and the bottom of the Box
+ * object. The following equation is used to calculate the new
+ * height and position of the box:
+ * @param dz The value to be added to the front and the back of the Box
+ * object. The following equation is used to calculate the new
+ * depth and position of the box:
+ */
+ Box.prototype.inflate = function (dx, dy, dz) {
+ this.x -= dx / 2;
+ this.y -= dy / 2;
+ this.z -= dz / 2;
+ this.width += dx / 2;
+ this.height += dy / 2;
+ this.depth += dz / 2;
+ };
+
+ /**
+ * Increases the size of the Box object. This method is similar to the
+ * Box.inflate()
method except it takes a Vector3D object as
+ * a parameter.
+ *
+ * The following two code examples give the same result:
+ * + * @param delta Thex
property of this Vector3D object is used to
+ * increase the horizontal dimension of the Box object.
+ * The y
property is used to increase the vertical
+ * dimension of the Box object.
+ * The z
property is used to increase the
+ * longitudinal dimension of the Box object.
+ */
+ Box.prototype.inflatePoint = function (delta) {
+ this.x -= delta.x / 2;
+ this.y -= delta.y / 2;
+ this.z -= delta.z / 2;
+ this.width += delta.x / 2;
+ this.height += delta.y / 2;
+ this.depth += delta.z / 2;
+ };
+
+ /**
+ * If the Box object specified in the toIntersect
parameter
+ * intersects with this Box object, returns the area of intersection
+ * as a Box object. If the boxes do not intersect, this method returns an
+ * empty Box object with its properties set to 0.
+ *
+ * @param toIntersect The Box object to compare against to see if it
+ * intersects with this Box object.
+ * @return A Box object that equals the area of intersection. If the
+ * boxes do not intersect, this method returns an empty Box
+ * object; that is, a box with its x
, y
,
+ * z
, width
, height
, and
+ * depth
properties set to 0.
+ */
+ Box.prototype.intersection = function (toIntersect) {
+ if (this.intersects(toIntersect)) {
+ var i = new Box();
+
+ if (this.x > toIntersect.x) {
+ i.x = this.x;
+ i.width = toIntersect.x - this.x + toIntersect.width;
+
+ if (i.width > this.width)
+ i.width = this.width;
+ } else {
+ i.x = toIntersect.x;
+ i.width = this.x - toIntersect.x + this.width;
+
+ if (i.width > toIntersect.width)
+ i.width = toIntersect.width;
+ }
+
+ if (this.y > toIntersect.y) {
+ i.y = this.y;
+ i.height = toIntersect.y - this.y + toIntersect.height;
+
+ if (i.height > this.height)
+ i.height = this.height;
+ } else {
+ i.y = toIntersect.y;
+ i.height = this.y - toIntersect.y + this.height;
+
+ if (i.height > toIntersect.height)
+ i.height = toIntersect.height;
+ }
+
+ if (this.z > toIntersect.z) {
+ i.z = this.z;
+ i.depth = toIntersect.z - this.z + toIntersect.depth;
+
+ if (i.depth > this.depth)
+ i.depth = this.depth;
+ } else {
+ i.z = toIntersect.z;
+ i.depth = this.z - toIntersect.z + this.depth;
+
+ if (i.depth > toIntersect.depth)
+ i.depth = toIntersect.depth;
+ }
+
+ return i;
+ }
+
+ return new Box();
+ };
+
+ /**
+ * Determines whether the object specified in the toIntersect
+ * parameter intersects with this Box object. This method checks the
+ * x
, y
, z
, width
,
+ * height
, and depth
properties of the specified
+ * Box object to see if it intersects with this Box object.
+ *
+ * @param toIntersect The Box object to compare against this Box object.
+ * @return A value of true
if the specified object intersects
+ * with this Box object; otherwise false
.
+ */
+ Box.prototype.intersects = function (toIntersect) {
+ return (this.x + this.width > toIntersect.x && this.x < toIntersect.x + toIntersect.width && this.y + this.height > toIntersect.y && this.y < toIntersect.y + toIntersect.height && this.z + this.depth > toIntersect.z && this.z < toIntersect.z + toIntersect.depth);
+ };
+
+ /**
+ * Determines whether or not this Box object is empty.
+ *
+ * @return A value of true
if the Box object's width, height or
+ * depth is less than or equal to 0; otherwise false
.
+ */
+ Box.prototype.isEmpty = function () {
+ return (this.x == 0 && this.y == 0 && this.z == 0 && this.width == 0 && this.height == 0 && this.depth == 0);
+ };
+
+ /**
+ * Adjusts the location of the Box object, as determined by its
+ * top-left-front corner, by the specified amounts.
+ *
+ * @param dx Moves the x value of the Box object by this amount.
+ * @param dy Moves the y value of the Box object by this amount.
+ * @param dz Moves the z value of the Box object by this amount.
+ */
+ Box.prototype.offset = function (dx, dy, dz) {
+ this.x += dx;
+ this.y += dy;
+ this.z += dz;
+ };
+
+ /**
+ * Adjusts the location of the Box object using a Vector3D object as a
+ * parameter. This method is similar to the Box.offset()
+ * method, except that it takes a Vector3D object as a parameter.
+ *
+ * @param position A Vector3D object to use to offset this Box object.
+ */
+ Box.prototype.offsetPosition = function (position) {
+ this.x += position.x;
+ this.y += position.y;
+ this.z += position.z;
+ };
+
+ /**
+ * Sets all of the Box object's properties to 0. A Box object is empty if its
+ * width, height or depth is less than or equal to 0.
+ *
+ * This method sets the values of the x
, y
,
+ * z
, width
, height
, and
+ * depth
properties to 0.
x
, y
, z
,
+ * width
, height
, and depth
.
+ */
+ Box.prototype.toString = function () {
+ return "[Box] (x=" + this.x + ", y=" + this.y + ", z=" + this.z + ", width=" + this.width + ", height=" + this.height + ", depth=" + this.depth + ")";
+ };
+
+ /**
+ * Adds two boxes together to create a new Box object, by filling
+ * in the horizontal, vertical and longitudinal space between the two boxes.
+ *
+ * Note: The union()
method ignores boxes with
+ * 0
as the height, width or depth value, such as: var
+ * box2:Box = new Box(300,300,300,50,50,0);
When a ColorTransform object is applied to a display object, a new value +* for each color channel is calculated like this:
+* +*redMultiplier
) +
+* redOffset
greenMultiplier
) +
+* greenOffset
blueMultiplier
) +
+* blueOffset
alphaMultiplier
) +
+* alphaOffset
If any of the color channel values is greater than 255 after the +* calculation, it is set to 255. If it is less than 0, it is set to 0.
+* +*You can use ColorTransform objects in the following ways:
+* +*colorTransform
parameter of the
+* colorTransform()
method of the BitmapData classcolorTransform
property of a Transform object
+* (which can be used as the transform
property of a display
+* object)You must use the new ColorTransform()
constructor to create
+* a ColorTransform object before you can call the methods of the
+* ColorTransform object.
Color transformations do not apply to the background color of a movie +* clip(such as a loaded SWF object). They apply only to graphics and symbols +* that are attached to the movie clip.
+*/ +var ColorTransform = (function () { + /** + * Creates a ColorTransform object for a display object with the specified + * color channel values and alpha values. + * + * @param redMultiplier The value for the red multiplier, in the range from + * 0 to 1. + * @param greenMultiplier The value for the green multiplier, in the range + * from 0 to 1. + * @param blueMultiplier The value for the blue multiplier, in the range + * from 0 to 1. + * @param alphaMultiplier The value for the alpha transparency multiplier, in + * the range from 0 to 1. + * @param redOffset The offset value for the red color channel, in the + * range from -255 to 255. + * @param greenOffset The offset value for the green color channel, in + * the range from -255 to 255. + * @param blueOffset The offset for the blue color channel value, in the + * range from -255 to 255. + * @param alphaOffset The offset for alpha transparency channel value, in + * the range from -255 to 255. + */ + function ColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, alphaOffset) { + if (typeof redMultiplier === "undefined") { redMultiplier = 1; } + if (typeof greenMultiplier === "undefined") { greenMultiplier = 1; } + if (typeof blueMultiplier === "undefined") { blueMultiplier = 1; } + if (typeof alphaMultiplier === "undefined") { alphaMultiplier = 1; } + if (typeof redOffset === "undefined") { redOffset = 0; } + if (typeof greenOffset === "undefined") { greenOffset = 0; } + if (typeof blueOffset === "undefined") { blueOffset = 0; } + if (typeof alphaOffset === "undefined") { alphaOffset = 0; } + this.redMultiplier = redMultiplier; + this.greenMultiplier = greenMultiplier; + this.blueMultiplier = blueMultiplier; + this.alphaMultiplier = alphaMultiplier; + this.redOffset = redOffset; + this.greenOffset = greenOffset; + this.blueOffset = blueOffset; + this.alphaOffset = alphaOffset; + } + Object.defineProperty(ColorTransform.prototype, "color", { + /** + * The RGB color value for a ColorTransform object. + * + *When you set this property, it changes the three color offset values
+ * (redOffset
, greenOffset
, and
+ * blueOffset
) accordingly, and it sets the three color
+ * multiplier values(redMultiplier
,
+ * greenMultiplier
, and blueMultiplier
) to 0. The
+ * alpha transparency multiplier and offset values do not change.
When you pass a value for this property, use the format + * 0xRRGGBB. RR, GG, and BB each consist of two + * hexadecimal digits that specify the offset of each color component. The 0x + * tells the ActionScript compiler that the number is a hexadecimal + * value.
+ */ + get: function () { + return ((this.redOffset << 16) | (this.greenOffset << 8) | this.blueOffset); + }, + set: function (value) { + var argb = ColorUtils.float32ColorToARGB(value); + + this.redOffset = argb[1]; //(value >> 16) & 0xFF; + this.greenOffset = argb[2]; //(value >> 8) & 0xFF; + this.blueOffset = argb[3]; //value & 0xFF; + + this.redMultiplier = 0; + this.greenMultiplier = 0; + this.blueMultiplier = 0; + }, + enumerable: true, + configurable: true + }); + + + /** + * Concatenates the ColorTranform object specified by thesecond
+ * parameter with the current ColorTransform object and sets the current
+ * object as the result, which is an additive combination of the two color
+ * transformations. When you apply the concatenated ColorTransform object,
+ * the effect is the same as applying the second
color
+ * transformation after the original color transformation.
+ *
+ * @param second The ColorTransform object to be combined with the current
+ * ColorTransform object.
+ */
+ ColorTransform.prototype.concat = function (second) {
+ this.redMultiplier += second.redMultiplier;
+ this.greenMultiplier += second.greenMultiplier;
+ this.blueMultiplier += second.blueMultiplier;
+ this.alphaMultiplier += second.alphaMultiplier;
+ };
+ return ColorTransform;
+})();
+
+module.exports = ColorTransform;
+
+
+},{"awayjs-core/lib/utils/ColorUtils":undefined}],"awayjs-core/lib/core/geom/MathConsts":[function(require,module,exports){
+/**
+* MathConsts provides some commonly used mathematical constants
+*/
+var MathConsts = (function () {
+ function MathConsts() {
+ }
+ MathConsts.RADIANS_TO_DEGREES = 180 / Math.PI;
+
+ MathConsts.DEGREES_TO_RADIANS = Math.PI / 180;
+ return MathConsts;
+})();
+
+module.exports = MathConsts;
+
+
+},{}],"awayjs-core/lib/core/geom/Matrix3DUtils":[function(require,module,exports){
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+/**
+* away.geom.Matrix3DUtils provides additional Matrix3D functions.
+*/
+var Matrix3DUtils = (function () {
+ function Matrix3DUtils() {
+ }
+ /**
+ * Fills the 3d matrix object with values representing the transformation made by the given quaternion.
+ *
+ * @param quarternion The quarterion object to convert.
+ */
+ Matrix3DUtils.quaternion2matrix = function (quarternion, m) {
+ if (typeof m === "undefined") { m = null; }
+ var x = quarternion.x;
+ var y = quarternion.y;
+ var z = quarternion.z;
+ var w = quarternion.w;
+
+ var xx = x * x;
+ var xy = x * y;
+ var xz = x * z;
+ var xw = x * w;
+
+ var yy = y * y;
+ var yz = y * z;
+ var yw = y * w;
+
+ var zz = z * z;
+ var zw = z * w;
+
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+ raw[0] = 1 - 2 * (yy + zz);
+ raw[1] = 2 * (xy + zw);
+ raw[2] = 2 * (xz - yw);
+ raw[4] = 2 * (xy - zw);
+ raw[5] = 1 - 2 * (xx + zz);
+ raw[6] = 2 * (yz + xw);
+ raw[8] = 2 * (xz + yw);
+ raw[9] = 2 * (yz - xw);
+ raw[10] = 1 - 2 * (xx + yy);
+ raw[3] = raw[7] = raw[11] = raw[12] = raw[13] = raw[14] = 0;
+ raw[15] = 1;
+
+ if (m) {
+ m.copyRawDataFrom(raw);
+ return m;
+ } else
+ return new Matrix3D(raw);
+ };
+
+ /**
+ * Returns a normalised Vector3D
object representing the forward vector of the given matrix.
+ * @param m The Matrix3D object to use to get the forward vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The forward vector
+ */
+ Matrix3DUtils.getForward = function (m, v) {
+ if (typeof v === "undefined") { v = null; }
+ //v ||= new Vector3D(0.0, 0.0, 0.0);
+ if (v === null) {
+ v = new Vector3D(0.0, 0.0, 0.0);
+ }
+
+ m.copyColumnTo(2, v);
+ v.normalize();
+
+ return v;
+ };
+
+ /**
+ * Returns a normalised Vector3D
object representing the up vector of the given matrix.
+ * @param m The Matrix3D object to use to get the up vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The up vector
+ */
+ Matrix3DUtils.getUp = function (m, v) {
+ //v ||= new Vector3D(0.0, 0.0, 0.0);
+ if (typeof v === "undefined") { v = null; }
+ if (v === null) {
+ v = new Vector3D(0.0, 0.0, 0.0);
+ }
+
+ m.copyColumnTo(1, v);
+ v.normalize();
+
+ return v;
+ };
+
+ /**
+ * Returns a normalised Vector3D
object representing the right vector of the given matrix.
+ * @param m The Matrix3D object to use to get the right vector
+ * @param v [optional] A vector holder to prevent make new Vector3D instance if already exists. Default is null.
+ * @return The right vector
+ */
+ Matrix3DUtils.getRight = function (m, v) {
+ if (typeof v === "undefined") { v = null; }
+ //v ||= new Vector3D(0.0, 0.0, 0.0);
+ if (v === null) {
+ v = new Vector3D(0.0, 0.0, 0.0);
+ }
+
+ m.copyColumnTo(0, v);
+ v.normalize();
+
+ return v;
+ };
+
+ /**
+ * Returns a boolean value representing whether there is any significant difference between the two given 3d matrices.
+ */
+ Matrix3DUtils.compare = function (m1, m2) {
+ var r1 = Matrix3DUtils.RAW_DATA_CONTAINER;
+ var r2 = m2.rawData;
+ m1.copyRawDataTo(r1);
+
+ for (var i = 0; i < 16; ++i) {
+ if (r1[i] != r2[i])
+ return false;
+ }
+
+ return true;
+ };
+
+ Matrix3DUtils.lookAt = function (matrix, pos, dir, up) {
+ var dirN;
+ var upN;
+ var lftN;
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+
+ lftN = dir.crossProduct(up);
+ lftN.normalize();
+
+ upN = lftN.crossProduct(dir);
+ upN.normalize();
+ dirN = dir.clone();
+ dirN.normalize();
+
+ raw[0] = lftN.x;
+ raw[1] = upN.x;
+ raw[2] = -dirN.x;
+ raw[3] = 0.0;
+
+ raw[4] = lftN.y;
+ raw[5] = upN.y;
+ raw[6] = -dirN.y;
+ raw[7] = 0.0;
+
+ raw[8] = lftN.z;
+ raw[9] = upN.z;
+ raw[10] = -dirN.z;
+ raw[11] = 0.0;
+
+ raw[12] = -lftN.dotProduct(pos);
+ raw[13] = -upN.dotProduct(pos);
+ raw[14] = dirN.dotProduct(pos);
+ raw[15] = 1.0;
+
+ matrix.copyRawDataFrom(raw);
+ };
+
+ Matrix3DUtils.reflection = function (plane, target) {
+ if (typeof target === "undefined") { target = null; }
+ if (target === null)
+ target = new Matrix3D();
+
+ var a = plane.a, b = plane.b, c = plane.c, d = plane.d;
+ var rawData = Matrix3DUtils.RAW_DATA_CONTAINER;
+ var ab2 = -2 * a * b;
+ var ac2 = -2 * a * c;
+ var bc2 = -2 * b * c;
+
+ // reflection matrix
+ rawData[0] = 1 - 2 * a * a;
+ rawData[4] = ab2;
+ rawData[8] = ac2;
+ rawData[12] = -2 * a * d;
+ rawData[1] = ab2;
+ rawData[5] = 1 - 2 * b * b;
+ rawData[9] = bc2;
+ rawData[13] = -2 * b * d;
+ rawData[2] = ac2;
+ rawData[6] = bc2;
+ rawData[10] = 1 - 2 * c * c;
+ rawData[14] = -2 * c * d;
+ rawData[3] = 0;
+ rawData[7] = 0;
+ rawData[11] = 0;
+ rawData[15] = 1;
+ target.copyRawDataFrom(rawData);
+
+ return target;
+ };
+
+ Matrix3DUtils.transformVector = function (matrix, vector, result) {
+ if (typeof result === "undefined") { result = null; }
+ if (!result)
+ result = new Vector3D();
+
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+ matrix.copyRawDataTo(raw);
+ var a = raw[0];
+ var e = raw[1];
+ var i = raw[2];
+ var m = raw[3];
+ var b = raw[4];
+ var f = raw[5];
+ var j = raw[6];
+ var n = raw[7];
+ var c = raw[8];
+ var g = raw[9];
+ var k = raw[10];
+ var o = raw[11];
+ var d = raw[12];
+ var h = raw[13];
+ var l = raw[14];
+ var p = raw[15];
+
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ result.x = a * x + b * y + c * z + d;
+ result.y = e * x + f * y + g * z + h;
+ result.z = i * x + j * y + k * z + l;
+ result.w = m * x + n * y + o * z + p;
+ return result;
+ };
+
+ Matrix3DUtils.deltaTransformVector = function (matrix, vector, result) {
+ if (typeof result === "undefined") { result = null; }
+ if (!result)
+ result = new Vector3D();
+
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+ matrix.copyRawDataTo(raw);
+ var a = raw[0];
+ var e = raw[1];
+ var i = raw[2];
+ var m = raw[3];
+ var b = raw[4];
+ var f = raw[5];
+ var j = raw[6];
+ var n = raw[7];
+ var c = raw[8];
+ var g = raw[9];
+ var k = raw[10];
+ var o = raw[11];
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ result.x = a * x + b * y + c * z;
+ result.y = e * x + f * y + g * z;
+ result.z = i * x + j * y + k * z;
+ result.w = m * x + n * y + o * z;
+ return result;
+ };
+
+ Matrix3DUtils.getTranslation = function (transform, result) {
+ if (typeof result === "undefined") { result = null; }
+ if (!result)
+ result = new Vector3D();
+
+ transform.copyColumnTo(3, result);
+ return result;
+ };
+
+ Matrix3DUtils.deltaTransformVectors = function (matrix, vin, vout) {
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+ matrix.copyRawDataTo(raw);
+ var a = raw[0];
+ var e = raw[1];
+ var i = raw[2];
+ var m = raw[3];
+ var b = raw[4];
+ var f = raw[5];
+ var j = raw[6];
+ var n = raw[7];
+ var c = raw[8];
+ var g = raw[9];
+ var k = raw[10];
+ var o = raw[11];
+ var outIndex = 0;
+ var length = vin.length;
+ for (var index = 0; index < length; index += 3) {
+ var x = vin[index];
+ var y = vin[index + 1];
+ var z = vin[index + 2];
+ vout[outIndex++] = a * x + b * y + c * z;
+ vout[outIndex++] = e * x + f * y + g * z;
+ vout[outIndex++] = i * x + j * y + k * z;
+ }
+ };
+ Matrix3DUtils.RAW_DATA_CONTAINER = new Array(16);
+
+ Matrix3DUtils.CALCULATION_MATRIX = new Matrix3D();
+ return Matrix3DUtils;
+})();
+
+module.exports = Matrix3DUtils;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/core/geom/Matrix3D":[function(require,module,exports){
+var Orientation3D = require("awayjs-core/lib/core/geom/Orientation3D");
+
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ArgumentError = require("awayjs-core/lib/errors/ArgumentError");
+
+var Matrix3D = (function () {
+ /**
+ * Creates a Matrix3D object.
+ */
+ function Matrix3D(v) {
+ if (typeof v === "undefined") { v = null; }
+ if (v != null && v.length == 16)
+ this.rawData = v.concat();
+ else
+ this.rawData = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
+ }
+ /**
+ * Appends the matrix by multiplying another Matrix3D object by the current Matrix3D object.
+ */
+ Matrix3D.prototype.append = function (lhs) {
+ var m111 = this.rawData[0], m121 = this.rawData[4], m131 = this.rawData[8], m141 = this.rawData[12], m112 = this.rawData[1], m122 = this.rawData[5], m132 = this.rawData[9], m142 = this.rawData[13], m113 = this.rawData[2], m123 = this.rawData[6], m133 = this.rawData[10], m143 = this.rawData[14], m114 = this.rawData[3], m124 = this.rawData[7], m134 = this.rawData[11], m144 = this.rawData[15], m211 = lhs.rawData[0], m221 = lhs.rawData[4], m231 = lhs.rawData[8], m241 = lhs.rawData[12], m212 = lhs.rawData[1], m222 = lhs.rawData[5], m232 = lhs.rawData[9], m242 = lhs.rawData[13], m213 = lhs.rawData[2], m223 = lhs.rawData[6], m233 = lhs.rawData[10], m243 = lhs.rawData[14], m214 = lhs.rawData[3], m224 = lhs.rawData[7], m234 = lhs.rawData[11], m244 = lhs.rawData[15];
+
+ this.rawData[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
+ this.rawData[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
+ this.rawData[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
+ this.rawData[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
+
+ this.rawData[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
+ this.rawData[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
+ this.rawData[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
+ this.rawData[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
+
+ this.rawData[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
+ this.rawData[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
+ this.rawData[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
+ this.rawData[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
+
+ this.rawData[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
+ this.rawData[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
+ this.rawData[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
+ this.rawData[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
+ };
+
+ /**
+ * Appends an incremental rotation to a Matrix3D object.
+ */
+ Matrix3D.prototype.appendRotation = function (degrees, axis) {
+ var m = Matrix3D.getAxisRotation(axis.x, axis.y, axis.z, degrees);
+
+ this.append(m);
+ };
+
+ /**
+ * Appends an incremental scale change along the x, y, and z axes to a Matrix3D object.
+ */
+ Matrix3D.prototype.appendScale = function (xScale, yScale, zScale) {
+ this.append(new Matrix3D([xScale, 0.0, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 0.0, zScale, 0.0, 0.0, 0.0, 0.0, 1.0]));
+ };
+
+ /**
+ * Appends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.
+ */
+ Matrix3D.prototype.appendTranslation = function (x, y, z) {
+ this.rawData[12] += x;
+ this.rawData[13] += y;
+ this.rawData[14] += z;
+ };
+
+ /**
+ * Returns a new Matrix3D object that is an exact copy of the current Matrix3D object.
+ */
+ Matrix3D.prototype.clone = function () {
+ return new Matrix3D(this.rawData.slice(0));
+ };
+
+ /**
+ * Copies a Vector3D object into specific column of the calling Matrix3D object.
+ */
+ Matrix3D.prototype.copyColumnFrom = function (column, vector3D) {
+ switch (column) {
+ case 0:
+ this.rawData[0] = vector3D.x;
+ this.rawData[1] = vector3D.y;
+ this.rawData[2] = vector3D.z;
+ this.rawData[3] = vector3D.w;
+ break;
+ case 1:
+ this.rawData[4] = vector3D.x;
+ this.rawData[5] = vector3D.y;
+ this.rawData[6] = vector3D.z;
+ this.rawData[7] = vector3D.w;
+ break;
+ case 2:
+ this.rawData[8] = vector3D.x;
+ this.rawData[9] = vector3D.y;
+ this.rawData[10] = vector3D.z;
+ this.rawData[11] = vector3D.w;
+ break;
+ case 3:
+ this.rawData[12] = vector3D.x;
+ this.rawData[13] = vector3D.y;
+ this.rawData[14] = vector3D.z;
+ this.rawData[15] = vector3D.w;
+ break;
+ default:
+ throw new ArgumentError("ArgumentError, Column " + column + " out of bounds [0, ..., 3]");
+ }
+ };
+
+ /**
+ * Copies specific column of the calling Matrix3D object into the Vector3D object.
+ */
+ Matrix3D.prototype.copyColumnTo = function (column, vector3D) {
+ switch (column) {
+ case 0:
+ vector3D.x = this.rawData[0];
+ vector3D.y = this.rawData[1];
+ vector3D.z = this.rawData[2];
+ vector3D.w = this.rawData[3];
+ break;
+ case 1:
+ vector3D.x = this.rawData[4];
+ vector3D.y = this.rawData[5];
+ vector3D.z = this.rawData[6];
+ vector3D.w = this.rawData[7];
+ break;
+ case 2:
+ vector3D.x = this.rawData[8];
+ vector3D.y = this.rawData[9];
+ vector3D.z = this.rawData[10];
+ vector3D.w = this.rawData[11];
+ break;
+ case 3:
+ vector3D.x = this.rawData[12];
+ vector3D.y = this.rawData[13];
+ vector3D.z = this.rawData[14];
+ vector3D.w = this.rawData[15];
+ break;
+ default:
+ throw new ArgumentError("ArgumentError, Column " + column + " out of bounds [0, ..., 3]");
+ }
+ };
+
+ /**
+ * Copies all of the matrix data from the source Matrix3D object into the calling Matrix3D object.
+ */
+ Matrix3D.prototype.copyFrom = function (sourceMatrix3D) {
+ var len = sourceMatrix3D.rawData.length;
+ for (var c = 0; c < len; c++)
+ this.rawData[c] = sourceMatrix3D.rawData[c];
+ };
+
+ Matrix3D.prototype.copyRawDataFrom = function (vector, index, transpose) {
+ if (typeof index === "undefined") { index = 0; }
+ if (typeof transpose === "undefined") { transpose = false; }
+ if (transpose)
+ this.transpose();
+
+ var len = vector.length - index;
+ for (var c = 0; c < len; c++)
+ this.rawData[c] = vector[c + index];
+
+ if (transpose)
+ this.transpose();
+ };
+
+ Matrix3D.prototype.copyRawDataTo = function (vector, index, transpose) {
+ if (typeof index === "undefined") { index = 0; }
+ if (typeof transpose === "undefined") { transpose = false; }
+ if (transpose)
+ this.transpose();
+
+ var len = this.rawData.length;
+ for (var c = 0; c < len; c++)
+ vector[c + index] = this.rawData[c];
+
+ if (transpose)
+ this.transpose();
+ };
+
+ /**
+ * Copies a Vector3D object into specific row of the calling Matrix3D object.
+ */
+ Matrix3D.prototype.copyRowFrom = function (row, vector3D) {
+ switch (row) {
+ case 0:
+ this.rawData[0] = vector3D.x;
+ this.rawData[4] = vector3D.y;
+ this.rawData[8] = vector3D.z;
+ this.rawData[12] = vector3D.w;
+ break;
+ case 1:
+ this.rawData[1] = vector3D.x;
+ this.rawData[5] = vector3D.y;
+ this.rawData[9] = vector3D.z;
+ this.rawData[13] = vector3D.w;
+ break;
+ case 2:
+ this.rawData[2] = vector3D.x;
+ this.rawData[6] = vector3D.y;
+ this.rawData[10] = vector3D.z;
+ this.rawData[14] = vector3D.w;
+ break;
+ case 3:
+ this.rawData[3] = vector3D.x;
+ this.rawData[7] = vector3D.y;
+ this.rawData[11] = vector3D.z;
+ this.rawData[15] = vector3D.w;
+ break;
+ default:
+ throw new ArgumentError("ArgumentError, Row " + row + " out of bounds [0, ..., 3]");
+ }
+ };
+
+ /**
+ * Copies specific row of the calling Matrix3D object into the Vector3D object.
+ */
+ Matrix3D.prototype.copyRowTo = function (row, vector3D) {
+ switch (row) {
+ case 0:
+ vector3D.x = this.rawData[0];
+ vector3D.y = this.rawData[4];
+ vector3D.z = this.rawData[8];
+ vector3D.w = this.rawData[12];
+ break;
+ case 1:
+ vector3D.x = this.rawData[1];
+ vector3D.y = this.rawData[5];
+ vector3D.z = this.rawData[9];
+ vector3D.w = this.rawData[13];
+ break;
+ case 2:
+ vector3D.x = this.rawData[2];
+ vector3D.y = this.rawData[6];
+ vector3D.z = this.rawData[10];
+ vector3D.w = this.rawData[14];
+ break;
+ case 3:
+ vector3D.x = this.rawData[3];
+ vector3D.y = this.rawData[7];
+ vector3D.z = this.rawData[11];
+ vector3D.w = this.rawData[15];
+ break;
+ default:
+ throw new ArgumentError("ArgumentError, Row " + row + " out of bounds [0, ..., 3]");
+ }
+ };
+
+ /**
+ * Copies this Matrix3D object into a destination Matrix3D object.
+ */
+ Matrix3D.prototype.copyToMatrix3D = function (dest) {
+ dest.rawData = this.rawData.slice(0);
+ };
+
+ /**
+ * Returns the transformation matrix's translation, rotation, and scale settings as a Vector of three Vector3D objects.
+ */
+ Matrix3D.prototype.decompose = function (orientationStyle) {
+ if (typeof orientationStyle === "undefined") { orientationStyle = "eulerAngles"; }
+ var q;
+
+ // Initial Tests - Not OK
+ var vec = [];
+ var m = this.clone();
+ var mr = m.rawData;
+
+ var pos = new Vector3D(mr[12], mr[13], mr[14]);
+ mr[12] = 0;
+ mr[13] = 0;
+ mr[14] = 0;
+
+ var scale = new Vector3D();
+
+ scale.x = Math.sqrt(mr[0] * mr[0] + mr[1] * mr[1] + mr[2] * mr[2]);
+ scale.y = Math.sqrt(mr[4] * mr[4] + mr[5] * mr[5] + mr[6] * mr[6]);
+ scale.z = Math.sqrt(mr[8] * mr[8] + mr[9] * mr[9] + mr[10] * mr[10]);
+
+ if (mr[0] * (mr[5] * mr[10] - mr[6] * mr[9]) - mr[1] * (mr[4] * mr[10] - mr[6] * mr[8]) + mr[2] * (mr[4] * mr[9] - mr[5] * mr[8]) < 0)
+ scale.z = -scale.z;
+
+ mr[0] /= scale.x;
+ mr[1] /= scale.x;
+ mr[2] /= scale.x;
+ mr[4] /= scale.y;
+ mr[5] /= scale.y;
+ mr[6] /= scale.y;
+ mr[8] /= scale.z;
+ mr[9] /= scale.z;
+ mr[10] /= scale.z;
+
+ var rot = new Vector3D();
+
+ switch (orientationStyle) {
+ case Orientation3D.AXIS_ANGLE:
+ rot.w = Math.acos((mr[0] + mr[5] + mr[10] - 1) / 2);
+
+ var len = Math.sqrt((mr[6] - mr[9]) * (mr[6] - mr[9]) + (mr[8] - mr[2]) * (mr[8] - mr[2]) + (mr[1] - mr[4]) * (mr[1] - mr[4]));
+ rot.x = (mr[6] - mr[9]) / len;
+ rot.y = (mr[8] - mr[2]) / len;
+ rot.z = (mr[1] - mr[4]) / len;
+
+ break;
+ case Orientation3D.QUATERNION:
+ var tr = mr[0] + mr[5] + mr[10];
+
+ if (tr > 0) {
+ rot.w = Math.sqrt(1 + tr) / 2;
+
+ rot.x = (mr[6] - mr[9]) / (4 * rot.w);
+ rot.y = (mr[8] - mr[2]) / (4 * rot.w);
+ rot.z = (mr[1] - mr[4]) / (4 * rot.w);
+ } else if ((mr[0] > mr[5]) && (mr[0] > mr[10])) {
+ rot.x = Math.sqrt(1 + mr[0] - mr[5] - mr[10]) / 2;
+
+ rot.w = (mr[6] - mr[9]) / (4 * rot.x);
+ rot.y = (mr[1] + mr[4]) / (4 * rot.x);
+ rot.z = (mr[8] + mr[2]) / (4 * rot.x);
+ } else if (mr[5] > mr[10]) {
+ rot.y = Math.sqrt(1 + mr[5] - mr[0] - mr[10]) / 2;
+
+ rot.x = (mr[1] + mr[4]) / (4 * rot.y);
+ rot.w = (mr[8] - mr[2]) / (4 * rot.y);
+ rot.z = (mr[6] + mr[9]) / (4 * rot.y);
+ } else {
+ rot.z = Math.sqrt(1 + mr[10] - mr[0] - mr[5]) / 2;
+
+ rot.x = (mr[8] + mr[2]) / (4 * rot.z);
+ rot.y = (mr[6] + mr[9]) / (4 * rot.z);
+ rot.w = (mr[1] - mr[4]) / (4 * rot.z);
+ }
+
+ break;
+ case Orientation3D.EULER_ANGLES:
+ rot.y = Math.asin(-mr[2]);
+
+ //var cos:number = Math.cos(rot.y);
+ if (mr[2] != 1 && mr[2] != -1) {
+ rot.x = Math.atan2(mr[6], mr[10]);
+ rot.z = Math.atan2(mr[1], mr[0]);
+ } else {
+ rot.z = 0;
+ rot.x = Math.atan2(mr[4], mr[5]);
+ }
+
+ break;
+ }
+
+ vec.push(pos);
+ vec.push(rot);
+ vec.push(scale);
+
+ return vec;
+ };
+
+ /**
+ * Uses the transformation matrix without its translation elements to transform a Vector3D object from one space
+ * coordinate to another.
+ */
+ Matrix3D.prototype.deltaTransformVector = function (v) {
+ var x = v.x;
+ var y = v.y;
+ var z = v.z;
+
+ return new Vector3D((x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8]), (x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9]), (x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10]), (x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11]));
+ };
+
+ /**
+ * Converts the current matrix to an identity or unit matrix.
+ */
+ Matrix3D.prototype.identity = function () {
+ this.rawData = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
+ };
+
+ /**
+ * [static] Interpolates the translation, rotation, and scale transformation of one matrix toward those of the target matrix.
+ */
+ Matrix3D.interpolate = function (thisMat, toMat, percent) {
+ var m = new Matrix3D();
+ for (var i = 0; i < 16; ++i)
+ m.rawData[i] = thisMat.rawData[i] + (toMat.rawData[i] - thisMat.rawData[i]) * percent;
+
+ return m;
+ };
+
+ /**
+ * Interpolates this matrix towards the translation, rotation, and scale transformations of the target matrix.
+ */
+ Matrix3D.prototype.interpolateTo = function (toMat, percent) {
+ for (var i = 0; i < 16; ++i)
+ this.rawData[i] = this.rawData[i] + (toMat.rawData[i] - this.rawData[i]) * percent;
+ };
+
+ /**
+ * Inverts the current matrix.
+ */
+ Matrix3D.prototype.invert = function () {
+ var d = this.determinant;
+ var invertable = Math.abs(d) > 0.00000000001;
+
+ if (invertable) {
+ d = 1 / d;
+ var m11 = this.rawData[0];
+ var m21 = this.rawData[4];
+ var m31 = this.rawData[8];
+ var m41 = this.rawData[12];
+ var m12 = this.rawData[1];
+ var m22 = this.rawData[5];
+ var m32 = this.rawData[9];
+ var m42 = this.rawData[13];
+ var m13 = this.rawData[2];
+ var m23 = this.rawData[6];
+ var m33 = this.rawData[10];
+ var m43 = this.rawData[14];
+ var m14 = this.rawData[3];
+ var m24 = this.rawData[7];
+ var m34 = this.rawData[11];
+ var m44 = this.rawData[15];
+
+ this.rawData[0] = d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24));
+ this.rawData[1] = -d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14));
+ this.rawData[2] = d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14));
+ this.rawData[3] = -d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14));
+ this.rawData[4] = -d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24));
+ this.rawData[5] = d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14));
+ this.rawData[6] = -d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14));
+ this.rawData[7] = d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14));
+ this.rawData[8] = d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24));
+ this.rawData[9] = -d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14));
+ this.rawData[10] = d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14));
+ this.rawData[11] = -d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14));
+ this.rawData[12] = -d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23));
+ this.rawData[13] = d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13));
+ this.rawData[14] = -d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13));
+ this.rawData[15] = d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13));
+ }
+ return invertable;
+ };
+
+ /* TODO implement pointAt
+ public pointAt( pos:Vector3D, at:Vector3D = null, up:Vector3D = null )
+ {
+ }
+ */
+ /**
+ * Prepends a matrix by multiplying the current Matrix3D object by another Matrix3D object.
+ */
+ Matrix3D.prototype.prepend = function (rhs) {
+ var m111 = rhs.rawData[0], m121 = rhs.rawData[4], m131 = rhs.rawData[8], m141 = rhs.rawData[12], m112 = rhs.rawData[1], m122 = rhs.rawData[5], m132 = rhs.rawData[9], m142 = rhs.rawData[13], m113 = rhs.rawData[2], m123 = rhs.rawData[6], m133 = rhs.rawData[10], m143 = rhs.rawData[14], m114 = rhs.rawData[3], m124 = rhs.rawData[7], m134 = rhs.rawData[11], m144 = rhs.rawData[15], m211 = this.rawData[0], m221 = this.rawData[4], m231 = this.rawData[8], m241 = this.rawData[12], m212 = this.rawData[1], m222 = this.rawData[5], m232 = this.rawData[9], m242 = this.rawData[13], m213 = this.rawData[2], m223 = this.rawData[6], m233 = this.rawData[10], m243 = this.rawData[14], m214 = this.rawData[3], m224 = this.rawData[7], m234 = this.rawData[11], m244 = this.rawData[15];
+
+ this.rawData[0] = m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241;
+ this.rawData[1] = m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242;
+ this.rawData[2] = m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243;
+ this.rawData[3] = m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244;
+
+ this.rawData[4] = m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241;
+ this.rawData[5] = m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242;
+ this.rawData[6] = m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243;
+ this.rawData[7] = m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244;
+
+ this.rawData[8] = m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241;
+ this.rawData[9] = m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242;
+ this.rawData[10] = m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243;
+ this.rawData[11] = m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244;
+
+ this.rawData[12] = m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241;
+ this.rawData[13] = m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242;
+ this.rawData[14] = m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243;
+ this.rawData[15] = m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244;
+ };
+
+ /**
+ * Prepends an incremental rotation to a Matrix3D object.
+ */
+ Matrix3D.prototype.prependRotation = function (degrees, axis) {
+ var m = Matrix3D.getAxisRotation(axis.x, axis.y, axis.z, degrees);
+
+ /*
+ if ( pivot != null )
+ {
+ var p:Vector3D = pivot;
+ m.appendTranslation( p.x, p.y, p.z );
+ }
+ */
+ this.prepend(m);
+ };
+
+ /**
+ * Prepends an incremental scale change along the x, y, and z axes to a Matrix3D object.
+ */
+ Matrix3D.prototype.prependScale = function (xScale, yScale, zScale) {
+ // Initial Tests - OK
+ this.prepend(new Matrix3D([xScale, 0, 0, 0, 0, yScale, 0, 0, 0, 0, zScale, 0, 0, 0, 0, 1]));
+ };
+
+ /**
+ * Prepends an incremental translation, a repositioning along the x, y, and z axes, to a Matrix3D object.
+ */
+ Matrix3D.prototype.prependTranslation = function (x, y, z) {
+ // Initial Tests - OK
+ var m = new Matrix3D();
+ m.position = new Vector3D(x, y, z);
+ this.prepend(m);
+ };
+
+ // TODO orientationStyle
+ /**
+ * Sets the transformation matrix's translation, rotation, and scale settings.
+ */
+ Matrix3D.prototype.recompose = function (components) {
+ // Initial Tests - OK
+ if (components.length < 3)
+ return false;
+
+ //components[2].x == 0 || components[2].y == 0 || components[2].z == 0) return false;
+ this.identity();
+ this.appendScale(components[2].x, components[2].y, components[2].z);
+
+ var angle;
+ angle = -components[1].x;
+ this.append(new Matrix3D([1, 0, 0, 0, 0, Math.cos(angle), -Math.sin(angle), 0, 0, Math.sin(angle), Math.cos(angle), 0, 0, 0, 0, 0]));
+ angle = -components[1].y;
+ this.append(new Matrix3D([Math.cos(angle), 0, Math.sin(angle), 0, 0, 1, 0, 0, -Math.sin(angle), 0, Math.cos(angle), 0, 0, 0, 0, 0]));
+ angle = -components[1].z;
+ this.append(new Matrix3D([Math.cos(angle), -Math.sin(angle), 0, 0, Math.sin(angle), Math.cos(angle), 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]));
+
+ this.position = components[0];
+ this.rawData[15] = 1;
+
+ return true;
+ };
+
+ Matrix3D.prototype.transformVector = function (v) {
+ var x = v.x;
+ var y = v.y;
+ var z = v.z;
+
+ return new Vector3D((x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12]), (x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13]), (x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14]), (x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11] + this.rawData[15]));
+ };
+
+ /**
+ * Uses the transformation matrix to transform a Vector of Numbers from one coordinate space to another.
+ */
+ Matrix3D.prototype.transformVectors = function (vin, vout) {
+ // Initial Tests - OK
+ var i = 0;
+ var x = 0, y = 0, z = 0;
+
+ while (i + 3 <= vin.length) {
+ x = vin[i];
+ y = vin[i + 1];
+ z = vin[i + 2];
+ vout[i] = x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12];
+ vout[i + 1] = x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13];
+ vout[i + 2] = x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14];
+ i += 3;
+ }
+ };
+
+ /**
+ * Converts the current Matrix3D object to a matrix where the rows and columns are swapped.
+ */
+ Matrix3D.prototype.transpose = function () {
+ // Initial Tests - OK
+ var oRawData = this.rawData.slice(0);
+
+ this.rawData[1] = oRawData[4];
+ this.rawData[2] = oRawData[8];
+ this.rawData[3] = oRawData[12];
+ this.rawData[4] = oRawData[1];
+ this.rawData[6] = oRawData[9];
+ this.rawData[7] = oRawData[13];
+ this.rawData[8] = oRawData[2];
+ this.rawData[9] = oRawData[6];
+ this.rawData[11] = oRawData[14];
+ this.rawData[12] = oRawData[3];
+ this.rawData[13] = oRawData[7];
+ this.rawData[14] = oRawData[11];
+ };
+
+ Matrix3D.getAxisRotation = function (x, y, z, degrees) {
+ // internal class use by rotations which have been tested
+ var m = new Matrix3D();
+
+ var rad = degrees * (Math.PI / 180);
+ var c = Math.cos(rad);
+ var s = Math.sin(rad);
+ var t = 1 - c;
+ var tmp1, tmp2;
+
+ m.rawData[0] = c + x * x * t;
+ m.rawData[5] = c + y * y * t;
+ m.rawData[10] = c + z * z * t;
+
+ tmp1 = x * y * t;
+ tmp2 = z * s;
+ m.rawData[1] = tmp1 + tmp2;
+ m.rawData[4] = tmp1 - tmp2;
+ tmp1 = x * z * t;
+ tmp2 = y * s;
+ m.rawData[8] = tmp1 + tmp2;
+ m.rawData[2] = tmp1 - tmp2;
+ tmp1 = y * z * t;
+ tmp2 = x * s;
+ m.rawData[9] = tmp1 - tmp2;
+ m.rawData[6] = tmp1 + tmp2;
+
+ return m;
+ };
+
+ Object.defineProperty(Matrix3D.prototype, "determinant", {
+ /**
+ * [read-only] A Number that determines whether a matrix is invertible.
+ */
+ get: function () {
+ return ((this.rawData[0] * this.rawData[5] - this.rawData[4] * this.rawData[1]) * (this.rawData[10] * this.rawData[15] - this.rawData[14] * this.rawData[11]) - (this.rawData[0] * this.rawData[9] - this.rawData[8] * this.rawData[1]) * (this.rawData[6] * this.rawData[15] - this.rawData[14] * this.rawData[7]) + (this.rawData[0] * this.rawData[13] - this.rawData[12] * this.rawData[1]) * (this.rawData[6] * this.rawData[11] - this.rawData[10] * this.rawData[7]) + (this.rawData[4] * this.rawData[9] - this.rawData[8] * this.rawData[5]) * (this.rawData[2] * this.rawData[15] - this.rawData[14] * this.rawData[3]) - (this.rawData[4] * this.rawData[13] - this.rawData[12] * this.rawData[5]) * (this.rawData[2] * this.rawData[11] - this.rawData[10] * this.rawData[3]) + (this.rawData[8] * this.rawData[13] - this.rawData[12] * this.rawData[9]) * (this.rawData[2] * this.rawData[7] - this.rawData[6] * this.rawData[3]));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Matrix3D.prototype, "position", {
+ /**
+ * A Vector3D object that holds the position, the 3D coordinate (x,y,z) of a display object within the
+ * transformation's frame of reference.
+ */
+ get: function () {
+ return new Vector3D(this.rawData[12], this.rawData[13], this.rawData[14]);
+ },
+ set: function (value) {
+ this.rawData[12] = value.x;
+ this.rawData[13] = value.y;
+ this.rawData[14] = value.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Matrix3D.prototype.toFixed = function (decimalPlace) {
+ var magnitude = Math.pow(10, decimalPlace);
+ return "matrix3d(" + Math.round(this.rawData[0] * magnitude) / magnitude + "," + Math.round(this.rawData[1] * magnitude) / magnitude + "," + Math.round(this.rawData[2] * magnitude) / magnitude + "," + Math.round(this.rawData[3] * magnitude) / magnitude + "," + Math.round(this.rawData[4] * magnitude) / magnitude + "," + Math.round(this.rawData[5] * magnitude) / magnitude + "," + Math.round(this.rawData[6] * magnitude) / magnitude + "," + Math.round(this.rawData[7] * magnitude) / magnitude + "," + Math.round(this.rawData[8] * magnitude) / magnitude + "," + Math.round(this.rawData[9] * magnitude) / magnitude + "," + Math.round(this.rawData[10] * magnitude) / magnitude + "," + Math.round(this.rawData[11] * magnitude) / magnitude + "," + Math.round(this.rawData[12] * magnitude) / magnitude + "," + Math.round(this.rawData[13] * magnitude) / magnitude + "," + Math.round(this.rawData[14] * magnitude) / magnitude + "," + Math.round(this.rawData[15] * magnitude) / magnitude + ")";
+ };
+
+ Matrix3D.prototype.toString = function () {
+ return "matrix3d(" + Math.round(this.rawData[0] * 1000) / 1000 + "," + Math.round(this.rawData[1] * 1000) / 1000 + "," + Math.round(this.rawData[2] * 1000) / 1000 + "," + Math.round(this.rawData[3] * 1000) / 1000 + "," + Math.round(this.rawData[4] * 1000) / 1000 + "," + Math.round(this.rawData[5] * 1000) / 1000 + "," + Math.round(this.rawData[6] * 1000) / 1000 + "," + Math.round(this.rawData[7] * 1000) / 1000 + "," + Math.round(this.rawData[8] * 1000) / 1000 + "," + Math.round(this.rawData[9] * 1000) / 1000 + "," + Math.round(this.rawData[10] * 1000) / 1000 + "," + Math.round(this.rawData[11] * 1000) / 1000 + "," + Math.round(this.rawData[12] * 1000) / 1000 + "," + Math.round(this.rawData[13] * 1000) / 1000 + "," + Math.round(this.rawData[14] * 1000) / 1000 + "," + Math.round(this.rawData[15] * 1000) / 1000 + ")";
+ };
+ return Matrix3D;
+})();
+
+module.exports = Matrix3D;
+
+
+},{"awayjs-core/lib/core/geom/Orientation3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/errors/ArgumentError":undefined}],"awayjs-core/lib/core/geom/Matrix":[function(require,module,exports){
+var Point = require("awayjs-core/lib/core/geom/Point");
+
+var ArgumentError = require("awayjs-core/lib/errors/ArgumentError");
+
+/**
+* The Matrix class represents a transformation matrix that determines how to
+* map points from one coordinate space to another. You can perform various
+* graphical transformations on a display object by setting the properties of
+* a Matrix object, applying that Matrix object to the matrix
+* property of a Transform object, and then applying that Transform object as
+* the transform
property of the display object. These
+* transformation functions include translation(x and y
+* repositioning), rotation, scaling, and skewing.
+*
+* Together these types of transformations are known as affine +* transformations. Affine transformations preserve the straightness of +* lines while transforming, so that parallel lines stay parallel.
+* +*To apply a transformation matrix to a display object, you create a
+* Transform object, set its matrix
property to the
+* transformation matrix, and then set the transform
property of
+* the display object to the Transform object. Matrix objects are also used as
+* parameters of some methods, such as the following:
draw()
method of a BitmapData objectbeginBitmapFill()
method,
+* beginGradientFill()
method, or
+* lineGradientStyle()
method of a Graphics objectA transformation matrix object is a 3 x 3 matrix with the following +* contents:
+* +*In traditional transformation matrixes, the u
,
+* v
, and w
properties provide extra capabilities.
+* The Matrix class can only operate in two-dimensional space, so it always
+* assumes that the property values u
and v
are 0.0,
+* and that the property value w
is 1.0. The effective values of
+* the matrix are as follows:
You can get and set the values of all six of the other properties in a
+* Matrix object: a
, b
, c
,
+* d
, tx
, and ty
.
The Matrix class supports the four major types of transformations: +* translation, scaling, rotation, and skewing. You can set three of these +* transformations by using specialized methods, as described in the following +* table:
+* +*Each transformation function alters the current matrix properties so
+* that you can effectively combine multiple transformations. To do this, you
+* call more than one transformation function before applying the matrix to
+* its display object target(by using the transform
property of
+* that display object).
Use the new Matrix()
constructor to create a Matrix object
+* before you can call the methods of the Matrix object.
If you do not provide any parameters to the new Matrix()
+ * constructor, it creates an identity matrix with the following
+ * values:
In matrix notation, the identity matrix looks like this:
+ * + * @param a The value that affects the positioning of pixels along the + * x axis when scaling or rotating an image. + * @param b The value that affects the positioning of pixels along the + * y axis when rotating or skewing an image. + * @param c The value that affects the positioning of pixels along the + * x axis when rotating or skewing an image. + * @param d The value that affects the positioning of pixels along the + * y axis when scaling or rotating an image.. + * @param tx The distance by which to translate each point along the x + * axis. + * @param ty The distance by which to translate each point along the y + * axis. + */ + function Matrix(a, b, c, d, tx, ty) { + if (typeof a === "undefined") { a = 1; } + if (typeof b === "undefined") { b = 0; } + if (typeof c === "undefined") { c = 0; } + if (typeof d === "undefined") { d = 1; } + if (typeof tx === "undefined") { tx = 0; } + if (typeof ty === "undefined") { ty = 0; } + this.a = a; + this.b = b; + this.c = c; + this.d = d; + this.tx = tx; + this.ty = ty; + } + /** + * Returns a new Matrix object that is a clone of this matrix, with an exact + * copy of the contained object. + * + * @return A Matrix object. + */ + Matrix.prototype.clone = function () { + return new Matrix(this.a, this.b, this.c, this.d, this.tx, this.ty); + }; + + /** + * Concatenates a matrix with the current matrix, effectively combining the + * geometric effects of the two. In mathematical terms, concatenating two + * matrixes is the same as combining them using matrix multiplication. + * + *For example, if matrix m1
scales an object by a factor of
+ * four, and matrix m2
rotates an object by 1.5707963267949
+ * radians(Math.PI/2
), then m1.concat(m2)
+ * transforms m1
into a matrix that scales an object by a factor
+ * of four and rotates the object by Math.PI/2
radians.
This method replaces the source matrix with the concatenated matrix. If
+ * you want to concatenate two matrixes without altering either of the two
+ * source matrixes, first copy the source matrix by using the
+ * clone()
method, as shown in the Class Examples section.
Using the createBox()
method lets you obtain the same
+ * matrix as you would if you applied the identity()
,
+ * rotate()
, scale()
, and translate()
+ * methods in succession. For example, mat1.createBox(2,2,Math.PI/4,
+ * 100, 100)
has the same effect as the following:
beginGradientFill()
and lineGradientStyle()
+ * methods of the Graphics class. Width and height are scaled to a
+ * scaleX
/scaleY
pair and the
+ * tx
/ty
values are offset by half the width and
+ * height.
+ *
+ * For example, consider a gradient with the following + * characteristics:
+ * + *GradientType.LINEAR
[0,
+ * 255]
SpreadMethod.PAD
InterpolationMethod.LINEAR_RGB
The following illustrations show gradients in which the matrix was
+ * defined using the createGradientBox()
method with different
+ * parameter settings:
width
parameter.
+ * @param ty The distance, in pixels, to translate down along the
+ * y axis. This value is offset by half of the
+ * height
parameter.
+ */
+ Matrix.prototype.createGradientBox = function (width, height, rotation, tx, ty) {
+ if (typeof rotation === "undefined") { rotation = 0; }
+ if (typeof tx === "undefined") { tx = 0; }
+ if (typeof ty === "undefined") { ty = 0; }
+ this.a = width / 1638.4;
+ this.d = height / 1638.4;
+
+ if (rotation != 0.0) {
+ var cos = Math.cos(rotation);
+ var sin = Math.sin(rotation);
+
+ this.b = sin * this.d;
+ this.c = -sin * this.a;
+ this.a *= cos;
+ this.d *= cos;
+ } else {
+ this.b = this.c = 0;
+ }
+
+ this.tx = tx + width / 2;
+ this.ty = ty + height / 2;
+ };
+
+ /**
+ * Given a point in the pretransform coordinate space, returns the
+ * coordinates of that point after the transformation occurs. Unlike the
+ * standard transformation applied using the transformPoint()
+ * method, the deltaTransformPoint()
method's transformation
+ * does not consider the translation parameters tx
and
+ * ty
.
+ *
+ * @param point The point for which you want to get the result of the matrix
+ * transformation.
+ * @return The point resulting from applying the matrix transformation.
+ */
+ Matrix.prototype.deltaTransformPoint = function (point) {
+ return new Point(point.x * this.a + point.y * this.c, point.x * this.b + point.y * this.d);
+ };
+
+ /**
+ * Sets each matrix property to a value that causes a null transformation. An
+ * object transformed by applying an identity matrix will be identical to the
+ * original.
+ *
+ * After calling the identity()
method, the resulting matrix
+ * has the following properties: a
=1, b
=0,
+ * c
=0, d
=1, tx
=0,
+ * ty
=0.
In matrix notation, the identity matrix looks like this:
+ * + */ + Matrix.prototype.identity = function () { + this.a = 1; + this.b = 0; + this.c = 0; + this.d = 1; + this.tx = 0; + this.ty = 0; + }; + + /** + * Performs the opposite transformation of the original matrix. You can apply + * an inverted matrix to an object to undo the transformation performed when + * applying the original matrix. + */ + Matrix.prototype.invert = function () { + var norm = this.a * this.d - this.b * this.c; + + if (norm == 0) { + this.a = this.b = this.c = this.d = 0; + this.tx = -this.tx; + this.ty = -this.ty; + } else { + norm = 1.0 / norm; + var a1 = this.d * norm; + this.d = this.a * norm; + this.a = a1; + this.b *= -norm; + this.c *= -norm; + + var tx1 = -this.a * this.tx - this.c * this.ty; + this.ty = -this.b * this.tx - this.d * this.ty; + this.tx = tx1; + } + }; + + /** + * Returns a new Matrix object that is a clone of this matrix, with an exact + * copy of the contained object. + * + * @param matrix The matrix for which you want to get the result of the matrix + * transformation. + * @return A Matrix object. + */ + Matrix.prototype.multiply = function (matrix) { + var result = new Matrix(); + + result.a = this.a * matrix.a + this.b * matrix.c; + result.b = this.a * matrix.b + this.b * matrix.d; + result.c = this.c * matrix.a + this.d * matrix.c; + result.d = this.c * matrix.b + this.d * matrix.d; + + result.tx = this.tx * matrix.a + this.ty * matrix.c + matrix.tx; + result.ty = this.tx * matrix.b + this.ty * matrix.d + matrix.ty; + + return result; + }; + + /** + * Applies a rotation transformation to the Matrix object. + * + *The rotate()
method alters the a
,
+ * b
, c
, and d
properties of the
+ * Matrix object. In matrix notation, this is the same as concatenating the
+ * current matrix with the following:
sx
, and the y axis it is multiplied by
+ * sy
.
+ *
+ * The scale()
method alters the a
and
+ * d
properties of the Matrix object. In matrix notation, this
+ * is the same as concatenating the current matrix with the following
+ * matrix:
a
, b
, c
,
+ * d
, tx
, and ty
.
+ */
+ Matrix.prototype.toString = function () {
+ return "[Matrix] (a=" + this.a + ", b=" + this.b + ", c=" + this.c + ", d=" + this.d + ", tx=" + this.tx + ", ty=" + this.ty + ")";
+ };
+
+ /**
+ * Returns the result of applying the geometric transformation represented by
+ * the Matrix object to the specified point.
+ *
+ * @param point The point for which you want to get the result of the Matrix
+ * transformation.
+ * @return The point resulting from applying the Matrix transformation.
+ */
+ Matrix.prototype.transformPoint = function (point) {
+ return new Point(point.x * this.a + point.y * this.c + this.tx, point.x * this.b + point.y * this.d + this.ty);
+ };
+
+ /**
+ * Translates the matrix along the x and y axes, as specified
+ * by the dx
and dy
parameters.
+ *
+ * @param dx The amount of movement along the x axis to the right, in
+ * pixels.
+ * @param dy The amount of movement down along the y axis, in pixels.
+ */
+ Matrix.prototype.translate = function (dx, dy) {
+ this.tx += dx;
+ this.ty += dy;
+ };
+ return Matrix;
+})();
+
+module.exports = Matrix;
+
+
+},{"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/errors/ArgumentError":undefined}],"awayjs-core/lib/core/geom/Orientation3D":[function(require,module,exports){
+/**
+* A Quaternion object which can be used to represent rotations.
+*/
+var Orientation3D = (function () {
+ function Orientation3D() {
+ }
+ Orientation3D.AXIS_ANGLE = "axisAngle";
+
+ Orientation3D.EULER_ANGLES = "eulerAngles";
+
+ Orientation3D.QUATERNION = "quaternion";
+ return Orientation3D;
+})();
+
+module.exports = Orientation3D;
+
+
+},{}],"awayjs-core/lib/core/geom/PerspectiveProjection":[function(require,module,exports){
+/**
+* The PerspectiveProjection class provides an easy way to assign or modify +* the perspective transformations of a display object and all of its +* children. For more complex or custom perspective transformations, use the +* Matrix3D class. While the PerspectiveProjection class provides basic +* three-dimensional presentation properties, the Matrix3D class provides more +* detailed control over the three-dimensional presentation of display objects. +*
+* +*Projection is a way of representing a three-dimensional object in a +* two-dimensional space, like a cube projected onto a computer screen. +* Perspective projection uses a viewing frustum (a rectangular pyramid) to +* model and project a three-dimensional world and its objects on the screen. +* The viewing frustum becomes increasingly wider as it moves further from the +* origin of the viewpoint. The origin of the viewpoint could be a camera or +* the eyes of an observer facing the screen. The projected perspective +* produces the illusion of three dimensions with depth and distance, where +* the objects closer to the screen appear larger than the objects farther +* from the screen.
+* +*A default PerspectiveProjection object is a framework defined for
+* perspective transformation of the root object, based on the field of view
+* and aspect ratio (dimensions) of the stage. The projection center, the
+* vanishing point, is set to the center of the stage, which means the
+* three-dimensional display objects disappear toward the center of the stage
+* as they move back in the z axis. The default viewpoint is at point (0,0)
+* looking down the positive z axis. The y-axis points down toward the bottom
+* of the screen. You can gain access to the root display object's perspective
+* projection settings and change the field of view and projection center
+* properties of the perspectiveProjection property through the root object's
+* DisplayObject.transform
property.
You can also set a different perspective projection setting for a
+* display object through the parent's perspective projection. First, create a
+* PerspectiveProjection object and set its fieldOfView
and
+* projectionCenter
properties. Next, assign the
+* PerspectiveProjection object to the parent display object using the
+* DisplayObject.transform
property. The specified projection
+* matrix and transformation will then apply to all the display object's
+* three-dimensional children.
To modify a perspective projection of the stage or root object: use the
+* transform.matrix
property of the root display object to gain
+* access to the PerspectiveProjection object. Or, apply different perspective
+* projection properties to a display object by setting the perspective
+* projection properties of the display object's parent. The child display
+* object inherits the new properties. Specifically, create a
+* PerspectiveProjection object and set its properties, then assign the
+* PerspectiveProjection object to the perspectiveProjection
+* property of the parent display object's transform
property.
+* The specified projection transformation then applies to all the display
+* object's three-dimensional children.
Since both PerspectiveProjection and Matrix3D objects perform +* perspective transformations, do not assign both to a display object at the +* same time. Use the PerspectiveProjection object for focal length and +* projection center changes. For more control over the perspective +* transformation, create a perspective projection Matrix3D object.
+*/ +var PerspectiveProjection = (function () { + /** + * Creates an instance of a PerspectiveProjection object. + */ + function PerspectiveProjection() { + } + /** + * Returns the underlying Matrix3D object of the display object. + * + *A display object, like the root object, can have a
+ * PerspectiveProjection object without needing a Matrix3D property
+ * defined for its transformations. In fact, use either a
+ * PerspectiveProjection or a Matrix3D object to specify the
+ * perspective transformation. If when using the PerspectiveProjection
+ * object, a Matrix3D object was needed, the toMatrix3D()
+ * method can retrieve the underlying Matrix3D object of the display
+ * object. For example, the toMatrix3D()
method can be
+ * used with the Utils3D.projectVectors()
method.
The following code creates a point at(0,0):
+* +*Methods and properties of the following classes use Point objects:
+* +*You can use the new Point()
constructor to create a Point
+* object.
true
if the object is equal to this Point
+ * object; false
if it is not equal.
+ */
+ Point.prototype.equals = function (toCompare) {
+ return (this.x == toCompare.x && this.y == toCompare.y);
+ };
+
+ /**
+ * Scales the line segment between(0,0) and the current point to a set
+ * length.
+ *
+ * @param thickness The scaling value. For example, if the current point is
+ * (0,5), and you normalize it to 1, the point returned is
+ * at(0,1).
+ */
+ Point.prototype.normalize = function (thickness) {
+ if (typeof thickness === "undefined") { thickness = 1; }
+ if (this.length != 0) {
+ var invLength = thickness / this.length;
+ this.x *= invLength;
+ this.y *= invLength;
+ return;
+ }
+ throw "Cannot divide by zero length.";
+ };
+
+ /**
+ * Offsets the Point object by the specified amount. The value of
+ * dx
is added to the original value of x to create the
+ * new x value. The value of dy
is added to the original
+ * value of y to create the new y value.
+ *
+ * @param dx The amount by which to offset the horizontal coordinate,
+ * x.
+ * @param dy The amount by which to offset the vertical coordinate, y.
+ */
+ Point.prototype.offset = function (dx, dy) {
+ this.x += dx;
+ this.y += dy;
+ };
+
+ Point.prototype.setTo = function (xa, ya) {
+ };
+
+ /**
+ * Subtracts the coordinates of another point from the coordinates of this
+ * point to create a new point.
+ *
+ * @param v The point to be subtracted.
+ * @return The new point.
+ */
+ Point.prototype.subtract = function (v) {
+ return new Point(this.x - v.x, this.y - v.y);
+ };
+
+ /**
+ * Returns a string that contains the values of the x and y
+ * coordinates. The string has the form "(x=x,
+ * y=y)"
, so calling the toString()
method for a
+ * point at 23,17 would return "(x=23, y=17)"
.
+ *
+ * @return The string representation of the coordinates.
+ */
+ Point.prototype.toString = function () {
+ return "[Point] (x=" + this.x + ", y=" + this.y + ")";
+ };
+
+ /**
+ * Returns the distance between pt1
and pt2
.
+ *
+ * @param pt1 The first point.
+ * @param pt2 The second point.
+ * @return The distance between the first and second points.
+ */
+ Point.distance = function (pt1, pt2) {
+ var dx = pt2.x - pt1.x;
+ var dy = pt2.y - pt1.y;
+
+ return Math.sqrt(dx * dx + dy * dy);
+ };
+
+ /**
+ * Determines a point between two specified points. The parameter
+ * f
determines where the new interpolated point is located
+ * relative to the two end points specified by parameters pt1
+ * and pt2
. The closer the value of the parameter f
+ * is to 1.0
, the closer the interpolated point is to the first
+ * point(parameter pt1
). The closer the value of the parameter
+ * f
is to 0, the closer the interpolated point is to the second
+ * point(parameter pt2
).
+ *
+ * @param pt1 The first point.
+ * @param pt2 The second point.
+ * @param f The level of interpolation between the two points. Indicates
+ * where the new point will be, along the line between
+ * pt1
and pt2
. If f
=1,
+ * pt1
is returned; if f
=0,
+ * pt2
is returned.
+ * @return The new, interpolated point.
+ */
+ Point.interpolate = function (pt1, pt2, f) {
+ return new Point(pt2.x + (pt1.x - pt2.x) * f, pt2.y + (pt1.y - pt2.y) * f);
+ };
+
+ /**
+ * Converts a pair of polar coordinates to a Cartesian point coordinate.
+ *
+ * @param len The length coordinate of the polar pair.
+ * @param angle The angle, in radians, of the polar pair.
+ * @return The Cartesian point.
+ */
+ Point.polar = function (len, angle) {
+ return new Point(len * Math.cos(angle), len * Math.sin(angle));
+ };
+ return Point;
+})();
+
+module.exports = Point;
+
+
+},{}],"awayjs-core/lib/core/geom/PoissonLookup":[function(require,module,exports){
+var PoissonLookup = (function () {
+ function PoissonLookup() {
+ }
+ PoissonLookup.initDistributions = function () {
+ // precalculated for best control
+ this._distributions = new Array();
+ this._distributions[0] = new Array(0.3082841, 0.4320919);
+ this._distributions[1] = new Array(0.3082841, 0.4320919, -0.2274942, -0.6640266);
+ this._distributions[2] = new Array(0.8742689, 0.0009265686, -0.6864116, -0.5536607, -0.2325206, 0.7678371);
+ this._distributions[3] = new Array(0.3913446, -0.7084417, -0.7511101, -0.5935929, -0.2323436, 0.5320091, 0.8435315, 0.5035911);
+ this._distributions[4] = new Array(0.2122471, -0.5771395, -0.8543506, -0.1763534, 0.5189021, 0.8323698, -0.3616908, 0.5865368, 0.9523004, -0.04948437);
+ this._distributions[5] = new Array(0.5791035, 0.3496495, 0.2959551, -0.6006749, -0.2419119, -0.06879545, -0.7403072, 0.6110353, -0.04555973, 0.8059174, -0.5275017, -0.737129);
+ this._distributions[6] = new Array(0.06941478, 0.8519508, -0.7441907, 0.2426432, 0.6439992, -0.2405252, -0.1007523, -0.2327587, -0.6427067, -0.7248485, 0.8050759, 0.5492936, 0.3573822, -0.8824506);
+ this._distributions[7] = new Array(0.8509863, 0.4452587, -0.09507271, 0.2073005, 0.1706571, -0.6434793, 0.8029777, -0.2718274, -0.4401725, 0.8196304, 0.2715359, 0.8598521, -0.8121575, -0.006447683, -0.6486837, -0.7237598);
+ this._distributions[8] = new Array(0.6951686, -0.2680728, -0.04933243, 0.3710589, 0.6592212, 0.3661054, -0.01579228, -0.6909603, -0.3275101, -0.1756866, 0.3811549, 0.9218544, -0.216032, 0.9755028, -0.7065172, 0.3355389, -0.6579109, -0.6798355);
+ this._distributions[9] = new Array(0.6181276, -0.09790418, -0.2537868, -0.5570995, -0.1964931, 0.3459414, 0.3474613, -0.8885581, 0.5135743, 0.5753114, -0.9549091, 0.1480672, -0.8711916, -0.4293123, -0.6928071, 0.6190156, -0.13369, 0.8892705, 0.0548224, -0.1246777);
+ this._distributions[10] = new Array(0.4853027, -0.5080479, -0.1331675, -0.506597, 0.139575, 0.01316885, 0.803486, -0.07568797, 0.5240274, 0.4883182, -0.4334005, 0.1207938, -0.7794577, -0.3985141, 0.1576432, -0.9861221, -0.3712867, 0.6959021, 0.1517378, 0.9847429, -0.9762396, 0.1661073);
+ this._distributions[11] = new Array(-0.2790166, -0.01252619, 0.3389016, 0.3921154, 0.2408341, -0.313211, -0.8151779, -0.3898362, -0.6347761, 0.3486495, 0.09471484, -0.7722448, -0.1385674, 0.6364574, 0.2456331, 0.9295807, -0.3864306, -0.8247881, 0.6111673, -0.7164014, 0.8287669, 0.05466961, 0.837706, 0.5415626);
+ this._distributions[12] = new Array(0.056417, 0.3185693, -0.8245888, 0.1882799, 0.8575996, 0.1136829, 0.1070375, 0.875332, 0.4076743, -0.06000621, -0.4311306, 0.7239349, 0.2677574, -0.538472, -0.08486642, -0.2083647, -0.888989, -0.3906443, -0.4768958, -0.6664082, 0.09334993, -0.9861541, 0.808736, -0.455949, 0.5889823, 0.7660807);
+ this._distributions[13] = new Array(-0.2681346, -0.3955857, -0.1315102, -0.8852947, -0.5143692, 0.09551838, 0.4344836, -0.546945, -0.8620899, -0.3813288, 0.1650431, 0.02034803, -0.1543657, 0.3842218, -0.828457, 0.5376903, -0.6145, -0.7818927, -0.2639062, 0.8784655, 0.1912684, 0.9720125, 0.3135219, 0.5224229, 0.7850655, 0.4592297, 0.7465045, -0.1368916);
+ this._distributions[14] = new Array(0.4241029, 0.695281, 0.150511, -0.02304107, -0.2482675, 0.9120338, 0.8057325, 0.2622084, -0.2445909, 0.2765962, 0.8588713, -0.1772072, 0.3117845, -0.4385471, -0.3923851, -0.3298936, -0.1751254, -0.7405846, 0.6926506, -0.684163, -0.9304563, -0.3254691, -0.8533293, 0.1523024, 0.2510415, -0.917345, -0.6239773, -0.7105472, -0.6104624, 0.6041355);
+ this._distributions[15] = new Array(0.5844554, 0.06651045, 0.1343258, 0.6756578, 0.3799674, -0.6301104, 0.5590436, 0.7940555, 0.09574714, 0.02262517, 0.8697868, 0.393301, 0.003945862, -0.421735, 0.9043913, -0.2432393, -0.4844007, 0.7190998, -0.3201078, 0.2972371, -0.3852352, -0.6341155, -0.5413069, -0.09223081, -0.8468984, -0.5126905, 0.004156174, -0.8633173, -0.9681889, -0.03305046, -0.846509, 0.4414353);
+ this._distributions[16] = new Array(0.4506488, 0.657668, 0.4621297, 0.07441051, -0.2782125, 0.6201044, 0.9750003, 0.09110117, 0.1019436, 0.2986514, 0.03457398, 0.9631706, 0.542098, -0.5505635, 0.8675668, 0.4938077, -0.5414361, 0.2655292, -0.7941836, 0.6003053, -0.09847672, -0.1001604, -0.9316511, -0.08572888, 0.07286467, -0.611899, -0.5232627, -0.4082253, -0.5481608, -0.827938, -0.1551939, -0.9621193, 0.9220031, -0.3315949);
+ this._distributions[17] = new Array(0.197908, -0.4697656, -0.4474689, -0.3428435, 0.8529873, -0.2228634, 0.6022478, -0.5469642, 0.2545276, -0.931133, -0.1507547, -0.7855865, -0.07606658, 0.1011628, 0.3046715, 0.2785755, 0.4698432, -0.1064076, 0.6831254, 0.4152522, 0.1374381, 0.8363233, -0.2166121, 0.6682042, 0.5511393, 0.7996449, -0.4278994, 0.28836, -0.8875198, 0.2181732, -0.8772842, -0.2818254, -0.7000262, 0.5762185, -0.6062385, -0.7439126);
+ this._distributions[18] = new Array(0.6645703, -0.05678739, 0.5720971, 0.4533803, -0.07660709, 0.08802763, 0.5163431, -0.4426552, 0.1163455, -0.3404382, -0.4004807, -0.5046007, 0.2932099, -0.8201418, -0.5322125, 0.03834766, -0.1490209, -0.8817304, -0.8000439, -0.3509448, 0.5260983, 0.8421043, 0.1197811, 0.6963812, 0.9498612, 0.3122156, -0.9285746, 0.02120355, -0.6670724, 0.7217396, 0.9155889, -0.3510147, -0.271941, 0.4727852, 0.318879, 0.1634057, -0.2686755, 0.9253026);
+ this._distributions[19] = new Array(0.5064292, 0.422527, 0.8935515, -0.06610427, 0.1199719, 0.175568, 0.403388, -0.2003276, 0.1657927, 0.8154403, 0.9301245, 0.2929218, -0.1644068, 0.6201534, 0.7113559, -0.6589743, -0.3364046, -0.1799502, 0.02109996, -0.392765, -0.382213, 0.3219992, -0.9201946, 0.1207967, -0.726185, 0.4291916, -0.7443482, -0.2480059, -0.5147594, 0.7418784, 0.1935272, -0.7406143, -0.3643523, -0.5559214, -0.7147766, -0.6326278, -0.2524151, -0.9096627, 0.5161405, 0.7908453);
+ this._distributions[20] = new Array(0.7921003, -0.3032096, 0.5992879, -0.009052323, 0.2538549, -0.1872749, 0.7053444, 0.3677175, 0.5417761, -0.8170255, 0.9749611, 0.1210478, 0.1969143, -0.6117041, -0.1824499, -0.4634196, -0.1181338, -0.8668742, -0.3050112, -0.1352596, -0.4409327, -0.7082354, -0.03225285, 0.1171548, 0.3113096, 0.3250439, -0.8166144, -0.463995, -0.01014475, 0.4715334, -0.6868284, 0.05091889, -0.4011163, 0.2717285, -0.06756835, 0.8307694, -0.7938535, 0.4352129, -0.4663842, 0.7165329, 0.559729, 0.8093995);
+ this._distributions[21] = new Array(0.07832243, 0.426151, -0.3856795, 0.5799953, 0.01970797, 0.06706189, 0.4822682, 0.3014512, -0.1532982, 0.87485, -0.4959527, 0.07888043, 0.260601, -0.2304784, 0.4996209, 0.7167382, 0.585986, -0.04265174, -0.7679967, 0.5509416, -0.9041753, 0.1802134, -0.8407655, -0.4442826, -0.2058258, -0.2636995, -0.4984115, -0.5928579, 0.2926032, -0.7886473, -0.06933882, -0.621177, 0.578115, -0.4813387, 0.8981777, -0.3291056, 0.1942733, 0.9255584, 0.8084362, 0.5066984, 0.9920095, 0.03103104, -0.2403206, -0.9389018);
+ this._distributions[22] = new Array(-0.5691095, 0.1014316, -0.7788262, 0.384012, -0.8253665, -0.1645582, -0.1830993, 0.002997211, -0.2555013, -0.4177977, -0.6640869, -0.4794711, -0.2351242, 0.5850121, 0.02436554, 0.2825883, 0.006061143, -0.8200245, 0.1618791, -0.3063331, -0.3765897, -0.7249815, 0.6092919, -0.6769328, -0.5956934, 0.6957655, 0.5383642, 0.4522677, -0.1489165, 0.9125596, 0.4167473, 0.1335986, 0.1898309, 0.5874342, 0.2288171, 0.9624356, 0.7540846, -0.07672304, 0.8986252, 0.2788797, 0.3555991, -0.9262139, 0.8454325, -0.4027667, 0.4945236, -0.2935512);
+ this._distributions[23] = new Array(-0.4481403, -0.3758374, -0.8877251, 0.08739938, 0.05015831, -0.1339983, -0.4070427, -0.8534173, 0.1019274, -0.5503222, -0.445998, 0.1997541, -0.8686263, -0.2788867, -0.7695944, -0.6033704, -0.05515742, -0.885711, -0.7714347, 0.5790485, 0.3466263, -0.8799297, 0.4487582, -0.5321087, -0.2461368, 0.6053771, -0.05568117, 0.2457351, -0.4668669, 0.8523816, 0.8103387, -0.4255538, 0.4054182, -0.175663, -0.2802011, -0.08920153, 0.2665959, 0.382935, 0.555679, 0.1621837, 0.105246, 0.8420411, 0.6921161, 0.6902903, 0.880946, 0.2483067, 0.9699264, -0.1021767);
+ this._distributions[24] = new Array(-0.1703323, -0.3119385, 0.2916039, -0.2988263, -0.008472982, -0.9277695, -0.7730271, -0.3277904, 0.3440474, -0.6815342, -0.2910278, 0.03461745, -0.6764899, -0.657078, -0.3505501, -0.7311988, -0.03478927, 0.3258755, -0.6048835, 0.159423, 0.2035525, 0.02212214, 0.5116573, 0.2226856, 0.6664805, -0.2500189, 0.7147882, -0.6609634, 0.03030632, -0.5763278, -0.2516585, 0.6116219, -0.9434413, -0.0116792, 0.9061816, 0.2491155, 0.182867, 0.6076167, 0.286593, 0.9485695, -0.5992439, 0.6970096, -0.2082874, 0.9416641, 0.9880044, -0.1541709, -0.9122881, 0.331555, 0.7324886, 0.6725098);
+ this._distributions[25] = new Array(0.3869598, -0.04974834, 0.7168844, -0.0693711, -0.07166742, 0.1725325, 0.4599592, 0.3232779, 0.5872094, -0.4198674, 0.2442266, -0.625667, 0.1254557, 0.4500048, -0.2290154, -0.1803567, 0.890583, 0.3373493, 0.1256081, 0.7853789, -0.2676466, 0.5305805, -0.7063224, 0.252168, -0.3989835, 0.1189921, 0.09617215, -0.2451447, 0.6302541, 0.6085876, 0.9380925, -0.3234899, 0.5086241, -0.8573482, 0.03576187, -0.9876697, -0.0876712, -0.6365195, -0.5276513, 0.823456, -0.6935764, -0.2240411, -0.5212318, -0.5383121, -0.2116208, 0.9639363, -0.9840096, 0.02743555, -0.3991577, -0.8994547, -0.7830126, 0.614068);
+ this._distributions[26] = new Array(-0.8366601, 0.4464895, -0.5917366, -0.02073906, -0.9845258, 0.1635625, -0.3097973, 0.4379579, -0.5478154, 0.7173221, -0.1685888, 0.9261969, 0.01503595, 0.6046097, 0.4452421, 0.5449086, 0.0315687, 0.1944619, 0.3753404, 0.8688548, 0.4143643, 0.1396648, 0.8711032, 0.4304703, 0.7328773, 0.1461501, 0.6374492, -0.3521495, 0.145613, -0.1341466, 0.9040975, -0.135123, -0.7839059, -0.5450199, -0.516019, -0.3320859, -0.206158, -0.4431106, -0.9703014, -0.2368356, -0.2473119, -0.0864351, 0.2130725, -0.4604077, -0.003726701, -0.7122303, -0.4072131, -0.6833169, 0.1632999, -0.9776646, 0.4686888, -0.680495, -0.2293511, -0.9509777);
+ this._distributions[27] = new Array(0.107311, -0.1311369, -0.4194764, -0.3148777, 0.6171439, -0.2745973, 0.2796618, 0.1937153, -0.09106886, 0.4180236, 0.6044006, 0.05577846, 0.02927299, -0.6738263, -0.2580845, 0.1179939, -0.09023564, -0.3830024, 0.3570953, -0.5000587, 0.81591, -0.5518309, 0.9300217, -0.1257987, 0.4904627, -0.8381903, -0.3163182, -0.8632009, 0.1137595, -0.9875998, 0.8390043, 0.3538185, 0.2149114, 0.4993694, 0.5191584, 0.3833552, 0.5002763, 0.7061465, -0.2567276, 0.9068756, -0.5197366, 0.3467845, 0.03668867, 0.9734009, -0.5347553, 0.66747, -0.9028882, 0.1023768, -0.8967977, 0.412834, -0.5821944, 0.0426479, -0.8032165, -0.2397038, -0.5597343, -0.6358021);
+ this._distributions[28] = new Array(-0.6562496, -0.1781036, -0.9301494, 0.1185208, -0.3861143, -0.4153562, -0.1560799, -0.1099607, -0.5587025, 0.395218, -0.5322112, -0.699701, -0.5008639, 0.08726846, -0.970524, -0.1963461, -0.813577, -0.5185111, -0.1644458, 0.298, -0.3216791, 0.639982, 0.3315373, 0.3339162, 0.2383235, -0.00105722, 0.1137828, 0.5450742, -0.01899921, 0.8798413, 0.2849685, 0.8255596, 0.6974412, 0.2123175, 0.7588523, 0.5470437, 0.5102502, -0.1687844, 0.5853448, 0.8033476, 0.2590716, -0.5262504, 0.5607718, -0.6342825, 0.8666443, -0.1491841, 0.8341052, -0.4935003, -0.1568441, -0.6634066, 0.2512113, -0.8769391, -0.2559827, -0.9572457, -0.01928852, -0.3966542, -0.750667, 0.6409678);
+ this._distributions[29] = new Array(0.3454786, -0.04837726, 0.2649553, 0.2406852, 0.5599093, -0.3839145, -0.1111814, -0.05502108, 0.7586042, -0.05818377, 0.2519488, -0.4665135, -0.1264972, 0.2602723, -0.08766216, -0.3671907, 0.6428129, 0.3999204, -0.6105871, -0.1246869, -0.4589451, -0.7646643, -0.03021116, -0.7899352, -0.6036922, -0.4293956, -0.2481938, 0.6534185, 0.102798, 0.6784465, -0.6392644, 0.4821358, -0.6789002, 0.1779133, -0.9140783, -0.1989647, -0.9262617, 0.3381507, 0.4794891, -0.8093274, 0.3959447, 0.668478, 0.9602883, 0.2272305, -0.123672, 0.9210883, 0.2375148, 0.9523395, -0.52898, 0.7973378, -0.382433, 0.1228794, 0.695015, 0.6948439, 0.7530277, -0.6458191, 0.8777987, -0.3272956, 0.2318525, -0.962768);
+ this._distributions[30] = new Array(0.4518921, -0.1146195, 0.4720805, -0.4238748, 0.3655423, 0.1806341, 0.1589939, -0.23568, 0.7673324, -0.5149941, 0.01163658, 0.09045836, 0.7010971, 0.1245747, 0.7518286, -0.1855433, 0.4960719, 0.4601022, 0.2566979, -0.6308268, -0.0654714, -0.5126389, -0.1823319, -0.1343282, -0.1464312, 0.4883236, -0.3858738, 0.203523, 0.1484799, 0.4432284, -0.477109, -0.116241, 0.2719092, 0.7208626, 0.9104174, 0.3578536, -0.5956199, 0.7662588, -0.6996251, 0.3678654, -0.2514512, 0.9251933, 0.1275825, -0.9478135, -0.204608, -0.8611552, 0.4264838, -0.877443, 0.9854161, 0.05521112, 0.5912951, 0.7997434, 0.1140349, 0.982093, -0.9324368, -0.2094094, -0.42436, -0.6441524, -0.6722705, -0.3554261, -0.7844236, 0.08587621);
+ this._distributions[31] = new Array(-0.4206714, -0.5613642, -0.8733016, -0.3373051, -0.1046226, -0.2902999, -0.1318562, -0.8434365, 0.1145093, -0.5962623, -0.4965627, -0.1873259, -0.5011808, -0.8546229, -0.7165636, -0.5743566, 0.1090901, 0.2017643, 0.3404809, -0.220455, -0.1989015, 0.2372122, -0.4538706, 0.0979171, 0.4514146, -0.572846, 0.2314168, -0.8514503, -0.4247236, 0.5650803, -0.943347, 0.04514639, -0.1309718, 0.5221877, -0.7004157, 0.4561877, 0.6306441, 0.04448673, 0.4301621, 0.5766876, 0.1078042, 0.7245752, 0.3875354, 0.2794483, 0.702876, -0.2924213, 0.7360667, -0.6210318, 0.7486517, 0.6531103, 0.4898235, 0.8591025, 0.6549174, 0.3854057, -0.2596106, 0.7916998, 0.9251194, -0.05296265, -0.5620695, 0.820877, -0.01228026, 0.9937211, 0.9612103, 0.2628758);
+ };
+
+ PoissonLookup.getDistribution = function (n /*int*/ ) {
+ if (!this._distributions)
+ this.initDistributions();
+
+ if (n < 2 || n > 32)
+ return null;
+
+ return this._distributions[n - 1];
+ };
+ return PoissonLookup;
+})();
+
+module.exports = PoissonLookup;
+
+
+},{}],"awayjs-core/lib/core/geom/Quaternion":[function(require,module,exports){
+var Matrix3DUtils = require("awayjs-core/lib/core/geom/Matrix3DUtils");
+var Orientation3D = require("awayjs-core/lib/core/geom/Orientation3D");
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+/**
+* A Quaternion object which can be used to represent rotations.
+*/
+var Quaternion = (function () {
+ /**
+ * Creates a new Quaternion object.
+ * @param x The x value of the quaternion.
+ * @param y The y value of the quaternion.
+ * @param z The z value of the quaternion.
+ * @param w The w value of the quaternion.
+ */
+ function Quaternion(x, y, z, w) {
+ if (typeof x === "undefined") { x = 0; }
+ if (typeof y === "undefined") { y = 0; }
+ if (typeof z === "undefined") { z = 0; }
+ if (typeof w === "undefined") { w = 1; }
+ /**
+ * The x value of the quaternion.
+ */
+ this.x = 0;
+ /**
+ * The y value of the quaternion.
+ */
+ this.y = 0;
+ /**
+ * The z value of the quaternion.
+ */
+ this.z = 0;
+ /**
+ * The w value of the quaternion.
+ */
+ this.w = 1;
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.w = w;
+ }
+ Object.defineProperty(Quaternion.prototype, "magnitude", {
+ /**
+ * Returns the magnitude of the quaternion object.
+ */
+ get: function () {
+ return Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Fills the quaternion object with the result from a multiplication of two quaternion objects.
+ *
+ * @param qa The first quaternion in the multiplication.
+ * @param qb The second quaternion in the multiplication.
+ */
+ Quaternion.prototype.multiply = function (qa, qb) {
+ var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;
+ var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;
+
+ this.w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2;
+ this.x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2;
+ this.y = w1 * y2 - x1 * z2 + y1 * w2 + z1 * x2;
+ this.z = w1 * z2 + x1 * y2 - y1 * x2 + z1 * w2;
+ };
+
+ Quaternion.prototype.multiplyVector = function (vector, target) {
+ if (typeof target === "undefined") { target = null; }
+ //target ||= new Quaternion();
+ if (target === null) {
+ target = new Quaternion();
+ }
+
+ var x2 = vector.x;
+ var y2 = vector.y;
+ var z2 = vector.z;
+
+ target.w = -this.x * x2 - this.y * y2 - this.z * z2;
+ target.x = this.w * x2 + this.y * z2 - this.z * y2;
+ target.y = this.w * y2 - this.x * z2 + this.z * x2;
+ target.z = this.w * z2 + this.x * y2 - this.y * x2;
+
+ return target;
+ };
+
+ /**
+ * Fills the quaternion object with values representing the given rotation around a vector.
+ *
+ * @param axis The axis around which to rotate
+ * @param angle The angle in radians of the rotation.
+ */
+ Quaternion.prototype.fromAxisAngle = function (axis, angle) {
+ var sin_a = Math.sin(angle / 2);
+ var cos_a = Math.cos(angle / 2);
+
+ this.x = axis.x * sin_a;
+ this.y = axis.y * sin_a;
+ this.z = axis.z * sin_a;
+ this.w = cos_a;
+
+ this.normalize();
+ };
+
+ /**
+ * Spherically interpolates between two quaternions, providing an interpolation between rotations with constant angle change rate.
+ * @param qa The first quaternion to interpolate.
+ * @param qb The second quaternion to interpolate.
+ * @param t The interpolation weight, a value between 0 and 1.
+ */
+ Quaternion.prototype.slerp = function (qa, qb, t) {
+ var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;
+ var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;
+ var dot = w1 * w2 + x1 * x2 + y1 * y2 + z1 * z2;
+
+ // shortest direction
+ if (dot < 0) {
+ dot = -dot;
+ w2 = -w2;
+ x2 = -x2;
+ y2 = -y2;
+ z2 = -z2;
+ }
+
+ if (dot < 0.95) {
+ // interpolate angle linearly
+ var angle = Math.acos(dot);
+ var s = 1 / Math.sin(angle);
+ var s1 = Math.sin(angle * (1 - t)) * s;
+ var s2 = Math.sin(angle * t) * s;
+ this.w = w1 * s1 + w2 * s2;
+ this.x = x1 * s1 + x2 * s2;
+ this.y = y1 * s1 + y2 * s2;
+ this.z = z1 * s1 + z2 * s2;
+ } else {
+ // nearly identical angle, interpolate linearly
+ this.w = w1 + t * (w2 - w1);
+ this.x = x1 + t * (x2 - x1);
+ this.y = y1 + t * (y2 - y1);
+ this.z = z1 + t * (z2 - z1);
+ var len = 1.0 / Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);
+ this.w *= len;
+ this.x *= len;
+ this.y *= len;
+ this.z *= len;
+ }
+ };
+
+ /**
+ * Linearly interpolates between two quaternions.
+ * @param qa The first quaternion to interpolate.
+ * @param qb The second quaternion to interpolate.
+ * @param t The interpolation weight, a value between 0 and 1.
+ */
+ Quaternion.prototype.lerp = function (qa, qb, t) {
+ var w1 = qa.w, x1 = qa.x, y1 = qa.y, z1 = qa.z;
+ var w2 = qb.w, x2 = qb.x, y2 = qb.y, z2 = qb.z;
+ var len;
+
+ // shortest direction
+ if (w1 * w2 + x1 * x2 + y1 * y2 + z1 * z2 < 0) {
+ w2 = -w2;
+ x2 = -x2;
+ y2 = -y2;
+ z2 = -z2;
+ }
+
+ this.w = w1 + t * (w2 - w1);
+ this.x = x1 + t * (x2 - x1);
+ this.y = y1 + t * (y2 - y1);
+ this.z = z1 + t * (z2 - z1);
+
+ len = 1.0 / Math.sqrt(this.w * this.w + this.x * this.x + this.y * this.y + this.z * this.z);
+ this.w *= len;
+ this.x *= len;
+ this.y *= len;
+ this.z *= len;
+ };
+
+ /**
+ * Fills the quaternion object with values representing the given euler rotation.
+ *
+ * @param ax The angle in radians of the rotation around the ax axis.
+ * @param ay The angle in radians of the rotation around the ay axis.
+ * @param az The angle in radians of the rotation around the az axis.
+ */
+ Quaternion.prototype.fromEulerAngles = function (ax, ay, az) {
+ var halfX = ax * .5, halfY = ay * .5, halfZ = az * .5;
+ var cosX = Math.cos(halfX), sinX = Math.sin(halfX);
+ var cosY = Math.cos(halfY), sinY = Math.sin(halfY);
+ var cosZ = Math.cos(halfZ), sinZ = Math.sin(halfZ);
+
+ this.w = cosX * cosY * cosZ + sinX * sinY * sinZ;
+ this.x = sinX * cosY * cosZ - cosX * sinY * sinZ;
+ this.y = cosX * sinY * cosZ + sinX * cosY * sinZ;
+ this.z = cosX * cosY * sinZ - sinX * sinY * cosZ;
+ };
+
+ /**
+ * Fills a target Vector3D object with the Euler angles that form the rotation represented by this quaternion.
+ * @param target An optional Vector3D object to contain the Euler angles. If not provided, a new object is created.
+ * @return The Vector3D containing the Euler angles.
+ */
+ Quaternion.prototype.toEulerAngles = function (target) {
+ if (typeof target === "undefined") { target = null; }
+ //target ||= new Vector3D();
+ if (target === null) {
+ target = new Vector3D();
+ }
+
+ target.x = Math.atan2(2 * (this.w * this.x + this.y * this.z), 1 - 2 * (this.x * this.x + this.y * this.y));
+ target.y = Math.asin(2 * (this.w * this.y - this.z * this.x));
+ target.z = Math.atan2(2 * (this.w * this.z + this.x * this.y), 1 - 2 * (this.y * this.y + this.z * this.z));
+
+ return target;
+ };
+
+ /**
+ * Normalises the quaternion object.
+ */
+ Quaternion.prototype.normalize = function (val) {
+ if (typeof val === "undefined") { val = 1; }
+ var mag = val / Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
+
+ this.x *= mag;
+ this.y *= mag;
+ this.z *= mag;
+ this.w *= mag;
+ };
+
+ /**
+ * Used to trace the values of a quaternion.
+ *
+ * @return A string representation of the quaternion object.
+ */
+ Quaternion.prototype.toString = function () {
+ return "{x:" + this.x + " y:" + this.y + " z:" + this.z + " w:" + this.w + "}";
+ };
+
+ /**
+ * Converts the quaternion to a Matrix3D object representing an equivalent rotation.
+ * @param target An optional Matrix3D container to store the transformation in. If not provided, a new object is created.
+ * @return A Matrix3D object representing an equivalent rotation.
+ */
+ Quaternion.prototype.toMatrix3D = function (target) {
+ if (typeof target === "undefined") { target = null; }
+ var rawData = Matrix3DUtils.RAW_DATA_CONTAINER;
+ var xy2 = 2.0 * this.x * this.y, xz2 = 2.0 * this.x * this.z, xw2 = 2.0 * this.x * this.w;
+ var yz2 = 2.0 * this.y * this.z, yw2 = 2.0 * this.y * this.w, zw2 = 2.0 * this.z * this.w;
+ var xx = this.x * this.x, yy = this.y * this.y, zz = this.z * this.z, ww = this.w * this.w;
+
+ rawData[0] = xx - yy - zz + ww;
+ rawData[4] = xy2 - zw2;
+ rawData[8] = xz2 + yw2;
+ rawData[12] = 0;
+ rawData[1] = xy2 + zw2;
+ rawData[5] = -xx + yy - zz + ww;
+ rawData[9] = yz2 - xw2;
+ rawData[13] = 0;
+ rawData[2] = xz2 - yw2;
+ rawData[6] = yz2 + xw2;
+ rawData[10] = -xx - yy + zz + ww;
+ rawData[14] = 0;
+ rawData[3] = 0.0;
+ rawData[7] = 0.0;
+ rawData[11] = 0;
+ rawData[15] = 1;
+
+ if (!target)
+ return new Matrix3D(rawData);
+
+ target.copyRawDataFrom(rawData);
+
+ return target;
+ };
+
+ /**
+ * Extracts a quaternion rotation matrix out of a given Matrix3D object.
+ * @param matrix The Matrix3D out of which the rotation will be extracted.
+ */
+ Quaternion.prototype.fromMatrix = function (matrix) {
+ var v = matrix.decompose(Orientation3D.QUATERNION)[1];
+ this.x = v.x;
+ this.y = v.y;
+ this.z = v.z;
+ this.w = v.w;
+ };
+
+ /**
+ * Converts the quaternion to a Vector.<Number> matrix representation of a rotation equivalent to this quaternion.
+ * @param target The Vector.<Number> to contain the raw matrix data.
+ * @param exclude4thRow If true, the last row will be omitted, and a 4x3 matrix will be generated instead of a 4x4.
+ */
+ Quaternion.prototype.toRawData = function (target, exclude4thRow) {
+ if (typeof exclude4thRow === "undefined") { exclude4thRow = false; }
+ var xy2 = 2.0 * this.x * this.y, xz2 = 2.0 * this.x * this.z, xw2 = 2.0 * this.x * this.w;
+ var yz2 = 2.0 * this.y * this.z, yw2 = 2.0 * this.y * this.w, zw2 = 2.0 * this.z * this.w;
+ var xx = this.x * this.x, yy = this.y * this.y, zz = this.z * this.z, ww = this.w * this.w;
+
+ target[0] = xx - yy - zz + ww;
+ target[1] = xy2 - zw2;
+ target[2] = xz2 + yw2;
+ target[4] = xy2 + zw2;
+ target[5] = -xx + yy - zz + ww;
+ target[6] = yz2 - xw2;
+ target[8] = xz2 - yw2;
+ target[9] = yz2 + xw2;
+ target[10] = -xx - yy + zz + ww;
+ target[3] = target[7] = target[11] = 0;
+
+ if (!exclude4thRow) {
+ target[12] = target[13] = target[14] = 0;
+ target[15] = 1;
+ }
+ };
+
+ /**
+ * Clones the quaternion.
+ * @return An exact duplicate of the current Quaternion.
+ */
+ Quaternion.prototype.clone = function () {
+ return new Quaternion(this.x, this.y, this.z, this.w);
+ };
+
+ /**
+ * Rotates a point.
+ * @param vector The Vector3D object to be rotated.
+ * @param target An optional Vector3D object that will contain the rotated coordinates. If not provided, a new object will be created.
+ * @return A Vector3D object containing the rotated point.
+ */
+ Quaternion.prototype.rotatePoint = function (vector, target) {
+ if (typeof target === "undefined") { target = null; }
+ var x1, y1, z1, w1;
+ var x2 = vector.x, y2 = vector.y, z2 = vector.z;
+
+ //target ||= new Vector3D();
+ if (target === null) {
+ target = new Vector3D();
+ }
+
+ // p*q'
+ w1 = -this.x * x2 - this.y * y2 - this.z * z2;
+ x1 = this.w * x2 + this.y * z2 - this.z * y2;
+ y1 = this.w * y2 - this.x * z2 + this.z * x2;
+ z1 = this.w * z2 + this.x * y2 - this.y * x2;
+
+ target.x = -w1 * this.x + x1 * this.w - y1 * this.z + z1 * this.y;
+ target.y = -w1 * this.y + x1 * this.z + y1 * this.w - z1 * this.x;
+ target.z = -w1 * this.z - x1 * this.y + y1 * this.x + z1 * this.w;
+
+ return target;
+ };
+
+ /**
+ * Copies the data from a quaternion into this instance.
+ * @param q The quaternion to copy from.
+ */
+ Quaternion.prototype.copyFrom = function (q) {
+ this.x = q.x;
+ this.y = q.y;
+ this.z = q.z;
+ this.w = q.w;
+ };
+ return Quaternion;
+})();
+
+module.exports = Quaternion;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/core/geom/Orientation3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/core/geom/Rectangle":[function(require,module,exports){
+var Point = require("awayjs-core/lib/core/geom/Point");
+
+/**
+* A Rectangle object is an area defined by its position, as indicated by its
+* top-left corner point(x, y) and by its width and its height.
+*
+*
+* The x
, y
, width
, and
+* height
properties of the Rectangle class are independent of
+* each other; changing the value of one property has no effect on the others.
+* However, the right
and bottom
properties are
+* integrally related to those four properties. For example, if you change the
+* value of the right
property, the value of the
+* width
property changes; if you change the bottom
+* property, the value of the height
property changes.
The following methods and properties use Rectangle objects:
+* +*applyFilter()
, colorTransform()
,
+* copyChannel()
, copyPixels()
, draw()
,
+* fillRect()
, generateFilterRect()
,
+* getColorBoundsRect()
, getPixels()
,
+* merge()
, paletteMap()
,
+* pixelDisolve()
, setPixels()
, and
+* threshold()
methods, and the rect
property of the
+* BitmapData classgetBounds()
and getRect()
methods, and
+* the scrollRect
and scale9Grid
properties of the
+* DisplayObject classgetCharBoundaries()
method of the TextField
+* classpixelBounds
property of the Transform classbounds
parameter for the startDrag()
+* method of the Sprite classprintArea
parameter of the addPage()
+* method of the PrintJob classYou can use the new Rectangle()
constructor to create a
+* Rectangle object.
Note: The Rectangle class does not define a rectangular Shape
+* display object. To draw a rectangular Shape object onscreen, use the
+* drawRect()
method of the Graphics class.
x
and y
parameters and with the specified
+ * width
and height
parameters. If you call this
+ * public without parameters, a rectangle with x
,
+ * y
, width
, and height
properties set
+ * to 0 is created.
+ *
+ * @param x The x coordinate of the top-left corner of the
+ * rectangle.
+ * @param y The y coordinate of the top-left corner of the
+ * rectangle.
+ * @param width The width of the rectangle, in pixels.
+ * @param height The height of the rectangle, in pixels.
+ */
+ function Rectangle(x, y, width, height) {
+ if (typeof x === "undefined") { x = 0; }
+ if (typeof y === "undefined") { y = 0; }
+ if (typeof width === "undefined") { width = 0; }
+ if (typeof height === "undefined") { height = 0; }
+ this.x = x;
+ this.y = y;
+ this.width = width;
+ this.height = height;
+ }
+ Object.defineProperty(Rectangle.prototype, "bottom", {
+ /**
+ * The sum of the y
and height
properties.
+ */
+ get: function () {
+ return this.y + this.height;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Rectangle.prototype, "bottomRight", {
+ /**
+ * The location of the Rectangle object's bottom-right corner, determined by
+ * the values of the right
and bottom
properties.
+ */
+ get: function () {
+ if (this._bottomRight == null)
+ this._bottomRight = new Point();
+
+ this._bottomRight.x = this.x + this.width;
+ this._bottomRight.y = this.y + this.height;
+
+ return this._bottomRight;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Rectangle.prototype, "left", {
+ /**
+ * The x coordinate of the top-left corner of the rectangle. Changing
+ * the left
property of a Rectangle object has no effect on the
+ * y
and height
properties. However it does affect
+ * the width
property, whereas changing the x
value
+ * does not affect the width
property.
+ *
+ * The value of the left
property is equal to the value of
+ * the x
property.
x
and width
properties.
+ */
+ get: function () {
+ return this.x + this.width;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Rectangle.prototype, "size", {
+ /**
+ * The size of the Rectangle object, expressed as a Point object with the
+ * values of the width
and height
properties.
+ */
+ get: function () {
+ if (this._size == null)
+ this._size = new Point();
+
+ this._size.x = this.width;
+ this._size.y = this.height;
+
+ return this._size;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Rectangle.prototype, "top", {
+ /**
+ * The y coordinate of the top-left corner of the rectangle. Changing
+ * the top
property of a Rectangle object has no effect on the
+ * x
and width
properties. However it does affect
+ * the height
property, whereas changing the y
+ * value does not affect the height
property.
+ *
+ * The value of the top
property is equal to the value of the
+ * y
property.
x
, y
, width
, and
+ * height
properties as the original Rectangle object.
+ *
+ * @return A new Rectangle object with the same values for the
+ * x
, y
, width
, and
+ * height
properties as the original Rectangle object.
+ */
+ Rectangle.prototype.clone = function () {
+ return new Rectangle(this.x, this.y, this.width, this.height);
+ };
+
+ /**
+ * Determines whether the specified point is contained within the rectangular
+ * region defined by this Rectangle object.
+ *
+ * @param x The x coordinate(horizontal position) of the point.
+ * @param y The y coordinate(vertical position) of the point.
+ * @return A value of true
if the Rectangle object contains the
+ * specified point; otherwise false
.
+ */
+ Rectangle.prototype.contains = function (x, y) {
+ return (this.x <= x && this.x + this.width >= x && this.y <= y && this.y + this.height >= y);
+ };
+
+ /**
+ * Determines whether the specified point is contained within the rectangular
+ * region defined by this Rectangle object. This method is similar to the
+ * Rectangle.contains()
method, except that it takes a Point
+ * object as a parameter.
+ *
+ * @param point The point, as represented by its x and y
+ * coordinates.
+ * @return A value of true
if the Rectangle object contains the
+ * specified point; otherwise false
.
+ */
+ Rectangle.prototype.containsPoint = function (point) {
+ return (this.x <= point.x && this.x + this.width >= point.x && this.y <= point.y && this.y + this.height >= point.y);
+ };
+
+ /**
+ * Determines whether the Rectangle object specified by the rect
+ * parameter is contained within this Rectangle object. A Rectangle object is
+ * said to contain another if the second Rectangle object falls entirely
+ * within the boundaries of the first.
+ *
+ * @param rect The Rectangle object being checked.
+ * @return A value of true
if the Rectangle object that you
+ * specify is contained by this Rectangle object; otherwise
+ * false
.
+ */
+ Rectangle.prototype.containsRect = function (rect) {
+ return (this.x <= rect.x && this.x + this.width >= rect.x + rect.width && this.y <= rect.y && this.y + this.height >= rect.y + rect.height);
+ };
+
+ /**
+ * Copies all of rectangle data from the source Rectangle object into the
+ * calling Rectangle object.
+ *
+ * @param sourceRect The Rectangle object from which to copy the data.
+ */
+ Rectangle.prototype.copyFrom = function (sourceRect) {
+ };
+
+ /**
+ * Determines whether the object specified in the toCompare
+ * parameter is equal to this Rectangle object. This method compares the
+ * x
, y
, width
, and
+ * height
properties of an object against the same properties of
+ * this Rectangle object.
+ *
+ * @param toCompare The rectangle to compare to this Rectangle object.
+ * @return A value of true
if the object has exactly the same
+ * values for the x
, y
, width
,
+ * and height
properties as this Rectangle object;
+ * otherwise false
.
+ */
+ Rectangle.prototype.equals = function (toCompare) {
+ return (this.x == toCompare.x && this.y == toCompare.y && this.width == toCompare.width && this.height == toCompare.height);
+ };
+
+ /**
+ * Increases the size of the Rectangle object by the specified amounts, in
+ * pixels. The center point of the Rectangle object stays the same, and its
+ * size increases to the left and right by the dx
value, and to
+ * the top and the bottom by the dy
value.
+ *
+ * @param dx The value to be added to the left and the right of the Rectangle
+ * object. The following equation is used to calculate the new
+ * width and position of the rectangle:
+ * @param dy The value to be added to the top and the bottom of the
+ * Rectangle. The following equation is used to calculate the new
+ * height and position of the rectangle:
+ */
+ Rectangle.prototype.inflate = function (dx, dy) {
+ this.x -= dx / 2;
+ this.y -= dy / 2;
+ this.width += dx / 2;
+ this.height += dy / 2;
+ };
+
+ /**
+ * Increases the size of the Rectangle object. This method is similar to the
+ * Rectangle.inflate()
method except it takes a Point object as
+ * a parameter.
+ *
+ * The following two code examples give the same result:
+ * + * @param point Thex
property of this Point object is used to
+ * increase the horizontal dimension of the Rectangle object.
+ * The y
property is used to increase the vertical
+ * dimension of the Rectangle object.
+ */
+ Rectangle.prototype.inflatePoint = function (point) {
+ this.x -= point.x / 2;
+ this.y -= point.y / 2;
+ this.width += point.x / 2;
+ this.height += point.y / 2;
+ };
+
+ /**
+ * If the Rectangle object specified in the toIntersect
+ * parameter intersects with this Rectangle object, returns the area of
+ * intersection as a Rectangle object. If the rectangles do not intersect,
+ * this method returns an empty Rectangle object with its properties set to
+ * 0.
+ *
+ * @param toIntersect The Rectangle object to compare against to see if it
+ * intersects with this Rectangle object.
+ * @return A Rectangle object that equals the area of intersection. If the
+ * rectangles do not intersect, this method returns an empty
+ * Rectangle object; that is, a rectangle with its x
,
+ * y
, width
, and height
+ * properties set to 0.
+ */
+ Rectangle.prototype.intersection = function (toIntersect) {
+ if (this.intersects(toIntersect)) {
+ var i = new Rectangle();
+
+ if (this.x > toIntersect.x) {
+ i.x = this.x;
+ i.width = toIntersect.x - this.x + toIntersect.width;
+
+ if (i.width > this.width)
+ i.width = this.width;
+ } else {
+ i.x = toIntersect.x;
+ i.width = this.x - toIntersect.x + this.width;
+
+ if (i.width > toIntersect.width)
+ i.width = toIntersect.width;
+ }
+
+ if (this.y > toIntersect.y) {
+ i.y = this.y;
+ i.height = toIntersect.y - this.y + toIntersect.height;
+
+ if (i.height > this.height)
+ i.height = this.height;
+ } else {
+ i.y = toIntersect.y;
+ i.height = this.y - toIntersect.y + this.height;
+
+ if (i.height > toIntersect.height)
+ i.height = toIntersect.height;
+ }
+
+ return i;
+ }
+
+ return new Rectangle();
+ };
+
+ /**
+ * Determines whether the object specified in the toIntersect
+ * parameter intersects with this Rectangle object. This method checks the
+ * x
, y
, width
, and
+ * height
properties of the specified Rectangle object to see if
+ * it intersects with this Rectangle object.
+ *
+ * @param toIntersect The Rectangle object to compare against this Rectangle
+ * object.
+ * @return A value of true
if the specified object intersects
+ * with this Rectangle object; otherwise false
.
+ */
+ Rectangle.prototype.intersects = function (toIntersect) {
+ return (this.x + this.width > toIntersect.x && this.x < toIntersect.x + toIntersect.width && this.y + this.height > toIntersect.y && this.y < toIntersect.y + toIntersect.height);
+ };
+
+ /**
+ * Determines whether or not this Rectangle object is empty.
+ *
+ * @return A value of true
if the Rectangle object's width or
+ * height is less than or equal to 0; otherwise false
.
+ */
+ Rectangle.prototype.isEmpty = function () {
+ return (this.x == 0 && this.y == 0 && this.width == 0 && this.height == 0);
+ };
+
+ /**
+ * Adjusts the location of the Rectangle object, as determined by its
+ * top-left corner, by the specified amounts.
+ *
+ * @param dx Moves the x value of the Rectangle object by this amount.
+ * @param dy Moves the y value of the Rectangle object by this amount.
+ */
+ Rectangle.prototype.offset = function (dx, dy) {
+ this.x += dx;
+ this.y += dy;
+ };
+
+ /**
+ * Adjusts the location of the Rectangle object using a Point object as a
+ * parameter. This method is similar to the Rectangle.offset()
+ * method, except that it takes a Point object as a parameter.
+ *
+ * @param point A Point object to use to offset this Rectangle object.
+ */
+ Rectangle.prototype.offsetPoint = function (point) {
+ this.x += point.x;
+ this.y += point.y;
+ };
+
+ /**
+ * Sets all of the Rectangle object's properties to 0. A Rectangle object is
+ * empty if its width or height is less than or equal to 0.
+ *
+ * This method sets the values of the x
, y
,
+ * width
, and height
properties to 0.
x
, y
,
+ * width
, and height
.
+ */
+ Rectangle.prototype.toString = function () {
+ return "[Rectangle] (x=" + this.x + ", y=" + this.y + ", width=" + this.width + ", height=" + this.height + ")";
+ };
+
+ /**
+ * Adds two rectangles together to create a new Rectangle object, by filling
+ * in the horizontal and vertical space between the two rectangles.
+ *
+ * Note: The union()
method ignores rectangles with
+ * 0
as the height or width value, such as: var
+ * rect2:Rectangle = new Rectangle(300,300,50,0);
concatenatedColorTransform
and concatenatedMatrix
+* properties.
+*
+* To apply color transformations: create a ColorTransform object, set the
+* color adjustments using the object's methods and properties, and then
+* assign the colorTransformation
property of the
+* transform
property of the display object to the new
+* ColorTransformation object.
To apply two-dimensional transformations: create a Matrix object, set
+* the matrix's two-dimensional transformation, and then assign the
+* transform.matrix
property of the display object to the new
+* Matrix object.
To apply three-dimensional transformations: start with a
+* three-dimensional display object. A three-dimensional display object has a
+* z
property value other than zero. You do not need to create
+* the Matrix3D object. For all three-dimensional objects, a Matrix3D object
+* is created automatically when you assign a z
value to a
+* display object. You can access the display object's Matrix3D object through
+* the display object's transform
property. Using the methods of
+* the Matrix3D class, you can add to or modify the existing transformation
+* settings. Also, you can create a custom Matrix3D object, set the custom
+* Matrix3D object's transformation elements, and then assign the new Matrix3D
+* object to the display object using the transform.matrix
+* property.
To modify a perspective projection of the stage or root object: use the
+* transform.matrix
property of the root display object to gain
+* access to the PerspectiveProjection object. Or, apply different perspective
+* projection properties to a display object by setting the perspective
+* projection properties of the display object's parent. The child display
+* object inherits the new properties. Specifically, create a
+* PerspectiveProjection object and set its properties, then assign the
+* PerspectiveProjection object to the perspectiveProjection
+* property of the parent display object's transform
property.
+* The specified projection transformation then applies to all the display
+* object's three-dimensional children.
Since both PerspectiveProjection and Matrix3D objects perform +* perspective transformations, do not assign both to a display object at the +* same time. Use the PerspectiveProjection object for focal length and +* projection center changes. For more control over the perspective +* transformation, create a perspective projection Matrix3D object.
+*/ +var Transform = (function () { + function Transform(displayObject) { + this._position = new Vector3D(); + this._displayObject = displayObject; + } + Object.defineProperty(Transform.prototype, "backVector", { + /** + * + */ + get: function () { + var director = Matrix3DUtils.getForward(this._displayObject._iMatrix3D); + director.negate(); + + return director; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "concatenatedColorTransform", { + /** + * A ColorTransform object representing the combined color transformations + * applied to the display object and all of its parent objects, back to the + * root level. If different color transformations have been applied at + * different levels, all of those transformations are concatenated into one + * ColorTransform object for this property. + */ + get: function () { + return this._concatenatedColorTransform; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "concatenatedMatrix", { + /** + * A Matrix object representing the combined transformation matrixes of the + * display object and all of its parent objects, back to the root level. If + * different transformation matrixes have been applied at different levels, + * all of those matrixes are concatenated into one matrix for this property. + * Also, for resizeable SWF content running in the browser, this property + * factors in the difference between stage coordinates and window coordinates + * due to window resizing. Thus, the property converts local coordinates to + * window coordinates, which may not be the same coordinate space as that of + * the Stage. + */ + get: function () { + return this._concatenatedMatrix; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "downVector", { + /** + * + */ + get: function () { + var director = Matrix3DUtils.getUp(this._displayObject._iMatrix3D); + director.negate(); + + return director; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "forwardVector", { + /** + * + */ + get: function () { + return Matrix3DUtils.getForward(this._displayObject._iMatrix3D); + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "leftVector", { + /** + * + */ + get: function () { + var director = Matrix3DUtils.getRight(this._displayObject._iMatrix3D); + director.negate(); + + return director; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Transform.prototype, "matrix3D", { + /** + * Provides access to the Matrix3D object of a three-dimensional display + * object. The Matrix3D object represents a transformation matrix that + * determines the display object's position and orientation. A Matrix3D + * object can also perform perspective projection. + * + *If the matrix
property is set to a value(not
+ * null
), the matrix3D
property is
+ * null
. And if the matrix3D
property is set to a
+ * value(not null
), the matrix
property is
+ * null
.
ObjectContainer3D
.
+ */
+ get: function () {
+ return this._displayObject._iMatrix3D.position;
+ },
+ set: function (value) {
+ this._displayObject.x = value.x;
+ this._displayObject.y = value.y;
+ this._displayObject.z = value.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Transform.prototype, "rightVector", {
+ /**
+ *
+ */
+ get: function () {
+ return Matrix3DUtils.getRight(this._displayObject._iMatrix3D);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Transform.prototype, "rotation", {
+ /**
+ * Defines the rotation of the 3d object, relative to the local coordinates of the parent ObjectContainer3D
.
+ */
+ get: function () {
+ return new Vector3D(this._displayObject.rotationX, this._displayObject.rotationY, this._displayObject.rotationZ);
+ },
+ set: function (value) {
+ this._displayObject.rotationX = value.x;
+ this._displayObject.rotationY = value.y;
+ this._displayObject.rotationZ = value.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Transform.prototype, "scale", {
+ /**
+ * Defines the scale of the 3d object, relative to the local coordinates of the parent ObjectContainer3D
.
+ */
+ get: function () {
+ return new Vector3D(this._displayObject.scaleX, this._displayObject.scaleY, this._displayObject.scaleZ);
+ },
+ set: function (value) {
+ this._displayObject.scaleX = value.x;
+ this._displayObject.scaleY = value.y;
+ this._displayObject.scaleZ = value.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Transform.prototype, "upVector", {
+ /**
+ *
+ */
+ get: function () {
+ return Matrix3DUtils.getUp(this._displayObject._iMatrix3D);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Returns a Matrix3D object, which can transform the space of a specified
+ * display object in relation to the current display object's space. You can
+ * use the getRelativeMatrix3D()
method to move one
+ * three-dimensional display object relative to another three-dimensional
+ * display object.
+ *
+ * @param relativeTo The display object relative to which the transformation
+ * occurs. To get a Matrix3D object relative to the stage,
+ * set the parameter to the root
or
+ * stage
object. To get the world-relative
+ * matrix of the display object, set the parameter to a
+ * display object that has a perspective transformation
+ * applied to it.
+ * @return A Matrix3D object that can be used to transform the space from the
+ * relativeTo
display object to the current display
+ * object space.
+ */
+ Transform.prototype.getRelativeMatrix3D = function (relativeTo) {
+ return new Matrix3D();
+ };
+
+ /**
+ * Moves the 3d object forwards along it's local z axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveForward = function (distance) {
+ this._displayObject.translateLocal(Vector3D.Z_AXIS, distance);
+ };
+
+ /**
+ * Moves the 3d object backwards along it's local z axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveBackward = function (distance) {
+ this._displayObject.translateLocal(Vector3D.Z_AXIS, -distance);
+ };
+
+ /**
+ * Moves the 3d object backwards along it's local x axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveLeft = function (distance) {
+ this._displayObject.translateLocal(Vector3D.X_AXIS, -distance);
+ };
+
+ /**
+ * Moves the 3d object forwards along it's local x axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveRight = function (distance) {
+ this._displayObject.translateLocal(Vector3D.X_AXIS, distance);
+ };
+
+ /**
+ * Moves the 3d object forwards along it's local y axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveUp = function (distance) {
+ this._displayObject.translateLocal(Vector3D.Y_AXIS, distance);
+ };
+
+ /**
+ * Moves the 3d object backwards along it's local y axis
+ *
+ * @param distance The length of the movement
+ */
+ Transform.prototype.moveDown = function (distance) {
+ this._displayObject.translateLocal(Vector3D.Y_AXIS, -distance);
+ };
+ return Transform;
+})();
+
+module.exports = Transform;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-core/lib/core/geom/UVTransform":[function(require,module,exports){
+var Matrix = require("awayjs-core/lib/core/geom/Matrix");
+
+var UVTransform = (function () {
+ function UVTransform() {
+ this._uvMatrix = new Matrix();
+ this._rotation = 0;
+ this._scaleU = 1;
+ this._scaleV = 1;
+ this._offsetU = 0;
+ this._offsetV = 0;
+ }
+ Object.defineProperty(UVTransform.prototype, "offsetU", {
+ /**
+ *
+ */
+ get: function () {
+ return this._offsetU;
+ },
+ set: function (value) {
+ if (value == this._offsetU)
+ return;
+
+ this._offsetU = value;
+ this._uvMatrixDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(UVTransform.prototype, "offsetV", {
+ /**
+ *
+ */
+ get: function () {
+ return this._offsetV;
+ },
+ set: function (value) {
+ if (value == this._offsetV)
+ return;
+
+ this._offsetV = value;
+ this._uvMatrixDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(UVTransform.prototype, "rotation", {
+ /**
+ *
+ */
+ get: function () {
+ return this._rotation;
+ },
+ set: function (value) {
+ if (value == this._rotation)
+ return;
+
+ this._rotation = value;
+
+ this._uvMatrixDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(UVTransform.prototype, "scaleU", {
+ /**
+ *
+ */
+ get: function () {
+ return this._scaleU;
+ },
+ set: function (value) {
+ if (value == this._scaleU)
+ return;
+
+ this._scaleU = value;
+
+ this._uvMatrixDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(UVTransform.prototype, "scaleV", {
+ /**
+ *
+ */
+ get: function () {
+ return this._scaleV;
+ },
+ set: function (value) {
+ if (value == this._scaleV)
+ return;
+
+ this._scaleV = value;
+
+ this._uvMatrixDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(UVTransform.prototype, "matrix", {
+ /**
+ *
+ */
+ get: function () {
+ if (this._uvMatrixDirty)
+ this.updateUVMatrix();
+
+ return this._uvMatrix;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * @private
+ */
+ UVTransform.prototype.updateUVMatrix = function () {
+ this._uvMatrix.identity();
+
+ if (this._rotation != 0)
+ this._uvMatrix.rotate(this._rotation);
+
+ if (this._scaleU != 1 || this._scaleV != 1)
+ this._uvMatrix.scale(this._scaleU, this._scaleV);
+
+ this._uvMatrix.translate(this._offsetU, this._offsetV);
+
+ this._uvMatrixDirty = false;
+ };
+ return UVTransform;
+})();
+
+module.exports = UVTransform;
+
+
+},{"awayjs-core/lib/core/geom/Matrix":undefined}],"awayjs-core/lib/core/geom/Vector3D":[function(require,module,exports){
+/**
+* The Vector3D class represents a point or a location in the three-dimensional
+* space using the Cartesian coordinates x, y, and z. As in a two-dimensional
+* space, the x property represents the horizontal axis and the y property
+* represents the vertical axis. In three-dimensional space, the z property
+* represents depth. The value of the x property increases as the object moves
+* to the right. The value of the y property increases as the object moves
+* down. The z property increases as the object moves farther from the point
+* of view. Using perspective projection and scaling, the object is seen to be
+* bigger when near and smaller when farther away from the screen. As in a
+* right-handed three-dimensional coordinate system, the positive z-axis points
+* away from the viewer and the value of the z property increases as the object
+* moves away from the viewer's eye. The origin point (0,0,0) of the global
+* space is the upper-left corner of the stage.
+*
+* The Vector3D class can also represent a direction, an arrow pointing from +* the origin of the coordinates, such as (0,0,0), to an endpoint; or a +* floating-point component of an RGB (Red, Green, Blue) color model.
+* +*Quaternion notation introduces a fourth element, the w property, which +* provides additional orientation information. For example, the w property can +* define an angle of rotation of a Vector3D object. The combination of the +* angle of rotation and the coordinates x, y, and z can determine the display +* object's orientation. Here is a representation of Vector3D elements in +* matrix notation:
+*/ +var Vector3D = (function () { + /** + * Creates an instance of a Vector3D object. If you do not specify a + * parameter for the constructor, a Vector3D object is created with + * the elements (0,0,0,0). + * + * @param x The first element, such as the x coordinate. + * @param y The second element, such as the y coordinate. + * @param z The third element, such as the z coordinate. + * @param w An optional element for additional data such as the angle + * of rotation. + */ + function Vector3D(x, y, z, w) { + if (typeof x === "undefined") { x = 0; } + if (typeof y === "undefined") { y = 0; } + if (typeof z === "undefined") { z = 0; } + if (typeof w === "undefined") { w = 0; } + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + Object.defineProperty(Vector3D.prototype, "length", { + /** + * The length, magnitude, of the current Vector3D object from the + * origin (0,0,0) to the object's x, y, and z coordinates. The w + * property is ignored. A unit vector has a length or magnitude of + * one. + */ + get: function () { + return Math.sqrt(this.lengthSquared); + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(Vector3D.prototype, "lengthSquared", { + /** + * The square of the length of the current Vector3D object, calculated + * using the x, y, and z properties. The w property is ignored. Use the + *lengthSquared()
method whenever possible instead of the
+ * slower Math.sqrt()
method call of the
+ * Vector3D.length()
method.
+ */
+ get: function () {
+ return this.x * this.x + this.y * this.y + this.z * this.z;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Adds the value of the x, y, and z elements of the current Vector3D
+ * object to the values of the x, y, and z elements of another Vector3D
+ * object. The add()
method does not change the current
+ * Vector3D object. Instead, it returns a new Vector3D object with
+ * the new values.
+ *
+ * The result of adding two vectors together is a resultant vector. + * One way to visualize the result is by drawing a vector from the + * origin or tail of the first vector to the end or head of the second + * vector. The resultant vector is the distance between the origin + * point of the first vector and the end point of the second vector. + *
+ */ + Vector3D.prototype.add = function (a) { + return new Vector3D(this.x + a.x, this.y + a.y, this.z + a.z, this.w + a.w); + }; + + /** + * Returns the angle in radians between two vectors. The returned angle + * is the smallest radian the first Vector3D object rotates until it + * aligns with the second Vector3D object. + * + *The angleBetween()
method is a static method. You
+ * can use it directly as a method of the Vector3D class.
To convert a degree to a radian, you can use the following + * formula:
+ * + *radian = Math.PI/180 * degree
You can use the normalized cross product of two vertices of a + * polygon surface with the normalized vector of the camera or eye + * viewpoint to get a dot product. The value of the dot product can + * identify whether a surface of a three-dimensional object is hidden + * from the viewpoint.
+ * + * @param a A second Vector3D object. + * @returns A new Vector3D object that is perpendicular to the current + * Vector3D object and the Vector3D object specified as the + * parameter. + */ + Vector3D.prototype.crossProduct = function (a) { + return new Vector3D(this.y * a.z - this.z * a.y, this.z * a.x - this.x * a.z, this.x * a.y - this.y * a.x, 1); + }; + + /** + * Decrements the value of the x, y, and z elements of the current + * Vector3D object by the values of the x, y, and z elements of + * specified Vector3D object. Unlike the + *Vector3D.subtract()
method, the
+ * decrementBy()
method changes the current Vector3D
+ * object and does not return a new Vector3D object.
+ *
+ * @param a The Vector3D object containing the values to subtract from
+ * the current Vector3D object.
+ */
+ Vector3D.prototype.decrementBy = function (a) {
+ this.x -= a.x;
+ this.y -= a.y;
+ this.z -= a.z;
+ };
+
+ /**
+ * Returns the distance between two Vector3D objects. The
+ * distance()
method is a static method. You can use it
+ * directly as a method of the Vector3D class to get the Euclidean
+ * distance between two three-dimensional points.
+ *
+ * @param pt1 A Vector3D object as the first three-dimensional point.
+ * @param pt2 A Vector3D object as the second three-dimensional point.
+ * @returns The distance between two Vector3D objects.
+ */
+ Vector3D.distance = function (pt1, pt2) {
+ var x = (pt1.x - pt2.x);
+ var y = (pt1.y - pt2.y);
+ var z = (pt1.z - pt2.z);
+ return Math.sqrt(x * x + y * y + z * z);
+ };
+
+ /**
+ * If the current Vector3D object and the one specified as the
+ * parameter are unit vertices, this method returns the cosine of the
+ * angle between the two vertices. Unit vertices are vertices that
+ * point to the same direction but their length is one. They remove the
+ * length of the vector as a factor in the result. You can use the
+ * normalize()
method to convert a vector to a unit
+ * vector.
+ *
+ * The dotProduct()
method finds the angle between two
+ * vertices. It is also used in backface culling or lighting
+ * calculations. Backface culling is a procedure for determining which
+ * surfaces are hidden from the viewpoint. You can use the normalized
+ * vertices from the camera, or eye, viewpoint and the cross product of
+ * the vertices of a polygon surface to get the dot product. If the dot
+ * product is less than zero, then the surface is facing the camera or
+ * the viewer. If the two unit vertices are perpendicular to each
+ * other, they are orthogonal and the dot product is zero. If the two
+ * vertices are parallel to each other, the dot product is one.
Vector3D.add()
+ * method, the incrementBy()
method changes the current
+ * Vector3D object and does not return a new Vector3D object.
+ *
+ * @param a The Vector3D object to be added to the current Vector3D
+ * object.
+ */
+ Vector3D.prototype.incrementBy = function (a) {
+ this.x += a.x;
+ this.y += a.y;
+ this.z += a.z;
+ };
+
+ /**
+ * Compares the elements of the current Vector3D object with the
+ * elements of a specified Vector3D object to determine whether they
+ * are nearly equal. The two Vector3D objects are nearly equal if the
+ * value of all the elements of the two vertices are equal, or the
+ * result of the comparison is within the tolerance range. The
+ * difference between two elements must be less than the number
+ * specified as the tolerance parameter. If the third optional
+ * parameter is set to true
, all four elements of the
+ * Vector3D objects, including the w
property, are
+ * compared. Otherwise, only the x, y, and z elements are included in
+ * the comparison.
+ */
+ /**
+ *
+ * @param toCompare The Vector3D object to be compared with the current
+ * Vector3D object.
+ * @param tolerance A number determining the tolerance factor. If the
+ * difference between the values of the Vector3D
+ * element specified in the toCompare parameter and
+ * the current Vector3D element is less than the
+ * tolerance number, the two values are considered
+ * nearly equal.
+ * @param allFour An optional parameter that specifies whether the w
+ * property of the Vector3D objects is used in the
+ * comparison.
+ * @returns A value of true if the specified Vector3D object is nearly
+ * equal to the current Vector3D object; false if it is not
+ * equal.
+ *
+ * @see away.geom.Vector3D#equals()
+ */
+ Vector3D.prototype.nearEquals = function (toCompare, tolerance, allFour) {
+ if (typeof allFour === "undefined") { allFour = true; }
+ return ((Math.abs(this.x - toCompare.x) < tolerance) && (Math.abs(this.y - toCompare.y) < tolerance) && (Math.abs(this.z - toCompare.z) < tolerance) && (!allFour || Math.abs(this.w - toCompare.w) < tolerance));
+ };
+
+ /**
+ * Sets the current Vector3D object to its inverse. The inverse object
+ * is also considered the opposite of the original object. The value of
+ * the x, y, and z properties of the current Vector3D object is changed
+ * to -x, -y, and -z.
+ */
+ Vector3D.prototype.negate = function () {
+ this.x = -this.x;
+ this.y = -this.y;
+ this.z = -this.z;
+ };
+
+ /**
+ * Converts a Vector3D object to a unit vector by dividing the first
+ * three elements (x, y, z) by the length of the vector. Unit vertices
+ * are vertices that have a direction but their length is one. They
+ * simplify vector calculations by removing length as a factor.
+ */
+ /**
+ * Scales the line segment between(0,0) and the current point to a set
+ * length.
+ *
+ * @param thickness The scaling value. For example, if the current
+ * Vector3D object is (0,3,4), and you normalize it to
+ * 1, the point returned is at(0,0.6,0.8).
+ */
+ Vector3D.prototype.normalize = function (thickness) {
+ if (typeof thickness === "undefined") { thickness = 1; }
+ if (this.length != 0) {
+ var invLength = thickness / this.length;
+ this.x *= invLength;
+ this.y *= invLength;
+ this.z *= invLength;
+ return;
+ }
+ };
+
+ /**
+ * Divides the value of the x
, y
, and
+ * z
properties of the current Vector3D object by the
+ * value of its w
property.
+ *
+ * If the current Vector3D object is the result of multiplying a
+ * Vector3D object by a projection Matrix3D object, the w property can
+ * hold the transform value. The project()
method then can
+ * complete the projection by dividing the elements by the
+ * w
property. Use the Matrix3D.rawData
+ * property to create a projection Matrix3D object.
subtract()
method does not
+ * change the current Vector3D object. Instead, this method returns a
+ * new Vector3D object with the new values.
+ *
+ * @param a The Vector3D object to be subtracted from the current
+ * Vector3D object.
+ * @returns A new Vector3D object that is the difference between the
+ * current Vector3D and the specified Vector3D object.
+ *
+ * @see away.geom.Vector3D#decrementBy()
+ */
+ Vector3D.prototype.subtract = function (a) {
+ return new Vector3D(this.x - a.x, this.y - a.y, this.z - a.z);
+ };
+
+ /**
+ * Returns a string representation of the current Vector3D object. The
+ * string contains the values of the x, y, and z properties.
+ */
+ Vector3D.prototype.toString = function () {
+ return "[Vector3D] (x:" + this.x + " ,y:" + this.y + ", z" + this.z + ", w:" + this.w + ")";
+ };
+ Vector3D.X_AXIS = new Vector3D(1, 0, 0);
+
+ Vector3D.Y_AXIS = new Vector3D(0, 1, 0);
+
+ Vector3D.Z_AXIS = new Vector3D(0, 0, 1);
+ return Vector3D;
+})();
+
+module.exports = Vector3D;
+
+
+},{}],"awayjs-core/lib/core/library/AssetLibraryBundle":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AssetLibraryIterator = require("awayjs-core/lib/core/library/AssetLibraryIterator");
+var AssetLoader = require("awayjs-core/lib/core/library/AssetLoader");
+
+var ConflictPrecedence = require("awayjs-core/lib/core/library/ConflictPrecedence");
+var ConflictStrategy = require("awayjs-core/lib/core/library/ConflictStrategy");
+
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+
+var Error = require("awayjs-core/lib/errors/Error");
+var AssetEvent = require("awayjs-core/lib/events/AssetEvent");
+var IOErrorEvent = require("awayjs-core/lib/events/IOErrorEvent");
+var LoaderEvent = require("awayjs-core/lib/events/LoaderEvent");
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+var ParserEvent = require("awayjs-core/lib/events/ParserEvent");
+
+/**
+* AssetLibraryBundle enforces a multiton pattern and is not intended to be instanced directly.
+* Its purpose is to create a container for 3D data management, both before and after parsing.
+* If you are interested in creating multiple library bundles, please use the getInstance()
method.
+*/
+var AssetLibraryBundle = (function (_super) {
+ __extends(AssetLibraryBundle, _super);
+ /**
+ * Creates a new AssetLibraryBundle
object.
+ *
+ * @param me A multiton enforcer for the AssetLibraryBundle ensuring it cannnot be instanced.
+ */
+ function AssetLibraryBundle() {
+ var _this = this;
+ _super.call(this);
+ this._loadingSessionsGarbage = new Array();
+
+ this._assets = new Array(); //new Vector.ConflictStrategy.APPEND_NUM_SUFFIX
+ * is used which means that a numeric suffix is appended to one of the assets. The
+ * conflictPrecedence
property defines which of the two conflicting assets will
+ * be renamed.
+ *
+ * @see naming.ConflictStrategy
+ * @see AssetLibrary.conflictPrecedence
+ */
+ get: function () {
+ return this._strategy;
+ },
+ set: function (val) {
+ if (!val)
+ throw new Error('namingStrategy must not be null. To ignore naming, use AssetLibrary.IGNORE');
+
+ this._strategy = val.create();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLibraryBundle.prototype, "conflictPrecedence", {
+ /**
+ * Defines which asset should have precedence when resolving a naming conflict between
+ * two assets of which one has just been renamed by the user or by a parser. By default
+ * ConflictPrecedence.FAVOR_NEW
is used, meaning that the newly renamed
+ * asset will keep it's new name while the older asset gets renamed to not conflict.
+ *
+ * This property is ignored for conflict strategies that do not actually rename an
+ * asset automatically, such as ConflictStrategy.IGNORE and ConflictStrategy.THROW_ERROR.
+ *
+ * @see away.library.ConflictPrecedence
+ * @see away.library.ConflictStrategy
+ */
+ get: function () {
+ return this._strategyPreference;
+ },
+ set: function (val) {
+ this._strategyPreference = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Create an AssetLibraryIterator instance that can be used to iterate over the assets
+ * in this asset library instance. The iterator can filter assets on asset type and/or
+ * namespace. A "null" filter value means no filter of that type is used.
+ *
+ * @param assetTypeFilter Asset type to filter on (from the AssetType enum class.) Use
+ * null to not filter on asset type.
+ * @param namespaceFilter Namespace to filter on. Use null to not filter on namespace.
+ * @param filterFunc Callback function to use when deciding whether an asset should be
+ * included in the iteration or not. This needs to be a function that takes a single
+ * parameter of type IAsset and returns a boolean where true means it should be included.
+ *
+ * @see away.library.AssetType
+ */
+ AssetLibraryBundle.prototype.createIterator = function (assetTypeFilter, namespaceFilter, filterFunc) {
+ if (typeof assetTypeFilter === "undefined") { assetTypeFilter = null; }
+ if (typeof namespaceFilter === "undefined") { namespaceFilter = null; }
+ if (typeof filterFunc === "undefined") { filterFunc = null; }
+ return new AssetLibraryIterator(this._assets, assetTypeFilter, namespaceFilter, filterFunc);
+ };
+
+ /**
+ * Loads a file and (optionally) all of its dependencies.
+ *
+ * @param req The URLRequest object containing the URL of the file to be loaded.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ * @return A handle to the retrieved resource.
+ */
+ AssetLibraryBundle.prototype.load = function (req, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ var loader = new AssetLoader();
+
+ if (!this._loadingSessions)
+ this._loadingSessions = new Array();
+
+ this._loadingSessions.push(loader);
+
+ loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);
+ loader.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);
+ loader.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+
+ // Error are handled separately (see documentation for addErrorHandler)
+ loader._iAddErrorHandler(this._onLoadErrorDelegate);
+ loader._iAddParseErrorHandler(this._onParseErrorDelegate);
+
+ return loader.load(req, context, ns, parser);
+ };
+
+ /**
+ * Loads a resource from existing data in memory.
+ *
+ * @param data The data object containing all resource information.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ * @return A handle to the retrieved resource.
+ */
+ AssetLibraryBundle.prototype.loadData = function (data, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ var loader = new AssetLoader();
+
+ if (!this._loadingSessions)
+ this._loadingSessions = new Array();
+
+ this._loadingSessions.push(loader);
+
+ loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);
+ loader.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);
+ loader.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+
+ // Error are handled separately (see documentation for addErrorHandler)
+ loader._iAddErrorHandler(this._onLoadErrorDelegate);
+ loader._iAddParseErrorHandler(this._onParseErrorDelegate);
+
+ return loader.loadData(data, '', context, ns, parser);
+ };
+
+ /**
+ *
+ */
+ AssetLibraryBundle.prototype.getAsset = function (name, ns) {
+ //var asset : IAsset;
+ if (typeof ns === "undefined") { ns = null; }
+ if (this._assetDictDirty)
+ this.rehashAssetDict();
+
+ if (ns == null)
+ ns = NamedAssetBase.DEFAULT_NAMESPACE;
+
+ if (!this._assetDictionary.hasOwnProperty(ns))
+ return null;
+
+ return this._assetDictionary[ns][name];
+ };
+
+ /**
+ * Adds an asset to the asset library, first making sure that it's name is unique
+ * using the method defined by the conflictStrategy
and
+ * conflictPrecedence
properties.
+ */
+ AssetLibraryBundle.prototype.addAsset = function (asset) {
+ var ns;
+ var old;
+
+ // Bail if asset has already been added.
+ if (this._assets.indexOf(asset) >= 0)
+ return;
+
+ old = this.getAsset(asset.name, asset.assetNamespace);
+ ns = asset.assetNamespace || NamedAssetBase.DEFAULT_NAMESPACE;
+
+ if (old != null)
+ this._strategy.resolveConflict(asset, old, this._assetDictionary[ns], this._strategyPreference);
+
+ //create unique-id (for now this is used in AwayBuilder only
+ //asset.id = IDUtil.createUID();
+ // Add it
+ this._assets.push(asset);
+
+ if (!this._assetDictionary.hasOwnProperty(ns))
+ this._assetDictionary[ns] = new Object();
+
+ this._assetDictionary[ns][asset.name] = asset;
+
+ asset.addEventListener(AssetEvent.ASSET_RENAME, this._onAssetRenameDelegate);
+ asset.addEventListener(AssetEvent.ASSET_CONFLICT_RESOLVED, this._onAssetConflictResolvedDelegate);
+ };
+
+ /**
+ * Removes an asset from the library, and optionally disposes that asset by calling
+ * it's disposeAsset() method (which for most assets is implemented as a default
+ * version of that type's dispose() method.
+ *
+ * @param asset The asset which should be removed from this library.
+ * @param dispose Defines whether the assets should also be disposed.
+ */
+ AssetLibraryBundle.prototype.removeAsset = function (asset, dispose) {
+ if (typeof dispose === "undefined") { dispose = true; }
+ var idx;
+
+ this.removeAssetFromDict(asset);
+
+ asset.removeEventListener(AssetEvent.ASSET_RENAME, this._onAssetRenameDelegate);
+ asset.removeEventListener(AssetEvent.ASSET_CONFLICT_RESOLVED, this._onAssetConflictResolvedDelegate);
+
+ idx = this._assets.indexOf(asset);
+
+ if (idx >= 0)
+ this._assets.splice(idx, 1);
+
+ if (dispose)
+ asset.dispose();
+ };
+
+ /**
+ * Removes an asset which is specified using name and namespace.
+ *
+ * @param name The name of the asset to be removed.
+ * @param ns The namespace to which the desired asset belongs.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see away.library.AssetLibrary.removeAsset()
+ */
+ AssetLibraryBundle.prototype.removeAssetByName = function (name, ns, dispose) {
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof dispose === "undefined") { dispose = true; }
+ var asset = this.getAsset(name, ns);
+
+ if (asset)
+ this.removeAsset(asset, dispose);
+
+ return asset;
+ };
+
+ /**
+ * Removes all assets from the asset library, optionally disposing them as they
+ * are removed.
+ *
+ * @param dispose Defines whether the assets should also be disposed.
+ */
+ AssetLibraryBundle.prototype.removeAllAssets = function (dispose) {
+ if (typeof dispose === "undefined") { dispose = true; }
+ if (dispose) {
+ var asset;
+
+ for (var c = 0; c < this._assets.length; c++) {
+ asset = this._assets[c];
+ asset.dispose();
+ }
+ /*
+ for each (asset in _assets)
+ asset.dispose();
+ */
+ }
+
+ this._assets.length = 0;
+ this.rehashAssetDict();
+ };
+
+ /**
+ * Removes all assets belonging to a particular namespace (null for default)
+ * from the asset library, and optionall disposes them by calling their
+ * disposeAsset() method.
+ *
+ * @param ns The namespace from which all assets should be removed.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see away.library.AssetLibrary.removeAsset()
+ */
+ AssetLibraryBundle.prototype.removeNamespaceAssets = function (ns, dispose) {
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof dispose === "undefined") { dispose = true; }
+ var idx = 0;
+ var asset;
+ var old_assets;
+
+ // Empty the assets vector after having stored a copy of it.
+ // The copy will be filled with all assets which weren't removed.
+ old_assets = this._assets.concat();
+ this._assets.length = 0;
+
+ if (ns == null)
+ ns = NamedAssetBase.DEFAULT_NAMESPACE;
+
+ for (var d = 0; d < old_assets.length; d++) {
+ asset = old_assets[d];
+
+ // Remove from dict if in the supplied namespace. If not,
+ // transfer over to the new vector.
+ if (asset.assetNamespace == ns) {
+ if (dispose)
+ asset.dispose();
+
+ // Remove asset from dictionary, but don't try to auto-remove
+ // the namespace, which will trigger an unnecessarily expensive
+ // test that is not needed since we know that the namespace
+ // will be empty when loop finishes.
+ this.removeAssetFromDict(asset, false);
+ } else {
+ this._assets[idx++] = asset;
+ }
+ }
+
+ /*
+ for each (asset in old_assets) {
+ // Remove from dict if in the supplied namespace. If not,
+ // transfer over to the new vector.
+ if (asset.assetNamespace == ns) {
+ if (dispose)
+ asset.dispose();
+
+ // Remove asset from dictionary, but don't try to auto-remove
+ // the namespace, which will trigger an unnecessarily expensive
+ // test that is not needed since we know that the namespace
+ // will be empty when loop finishes.
+ removeAssetFromDict(asset, false);
+ } else
+ _assets[idx++] = asset;
+
+ }
+ */
+ // Remove empty namespace
+ if (this._assetDictionary.hasOwnProperty(ns))
+ delete this._assetDictionary[ns];
+ };
+
+ AssetLibraryBundle.prototype.removeAssetFromDict = function (asset, autoRemoveEmptyNamespace) {
+ if (typeof autoRemoveEmptyNamespace === "undefined") { autoRemoveEmptyNamespace = true; }
+ if (this._assetDictDirty)
+ this.rehashAssetDict();
+
+ if (this._assetDictionary.hasOwnProperty(asset.assetNamespace)) {
+ if (this._assetDictionary[asset.assetNamespace].hasOwnProperty(asset.name))
+ delete this._assetDictionary[asset.assetNamespace][asset.name];
+
+ if (autoRemoveEmptyNamespace) {
+ var key;
+ var empty = true;
+
+ for (key in this._assetDictionary[asset.assetNamespace]) {
+ empty = false;
+ break;
+ }
+
+ if (empty)
+ delete this._assetDictionary[asset.assetNamespace];
+ }
+ }
+ };
+
+ AssetLibraryBundle.prototype.stopAllLoadingSessions = function () {
+ var i;
+
+ if (!this._loadingSessions)
+ this._loadingSessions = new Array();
+
+ var length = this._loadingSessions.length;
+
+ for (i = 0; i < length; i++)
+ this.killLoadingSession(this._loadingSessions[i]);
+
+ this._loadingSessions = null;
+ };
+
+ AssetLibraryBundle.prototype.rehashAssetDict = function () {
+ var asset;
+
+ this._assetDictionary = {};
+
+ var l = this._assets.length;
+
+ for (var c = 0; c < l; c++) {
+ asset = this._assets[c];
+
+ if (!this._assetDictionary.hasOwnProperty(asset.assetNamespace))
+ this._assetDictionary[asset.assetNamespace] = {};
+
+ this._assetDictionary[asset.assetNamespace][asset.name] = asset;
+ }
+
+ this._assetDictDirty = false;
+ };
+
+ /**
+ * Called when a an error occurs during loading.
+ */
+ AssetLibraryBundle.prototype.onLoadError = function (event) {
+ if (this.hasEventListener(IOErrorEvent.IO_ERROR)) {
+ this.dispatchEvent(event);
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ /**
+ * Called when a an error occurs during parsing.
+ */
+ AssetLibraryBundle.prototype.onParseError = function (event) {
+ if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {
+ this.dispatchEvent(event);
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ AssetLibraryBundle.prototype.onAssetComplete = function (event) {
+ // Only add asset to library the first time.
+ if (event.type == AssetEvent.ASSET_COMPLETE)
+ this.addAsset(event.asset);
+
+ this.dispatchEvent(event);
+ };
+
+ AssetLibraryBundle.prototype.onTextureSizeError = function (event) {
+ this.dispatchEvent(event);
+ };
+
+ /**
+ * Called when the resource and all of its dependencies was retrieved.
+ */
+ AssetLibraryBundle.prototype.onResourceComplete = function (event) {
+ var _this = this;
+ var loader = event.target;
+
+ this.dispatchEvent(event);
+
+ var index = this._loadingSessions.indexOf(loader);
+ this._loadingSessions.splice(index, 1);
+
+ // Add loader to a garbage array - for a collection sweep and kill
+ this._loadingSessionsGarbage.push(loader);
+ this._gcTimeoutIID = setTimeout(function () {
+ _this.loadingSessionGC();
+ }, 100);
+ };
+
+ AssetLibraryBundle.prototype.loadingSessionGC = function () {
+ var loader;
+
+ while (this._loadingSessionsGarbage.length > 0) {
+ loader = this._loadingSessionsGarbage.pop();
+ this.killLoadingSession(loader);
+ }
+
+ clearTimeout(this._gcTimeoutIID);
+ this._gcTimeoutIID = null;
+ };
+
+ AssetLibraryBundle.prototype.killLoadingSession = function (loader) {
+ loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);
+ loader.removeEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);
+ loader.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+ loader.stop();
+ };
+
+ /**
+ * Called when unespected error occurs
+ */
+ /*
+ private onResourceError() : void
+ {
+ var msg:string = "Unexpected parser error";
+ if(hasEventListener(LoaderEvent.DEPENDENCY_ERROR)){
+ var re:LoaderEvent = new LoaderEvent(LoaderEvent.DEPENDENCY_ERROR, "");
+ dispatchEvent(re);
+ } else{
+ throw new Error(msg);
+ }
+ }
+ */
+ AssetLibraryBundle.prototype.onAssetRename = function (event) {
+ var asset = event.target;
+ var old = this.getAsset(asset.assetNamespace, asset.name);
+
+ if (old != null) {
+ this._strategy.resolveConflict(asset, old, this._assetDictionary[asset.assetNamespace], this._strategyPreference);
+ } else {
+ var dict = this._assetDictionary[event.asset.assetNamespace];
+
+ if (dict == null)
+ return;
+
+ dict[event.assetPrevName] = null;
+ dict[event.asset.name] = event.asset;
+ }
+ };
+
+ AssetLibraryBundle.prototype.onAssetConflictResolved = function (event) {
+ this.dispatchEvent(event.clone());
+ };
+ AssetLibraryBundle._iInstances = new Object();
+ return AssetLibraryBundle;
+})(EventDispatcher);
+
+module.exports = AssetLibraryBundle;
+
+
+},{"awayjs-core/lib/core/library/AssetLibraryIterator":undefined,"awayjs-core/lib/core/library/AssetLoader":undefined,"awayjs-core/lib/core/library/ConflictPrecedence":undefined,"awayjs-core/lib/core/library/ConflictStrategy":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/events/AssetEvent":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/IOErrorEvent":undefined,"awayjs-core/lib/events/LoaderEvent":undefined,"awayjs-core/lib/events/ParserEvent":undefined}],"awayjs-core/lib/core/library/AssetLibraryIterator":[function(require,module,exports){
+var AssetLibraryIterator = (function () {
+ function AssetLibraryIterator(assets, assetTypeFilter, namespaceFilter, filterFunc) {
+ this._assets = assets;
+ this.filter(assetTypeFilter, namespaceFilter, filterFunc);
+ }
+ Object.defineProperty(AssetLibraryIterator.prototype, "currentAsset", {
+ get: function () {
+ // Return current, or null if no current
+ return (this._idx < this._filtered.length) ? this._filtered[this._idx] : null;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(AssetLibraryIterator.prototype, "numAssets", {
+ get: function () {
+ return this._filtered.length;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ AssetLibraryIterator.prototype.next = function () {
+ var next = null;
+
+ if (this._idx < this._filtered.length)
+ next = this._filtered[this._idx];
+
+ this._idx++;
+
+ return next;
+ };
+
+ AssetLibraryIterator.prototype.reset = function () {
+ this._idx = 0;
+ };
+
+ AssetLibraryIterator.prototype.setIndex = function (index) {
+ this._idx = index;
+ };
+
+ AssetLibraryIterator.prototype.filter = function (assetTypeFilter, namespaceFilter, filterFunc) {
+ if (assetTypeFilter || namespaceFilter) {
+ var idx;
+ var asset;
+
+ idx = 0;
+ this._filtered = new Array(); //new Vector.getBundle()
method.
+*/
+var AssetLibrary = (function () {
+ /**
+ * Creates a new AssetLibrary
object.
+ *
+ */
+ function AssetLibrary() {
+ }
+ //*/
+ /**
+ * Returns an AssetLibrary bundle instance. If no key is given, returns the default bundle (which is
+ * similar to using the AssetLibraryBundle as a singleton). To keep several separated library bundles,
+ * pass a string key to this method to define which bundle should be returned. This is
+ * referred to as using the AssetLibraryBundle as a multiton.
+ *
+ * @param key Defines which multiton instance should be returned.
+ * @return An instance of the asset library
+ */
+ AssetLibrary.getBundle = function (key) {
+ if (typeof key === "undefined") { key = 'default'; }
+ return AssetLibraryBundle.getInstance(key);
+ };
+
+ /**
+ *
+ */
+ AssetLibrary.enableParser = function (parserClass) {
+ AssetLoader.enableParser(parserClass);
+ };
+
+ /**
+ *
+ */
+ AssetLibrary.enableParsers = function (parserClasses) {
+ AssetLoader.enableParsers(parserClasses);
+ };
+
+ Object.defineProperty(AssetLibrary, "conflictStrategy", {
+ /**
+ * Short-hand for conflictStrategy property on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.conflictStrategy
+ */
+ get: function () {
+ return AssetLibrary.getBundle().conflictStrategy;
+ },
+ set: function (val) {
+ AssetLibrary.getBundle().conflictStrategy = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLibrary, "conflictPrecedence", {
+ /**
+ * Short-hand for conflictPrecedence property on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.conflictPrecedence
+ */
+ get: function () {
+ return AssetLibrary.getBundle().conflictPrecedence;
+ },
+ set: function (val) {
+ AssetLibrary.getBundle().conflictPrecedence = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Short-hand for createIterator() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.createIterator()
+ */
+ AssetLibrary.createIterator = function (assetTypeFilter, namespaceFilter, filterFunc) {
+ if (typeof assetTypeFilter === "undefined") { assetTypeFilter = null; }
+ if (typeof namespaceFilter === "undefined") { namespaceFilter = null; }
+ if (typeof filterFunc === "undefined") { filterFunc = null; }
+ return AssetLibrary.getBundle().createIterator(assetTypeFilter, namespaceFilter, filterFunc);
+ };
+
+ /**
+ * Short-hand for load() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.load()
+ */
+ AssetLibrary.load = function (req, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ return AssetLibrary.getBundle().load(req, context, ns, parser);
+ };
+
+ /**
+ * Short-hand for loadData() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.loadData()
+ */
+ AssetLibrary.loadData = function (data, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ return AssetLibrary.getBundle().loadData(data, context, ns, parser);
+ };
+
+ AssetLibrary.stopLoad = function () {
+ AssetLibrary.getBundle().stopAllLoadingSessions();
+ };
+
+ /**
+ * Short-hand for getAsset() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.getAsset()
+ */
+ AssetLibrary.getAsset = function (name, ns) {
+ if (typeof ns === "undefined") { ns = null; }
+ return AssetLibrary.getBundle().getAsset(name, ns);
+ };
+
+ /**
+ * Short-hand for addEventListener() method on default asset library bundle.
+ */
+ AssetLibrary.addEventListener = function (type, listener) {
+ AssetLibrary.getBundle().addEventListener(type, listener);
+ };
+
+ /**
+ * Short-hand for removeEventListener() method on default asset library bundle.
+ */
+ AssetLibrary.removeEventListener = function (type, listener) {
+ AssetLibrary.getBundle().removeEventListener(type, listener);
+ };
+
+ /**
+ * Short-hand for hasEventListener() method on default asset library bundle.
+
+ public static hasEventListener(type:string):boolean
+ {
+ return AssetLibrary.getBundle().hasEventListener(type);
+ }
+
+ public static willTrigger(type:string):boolean
+ {
+ return getBundle().willTrigger(type);
+ }
+ */
+ /**
+ * Short-hand for addAsset() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.addAsset()
+ */
+ AssetLibrary.addAsset = function (asset) {
+ AssetLibrary.getBundle().addAsset(asset);
+ };
+
+ /**
+ * Short-hand for removeAsset() method on default asset library bundle.
+ *
+ * @param asset The asset which should be removed from the library.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAsset()
+ */
+ AssetLibrary.removeAsset = function (asset, dispose) {
+ if (typeof dispose === "undefined") { dispose = true; }
+ AssetLibrary.getBundle().removeAsset(asset, dispose);
+ };
+
+ /**
+ * Short-hand for removeAssetByName() method on default asset library bundle.
+ *
+ * @param name The name of the asset to be removed.
+ * @param ns The namespace to which the desired asset belongs.
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAssetByName()
+ */
+ AssetLibrary.removeAssetByName = function (name, ns, dispose) {
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof dispose === "undefined") { dispose = true; }
+ return AssetLibrary.getBundle().removeAssetByName(name, ns, dispose);
+ };
+
+ /**
+ * Short-hand for removeAllAssets() method on default asset library bundle.
+ *
+ * @param dispose Defines whether the assets should also be disposed.
+ *
+ * @see AssetLibraryBundle.removeAllAssets()
+ */
+ AssetLibrary.removeAllAssets = function (dispose) {
+ if (typeof dispose === "undefined") { dispose = true; }
+ AssetLibrary.getBundle().removeAllAssets(dispose);
+ };
+
+ /**
+ * Short-hand for removeNamespaceAssets() method on default asset library bundle.
+ *
+ * @see AssetLibraryBundle.removeNamespaceAssets()
+ */
+ AssetLibrary.removeNamespaceAssets = function (ns, dispose) {
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof dispose === "undefined") { dispose = true; }
+ AssetLibrary.getBundle().removeNamespaceAssets(ns, dispose);
+ };
+ return AssetLibrary;
+})();
+
+module.exports = AssetLibrary;
+
+
+},{"awayjs-core/lib/core/library/AssetLibraryBundle":undefined,"awayjs-core/lib/core/library/AssetLoader":undefined}],"awayjs-core/lib/core/library/AssetLoaderContext":[function(require,module,exports){
+var AssetLoaderContext = (function () {
+ /**
+ * AssetLoaderContext provides configuration for the AssetLoader load() and parse() operations.
+ * Use it to configure how (and if) dependencies are loaded, or to map dependency URLs to
+ * embedded data.
+ *
+ * @see away.loading.AssetLoader
+ */
+ function AssetLoaderContext(includeDependencies, dependencyBaseUrl) {
+ if (typeof includeDependencies === "undefined") { includeDependencies = true; }
+ if (typeof dependencyBaseUrl === "undefined") { dependencyBaseUrl = null; }
+ this._includeDependencies = includeDependencies;
+ this._dependencyBaseUrl = dependencyBaseUrl || '';
+ this._embeddedDataByUrl = {};
+ this._remappedUrls = {};
+ this._materialMode = AssetLoaderContext.UNDEFINED;
+ }
+ Object.defineProperty(AssetLoaderContext.prototype, "includeDependencies", {
+ /**
+ * Defines whether dependencies (all files except the one at the URL given to the load() or
+ * parseData() operations) should be automatically loaded. Defaults to true.
+ */
+ get: function () {
+ return this._includeDependencies;
+ },
+ set: function (val) {
+ this._includeDependencies = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLoaderContext.prototype, "materialMode", {
+ /**
+ * MaterialMode defines, if the Parser should create SinglePass or MultiPass Materials
+ * Options:
+ * 0 (Default / undefined) - All Parsers will create SinglePassMaterials, but the AWD2.1parser will create Materials as they are defined in the file
+ * 1 (Force SinglePass) - All Parsers create SinglePassMaterials
+ * 2 (Force MultiPass) - All Parsers will create MultiPassMaterials
+ *
+ */
+ get: function () {
+ return this._materialMode;
+ },
+ set: function (materialMode) {
+ this._materialMode = materialMode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLoaderContext.prototype, "dependencyBaseUrl", {
+ /**
+ * A base URL that will be prepended to all relative dependency URLs found in a loaded resource.
+ * Absolute paths will not be affected by the value of this property.
+ */
+ get: function () {
+ return this._dependencyBaseUrl;
+ },
+ set: function (val) {
+ this._dependencyBaseUrl = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLoaderContext.prototype, "overrideAbsolutePaths", {
+ /**
+ * Defines whether absolute paths (defined as paths that begin with a "/") should be overridden
+ * with the dependencyBaseUrl defined in this context. If this is true, and the base path is
+ * "base", /path/to/asset.jpg will be resolved as base/path/to/asset.jpg.
+ */
+ get: function () {
+ return this._overrideAbsPath;
+ },
+ set: function (val) {
+ this._overrideAbsPath = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(AssetLoaderContext.prototype, "overrideFullURLs", {
+ /**
+ * Defines whether "full" URLs (defined as a URL that includes a scheme, e.g. http://) should be
+ * overridden with the dependencyBaseUrl defined in this context. If this is true, and the base
+ * path is "base", http://example.com/path/to/asset.jpg will be resolved as base/path/to/asset.jpg.
+ */
+ get: function () {
+ return this._overrideFullUrls;
+ },
+ set: function (val) {
+ this._overrideFullUrls = val;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Map a URL to another URL, so that files that are referred to by the original URL will instead
+ * be loaded from the new URL. Use this when your file structure does not match the one that is
+ * expected by the loaded file.
+ *
+ * @param originalUrl The original URL which is referenced in the loaded resource.
+ * @param newUrl The URL from which away.should load the resource instead.
+ *
+ * @see mapUrlToData()
+ */
+ AssetLoaderContext.prototype.mapUrl = function (originalUrl, newUrl) {
+ this._remappedUrls[originalUrl] = newUrl;
+ };
+
+ /**
+ * Map a URL to embedded data, so that instead of trying to load a dependency from the URL at
+ * which it's referenced, the dependency data will be retrieved straight from the memory instead.
+ *
+ * @param originalUrl The original URL which is referenced in the loaded resource.
+ * @param data The embedded data. Can be ByteArray or a class which can be used to create a bytearray.
+ */
+ AssetLoaderContext.prototype.mapUrlToData = function (originalUrl, data) {
+ this._embeddedDataByUrl[originalUrl] = data;
+ };
+
+ /**
+ * @private
+ * Defines whether embedded data has been mapped to a particular URL.
+ */
+ AssetLoaderContext.prototype._iHasDataForUrl = function (url) {
+ return this._embeddedDataByUrl.hasOwnProperty(url);
+ };
+
+ /**
+ * @private
+ * Returns embedded data for a particular URL.
+ */
+ AssetLoaderContext.prototype._iGetDataForUrl = function (url) {
+ return this._embeddedDataByUrl[url];
+ };
+
+ /**
+ * @private
+ * Defines whether a replacement URL has been mapped to a particular URL.
+ */
+ AssetLoaderContext.prototype._iHasMappingForUrl = function (url) {
+ return this._remappedUrls.hasOwnProperty(url);
+ };
+
+ /**
+ * @private
+ * Returns new (replacement) URL for a particular original URL.
+ */
+ AssetLoaderContext.prototype._iGetRemappedUrl = function (originalUrl) {
+ return this._remappedUrls[originalUrl];
+ };
+ AssetLoaderContext.UNDEFINED = 0;
+ AssetLoaderContext.SINGLEPASS_MATERIALS = 1;
+ AssetLoaderContext.MULTIPASS_MATERIALS = 2;
+ return AssetLoaderContext;
+})();
+
+module.exports = AssetLoaderContext;
+
+
+},{}],"awayjs-core/lib/core/library/AssetLoaderToken":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+
+/**
+* Dispatched when any asset finishes parsing. Also see specific events for each
+* individual asset type (meshes, materials et c.)
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="assetComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a full resource (including dependencies) finishes loading.
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="resourceComplete", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when a single dependency (which may be the main file of a resource)
+* finishes loading.
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="dependencyComplete", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when an error occurs during loading. I
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="loadError", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when an error occurs during parsing.
+*
+* @eventType away.events.ParserEvent
+*/
+//[Event(name="parseError", type="away3d.events.ParserEvent")]
+/**
+* Dispatched when a skybox asset has been costructed from a ressource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="skyboxComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a camera3d asset has been costructed from a ressource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="cameraComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a mesh asset has been costructed from a ressource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="meshComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a geometry asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="geometryComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a skeleton asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="skeletonComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a skeleton pose asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="skeletonPoseComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a container asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="containerComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a texture asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="textureComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a texture projector asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="textureProjectorComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a material asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="materialComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a animator asset has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="animatorComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an animation set has been constructed from a group of animation state resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="animationSetComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an animation state has been constructed from a group of animation node resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="animationStateComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an animation node has been constructed from a resource.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="animationNodeComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an animation state transition has been constructed from a group of animation node resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="stateTransitionComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an light asset has been constructed from a resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="lightComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an light picker asset has been constructed from a resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="lightPickerComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an effect method asset has been constructed from a resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="effectMethodComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when an shadow map method asset has been constructed from a resources.
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="shadowMapMethodComplete", type="away3d.events.AssetEvent")]
+/**
+* Instances of this class are returned as tokens by loading operations
+* to provide an object on which events can be listened for in cases where
+* the actual asset loader is not directly available (e.g. when using the
+* AssetLibrary to perform the load.)
+*
+* By listening for events on this class instead of directly on the
+* AssetLibrary, one can distinguish different loads from each other.
+*
+* The token will dispatch all events that the original AssetLoader dispatches,
+* while not providing an interface to obstruct the load and is as such a
+* safer return value for loader wrappers than the loader itself.
+*/
+var AssetLoaderToken = (function (_super) {
+ __extends(AssetLoaderToken, _super);
+ function AssetLoaderToken(loader) {
+ _super.call(this);
+
+ this._iLoader = loader;
+ }
+ AssetLoaderToken.prototype.addEventListener = function (type, listener) {
+ this._iLoader.addEventListener(type, listener);
+ };
+
+ AssetLoaderToken.prototype.removeEventListener = function (type, listener) {
+ this._iLoader.removeEventListener(type, listener);
+ };
+
+ AssetLoaderToken.prototype.hasEventListener = function (type, listener) {
+ if (typeof listener === "undefined") { listener = null; }
+ return this._iLoader.hasEventListener(type, listener);
+ };
+ return AssetLoaderToken;
+})(EventDispatcher);
+
+module.exports = AssetLoaderToken;
+
+
+},{"awayjs-core/lib/events/EventDispatcher":undefined}],"awayjs-core/lib/core/library/AssetLoader":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AssetLoaderToken = require("awayjs-core/lib/core/library/AssetLoaderToken");
+var URLLoader = require("awayjs-core/lib/core/net/URLLoader");
+var URLLoaderDataFormat = require("awayjs-core/lib/core/net/URLLoaderDataFormat");
+
+var Error = require("awayjs-core/lib/errors/Error");
+var AssetEvent = require("awayjs-core/lib/events/AssetEvent");
+var Event = require("awayjs-core/lib/events/Event");
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+var IOErrorEvent = require("awayjs-core/lib/events/IOErrorEvent");
+var LoaderEvent = require("awayjs-core/lib/events/LoaderEvent");
+var ParserEvent = require("awayjs-core/lib/events/ParserEvent");
+var CubeTextureParser = require("awayjs-core/lib/parsers/CubeTextureParser");
+
+var ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+var Texture2DParser = require("awayjs-core/lib/parsers/Texture2DParser");
+
+/**
+* Dispatched when any asset finishes parsing. Also see specific events for each
+* individual asset type (meshes, materials et c.)
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="assetComplete", type="away3d.events.AssetEvent")]
+/**
+* Dispatched when a full resource (including dependencies) finishes loading.
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="resourceComplete", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when a single dependency (which may be the main file of a resource)
+* finishes loading.
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="dependencyComplete", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when an error occurs during loading. I
+*
+* @eventType away.events.LoaderEvent
+*/
+//[Event(name="loadError", type="away3d.events.LoaderEvent")]
+/**
+* Dispatched when an error occurs during parsing.
+*
+* @eventType away.events.ParserEvent
+*/
+//[Event(name="parseError", type="away3d.events.ParserEvent")]
+/**
+* Dispatched when an image asset dimensions are not a power of 2
+*
+* @eventType away.events.AssetEvent
+*/
+//[Event(name="textureSizeError", type="away3d.events.AssetEvent")]
+/**
+* AssetLoader can load any file format that away.supports (or for which a third-party parser
+* has been plugged in) and it's dependencies. Events are dispatched when assets are encountered
+* and for when the resource (or it's dependencies) have been loaded.
+*
+* The AssetLoader will not make assets available in any other way than through the dispatched
+* events. To store assets and make them available at any point from any module in an application,
+* use the AssetLibrary to load and manage assets.
+*
+* @see away.library.AssetLibrary
+*/
+var AssetLoader = (function (_super) {
+ __extends(AssetLoader, _super);
+ /**
+ * Create a new ResourceLoadSession object.
+ */
+ function AssetLoader(materialMode) {
+ if (typeof materialMode === "undefined") { materialMode = 0; }
+ var _this = this;
+ _super.call(this);
+
+ this._materialMode = materialMode;
+
+ this._stack = new Array();
+ this._errorHandlers = new Array();
+ this._parseErrorHandlers = new Array();
+
+ this._onReadyForDependenciesDelegate = function (event) {
+ return _this.onReadyForDependencies(event);
+ };
+ this._onParseCompleteDelegate = function (event) {
+ return _this.onParseComplete(event);
+ };
+ this._onParseErrorDelegate = function (event) {
+ return _this.onParseError(event);
+ };
+ this._onLoadCompleteDelegate = function (event) {
+ return _this.onLoadComplete(event);
+ };
+ this._onLoadErrorDelegate = function (event) {
+ return _this.onLoadError(event);
+ };
+ this._onTextureSizeErrorDelegate = function (event) {
+ return _this.onTextureSizeError(event);
+ };
+ this._onAssetCompleteDelegate = function (event) {
+ return _this.onAssetComplete(event);
+ };
+ }
+ /**
+ * Enables a specific parser.
+ * When no specific parser is set for a loading/parsing opperation,
+ * loader3d can autoselect the correct parser to use.
+ * A parser must have been enabled, to be considered when autoselecting the parser.
+ *
+ * @param parser The parser class to enable.
+ *
+ * @see away.parsers.Parsers
+ */
+ AssetLoader.enableParser = function (parser) {
+ if (AssetLoader._parsers.indexOf(parser) < 0)
+ AssetLoader._parsers.push(parser);
+ };
+
+ /**
+ * Enables a list of parsers.
+ * When no specific parser is set for a loading/parsing opperation,
+ * AssetLoader can autoselect the correct parser to use.
+ * A parser must have been enabled, to be considered when autoselecting the parser.
+ *
+ * @param parsers A Vector of parser classes to enable.
+ * @see away.parsers.Parsers
+ */
+ AssetLoader.enableParsers = function (parsers) {
+ for (var c = 0; c < parsers.length; c++)
+ AssetLoader.enableParser(parsers[c]);
+ };
+
+ Object.defineProperty(AssetLoader.prototype, "baseDependency", {
+ /**
+ * Returns the base dependency of the loader
+ */
+ get: function () {
+ return this._baseDependency;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Loads a file and (optionally) all of its dependencies.
+ *
+ * @param req The URLRequest object containing the URL of the file to be loaded.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ */
+ AssetLoader.prototype.load = function (req, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ if (!this._token) {
+ this._token = new AssetLoaderToken(this);
+
+ this._uri = req.url = req.url.replace(/\\/g, "/");
+ this._context = context;
+ this._namespace = ns;
+
+ this._baseDependency = new ResourceDependency('', req, null, parser, null);
+ this.retrieveDependency(this._baseDependency);
+
+ return this._token;
+ }
+
+ // TODO: Throw error (already loading)
+ return null;
+ };
+
+ /**
+ * Loads a resource from already loaded data.
+ *
+ * @param data The data object containing all resource information.
+ * @param context An optional context object providing additional parameters for loading
+ * @param ns An optional namespace string under which the file is to be loaded, allowing the differentiation of two resources with identical assets
+ * @param parser An optional parser object for translating the loaded data into a usable resource. If not provided, AssetLoader will attempt to auto-detect the file type.
+ */
+ AssetLoader.prototype.loadData = function (data, id, context, ns, parser) {
+ if (typeof context === "undefined") { context = null; }
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof parser === "undefined") { parser = null; }
+ if (!this._token) {
+ this._token = new AssetLoaderToken(this);
+
+ this._uri = id;
+ this._context = context;
+ this._namespace = ns;
+
+ this._baseDependency = new ResourceDependency(id, null, data, parser, null);
+ this.retrieveDependency(this._baseDependency);
+
+ return this._token;
+ }
+
+ // TODO: Throw error (already loading)
+ return null;
+ };
+
+ /**
+ * Recursively retrieves the next to-be-loaded and parsed dependency on the stack, or pops the list off the
+ * stack when complete and continues on the top set.
+ * @param parser The parser that will translate the data into a usable resource.
+ */
+ AssetLoader.prototype.retrieveNext = function (parser) {
+ if (typeof parser === "undefined") { parser = null; }
+ if (this._currentDependency.dependencies.length) {
+ var next = this._currentDependency.dependencies.pop();
+
+ this._stack.push(this._currentDependency);
+ this.retrieveDependency(next);
+ } else if (this._currentDependency.parser && this._currentDependency.parser.parsingPaused) {
+ this._currentDependency.parser._iResumeParsingAfterDependencies();
+ this._stack.pop();
+ } else if (this._stack.length) {
+ var prev = this._currentDependency;
+
+ this._currentDependency = this._stack.pop();
+
+ if (prev._iSuccess)
+ prev.resolve();
+
+ this.retrieveNext(parser);
+ } else {
+ this.dispatchEvent(new LoaderEvent(LoaderEvent.RESOURCE_COMPLETE, this._uri, this._baseDependency.parser.content, this._baseDependency.assets));
+ }
+ };
+
+ /**
+ * Retrieves a single dependency.
+ * @param parser The parser that will translate the data into a usable resource.
+ */
+ AssetLoader.prototype.retrieveDependency = function (dependency) {
+ var data;
+
+ if (this._context && this._context.materialMode != 0)
+ this._materialMode = this._context.materialMode;
+
+ this._currentDependency = dependency;
+
+ dependency._iLoader = new URLLoader();
+
+ this.addEventListeners(dependency._iLoader);
+
+ // Get already loaded (or mapped) data if available
+ data = dependency.data;
+
+ if (this._context && dependency.request && this._context._iHasDataForUrl(dependency.request.url))
+ data = this._context._iGetDataForUrl(dependency.request.url);
+
+ if (data) {
+ if (data.constructor === Function)
+ data = new data();
+
+ dependency._iSetData(data);
+
+ if (dependency.retrieveAsRawData) {
+ // No need to parse. The parent parser is expecting this
+ // to be raw data so it can be passed directly.
+ dependency.resolve();
+
+ // Move on to next dependency
+ this.retrieveNext();
+ } else {
+ this.parseDependency(dependency);
+ }
+ } else {
+ // Resolve URL and start loading
+ dependency.request.url = this.resolveDependencyUrl(dependency);
+
+ if (dependency.retrieveAsRawData) {
+ // Always use binary for raw data loading
+ dependency._iLoader.dataFormat = URLLoaderDataFormat.BINARY;
+ } else {
+ if (!dependency.parser)
+ dependency._iSetParser(this.getParserFromSuffix(dependency.request.url));
+
+ if (dependency.parser) {
+ dependency._iLoader.dataFormat = dependency.parser.dataFormat;
+ } else {
+ // Always use BINARY for unknown file formats. The thorough
+ // file type check will determine format after load, and if
+ // binary, a text load will have broken the file data.
+ dependency._iLoader.dataFormat = URLLoaderDataFormat.BINARY;
+ }
+ }
+
+ dependency._iLoader.load(dependency.request);
+ }
+ };
+
+ AssetLoader.prototype.joinUrl = function (base, end) {
+ if (end.charAt(0) == '/')
+ end = end.substr(1);
+
+ if (base.length == 0)
+ return end;
+
+ if (base.charAt(base.length - 1) == '/')
+ base = base.substr(0, base.length - 1);
+
+ return base.concat('/', end);
+ };
+
+ AssetLoader.prototype.resolveDependencyUrl = function (dependency) {
+ var scheme_re;
+ var base;
+ var url = dependency.request.url;
+
+ // Has the user re-mapped this URL?
+ if (this._context && this._context._iHasMappingForUrl(url))
+ return this._context._iGetRemappedUrl(url);
+
+ // This is the "base" dependency, i.e. the actual requested asset.
+ // We will not try to resolve this since the user can probably be
+ // thrusted to know this URL better than our automatic resolver. :)
+ if (url == this._uri)
+ return url;
+
+ // Absolute URL? Check if starts with slash or a URL
+ // scheme definition (e.g. ftp://, http://, file://)
+ scheme_re = new RegExp('/^[a-zA-Z]{3,4}:\/\//');
+
+ if (url.charAt(0) == '/') {
+ if (this._context && this._context.overrideAbsolutePaths)
+ return this.joinUrl(this._context.dependencyBaseUrl, url);
+ else
+ return url;
+ } else if (scheme_re.test(url)) {
+ // If overriding full URLs, get rid of scheme (e.g. "http://")
+ // and replace with the dependencyBaseUrl defined by user.
+ if (this._context && this._context.overrideFullURLs) {
+ var noscheme_url = url.replace(scheme_re, '');
+ return this.joinUrl(this._context.dependencyBaseUrl, noscheme_url);
+ }
+ }
+
+ // Since not absolute, just get rid of base file name to find it's
+ // folder and then concatenate dynamic URL
+ if (this._context && this._context.dependencyBaseUrl) {
+ base = this._context.dependencyBaseUrl;
+ return this.joinUrl(base, url);
+ } else {
+ base = this._uri.substring(0, this._uri.lastIndexOf('/') + 1);
+ return this.joinUrl(base, url);
+ }
+ };
+
+ AssetLoader.prototype.retrieveParserDependencies = function () {
+ if (!this._currentDependency)
+ return;
+
+ var parserDependancies = this._currentDependency.parser.dependencies;
+ var i, len = parserDependancies.length;
+
+ for (i = 0; i < len; i++)
+ this._currentDependency.dependencies[i] = parserDependancies[i];
+
+ // Since more dependencies might be added eventually, empty this
+ // list so that the same dependency isn't retrieved more than once.
+ parserDependancies.length = 0;
+
+ this._stack.push(this._currentDependency);
+
+ this.retrieveNext();
+ };
+
+ AssetLoader.prototype.resolveParserDependencies = function () {
+ this._currentDependency._iSuccess = true;
+
+ // Retrieve any last dependencies remaining on this parser, or
+ // if none exists, just move on.
+ if (this._currentDependency.parser && this._currentDependency.parser.dependencies.length && (!this._context || this._context.includeDependencies))
+ this.retrieveParserDependencies();
+ else
+ this.retrieveNext();
+ };
+
+ /**
+ * Called when a single dependency loading failed, and pushes further dependencies onto the stack.
+ * @param event
+ */
+ AssetLoader.prototype.onLoadError = function (event) {
+ var handled;
+ var isDependency = (this._currentDependency != this._baseDependency);
+ var loader = event.target;
+
+ this.removeEventListeners(loader);
+
+ if (this.hasEventListener(IOErrorEvent.IO_ERROR)) {
+ this.dispatchEvent(event);
+ handled = true;
+ } else {
+ // TODO: Consider not doing this even when AssetLoader does have it's own LOAD_ERROR listener
+ var i, len = this._errorHandlers.length;
+ for (i = 0; i < len; i++)
+ if (!handled)
+ handled = this._errorHandlers[i](event);
+ }
+
+ if (handled) {
+ //if (isDependency && ! event.isDefaultPrevented()) {
+ if (isDependency) {
+ this._currentDependency.resolveFailure();
+ this.retrieveNext();
+ } else {
+ // Either this was the base file (last left in the stack) or
+ // default behavior was prevented by the handlers, and hence
+ // there is nothing more to do than clean up and bail.
+ this.dispose();
+ return;
+ }
+ } else {
+ throw new Error();
+ }
+ };
+
+ /**
+ * Called when a dependency parsing failed, and dispatches a ParserEvent.PARSE_ERROR
+ * @param event
+ */
+ AssetLoader.prototype.onParseError = function (event) {
+ var handled;
+
+ var isDependency = (this._currentDependency != this._baseDependency);
+
+ var loader = event.target;
+
+ this.removeEventListeners(loader);
+
+ if (this.hasEventListener(ParserEvent.PARSE_ERROR)) {
+ this.dispatchEvent(event);
+ handled = true;
+ } else {
+ // TODO: Consider not doing this even when AssetLoader does
+ // have it's own LOAD_ERROR listener
+ var i, len = this._parseErrorHandlers.length;
+
+ for (i = 0; i < len; i++)
+ if (!handled)
+ handled = this._parseErrorHandlers[i](event);
+ }
+
+ if (handled) {
+ this.dispose();
+ return;
+ } else {
+ throw new Error(event.message);
+ }
+ };
+
+ AssetLoader.prototype.onAssetComplete = function (event) {
+ // Add loaded asset to list of assets retrieved as part
+ // of the current dependency. This list will be inspected
+ // by the parent parser when dependency is resolved
+ if (this._currentDependency)
+ this._currentDependency.assets.push(event.asset);
+
+ event.asset.resetAssetPath(event.asset.name, this._namespace);
+
+ if (!this._currentDependency.suppresAssetEvents)
+ this.dispatchEvent(event);
+ };
+
+ AssetLoader.prototype.onReadyForDependencies = function (event) {
+ var parser = event.target;
+
+ if (this._context && !this._context.includeDependencies)
+ parser._iResumeParsingAfterDependencies();
+ else
+ this.retrieveParserDependencies();
+ };
+
+ /**
+ * Called when a single dependency was parsed, and pushes further dependencies onto the stack.
+ * @param event
+ */
+ AssetLoader.prototype.onLoadComplete = function (event) {
+ var loader = event.target;
+
+ this.removeEventListeners(loader);
+
+ // Resolve this dependency
+ this._currentDependency._iSetData(loader.data);
+
+ if (this._currentDependency.retrieveAsRawData) {
+ // No need to parse this data, which should be returned as is
+ this.resolveParserDependencies();
+ } else {
+ this.parseDependency(this._currentDependency);
+ }
+ };
+
+ /**
+ * Called when parsing is complete.
+ */
+ AssetLoader.prototype.onParseComplete = function (event) {
+ var parser = event.target;
+
+ this.resolveParserDependencies(); //resolve in front of removing listeners to allow any remaining asset events to propagate
+
+ parser.removeEventListener(ParserEvent.READY_FOR_DEPENDENCIES, this._onReadyForDependenciesDelegate);
+ parser.removeEventListener(ParserEvent.PARSE_COMPLETE, this._onParseCompleteDelegate);
+ parser.removeEventListener(ParserEvent.PARSE_ERROR, this._onParseErrorDelegate);
+ parser.removeEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);
+ parser.removeEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+ };
+
+ /**
+ * Called when an image is too large or it's dimensions are not a power of 2
+ * @param event
+ */
+ AssetLoader.prototype.onTextureSizeError = function (event) {
+ event.asset.name = this._currentDependency.resolveName(event.asset);
+
+ this.dispatchEvent(event);
+ };
+
+ AssetLoader.prototype.addEventListeners = function (loader) {
+ loader.addEventListener(Event.COMPLETE, this._onLoadCompleteDelegate);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, this._onLoadErrorDelegate);
+ };
+
+ AssetLoader.prototype.removeEventListeners = function (loader) {
+ loader.removeEventListener(Event.COMPLETE, this._onLoadCompleteDelegate);
+ loader.removeEventListener(IOErrorEvent.IO_ERROR, this._onLoadErrorDelegate);
+ };
+
+ AssetLoader.prototype.stop = function () {
+ this.dispose();
+ };
+
+ AssetLoader.prototype.dispose = function () {
+ this._errorHandlers = null;
+ this._parseErrorHandlers = null;
+ this._context = null;
+ this._token = null;
+ this._stack = null;
+
+ if (this._currentDependency && this._currentDependency._iLoader)
+ this.removeEventListeners(this._currentDependency._iLoader);
+
+ this._currentDependency = null;
+ };
+
+ /**
+ * @private
+ * This method is used by other loader classes (e.g. Loader3D and AssetLibraryBundle) to
+ * add error event listeners to the AssetLoader instance. This system is used instead of
+ * the regular EventDispatcher system so that the AssetLibrary error handler can be sure
+ * that if hasEventListener() returns true, it's client code that's listening for the
+ * event. Secondly, functions added as error handler through this custom method are
+ * expected to return a boolean value indicating whether the event was handled (i.e.
+ * whether they in turn had any client code listening for the event.) If no handlers
+ * return true, the AssetLoader knows that the event wasn't handled and will throw an RTE.
+ */
+ AssetLoader.prototype._iAddParseErrorHandler = function (handler) {
+ if (this._parseErrorHandlers.indexOf(handler) < 0)
+ this._parseErrorHandlers.push(handler);
+ };
+
+ AssetLoader.prototype._iAddErrorHandler = function (handler) {
+ if (this._errorHandlers.indexOf(handler) < 0)
+ this._errorHandlers.push(handler);
+ };
+
+ /**
+ * Guesses the parser to be used based on the file contents.
+ * @param data The data to be parsed.
+ * @param uri The url or id of the object to be parsed.
+ * @return An instance of the guessed parser.
+ */
+ AssetLoader.prototype.getParserFromData = function (data) {
+ var len = AssetLoader._parsers.length;
+
+ for (var i = len - 1; i >= 0; i--)
+ if (AssetLoader._parsers[i].supportsData(data))
+ return new AssetLoader._parsers[i]();
+
+ return null;
+ };
+
+ /**
+ * Initiates parsing of the loaded dependency.
+ *
+ * @param The dependency to be parsed.
+ */
+ AssetLoader.prototype.parseDependency = function (dependency) {
+ var parser = dependency.parser;
+
+ // If no parser has been defined, try to find one by letting
+ // all plugged in parsers inspect the actual data.
+ if (!parser)
+ dependency._iSetParser(parser = this.getParserFromData(dependency.data));
+
+ if (parser) {
+ parser.addEventListener(ParserEvent.READY_FOR_DEPENDENCIES, this._onReadyForDependenciesDelegate);
+ parser.addEventListener(ParserEvent.PARSE_COMPLETE, this._onParseCompleteDelegate);
+ parser.addEventListener(ParserEvent.PARSE_ERROR, this._onParseErrorDelegate);
+ parser.addEventListener(AssetEvent.TEXTURE_SIZE_ERROR, this._onTextureSizeErrorDelegate);
+ parser.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);
+
+ if (dependency.request && dependency.request.url)
+ parser._iFileName = dependency.request.url;
+
+ parser.materialMode = this._materialMode;
+
+ parser.parseAsync(dependency.data);
+ } else {
+ var message = "No parser defined. To enable all parsers for auto-detection, use Parsers.enableAllBundled()";
+ if (this.hasEventListener(ParserEvent.PARSE_ERROR))
+ this.dispatchEvent(new ParserEvent(ParserEvent.PARSE_ERROR, message));
+ else
+ throw new Error(message);
+ }
+ };
+
+ /**
+ * Guesses the parser to be used based on the file extension.
+ * @return An instance of the guessed parser.
+ */
+ AssetLoader.prototype.getParserFromSuffix = function (url) {
+ // Get rid of query string if any and extract extension
+ var base = (url.indexOf('?') > 0) ? url.split('?')[0] : url;
+ var fileExtension = base.substr(base.lastIndexOf('.') + 1).toLowerCase();
+
+ var len = AssetLoader._parsers.length;
+
+ for (var i = len - 1; i >= 0; i--) {
+ var parserClass = AssetLoader._parsers[i];
+ if (parserClass.supportsType(fileExtension))
+ return new parserClass();
+ }
+
+ return null;
+ };
+ AssetLoader._parsers = new Array(Texture2DParser, CubeTextureParser);
+ return AssetLoader;
+})(EventDispatcher);
+
+module.exports = AssetLoader;
+
+
+},{"awayjs-core/lib/core/library/AssetLoaderToken":undefined,"awayjs-core/lib/core/net/URLLoader":undefined,"awayjs-core/lib/core/net/URLLoaderDataFormat":undefined,"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/events/AssetEvent":undefined,"awayjs-core/lib/events/Event":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/IOErrorEvent":undefined,"awayjs-core/lib/events/LoaderEvent":undefined,"awayjs-core/lib/events/ParserEvent":undefined,"awayjs-core/lib/parsers/CubeTextureParser":undefined,"awayjs-core/lib/parsers/ResourceDependency":undefined,"awayjs-core/lib/parsers/Texture2DParser":undefined}],"awayjs-core/lib/core/library/AssetType":[function(require,module,exports){
+var AssetType = (function () {
+ function AssetType() {
+ }
+ AssetType.ANIMATION_NODE = 'animationNode';
+ AssetType.ANIMATION_SET = 'animationSet';
+ AssetType.ANIMATION_STATE = 'animationState';
+ AssetType.ANIMATOR = 'animator';
+ AssetType.BILLBOARD = 'billboard';
+ AssetType.CAMERA = 'camera';
+ AssetType.CONTAINER = 'container';
+ AssetType.EFFECTS_METHOD = 'effectsMethod';
+ AssetType.GEOMETRY = 'geometry';
+ AssetType.LINE_SEGMENT = 'lineSegment';
+ AssetType.LIGHT = 'light';
+ AssetType.LIGHT_PICKER = 'lightPicker';
+ AssetType.MATERIAL = 'material';
+ AssetType.MESH = 'mesh';
+ AssetType.TRIANGLE_SUB_MESH = 'triangleSubMesh';
+ AssetType.LINE_SUB_MESH = 'lineSubMesh';
+ AssetType.PRIMITIVE_PREFAB = 'primitivePrefab';
+ AssetType.SHADOW_MAP_METHOD = 'shadowMapMethod';
+ AssetType.SKELETON = 'skeleton';
+ AssetType.SKELETON_POSE = 'skeletonPose';
+ AssetType.SKYBOX = 'skybox';
+ AssetType.STATE_TRANSITION = 'stateTransition';
+ AssetType.TEXTURE = 'texture';
+ AssetType.TEXTURE_PROJECTOR = 'textureProjector';
+ return AssetType;
+})();
+
+module.exports = AssetType;
+
+
+},{}],"awayjs-core/lib/core/library/ConflictPrecedence":[function(require,module,exports){
+/**
+* Enumaration class for precedence when resolving naming conflicts in the library.
+*
+* @see away.library.AssetLibrary.conflictPrecedence
+* @see away.library.AssetLibrary.conflictStrategy
+* @see away.library.naming.ConflictStrategy
+*/
+var ConflictPrecedence = (function () {
+ function ConflictPrecedence() {
+ }
+ ConflictPrecedence.FAVOR_OLD = 'favorOld';
+
+ ConflictPrecedence.FAVOR_NEW = 'favorNew';
+ return ConflictPrecedence;
+})();
+
+module.exports = ConflictPrecedence;
+
+
+},{}],"awayjs-core/lib/core/library/ConflictStrategyBase":[function(require,module,exports){
+var ConflictPrecedence = require("awayjs-core/lib/core/library/ConflictPrecedence");
+
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var AssetEvent = require("awayjs-core/lib/events/AssetEvent");
+
+/**
+* Abstract base class for naming conflict resolution classes. Extend this to create a
+* strategy class which the asset library can use to resolve asset naming conflicts, or
+* use one of the bundled concrete strategy classes:
+*
+* AssetLibrary.conflictPrecedence
property defines which
+* of the conflicting assets will get to keep it's name, and which is renamed (if any.)
+*
+* @see away.library.AssetLibrary.conflictStrategy
+* @see away.library.naming.ConflictStrategyBase
+*/
+var ConflictStrategy = (function () {
+ function ConflictStrategy(include) {
+ //TODO: find out why typescript d.ts files do not include this class
+ }
+ ConflictStrategy.APPEND_NUM_SUFFIX = new NumSuffixConflictStrategy();
+
+ ConflictStrategy.IGNORE = new IgnoreConflictStrategy();
+
+ ConflictStrategy.THROW_ERROR = new ErrorConflictStrategy();
+ return ConflictStrategy;
+})();
+
+module.exports = ConflictStrategy;
+
+
+},{"awayjs-core/lib/core/library/ErrorConflictStrategy":undefined,"awayjs-core/lib/core/library/IgnoreConflictStrategy":undefined,"awayjs-core/lib/core/library/NumSuffixConflictStrategy":undefined}],"awayjs-core/lib/core/library/ErrorConflictStrategy":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+
+var Error = require("awayjs-core/lib/errors/Error");
+
+var ErrorConflictStrategy = (function (_super) {
+ __extends(ErrorConflictStrategy, _super);
+ function ErrorConflictStrategy() {
+ _super.call(this);
+ }
+ ErrorConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {
+ throw new Error('Asset name collision while AssetLibrary.namingStrategy set to AssetLibrary.THROW_ERROR. Asset path: ' + changedAsset.assetFullPath);
+ };
+
+ ErrorConflictStrategy.prototype.create = function () {
+ return new ErrorConflictStrategy();
+ };
+ return ErrorConflictStrategy;
+})(ConflictStrategyBase);
+
+module.exports = ErrorConflictStrategy;
+
+
+},{"awayjs-core/lib/core/library/ConflictStrategyBase":undefined,"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/core/library/IAsset":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/library/IDUtil":[function(require,module,exports){
+var IDUtil = (function () {
+ function IDUtil() {
+ }
+ /**
+ * Generates a UID (unique identifier) based on ActionScript's
+ * pseudo-random number generator and the current time.
+ *
+ * The UID has the form
+ * "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
+ * where X is a hexadecimal digit (0-9, A-F).
This UID will not be truly globally unique; but it is the best + * we can do without player support for UID generation.
+ * + * @return The newly-generated UID. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + IDUtil.createUID = function () { + var uid = new Array(36); + var index = 0; + + var i; + var j; + + for (i = 0; i < 8; i++) + uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)]; + + for (i = 0; i < 3; i++) { + uid[index++] = 45; // charCode for "-" + + for (j = 0; j < 4; j++) + uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)]; + } + + uid[index++] = 45; // charCode for "-" + + var time = new Date().getTime(); + + // Note: time is the number of milliseconds since 1970, + // which is currently more than one trillion. + // We use the low 8 hex digits of this number in the UID. + // Just in case the system clock has been reset to + // Jan 1-4, 1970 (in which case this number could have only + // 1-7 hex digits), we pad on the left with 7 zeros + // before taking the low digits. + var timeString = ("0000000" + time.toString(16).toUpperCase()).substr(-8); + + for (i = 0; i < 8; i++) + uid[index++] = timeString.charCodeAt(i); + + for (i = 0; i < 4; i++) + uid[index++] = IDUtil.ALPHA_CHAR_CODES[Math.floor(Math.random() * 16)]; + + return String.fromCharCode.apply(null, uid); + }; + IDUtil.ALPHA_CHAR_CODES = [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70]; + return IDUtil; +})(); + +module.exports = IDUtil; + + +},{}],"awayjs-core/lib/core/library/IgnoreConflictStrategy":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase"); + +var IgnoreConflictStrategy = (function (_super) { + __extends(IgnoreConflictStrategy, _super); + function IgnoreConflictStrategy() { + _super.call(this); + } + IgnoreConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) { + // Do nothing, ignore the fact that there is a conflict. + return; + }; + + IgnoreConflictStrategy.prototype.create = function () { + return new IgnoreConflictStrategy(); + }; + return IgnoreConflictStrategy; +})(ConflictStrategyBase); + +module.exports = IgnoreConflictStrategy; + + +},{"awayjs-core/lib/core/library/ConflictStrategyBase":undefined}],"awayjs-core/lib/core/library/NamedAssetBase":[function(require,module,exports){ +var __extends = this.__extends || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError"); +var AssetEvent = require("awayjs-core/lib/events/AssetEvent"); +var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher"); + +var NamedAssetBase = (function (_super) { + __extends(NamedAssetBase, _super); + function NamedAssetBase(name) { + if (typeof name === "undefined") { name = null; } + _super.call(this); + + this._id = NamedAssetBase.ID_COUNT++; + + if (name == null) + name = 'null'; + + this._name = name; + this._originalName = name; + + this.updateFullPath(); + } + Object.defineProperty(NamedAssetBase.prototype, "assetType", { + /** + * + */ + get: function () { + throw new AbstractMethodError(); + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(NamedAssetBase.prototype, "originalName", { + /** + * The original name used for this asset in the resource (e.g. file) in which + * it was found. This may not be the same asname
, which may
+ * have changed due to of a name conflict.
+ */
+ get: function () {
+ return this._originalName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(NamedAssetBase.prototype, "id", {
+ /**
+ * A unique id for the asset, used to identify assets in an associative array
+ */
+ get: function () {
+ return this._id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(NamedAssetBase.prototype, "name", {
+ get: function () {
+ return this._name;
+ },
+ set: function (val) {
+ var prev;
+
+ prev = this._name;
+ this._name = val;
+
+ if (this._name == null)
+ this._name = 'null';
+
+ this.updateFullPath();
+
+ //if (hasEventListener(AssetEvent.ASSET_RENAME))
+ this.dispatchEvent(new AssetEvent(AssetEvent.ASSET_RENAME, this, prev));
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ NamedAssetBase.prototype.dispose = function () {
+ throw new AbstractMethodError();
+ };
+
+ Object.defineProperty(NamedAssetBase.prototype, "assetNamespace", {
+ get: function () {
+ return this._namespace;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(NamedAssetBase.prototype, "assetFullPath", {
+ get: function () {
+ return this._full_path;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ NamedAssetBase.prototype.assetPathEquals = function (name, ns) {
+ return (this._name == name && (!ns || this._namespace == ns));
+ };
+
+ NamedAssetBase.prototype.resetAssetPath = function (name, ns, overrideOriginal) {
+ if (typeof ns === "undefined") { ns = null; }
+ if (typeof overrideOriginal === "undefined") { overrideOriginal = true; }
+ this._name = name ? name : 'null';
+ this._namespace = ns ? ns : NamedAssetBase.DEFAULT_NAMESPACE;
+
+ if (overrideOriginal)
+ this._originalName = this._name;
+
+ this.updateFullPath();
+ };
+
+ NamedAssetBase.prototype.updateFullPath = function () {
+ this._full_path = [this._namespace, this._name];
+ };
+ NamedAssetBase.ID_COUNT = 0;
+
+ NamedAssetBase.DEFAULT_NAMESPACE = 'default';
+ return NamedAssetBase;
+})(EventDispatcher);
+
+module.exports = NamedAssetBase;
+
+
+},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/AssetEvent":undefined,"awayjs-core/lib/events/EventDispatcher":undefined}],"awayjs-core/lib/core/library/NumSuffixConflictStrategy":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var ConflictStrategyBase = require("awayjs-core/lib/core/library/ConflictStrategyBase");
+
+var NumSuffixConflictStrategy = (function (_super) {
+ __extends(NumSuffixConflictStrategy, _super);
+ function NumSuffixConflictStrategy(separator) {
+ if (typeof separator === "undefined") { separator = '.'; }
+ _super.call(this);
+
+ this._separator = separator;
+ this._next_suffix = {};
+ }
+ NumSuffixConflictStrategy.prototype.resolveConflict = function (changedAsset, oldAsset, assetsDictionary, precedence) {
+ var orig;
+ var new_name;
+ var base;
+ var suffix;
+
+ orig = changedAsset.name;
+
+ if (orig.indexOf(this._separator) >= 0) {
+ // Name has an ocurrence of the separator, so get base name and suffix,
+ // unless suffix is non-numerical, in which case revert to zero and
+ // use entire name as base
+ base = orig.substring(0, orig.lastIndexOf(this._separator));
+ suffix = parseInt(orig.substring(base.length - 1));
+
+ if (isNaN(suffix)) {
+ base = orig;
+ suffix = 0;
+ }
+ } else {
+ base = orig;
+ suffix = 0;
+ }
+
+ if (suffix == 0 && this._next_suffix.hasOwnProperty(base)) {
+ suffix = this._next_suffix[base];
+ }
+
+ do {
+ suffix++;
+
+ new_name = base.concat(this._separator, suffix.toString());
+ } while(assetsDictionary.hasOwnProperty(new_name));
+
+ this._next_suffix[base] = suffix;
+ this._pUpdateNames(oldAsset.assetNamespace, new_name, oldAsset, changedAsset, assetsDictionary, precedence);
+ };
+
+ NumSuffixConflictStrategy.prototype.create = function () {
+ return new NumSuffixConflictStrategy(this._separator);
+ };
+ return NumSuffixConflictStrategy;
+})(ConflictStrategyBase);
+
+module.exports = NumSuffixConflictStrategy;
+
+
+},{"awayjs-core/lib/core/library/ConflictStrategyBase":undefined}],"awayjs-core/lib/core/net/CrossDomainPolicy":[function(require,module,exports){
+var CrossDomainPolicy = (function () {
+ function CrossDomainPolicy() {
+ }
+ CrossDomainPolicy.ANONYMOUS = 'anonymous';
+
+ CrossDomainPolicy.USE_CREDENTIALS = 'use-credentials';
+ return CrossDomainPolicy;
+})();
+
+module.exports = CrossDomainPolicy;
+
+
+},{}],"awayjs-core/lib/core/net/URLLoaderDataFormat":[function(require,module,exports){
+var URLLoaderDataFormat = (function () {
+ function URLLoaderDataFormat() {
+ }
+ URLLoaderDataFormat.TEXT = "text";
+
+ URLLoaderDataFormat.VARIABLES = "variables";
+
+ URLLoaderDataFormat.BLOB = "blob";
+
+ URLLoaderDataFormat.ARRAY_BUFFER = "arraybuffer";
+
+ URLLoaderDataFormat.BINARY = "binary";
+ return URLLoaderDataFormat;
+})();
+
+module.exports = URLLoaderDataFormat;
+
+
+},{}],"awayjs-core/lib/core/net/URLLoader":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var URLLoaderDataFormat = require("awayjs-core/lib/core/net/URLLoaderDataFormat");
+
+var URLRequestMethod = require("awayjs-core/lib/core/net/URLRequestMethod");
+var URLVariables = require("awayjs-core/lib/core/net/URLVariables");
+var AwayEvent = require("awayjs-core/lib/events/Event");
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+var HTTPStatusEvent = require("awayjs-core/lib/events/HTTPStatusEvent");
+var IOErrorEvent = require("awayjs-core/lib/events/IOErrorEvent");
+var AwayProgressEvent = require("awayjs-core/lib/events/ProgressEvent");
+
+/**
+* The URLLoader is used to load a single file, as part of a resource.
+*
+* While URLLoader can be used directly, e.g. to create a third-party asset
+* management system, it's recommended to use any of the classes Loader3D, AssetLoader
+* and AssetLibrary instead in most cases.
+*
+* @see AssetLoader
+* @see away.library.AssetLibrary
+*/
+var URLLoader = (function (_super) {
+ __extends(URLLoader, _super);
+ /**
+ * Creates a new URLLoader object.
+ */
+ function URLLoader() {
+ _super.call(this);
+ this._bytesLoaded = 0;
+ this._bytesTotal = 0;
+ this._dataFormat = URLLoaderDataFormat.TEXT;
+ this._loadError = false;
+ }
+ Object.defineProperty(URLLoader.prototype, "url", {
+ /**
+ *
+ */
+ get: function () {
+ return this._request ? this._request.url : '';
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(URLLoader.prototype, "data", {
+ /**
+ *
+ */
+ get: function () {
+ return this._data;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(URLLoader.prototype, "dataFormat", {
+ get: function () {
+ return this._dataFormat;
+ },
+ /**
+ *
+ * URLLoaderDataFormat.BINARY
+ * URLLoaderDataFormat.TEXT
+ * URLLoaderDataFormat.VARIABLES
+ *
+ * @param format
+ */
+ set: function (format) {
+ this._dataFormat = format;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(URLLoader.prototype, "bytesLoaded", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._bytesLoaded;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(URLLoader.prototype, "bytesTotal", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._bytesTotal;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Load a resource from a file.
+ *
+ * @param request The URLRequest object containing the URL of the object to be loaded.
+ */
+ URLLoader.prototype.load = function (request) {
+ this._request = request;
+
+ this.initXHR();
+
+ if (request.method === URLRequestMethod.POST)
+ this.postRequest(request);
+ else
+ this.getRequest(request);
+ };
+
+ /**
+ *
+ */
+ URLLoader.prototype.close = function () {
+ this._XHR.abort();
+ this.disposeXHR();
+ };
+
+ /**
+ *
+ */
+ URLLoader.prototype.dispose = function () {
+ if (this._XHR)
+ this._XHR.abort();
+
+ this.disposeXHR();
+
+ this._data = null;
+ this._dataFormat = null;
+ this._bytesLoaded = null;
+ this._bytesTotal = null;
+ };
+
+ /**
+ *
+ * @param xhr
+ * @param responseType
+ */
+ URLLoader.prototype.setResponseType = function (xhr, responseType) {
+ switch (responseType) {
+ case URLLoaderDataFormat.ARRAY_BUFFER:
+ case URLLoaderDataFormat.BLOB:
+ case URLLoaderDataFormat.TEXT:
+ xhr.responseType = responseType;
+ break;
+
+ case URLLoaderDataFormat.VARIABLES:
+ xhr.responseType = URLLoaderDataFormat.TEXT;
+ break;
+
+ case URLLoaderDataFormat.BINARY:
+ xhr.responseType = '';
+ break;
+
+ default:
+ }
+ };
+
+ /**
+ *
+ * @param request {URLRequest}
+ */
+ URLLoader.prototype.getRequest = function (request) {
+ try {
+ this._XHR.open(request.method, request.url, request.async);
+ this.setResponseType(this._XHR, this._dataFormat);
+ this._XHR.send(); // No data to send
+ } catch (e) {
+ this.handleXmlHttpRequestException(e);
+ }
+ };
+
+ /**
+ *
+ * @param request {URLRequest}
+ */
+ URLLoader.prototype.postRequest = function (request) {
+ this._loadError = false;
+
+ this._XHR.open(request.method, request.url, request.async);
+
+ if (request.data != null) {
+ if (request.data instanceof URLVariables) {
+ var urlVars = request.data;
+
+ try {
+ this._XHR.responseType = 'text';
+ this._XHR.send(urlVars.formData);
+ } catch (e) {
+ this.handleXmlHttpRequestException(e);
+ }
+ } else {
+ this.setResponseType(this._XHR, this._dataFormat);
+
+ if (request.data)
+ this._XHR.send(request.data); // TODO: Test
+ else
+ this._XHR.send(); // no data to send
+ }
+ } else {
+ this._XHR.send(); // No data to send
+ }
+ };
+
+ /**
+ *
+ * @param error {XMLHttpRequestException}
+ */
+ URLLoader.prototype.handleXmlHttpRequestException = function (error /* PickingCollisionVO
object.
+ *
+ * @param entity The entity to which this collision object belongs.
+ */
+ function PickingCollisionVO(displayObject) {
+ this.displayObject = displayObject;
+ }
+ return PickingCollisionVO;
+})();
+
+module.exports = PickingCollisionVO;
+
+
+},{}],"awayjs-core/lib/core/pick/RaycastPicker":[function(require,module,exports){
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var RaycastCollector = require("awayjs-core/lib/core/traverse/RaycastCollector");
+
+/**
+* Picks a 3d object from a view or scene by 3D raycast calculations.
+* Performs an initial coarse boundary calculation to return a subset of entities whose bounding volumes intersect with the specified ray,
+* then triggers an optional picking collider on individual entity objects to further determine the precise values of the picking ray collision.
+*
+* @class away.pick.RaycastPicker
+*/
+var RaycastPicker = (function () {
+ /**
+ * Creates a new RaycastPicker
object.
+ *
+ * @param findClosestCollision Determines whether the picker searches for the closest bounds collision along the ray,
+ * or simply returns the first collision encountered. Defaults to false.
+ */
+ function RaycastPicker(findClosestCollision) {
+ if (typeof findClosestCollision === "undefined") { findClosestCollision = false; }
+ this._ignoredEntities = [];
+ this._onlyMouseEnabled = true;
+ this._numEntities = 0;
+ this._raycastCollector = new RaycastCollector();
+
+ this._findClosestCollision = findClosestCollision;
+ this._entities = new Array();
+ }
+ Object.defineProperty(RaycastPicker.prototype, "onlyMouseEnabled", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._onlyMouseEnabled;
+ },
+ set: function (value) {
+ this._onlyMouseEnabled = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * @inheritDoc
+ */
+ RaycastPicker.prototype.getViewCollision = function (x, y, view) {
+ //update ray
+ var rayPosition = view.unproject(x, y, 0);
+ var rayDirection = view.unproject(x, y, 1).subtract(rayPosition);
+
+ return this.getSceneCollision(rayPosition, rayDirection, view.scene);
+ };
+
+ /**
+ * @inheritDoc
+ */
+ RaycastPicker.prototype.getSceneCollision = function (rayPosition, rayDirection, scene) {
+ //clear collector
+ this._raycastCollector.clear();
+
+ //setup ray vectors
+ this._raycastCollector.rayPosition = rayPosition;
+ this._raycastCollector.rayDirection = rayDirection;
+
+ // collect entities to test
+ scene.traversePartitions(this._raycastCollector);
+
+ this._numEntities = 0;
+ var node = this._raycastCollector.entityHead;
+ var entity;
+
+ while (node) {
+ if (!this.isIgnored(entity = node.entity))
+ this._entities[this._numEntities++] = entity;
+
+ node = node.next;
+ }
+
+ //early out if no collisions detected
+ if (!this._numEntities)
+ return null;
+
+ return this.getPickingCollisionVO(this._raycastCollector);
+ };
+
+ // public getEntityCollision(position:Vector3D, direction:Vector3D, entities:ArrayautoSize
property of the TextField class.
+*/
+var TextFieldAutoSize = (function () {
+ function TextFieldAutoSize() {
+ }
+ TextFieldAutoSize.CENTER = "center";
+
+ TextFieldAutoSize.LEFT = "left";
+
+ TextFieldAutoSize.NONE = "none";
+
+ TextFieldAutoSize.RIGHT = "right";
+ return TextFieldAutoSize;
+})();
+
+module.exports = TextFieldAutoSize;
+
+
+},{}],"awayjs-core/lib/core/text/TextFieldType":[function(require,module,exports){
+/**
+* The TextFieldType class is an enumeration of constant values used in setting the
+* type
property of the TextField class.
+*
+* @see away.entities.TextField#type
+*/
+var TextFieldType = (function () {
+ function TextFieldType() {
+ }
+ TextFieldType.DYNAMIC = "dynamic";
+
+ TextFieldType.INPUT = "input";
+ return TextFieldType;
+})();
+
+module.exports = TextFieldType;
+
+
+},{}],"awayjs-core/lib/core/text/TextFormatAlign":[function(require,module,exports){
+/**
+* The TextFormatAlign class provides values for text alignment in the
+* TextFormat class.
+*/
+var TextFormatAlign = (function () {
+ function TextFormatAlign() {
+ /**
+ * Constant; centers the text in the text field. Use the syntax
+ * TextFormatAlign.CENTER
.
+ */
+ this.CENTER = "center";
+ /**
+ * Constant; justifies text within the text field. Use the syntax
+ * TextFormatAlign.JUSTIFY
.
+ */
+ this.JUSTIFY = "justify";
+ /**
+ * Constant; aligns text to the left within the text field. Use the syntax
+ * TextFormatAlign.LEFT
.
+ */
+ this.LEFT = "left";
+ /**
+ * Constant; aligns text to the right within the text field. Use the syntax
+ * TextFormatAlign.RIGHT
.
+ */
+ this.RIGHT = "right";
+ }
+ return TextFormatAlign;
+})();
+
+module.exports = TextFormatAlign;
+
+
+},{}],"awayjs-core/lib/core/text/TextFormat":[function(require,module,exports){
+/**
+* The TextFormat class represents character formatting information. Use the
+* TextFormat class to create specific text formatting for text fields. You
+* can apply text formatting to both static and dynamic text fields. The
+* properties of the TextFormat class apply to device and embedded fonts.
+* However, for embedded fonts, bold and italic text actually require specific
+* fonts. If you want to display bold or italic text with an embedded font,
+* you need to embed the bold and italic variations of that font.
+*
+* You must use the constructor new TextFormat()
to create a
+* TextFormat object before setting its properties. When you apply a
+* TextFormat object to a text field using the
+* TextField.defaultTextFormat
property or the
+* TextField.setTextFormat()
method, only its defined properties
+* are applied. Use the TextField.defaultTextFormat
property to
+* apply formatting BEFORE you add text to the TextField
, and the
+* setTextFormat()
method to add formatting AFTER you add text to
+* the TextField
. The TextFormat properties are null
+* by default because if you don't provide values for the properties, Flash
+* Player uses its own default formatting. The default formatting that Flash
+* Player uses for each property(if property's value is null
) is
+* as follows:
The default formatting for each property is also described in each +* property description.
+*/ +var TextFormat = (function () { + /** + * Creates a TextFormat object with the specified properties. You can then + * change the properties of the TextFormat object to change the formatting of + * text fields. + * + *Any parameter may be set to null
to indicate that it is
+ * not defined. All of the parameters are optional; any omitted parameters
+ * are treated as null
.
url
is an empty string, the
+ * text does not have a hyperlink.
+ * @param target The target window where the hyperlink is displayed. If
+ * the target window is an empty string, the text is
+ * displayed in the default target window
+ * _self
. If the url
parameter
+ * is set to an empty string or to the value
+ * null
, you can get or set this property,
+ * but the property will have no effect.
+ * @param align The alignment of the paragraph, as a TextFormatAlign
+ * value.
+ * @param leftMargin Indicates the left margin of the paragraph, in pixels.
+ * @param rightMargin Indicates the right margin of the paragraph, in pixels.
+ * @param indent An integer that indicates the indentation from the left
+ * margin to the first character in the paragraph.
+ * @param leading A number that indicates the amount of leading vertical
+ * space between lines.
+ */
+ function TextFormat(font, size, color, bold, italic, underline, url, target, align, leftMargin, rightMargin, indent, leading) {
+ if (typeof font === "undefined") { font = "Times New Roman"; }
+ if (typeof size === "undefined") { size = 12; }
+ if (typeof color === "undefined") { color = 0x000000; }
+ if (typeof bold === "undefined") { bold = false; }
+ if (typeof italic === "undefined") { italic = false; }
+ if (typeof underline === "undefined") { underline = false; }
+ if (typeof url === "undefined") { url = ""; }
+ if (typeof target === "undefined") { target = ""; }
+ if (typeof align === "undefined") { align = "left"; }
+ if (typeof leftMargin === "undefined") { leftMargin = 0; }
+ if (typeof rightMargin === "undefined") { rightMargin = 0; }
+ if (typeof indent === "undefined") { indent = 0; }
+ if (typeof leading === "undefined") { leading = 0; }
+ /**
+ * Specifies custom tab stops as an array of non-negative integers. Each tab
+ * stop is specified in pixels. If custom tab stops are not specified
+ * (null
), the default tab stop is 4(average character width).
+ */
+ this.tabStops = new Array();
+ this.font = font;
+ this.size = size;
+ this.bold = bold;
+ this.italic = italic;
+ this.underline = underline;
+ this.url = url;
+ this.target = target;
+ this.align = align;
+ this.leftMargin = leftMargin;
+ this.rightMargin = rightMargin;
+ this.indent = indent;
+ this.leading = leading;
+ }
+ return TextFormat;
+})();
+
+module.exports = TextFormat;
+
+
+},{}],"awayjs-core/lib/core/text/TextInteractionMode":[function(require,module,exports){
+/**
+* A class that defines the Interactive mode of a text field object.
+*
+* @see away.entities.TextField#textInteractionMode
+*/
+var TextInteractionMode = (function () {
+ function TextInteractionMode() {
+ }
+ TextInteractionMode.NORMAL = "normal";
+
+ TextInteractionMode.SELECTION = "selection";
+ return TextInteractionMode;
+})();
+
+module.exports = TextInteractionMode;
+
+
+},{}],"awayjs-core/lib/core/text/TextLineMetrics":[function(require,module,exports){
+/**
+* The TextLineMetrics class contains information about the text position and
+* measurements of a line of text within a text field. All measurements are in
+* pixels. Objects of this class are returned by the
+* away.entities.TextField.getLineMetrics()
method.
+*/
+var TextLineMetrics = (function () {
+ /**
+ * Creates a TextLineMetrics object. The TextLineMetrics object contains
+ * information about the text metrics of a line of text in a text field.
+ * Objects of this class are returned by the
+ * away.entities.TextField.getLineMetrics() method.
+ *
+ * @param x The left position of the first character in pixels.
+ * @param width The width of the text of the selected lines (not
+ * necessarily the complete text) in pixels.
+ * @param height The height of the text of the selected lines (not
+ * necessarily the complete text) in pixels.
+ * @param ascent The length from the baseline to the top of the line
+ * height in pixels.
+ * @param descent The length from the baseline to the bottom depth of
+ * the line in pixels.
+ * @param leading The measurement of the vertical distance between the
+ * lines of text.
+ */
+ function TextLineMetrics(x, width, height, ascent, descent, leading) {
+ if (typeof x === "undefined") { x = NaN; }
+ if (typeof width === "undefined") { width = NaN; }
+ if (typeof height === "undefined") { height = NaN; }
+ if (typeof ascent === "undefined") { ascent = NaN; }
+ if (typeof descent === "undefined") { descent = NaN; }
+ if (typeof leading === "undefined") { leading = NaN; }
+ }
+ return TextLineMetrics;
+})();
+
+module.exports = TextLineMetrics;
+
+
+},{}],"awayjs-core/lib/core/traverse/CSSEntityCollector":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+
+/**
+* @class away.traverse.CSSEntityCollector
+*/
+var CSSEntityCollector = (function (_super) {
+ __extends(CSSEntityCollector, _super);
+ function CSSEntityCollector() {
+ _super.call(this);
+ }
+ return CSSEntityCollector;
+})(CollectorBase);
+
+module.exports = CSSEntityCollector;
+
+
+},{"awayjs-core/lib/core/traverse/CollectorBase":undefined}],"awayjs-core/lib/core/traverse/CollectorBase":[function(require,module,exports){
+var EntityListItemPool = require("awayjs-core/lib/core/pool/EntityListItemPool");
+
+/**
+* @class away.traverse.CollectorBase
+*/
+var CollectorBase = (function () {
+ function CollectorBase() {
+ this._numCullPlanes = 0;
+ this._pNumEntities = 0;
+ this._pNumInteractiveEntities = 0;
+ this._pEntityListItemPool = new EntityListItemPool();
+ }
+ Object.defineProperty(CollectorBase.prototype, "camera", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pCamera;
+ },
+ set: function (value) {
+ this._pCamera = value;
+ this._cullPlanes = this._pCamera.frustumPlanes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(CollectorBase.prototype, "cullPlanes", {
+ /**
+ *
+ */
+ get: function () {
+ return this._customCullPlanes;
+ },
+ set: function (value) {
+ this._customCullPlanes = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(CollectorBase.prototype, "entityHead", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pEntityHead;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(CollectorBase.prototype, "numEntities", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pNumEntities;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(CollectorBase.prototype, "numInteractiveEntities", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pNumInteractiveEntities;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ *
+ */
+ CollectorBase.prototype.clear = function () {
+ this._pNumEntities = this._pNumInteractiveEntities = 0;
+ this._cullPlanes = this._customCullPlanes ? this._customCullPlanes : (this._pCamera ? this._pCamera.frustumPlanes : null);
+ this._numCullPlanes = this._cullPlanes ? this._cullPlanes.length : 0;
+ this._pEntityHead = null;
+ this._pEntityListItemPool.freeAll();
+ };
+
+ /**
+ *
+ * @param node
+ * @returns {boolean}
+ */
+ CollectorBase.prototype.enterNode = function (node) {
+ var enter = this.scene._iCollectionMark != node._iCollectionMark && node.isInFrustum(this._cullPlanes, this._numCullPlanes);
+
+ node._iCollectionMark = this.scene._iCollectionMark;
+
+ return enter;
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ CollectorBase.prototype.applyDirectionalLight = function (entity) {
+ //don't do anything here
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ CollectorBase.prototype.applyEntity = function (entity) {
+ this._pNumEntities++;
+
+ if (entity._iIsMouseEnabled())
+ this._pNumInteractiveEntities++;
+
+ var item = this._pEntityListItemPool.getItem();
+ item.entity = entity;
+
+ item.next = this._pEntityHead;
+ this._pEntityHead = item;
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ CollectorBase.prototype.applyLightProbe = function (entity) {
+ //don't do anything here
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ CollectorBase.prototype.applyPointLight = function (entity) {
+ //don't do anything here
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ CollectorBase.prototype.applySkybox = function (entity) {
+ //don't do anything here
+ };
+ return CollectorBase;
+})();
+
+module.exports = CollectorBase;
+
+
+},{"awayjs-core/lib/core/pool/EntityListItemPool":undefined}],"awayjs-core/lib/core/traverse/EntityCollector":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+
+/**
+* @class away.traverse.EntityCollector
+*/
+var EntityCollector = (function (_super) {
+ __extends(EntityCollector, _super);
+ function EntityCollector() {
+ _super.call(this);
+ this._pNumLights = 0;
+ this._numDirectionalLights = 0;
+ this._numPointLights = 0;
+ this._numLightProbes = 0;
+
+ this._pLights = new Array();
+ this._directionalLights = new Array();
+ this._pointLights = new Array();
+ this._lightProbes = new Array();
+ }
+ Object.defineProperty(EntityCollector.prototype, "directionalLights", {
+ /**
+ *
+ */
+ get: function () {
+ return this._directionalLights;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(EntityCollector.prototype, "lightProbes", {
+ /**
+ *
+ */
+ get: function () {
+ return this._lightProbes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(EntityCollector.prototype, "lights", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pLights;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(EntityCollector.prototype, "pointLights", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pointLights;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(EntityCollector.prototype, "skyBox", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pSkybox;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ *
+ * @param entity
+ */
+ EntityCollector.prototype.applyDirectionalLight = function (entity) {
+ this._directionalLights[this._numDirectionalLights++] = entity;
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ EntityCollector.prototype.applyLightProbe = function (entity) {
+ this._lightProbes[this._numLightProbes++] = entity;
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ EntityCollector.prototype.applyPointLight = function (entity) {
+ this._pointLights[this._numPointLights++] = entity;
+ };
+
+ /**
+ *
+ * @param entity
+ */
+ EntityCollector.prototype.applySkybox = function (entity) {
+ this._pSkybox = entity;
+ };
+
+ /**
+ *
+ */
+ EntityCollector.prototype.clear = function () {
+ _super.prototype.clear.call(this);
+
+ this._pSkybox = null;
+
+ if (this._pNumLights > 0)
+ this._pLights.length = this._pNumLights = 0;
+
+ if (this._numDirectionalLights > 0)
+ this._directionalLights.length = this._numDirectionalLights = 0;
+
+ if (this._numPointLights > 0)
+ this._pointLights.length = this._numPointLights = 0;
+
+ if (this._numLightProbes > 0)
+ this._lightProbes.length = this._numLightProbes = 0;
+ };
+ return EntityCollector;
+})(CollectorBase);
+
+module.exports = EntityCollector;
+
+
+},{"awayjs-core/lib/core/traverse/CollectorBase":undefined}],"awayjs-core/lib/core/traverse/ICollector":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/core/traverse/RaycastCollector":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+
+/**
+* The RaycastCollector class is a traverser for scene partitions that collects all scene graph entities that are
+* considered intersecting with the defined ray.
+*
+* @see away.partition.Partition
+* @see away.entities.IEntity
+*
+* @class away.traverse.RaycastCollector
+*/
+var RaycastCollector = (function (_super) {
+ __extends(RaycastCollector, _super);
+ /**
+ * Creates a new RaycastCollector object.
+ */
+ function RaycastCollector() {
+ _super.call(this);
+ this._rayPosition = new Vector3D();
+ this._rayDirection = new Vector3D();
+ this._iCollectionMark = 0;
+ }
+ Object.defineProperty(RaycastCollector.prototype, "rayPosition", {
+ /**
+ * Provides the starting position of the ray.
+ */
+ get: function () {
+ return this._rayPosition;
+ },
+ set: function (value) {
+ this._rayPosition = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(RaycastCollector.prototype, "rayDirection", {
+ /**
+ * Provides the direction vector of the ray.
+ */
+ get: function () {
+ return this._rayDirection;
+ },
+ set: function (value) {
+ this._rayDirection = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Returns true if the current node is at least partly in the frustum. If so, the partition node knows to pass on the traverser to its children.
+ *
+ * @param node The Partition3DNode object to frustum-test.
+ */
+ RaycastCollector.prototype.enterNode = function (node) {
+ return node.isIntersectingRay(this._rayPosition, this._rayDirection);
+ };
+ return RaycastCollector;
+})(CollectorBase);
+
+module.exports = RaycastCollector;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/core/traverse/CollectorBase":undefined}],"awayjs-core/lib/core/traverse/ShadowCasterCollector":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var CollectorBase = require("awayjs-core/lib/core/traverse/CollectorBase");
+
+/**
+* @class away.traverse.ShadowCasterCollector
+*/
+var ShadowCasterCollector = (function (_super) {
+ __extends(ShadowCasterCollector, _super);
+ function ShadowCasterCollector() {
+ _super.call(this);
+ }
+ /**
+ *
+ */
+ ShadowCasterCollector.prototype.enterNode = function (node) {
+ var enter = this.scene._iCollectionMark != node._iCollectionMark && node.isCastingShadow();
+
+ if (!enter) {
+ node._iCollectionMark = this.scene._iCollectionMark;
+
+ return false;
+ }
+
+ return _super.prototype.enterNode.call(this, node);
+ };
+ return ShadowCasterCollector;
+})(CollectorBase);
+
+module.exports = ShadowCasterCollector;
+
+
+},{"awayjs-core/lib/core/traverse/CollectorBase":undefined}],"awayjs-core/lib/core/ui/Keyboard":[function(require,module,exports){
+var Keyboard = (function () {
+ function Keyboard() {
+ }
+ Keyboard.A = 65;
+
+ Keyboard.ALTERNATE = 18;
+
+ Keyboard.AUDIO = 0x01000017;
+
+ Keyboard.B = 66;
+
+ Keyboard.BACK = 0x01000016;
+
+ Keyboard.BACKQUOTE = 192;
+
+ Keyboard.BACKSLASH = 220;
+
+ Keyboard.BACKSPACE = 8;
+
+ Keyboard.BLUE = 0x01000003;
+
+ Keyboard.C = 67;
+
+ Keyboard.CAPS_LOCK = 20;
+
+ Keyboard.CHANNEL_DOWN = 0x01000005;
+
+ Keyboard.CHANNEL_UP = 0x01000005;
+
+ Keyboard.COMMA = 188;
+
+ Keyboard.COMMAND = 15;
+
+ Keyboard.CONTROL = 17;
+
+ Keyboard.D = 68;
+
+ Keyboard.DELETE = 46;
+
+ Keyboard.DOWN = 40;
+
+ Keyboard.DVR = 0x01000019;
+
+ Keyboard.E = 69;
+
+ Keyboard.END = 35;
+
+ Keyboard.ENTER = 13;
+
+ Keyboard.EQUAL = 187;
+
+ Keyboard.ESCAPE = 27;
+
+ Keyboard.EXIT = 0x01000015;
+
+ Keyboard.F = 70;
+
+ Keyboard.F1 = 112;
+
+ Keyboard.F10 = 121;
+
+ Keyboard.F11 = 122;
+
+ Keyboard.F12 = 123;
+
+ Keyboard.F13 = 124;
+
+ Keyboard.F14 = 125;
+
+ Keyboard.F15 = 126;
+
+ Keyboard.F2 = 113;
+
+ Keyboard.F3 = 114;
+
+ Keyboard.F4 = 115;
+
+ Keyboard.F5 = 116;
+
+ Keyboard.F6 = 117;
+
+ Keyboard.F7 = 118;
+
+ Keyboard.F8 = 119;
+
+ Keyboard.F9 = 120;
+
+ Keyboard.FAST_FORWARD = 0x0100000A;
+
+ Keyboard.G = 71;
+
+ Keyboard.GREEN = 0x01000001;
+
+ Keyboard.GUIDE = 0x01000014;
+
+ Keyboard.H = 72;
+
+ Keyboard.HELP = 0x0100001D;
+
+ Keyboard.HOME = 36;
+
+ Keyboard.I = 73;
+
+ Keyboard.INFO = 0x01000013;
+
+ Keyboard.INPUT = 0x0100001B;
+
+ Keyboard.INSERT = 45;
+
+ Keyboard.J = 74;
+
+ Keyboard.K = 75;
+
+ Keyboard.KEYNAME_BEGIN = "Begin";
+
+ Keyboard.KEYNAME_BREAK = "Break";
+
+ Keyboard.KEYNAME_CLEARDISPLAY = "ClrDsp";
+
+ Keyboard.KEYNAME_CLEARLINE = "ClrLn";
+
+ Keyboard.KEYNAME_DELETE = "Delete";
+
+ Keyboard.KEYNAME_DELETECHAR = "DelChr";
+
+ Keyboard.KEYNAME_DELETELINE = "DelLn";
+
+ Keyboard.KEYNAME_DOWNARROW = "Down";
+
+ Keyboard.KEYNAME_END = "End";
+
+ Keyboard.KEYNAME_EXECUTE = "Exec";
+
+ Keyboard.KEYNAME_F1 = "F1";
+
+ Keyboard.KEYNAME_F10 = "F10";
+
+ Keyboard.KEYNAME_F11 = "F11";
+
+ Keyboard.KEYNAME_F12 = "F12";
+
+ Keyboard.KEYNAME_F13 = "F13";
+
+ Keyboard.KEYNAME_F14 = "F14";
+
+ Keyboard.KEYNAME_F15 = "F15";
+
+ Keyboard.KEYNAME_F16 = "F16";
+
+ Keyboard.KEYNAME_F17 = "F17";
+
+ Keyboard.KEYNAME_F18 = "F18";
+
+ Keyboard.KEYNAME_F19 = "F19";
+
+ Keyboard.KEYNAME_F2 = "F2";
+
+ Keyboard.KEYNAME_F20 = "F20";
+
+ Keyboard.KEYNAME_F21 = "F21";
+
+ Keyboard.KEYNAME_F22 = "F22";
+
+ Keyboard.KEYNAME_F23 = "F23";
+
+ Keyboard.KEYNAME_F24 = "F24";
+
+ Keyboard.KEYNAME_F25 = "F25";
+
+ Keyboard.KEYNAME_F26 = "F26";
+
+ Keyboard.KEYNAME_F27 = "F27";
+
+ Keyboard.KEYNAME_F28 = "F28";
+
+ Keyboard.KEYNAME_F29 = "F29";
+
+ Keyboard.KEYNAME_F3 = "F3";
+
+ Keyboard.KEYNAME_F30 = "F30";
+
+ Keyboard.KEYNAME_F31 = "F31";
+
+ Keyboard.KEYNAME_F32 = "F32";
+
+ Keyboard.KEYNAME_F33 = "F33";
+
+ Keyboard.KEYNAME_F34 = "F34";
+
+ Keyboard.KEYNAME_F35 = "F35";
+
+ Keyboard.KEYNAME_F4 = "F4";
+
+ Keyboard.KEYNAME_F5 = "F5";
+
+ Keyboard.KEYNAME_F6 = "F6";
+
+ Keyboard.KEYNAME_F7 = "F7";
+
+ Keyboard.KEYNAME_F8 = "F8";
+
+ Keyboard.KEYNAME_F9 = "F9";
+
+ Keyboard.KEYNAME_FIND = "Find";
+
+ Keyboard.KEYNAME_HELP = "Help";
+
+ Keyboard.KEYNAME_HOME = "Home";
+
+ Keyboard.KEYNAME_INSERT = "Insert";
+
+ Keyboard.KEYNAME_INSERTCHAR = "InsChr";
+
+ Keyboard.KEYNAME_INSERTLINE = "LnsLn";
+
+ Keyboard.KEYNAME_LEFTARROW = "Left";
+
+ Keyboard.KEYNAME_MENU = "Menu";
+
+ Keyboard.KEYNAME_MODESWITCH = "ModeSw";
+
+ Keyboard.KEYNAME_NEXT = "Next";
+
+ Keyboard.KEYNAME_PAGEDOWN = "PgDn";
+
+ Keyboard.KEYNAME_PAGEUP = "PgUp";
+
+ Keyboard.KEYNAME_PAUSE = "Pause";
+
+ Keyboard.KEYNAME_PREV = "Prev";
+
+ Keyboard.KEYNAME_PRINT = "Print";
+
+ Keyboard.KEYNAME_PRINTSCREEN = "PrntScrn";
+
+ Keyboard.KEYNAME_REDO = "Redo";
+
+ Keyboard.KEYNAME_RESET = "Reset";
+
+ Keyboard.KEYNAME_RIGHTARROW = "Right";
+
+ Keyboard.KEYNAME_SCROLLLOCK = "ScrlLck";
+
+ Keyboard.KEYNAME_SELECT = "Select";
+
+ Keyboard.KEYNAME_STOP = "Stop";
+
+ Keyboard.KEYNAME_SYSREQ = "SysReq";
+
+ Keyboard.KEYNAME_SYSTEM = "Sys";
+
+ Keyboard.KEYNAME_UNDO = "Undo";
+
+ Keyboard.KEYNAME_UPARROW = "Up";
+
+ Keyboard.KEYNAME_USER = "User";
+
+ Keyboard.L = 76;
+
+ Keyboard.LAST = 0x01000011;
+
+ Keyboard.LEFT = 37;
+
+ Keyboard.LEFTBRACKET = 219;
+
+ Keyboard.LIVE = 0x01000010;
+
+ Keyboard.M = 77;
+
+ Keyboard.MASTER_SHELL = 0x0100001E;
+
+ Keyboard.MENU = 0x01000012;
+
+ Keyboard.MINUS = 189;
+
+ Keyboard.N = 78;
+
+ Keyboard.NEXT = 0x0100000E;
+
+ Keyboard.NUMBER_0 = 48;
+
+ Keyboard.NUMBER_1 = 49;
+
+ Keyboard.NUMBER_2 = 50;
+
+ Keyboard.NUMBER_3 = 51;
+
+ Keyboard.NUMBER_4 = 52;
+
+ Keyboard.NUMBER_5 = 53;
+
+ Keyboard.NUMBER_6 = 54;
+
+ Keyboard.NUMBER_7 = 55;
+
+ Keyboard.NUMBER_8 = 56;
+
+ Keyboard.NUMBER_9 = 57;
+
+ Keyboard.NUMPAD = 21;
+
+ Keyboard.NUMPAD_0 = 96;
+
+ Keyboard.NUMPAD_1 = 97;
+
+ Keyboard.NUMPAD_2 = 98;
+
+ Keyboard.NUMPAD_3 = 99;
+
+ Keyboard.NUMPAD_4 = 100;
+
+ Keyboard.NUMPAD_5 = 101;
+
+ Keyboard.NUMPAD_6 = 102;
+
+ Keyboard.NUMPAD_7 = 103;
+
+ Keyboard.NUMPAD_8 = 104;
+
+ Keyboard.NUMPAD_9 = 105;
+
+ Keyboard.NUMPAD_ADD = 107;
+
+ Keyboard.NUMPAD_DECIMAL = 110;
+
+ Keyboard.NUMPAD_DIVIDE = 111;
+
+ Keyboard.NUMPAD_ENTER = 108;
+
+ Keyboard.NUMPAD_MULTIPLY = 106;
+
+ Keyboard.NUMPAD_SUBTRACT = 109;
+
+ Keyboard.O = 79;
+
+ Keyboard.P = 80;
+
+ Keyboard.PAGE_DOWN = 34;
+
+ Keyboard.PAGE_UP = 33;
+
+ Keyboard.PAUSE = 0x01000008;
+
+ Keyboard.PERIOD = 190;
+
+ Keyboard.PLAY = 0x01000007;
+
+ Keyboard.PREVIOUS = 0x0100000F;
+
+ Keyboard.Q = 81;
+
+ Keyboard.QUOTE = 222;
+
+ Keyboard.R = 82;
+
+ Keyboard.RECORD = 0x01000006;
+
+ Keyboard.RED = 0x01000000;
+
+ Keyboard.REWIND = 0x0100000B;
+
+ Keyboard.RIGHT = 39;
+
+ Keyboard.RIGHTBRACKET = 221;
+
+ Keyboard.S = 83;
+
+ Keyboard.SEARCH = 0x0100001F;
+
+ Keyboard.SEMICOLON = 186;
+
+ Keyboard.SETUP = 0x0100001C;
+
+ Keyboard.SHIFT = 16;
+
+ Keyboard.SKIP_BACKWARD = 0x0100000D;
+
+ Keyboard.SKIP_FORWARD = 0x0100000C;
+
+ Keyboard.SLASH = 191;
+
+ Keyboard.SPACE = 32;
+
+ Keyboard.STOP = 0x01000009;
+
+ Keyboard.SUBTITLE = 0x01000018;
+
+ Keyboard.T = 84;
+
+ Keyboard.TAB = 9;
+
+ Keyboard.U = 85;
+
+ Keyboard.UP = 38;
+
+ Keyboard.V = 86;
+
+ Keyboard.VOD = 0x0100001A;
+
+ Keyboard.W = 87;
+
+ Keyboard.X = 88;
+
+ Keyboard.Y = 89;
+
+ Keyboard.YELLOW = 0x01000002;
+
+ Keyboard.Z = 90;
+ return Keyboard;
+})();
+
+module.exports = Keyboard;
+
+
+},{}],"awayjs-core/lib/entities/Billboard":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+var EntityNode = require("awayjs-core/lib/core/partition/EntityNode");
+
+var MaterialEvent = require("awayjs-core/lib/events/MaterialEvent");
+
+/**
+* The Billboard class represents display objects that represent bitmap images.
+* These can be images that you load with the flash.Assets
or
+* flash.display.Loader
classes, or they can be images that you
+* create with the Billboard()
constructor.
+*
+* The Billboard()
constructor allows you to create a Billboard
+* object that contains a reference to a BitmapData object. After you create a
+* Billboard object, use the addChild()
or addChildAt()
+* method of the parent DisplayObjectContainer instance to place the bitmap on
+* the display list.
A Billboard object can share its BitmapData reference among several Billboard +* objects, independent of translation or rotation properties. Because you can +* create multiple Billboard objects that reference the same BitmapData object, +* multiple display objects can use the same complex BitmapData object without +* incurring the memory overhead of a BitmapData object for each display +* object instance.
+* +*A BitmapData object can be drawn to the screen by a Billboard object in one +* of two ways: by using the default hardware renderer with a single hardware surface, +* or by using the slower software renderer when 3D acceleration is not available.
+* +*If you would prefer to perform a batch rendering command, rather than using a
+* single surface for each Billboard object, you can also draw to the screen using the
+* drawTiles()
or drawTriangles()
methods which are
+* available to flash.display.Tilesheet
and flash.display.Graphics
+* objects.
Note: The Billboard class is not a subclass of the InteractiveObject
+* class, so it cannot dispatch mouse events. However, you can use the
+* addEventListener()
method of the display object container that
+* contains the Billboard object.
null
.
+ */
+ get: function () {
+ return this._animator;
+ },
+ set: function (value) {
+ if (this._animator)
+ this._animator.removeOwner(this);
+
+ this._animator = value;
+
+ var len = this._subMeshes.length;
+ var subMesh;
+
+ for (var i = 0; i < len; ++i) {
+ subMesh = this._subMeshes[i];
+
+ // cause material to be unregistered and registered again to work with the new animation type (if possible)
+ if (subMesh.material) {
+ subMesh.material.iRemoveOwner(subMesh);
+ subMesh.material.iAddOwner(subMesh);
+ }
+
+ //invalidate any existing renderables in case they need to pull new geometry
+ subMesh._iInvalidateRenderableGeometry();
+ }
+
+ if (this._animator)
+ this._animator.addOwner(this);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Mesh.prototype, "assetType", {
+ /**
+ *
+ */
+ get: function () {
+ return AssetType.MESH;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Mesh.prototype, "castsShadows", {
+ /**
+ * Indicates whether or not the Mesh can cast shadows. Default value is true
.
+ */
+ get: function () {
+ return this._castsShadows;
+ },
+ set: function (value) {
+ this._castsShadows = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Mesh.prototype, "geometry", {
+ /**
+ * The geometry used by the mesh that provides it with its shape.
+ */
+ get: function () {
+ if (this._iSourcePrefab)
+ this._iSourcePrefab._iValidate();
+
+ return this._geometry;
+ },
+ set: function (value) {
+ var i;
+
+ if (this._geometry) {
+ this._geometry.removeEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);
+ this._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);
+ this._geometry.removeEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);
+
+ for (i = 0; i < this._subMeshes.length; ++i)
+ this._subMeshes[i].dispose();
+
+ this._subMeshes.length = 0;
+ }
+
+ this._geometry = value;
+
+ if (this._geometry) {
+ this._geometry.addEventListener(GeometryEvent.BOUNDS_INVALID, this._onGeometryBoundsInvalidDelegate);
+ this._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_ADDED, this._onSubGeometryAddedDelegate);
+ this._geometry.addEventListener(GeometryEvent.SUB_GEOMETRY_REMOVED, this._onSubGeometryRemovedDelegate);
+
+ var subGeoms = this._geometry.subGeometries;
+
+ for (i = 0; i < subGeoms.length; ++i)
+ this.addSubMesh(subGeoms[i]);
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Mesh.prototype, "material", {
+ /**
+ * The material with which to render the Mesh.
+ */
+ get: function () {
+ return this._material;
+ },
+ set: function (value) {
+ if (value == this._material)
+ return;
+
+ var i;
+ var len = this._subMeshes.length;
+ var subMesh;
+
+ for (i = 0; i < len; i++)
+ if (this._material && (subMesh = this._subMeshes[i]).material == this._material)
+ this._material.iRemoveOwner(subMesh);
+
+ this._material = value;
+
+ for (i = 0; i < len; i++)
+ if (this._material && (subMesh = this._subMeshes[i]).material == this._material)
+ this._material.iAddOwner(subMesh);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Mesh.prototype, "shareAnimationGeometry", {
+ /**
+ * Indicates whether or not the mesh share the same animation geometry.
+ */
+ get: function () {
+ return this._shareAnimationGeometry;
+ },
+ set: function (value) {
+ this._shareAnimationGeometry = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Mesh.prototype, "subMeshes", {
+ /**
+ * The SubMeshes out of which the Mesh consists. Every SubMesh can be assigned a material to override the Mesh's
+ * material.
+ */
+ get: function () {
+ // Since this getter is invoked every iteration of the render loop, and
+ // the prefab construct could affect the sub-meshes, the prefab is
+ // validated here to give it a chance to rebuild.
+ if (this._iSourcePrefab)
+ this._iSourcePrefab._iValidate();
+
+ return this._subMeshes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Mesh.prototype, "uvTransform", {
+ /**
+ *
+ */
+ get: function () {
+ return this._uvTransform;
+ },
+ set: function (value) {
+ this._uvTransform = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ *
+ */
+ Mesh.prototype.bakeTransformations = function () {
+ this.geometry.applyTransformation(this._iMatrix3D);
+ this._iMatrix3D.identity();
+ };
+
+ /**
+ * @inheritDoc
+ */
+ Mesh.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ this.material = null;
+ this.geometry = null;
+ };
+
+ /**
+ * Disposes mesh including the animator and children. This is a merely a convenience method.
+ * @return
+ */
+ Mesh.prototype.disposeWithAnimatorAndChildren = function () {
+ this.disposeWithChildren();
+
+ if (this._animator)
+ this._animator.dispose();
+ };
+
+ /**
+ * Clones this Mesh instance along with all it's children, while re-using the same
+ * material, geometry and animation set. The returned result will be a copy of this mesh,
+ * containing copies of all of it's children.
+ *
+ * Properties that are re-used (i.e. not cloned) by the new copy include name,
+ * geometry, and material. Properties that are cloned or created anew for the copy
+ * include subMeshes, children of the mesh, and the animator.
+ *
+ * If you want to copy just the mesh, reusing it's geometry and material while not
+ * cloning it's children, the simplest way is to create a new mesh manually:
+ *
+ *
+ * var clone : Mesh = new Mesh(original.geometry, original.material);
+ *
+ */
+ Mesh.prototype.clone = function () {
+ var clone = new Mesh(this._geometry, this._material);
+
+ clone._iMatrix3D = this._iMatrix3D;
+ clone.pivot = this.pivot;
+ clone.partition = this.partition;
+ clone.bounds = this.bounds.clone();
+
+ clone.name = this.name;
+ clone.castsShadows = this.castsShadows;
+ clone.shareAnimationGeometry = this.shareAnimationGeometry;
+ clone.mouseEnabled = this.mouseEnabled;
+ clone.mouseChildren = this.mouseChildren;
+
+ //this is of course no proper cloning
+ //maybe use this instead?: http://blog.another-d-mention.ro/programming/how-to-clone-duplicate-an-object-in-actionscript-3/
+ clone.extra = this.extra;
+
+ var len = this._subMeshes.length;
+ for (var i = 0; i < len; ++i)
+ clone._subMeshes[i].material = this._subMeshes[i]._iGetExplicitMaterial();
+
+ len = this.numChildren;
+ var obj;
+
+ for (i = 0; i < len; ++i) {
+ obj = this.getChildAt(i).clone();
+ clone.addChild(obj);
+ }
+
+ if (this._animator)
+ clone.animator = this._animator.clone();
+
+ return clone;
+ };
+
+ /**
+ * //TODO
+ *
+ * @param subGeometry
+ * @returns {SubMeshBase}
+ */
+ Mesh.prototype.getSubMeshFromSubGeometry = function (subGeometry) {
+ return this._subMeshes[this._geometry.subGeometries.indexOf(subGeometry)];
+ };
+
+ /**
+ * @protected
+ */
+ Mesh.prototype.pCreateEntityPartitionNode = function () {
+ return new EntityNode(this);
+ };
+
+ /**
+ * //TODO
+ *
+ * @protected
+ */
+ Mesh.prototype.pUpdateBounds = function () {
+ this._pBounds.fromGeometry(this._geometry);
+
+ _super.prototype.pUpdateBounds.call(this);
+ };
+
+ /**
+ * //TODO
+ *
+ * @private
+ */
+ Mesh.prototype.onGeometryBoundsInvalid = function (event) {
+ this.pInvalidateBounds();
+ };
+
+ /**
+ * Called when a SubGeometry was added to the Geometry.
+ *
+ * @private
+ */
+ Mesh.prototype.onSubGeometryAdded = function (event) {
+ this.addSubMesh(event.subGeometry);
+ };
+
+ /**
+ * Called when a SubGeometry was removed from the Geometry.
+ *
+ * @private
+ */
+ Mesh.prototype.onSubGeometryRemoved = function (event) {
+ var subMesh;
+ var subGeom = event.subGeometry;
+ var len = this._subMeshes.length;
+ var i;
+
+ for (i = 0; i < len; ++i) {
+ subMesh = this._subMeshes[i];
+
+ if (subMesh.subGeometry == subGeom) {
+ subMesh.dispose();
+
+ this._subMeshes.splice(i, 1);
+
+ break;
+ }
+ }
+
+ --len;
+ for (; i < len; ++i)
+ this._subMeshes[i]._iIndex = i;
+ };
+
+ /**
+ * Adds a SubMeshBase wrapping a SubGeometry.
+ *
+ * @param subGeometry
+ */
+ Mesh.prototype.addSubMesh = function (subGeometry) {
+ var SubMeshClass = subGeometry.subMeshClass;
+
+ var subMesh = new SubMeshClass(subGeometry, this, null);
+ var len = this._subMeshes.length;
+
+ subMesh._iIndex = len;
+
+ this._subMeshes[len] = subMesh;
+
+ this.pInvalidateBounds();
+ };
+
+ /**
+ * //TODO
+ *
+ * @param shortestCollisionDistance
+ * @param findClosest
+ * @returns {boolean}
+ *
+ * @internal
+ */
+ Mesh.prototype._iTestCollision = function (shortestCollisionDistance, findClosest) {
+ return this._pPickingCollider.testMeshCollision(this, this._pPickingCollisionVO, shortestCollisionDistance, findClosest);
+ };
+
+ /**
+ *
+ * @param renderer
+ *
+ * @internal
+ */
+ Mesh.prototype._iCollectRenderables = function (renderer) {
+ // Since this getter is invoked every iteration of the render loop, and
+ // the prefab construct could affect the sub-meshes, the prefab is
+ // validated here to give it a chance to rebuild.
+ if (this._iSourcePrefab)
+ this._iSourcePrefab._iValidate();
+
+ var len = this._subMeshes.length;
+ for (var i = 0; i < len; i++)
+ this._subMeshes[i]._iCollectRenderable(renderer);
+ };
+
+ Mesh.prototype._iInvalidateRenderableGeometries = function () {
+ var len = this._subMeshes.length;
+ for (var i = 0; i < len; ++i)
+ this._subMeshes[i]._iInvalidateRenderableGeometry();
+ };
+ return Mesh;
+})(DisplayObjectContainer);
+
+module.exports = Mesh;
+
+
+},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/base/Geometry":undefined,"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/partition/EntityNode":undefined,"awayjs-core/lib/events/GeometryEvent":undefined}],"awayjs-core/lib/entities/PointLight":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var BoundingSphere = require("awayjs-core/lib/bounds/BoundingSphere");
+
+var LightBase = require("awayjs-core/lib/core/base/LightBase");
+
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var PointLightNode = require("awayjs-core/lib/core/partition/PointLightNode");
+
+var CubeMapShadowMapper = require("awayjs-core/lib/materials/shadowmappers/CubeMapShadowMapper");
+
+var PointLight = (function (_super) {
+ __extends(PointLight, _super);
+ function PointLight() {
+ _super.call(this);
+ this._pRadius = 90000;
+ this._pFallOff = 100000;
+
+ this._pIsEntity = true;
+
+ this._pFallOffFactor = 1 / (this._pFallOff * this._pFallOff - this._pRadius * this._pRadius);
+ }
+ PointLight.prototype.pCreateShadowMapper = function () {
+ return new CubeMapShadowMapper();
+ };
+
+ Object.defineProperty(PointLight.prototype, "radius", {
+ get: function () {
+ return this._pRadius;
+ },
+ set: function (value) {
+ this._pRadius = value;
+
+ if (this._pRadius < 0) {
+ this._pRadius = 0;
+ } else if (this._pRadius > this._pFallOff) {
+ this._pFallOff = this._pRadius;
+ this.pInvalidateBounds();
+ }
+ this._pFallOffFactor = 1 / (this._pFallOff * this._pFallOff - this._pRadius * this._pRadius);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ PointLight.prototype.iFallOffFactor = function () {
+ return this._pFallOffFactor;
+ };
+
+ Object.defineProperty(PointLight.prototype, "fallOff", {
+ get: function () {
+ return this._pFallOff;
+ },
+ set: function (value) {
+ this._pFallOff = value;
+
+ if (this._pFallOff < 0)
+ this._pFallOff = 0;
+
+ if (this._pFallOff < this._pRadius)
+ this._pRadius = this._pFallOff;
+
+ this._pFallOffFactor = 1 / (this._pFallOff * this._pFallOff - this._pRadius * this._pRadius);
+ this.pInvalidateBounds();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * @protected
+ */
+ PointLight.prototype.pCreateEntityPartitionNode = function () {
+ return new PointLightNode(this);
+ };
+
+ PointLight.prototype.pUpdateBounds = function () {
+ this._pBounds.fromSphere(new Vector3D(), this._pFallOff);
+ this._pBoundsInvalid = false;
+ };
+
+ PointLight.prototype.pCreateDefaultBoundingVolume = function () {
+ //point lights are culled based on their falloff radius
+ return new BoundingSphere();
+ };
+
+ PointLight.prototype.iGetObjectProjectionMatrix = function (entity, camera, target) {
+ if (typeof target === "undefined") { target = null; }
+ var raw = new Array(16);
+ var bounds = entity.bounds;
+ var m = new Matrix3D();
+
+ // todo: do not use lookAt on Light
+ m.copyFrom(entity.getRenderSceneTransform(camera));
+ m.append(this._pParent.inverseSceneTransform);
+ this.lookAt(m.position);
+
+ m.copyFrom(entity.getRenderSceneTransform(camera));
+ m.append(this.inverseSceneTransform);
+
+ var box = bounds.aabb;
+ var v1 = m.deltaTransformVector(new Vector3D(box.left, box.bottom, box.front));
+ var v2 = m.deltaTransformVector(new Vector3D(box.right, box.top, box.back));
+ var d1 = v1.x * v1.x + v1.y * v1.y + v1.z * v1.z;
+ var d2 = v2.x * v2.x + v2.y * v2.y + v2.z * v2.z;
+ var d = Math.sqrt(d1 > d2 ? d1 : d2);
+ var zMin;
+ var zMax;
+
+ var z = m.rawData[14];
+ zMin = z - d;
+ zMax = z + d;
+
+ raw[5] = raw[0] = zMin / d;
+ raw[10] = zMax / (zMax - zMin);
+ raw[11] = 1;
+ raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[12] = raw[13] = raw[15] = 0;
+ raw[14] = -zMin * raw[10];
+
+ if (!target)
+ target = new Matrix3D();
+
+ target.copyRawDataFrom(raw);
+ target.prepend(m);
+
+ return target;
+ };
+
+ PointLight.prototype._iCollectRenderables = function (renderer) {
+ //nothing to do here
+ };
+ return PointLight;
+})(LightBase);
+
+module.exports = PointLight;
+
+
+},{"awayjs-core/lib/bounds/BoundingSphere":undefined,"awayjs-core/lib/core/base/LightBase":undefined,"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/core/partition/PointLightNode":undefined,"awayjs-core/lib/materials/shadowmappers/CubeMapShadowMapper":undefined}],"awayjs-core/lib/entities/Shape":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+
+/**
+* This class is used to create lightweight shapes using the ActionScript
+* drawing application program interface(API). The Shape class includes a
+* graphics
property, which lets you access methods from the
+* Graphics class.
+*
+* The Sprite class also includes a graphics
property, and it
+* includes other features not available to the Shape class. For example, a
+* Sprite object is a display object container, whereas a Shape object is not
+* (and cannot contain child display objects). For this reason, Shape objects
+* consume less memory than Sprite objects that contain the same graphics.
+* However, a Sprite object supports user input events, while a Shape object
+* does not.
To create a text field dynamically, use the TextField()
+* constructor.
The methods of the TextField class let you set, select, and manipulate +* text in a dynamic or input text field that you create during authoring or +* at runtime.
+* +*ActionScript provides several ways to format your text at runtime. The
+* TextFormat class lets you set character and paragraph formatting for
+* TextField objects. You can apply Cascading Style Sheets(CSS) styles to
+* text fields by using the TextField.styleSheet
property and the
+* StyleSheet class. You can use CSS to style built-in HTML tags, define new
+* formatting tags, or apply styles. You can assign HTML formatted text, which
+* optionally uses CSS styles, directly to a text field. HTML text that you
+* assign to a text field can contain embedded media(movie clips, SWF files,
+* GIF files, PNG files, and JPEG files). The text wraps around the embedded
+* media in the same way that a web browser wraps text around media embedded
+* in an HTML document.
Flash Player supports a subset of HTML tags that you can use to format
+* text. See the list of supported HTML tags in the description of the
+* htmlText
property.
textInput
event, which is
+* dispatched before the value is modified.
+* Unlike the W3C DOM Event Model version of
+* the change
event, which
+* dispatches the event only after the
+* control loses focus, the ActionScript 3.0
+* version of the change
event
+* is dispatched any time the control
+* changes. For example, if a user types text
+* into a text field, a change
+* event is dispatched after every keystroke.
+* @event link Dispatched when a user clicks a hyperlink
+* in an HTML-enabled text field, where the
+* URL begins with "event:". The remainder of
+* the URL after "event:" is placed in the
+* text property of the LINK event.
+*
+* Note: The default behavior,
+* adding the text to the text field, occurs
+* only when Flash Player generates the
+* event, which in this case happens when a
+* user attempts to input text. You cannot
+* put text into a text field by sending it
+* textInput
events.
textInput
event when a user
+* enters one or more characters of text.
+* Various text input methods can generate
+* this event, including standard keyboards,
+* input method editors(IMEs), voice or
+* speech recognition systems, and even the
+* act of pasting plain text with no
+* formatting or style information.
+* @event textInteractionModeChange Flash Player dispatches the
+* textInteractionModeChange
+* event when a user changes the interaction
+* mode of a text field. for example on
+* Android, one can toggle from NORMAL mode
+* to SELECTION mode using context menu
+* options
+*/
+var TextField = (function (_super) {
+ __extends(TextField, _super);
+ /**
+ * Creates a new TextField instance. After you create the TextField instance,
+ * call the addChild()
or addChildAt()
method of
+ * the parent DisplayObjectContainer object to add the TextField instance to
+ * the display list.
+ *
+ * The default size for a text field is 100 x 100 pixels.
+ */ + function TextField() { + _super.call(this); + this._text = ""; + } + Object.defineProperty(TextField.prototype, "bottomScrollV", { + /** + * An integer(1-based index) that indicates the bottommost line that is + * currently visible in the specified text field. Think of the text field as + * a window onto a block of text. ThescrollV
property is the
+ * 1-based index of the topmost visible line in the window.
+ *
+ * All the text between the lines indicated by scrollV
and
+ * bottomScrollV
is currently visible in the text field.
Selection span indexes are zero-based(for example, the first position + * is 0, the second position is 1, and so on).
+ */ + get: function () { + return this._caretIndex; + }, + enumerable: true, + configurable: true + }); + + Object.defineProperty(TextField.prototype, "length", { + /** + * The number of characters in a text field. A character such as tab + * (\t
) counts as one character.
+ */
+ get: function () {
+ return this._length;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * The maximum value of scrollH
.
+ */
+ TextField.prototype.maxScrollH = function () {
+ return this._maxScrollH;
+ };
+
+ /**
+ * The maximum value of scrollV
.
+ */
+ TextField.prototype.maxScrollV = function () {
+ return this._maxScrollV;
+ };
+
+ Object.defineProperty(TextField.prototype, "numLines", {
+ /**
+ * Defines the number of text lines in a multiline text field. If
+ * wordWrap
property is set to true
, the number of
+ * lines increases when text wraps.
+ */
+ get: function () {
+ return this._numLines;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextField.prototype, "selectionBeginIndex", {
+ /**
+ * The zero-based character index value of the first character in the current
+ * selection. For example, the first character is 0, the second character is
+ * 1, and so on. If no text is selected, this property is the value of
+ * caretIndex
.
+ */
+ get: function () {
+ return this._selectionBeginIndex;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextField.prototype, "selectionEndIndex", {
+ /**
+ * The zero-based character index value of the last character in the current
+ * selection. For example, the first character is 0, the second character is
+ * 1, and so on. If no text is selected, this property is the value of
+ * caretIndex
.
+ */
+ get: function () {
+ return this._selectionEndIndex;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextField.prototype, "text", {
+ /**
+ * A string that is the current text in the text field. Lines are separated
+ * by the carriage return character('\r'
, ASCII 13). This
+ * property contains unformatted text in the text field, without HTML tags.
+ *
+ * To get the text in HTML form, use the htmlText
+ * property.
newText
parameter to the
+ * end of the text of the text field. This method is more efficient than an
+ * addition assignment(+=
) on a text
property
+ * (such as someTextField.text += moreText
), particularly for a
+ * text field that contains a significant amount of content.
+ *
+ * @param newText The string to append to the existing text.
+ */
+ TextField.prototype.appendText = function (newText) {
+ //TODO
+ };
+
+ /**
+ * Returns a rectangle that is the bounding box of the character.
+ *
+ * @param charIndex The zero-based index value for the character(for
+ * example, the first position is 0, the second position is
+ * 1, and so on).
+ * @return A rectangle with x
and y
minimum and
+ * maximum values defining the bounding box of the character.
+ */
+ TextField.prototype.getCharBoundaries = function (charIndex) {
+ return this._charBoundaries;
+ };
+
+ /**
+ * Returns the zero-based index value of the character at the point specified
+ * by the x
and y
parameters.
+ *
+ * @param x The x coordinate of the character.
+ * @param y The y coordinate of the character.
+ * @return The zero-based index value of the character(for example, the
+ * first position is 0, the second position is 1, and so on). Returns
+ * -1 if the point is not over any character.
+ */
+ TextField.prototype.getCharIndexAtPoint = function (x, y) {
+ return this._charIndexAtPoint;
+ };
+
+ /**
+ * Given a character index, returns the index of the first character in the
+ * same paragraph.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return The zero-based index value of the first character in the same
+ * paragraph.
+ * @throws RangeError The character index specified is out of range.
+ */
+ TextField.prototype.getFirstCharInParagraph = function (charIndex /*int*/ ) {
+ return this._firstCharInParagraph;
+ };
+
+ /**
+ * Returns a DisplayObject reference for the given id
, for an
+ * image or SWF file that has been added to an HTML-formatted text field by
+ * using an
tag. The
tag is in the
+ * following format:
+ *
+ *
+ *
+ * @param id The id
to match(in the id
attribute
+ * of the
tag).
+ * @return The display object corresponding to the image or SWF file with the
+ * matching id
attribute in the
tag
+ * of the text field. For media loaded from an external source, this
+ * object is a Loader object, and, once loaded, the media object is a
+ * child of that Loader object. For media embedded in the SWF file,
+ * it is the loaded object. If no
tag with the
+ * matching id
exists, the method returns
+ * null
.
+ */
+ TextField.prototype.getImageReference = function (id) {
+ return this._imageReference;
+ };
+
+ /**
+ * Returns the zero-based index value of the line at the point specified by
+ * the x
and y
parameters.
+ *
+ * @param x The x coordinate of the line.
+ * @param y The y coordinate of the line.
+ * @return The zero-based index value of the line(for example, the first
+ * line is 0, the second line is 1, and so on). Returns -1 if the
+ * point is not over any line.
+ */
+ TextField.prototype.getLineIndexAtPoint = function (x, y) {
+ return this._lineIndexAtPoint;
+ };
+
+ /**
+ * Returns the zero-based index value of the line containing the character
+ * specified by the charIndex
parameter.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return The zero-based index value of the line.
+ * @throws RangeError The character index specified is out of range.
+ */
+ TextField.prototype.getLineIndexOfChar = function (charIndex /*int*/ ) {
+ return this._lineIndexOfChar;
+ };
+
+ /**
+ * Returns the number of characters in a specific text line.
+ *
+ * @param lineIndex The line number for which you want the length.
+ * @return The number of characters in the line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ TextField.prototype.getLineLength = function (lineIndex /*int*/ ) {
+ return this._lineLength;
+ };
+
+ /**
+ * Returns metrics information about a given text line.
+ *
+ * @param lineIndex The line number for which you want metrics information.
+ * @return A TextLineMetrics object.
+ * @throws RangeError The line number specified is out of range.
+ */
+ TextField.prototype.getLineMetrics = function (lineIndex /*int*/ ) {
+ return this._lineMetrics;
+ };
+
+ /**
+ * Returns the character index of the first character in the line that the
+ * lineIndex
parameter specifies.
+ *
+ * @param lineIndex The zero-based index value of the line(for example, the
+ * first line is 0, the second line is 1, and so on).
+ * @return The zero-based index value of the first character in the line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ TextField.prototype.getLineOffset = function (lineIndex /*int*/ ) {
+ return this._lineOffset;
+ };
+
+ /**
+ * Returns the text of the line specified by the lineIndex
+ * parameter.
+ *
+ * @param lineIndex The zero-based index value of the line(for example, the
+ * first line is 0, the second line is 1, and so on).
+ * @return The text string contained in the specified line.
+ * @throws RangeError The line number specified is out of range.
+ */
+ TextField.prototype.getLineText = function (lineIndex /*int*/ ) {
+ return this._lineText;
+ };
+
+ /**
+ * Given a character index, returns the length of the paragraph containing
+ * the given character. The length is relative to the first character in the
+ * paragraph(as returned by getFirstCharInParagraph()
), not to
+ * the character index passed in.
+ *
+ * @param charIndex The zero-based index value of the character(for example,
+ * the first character is 0, the second character is 1, and
+ * so on).
+ * @return Returns the number of characters in the paragraph.
+ * @throws RangeError The character index specified is out of range.
+ */
+ TextField.prototype.getParagraphLength = function (charIndex /*int*/ ) {
+ return this._paragraphLength;
+ };
+
+ /**
+ * Returns a TextFormat object that contains formatting information for the
+ * range of text that the beginIndex
and endIndex
+ * parameters specify. Only properties that are common to the entire text
+ * specified are set in the resulting TextFormat object. Any property that is
+ * mixed, meaning that it has different values at different points in
+ * the text, has a value of null
.
+ *
+ * If you do not specify values for these parameters, this method is + * applied to all the text in the text field.
+ * + *The following table describes three possible usages:
+ * + * @return The TextFormat object that represents the formatting properties + * for the specified text. + * @throws RangeError ThebeginIndex
or endIndex
+ * specified is out of range.
+ */
+ TextField.prototype.getTextFormat = function (beginIndex, endIndex) {
+ if (typeof beginIndex === "undefined") { beginIndex = -1; }
+ if (typeof endIndex === "undefined") { endIndex = -1; }
+ return this._textFormat;
+ };
+
+ /**
+ * Replaces the current selection with the contents of the value
+ * parameter. The text is inserted at the position of the current selection,
+ * using the current default character format and default paragraph format.
+ * The text is not treated as HTML.
+ *
+ * You can use the replaceSelectedText()
method to insert and
+ * delete text without disrupting the character and paragraph formatting of
+ * the rest of the text.
Note: This method does not work if a style sheet is applied to + * the text field.
+ * + * @param value The string to replace the currently selected text. + * @throws Error This method cannot be used on a text field with a style + * sheet. + */ + TextField.prototype.replaceSelectedText = function (value) { + }; + + /** + * Replaces the range of characters that thebeginIndex
and
+ * endIndex
parameters specify with the contents of the
+ * newText
parameter. As designed, the text from
+ * beginIndex
to endIndex-1
is replaced.
+ *
+ * Note: This method does not work if a style sheet is applied to + * the text field.
+ * + * @param beginIndex The zero-based index value for the start position of the + * replacement range. + * @param endIndex The zero-based index position of the first character + * after the desired text span. + * @param newText The text to use to replace the specified range of + * characters. + * @throws Error This method cannot be used on a text field with a style + * sheet. + */ + TextField.prototype.replaceText = function (beginIndex /*int*/ , endIndex /*int*/ , newText) { + }; + + /** + * Sets as selected the text designated by the index values of the first and + * last characters, which are specified with thebeginIndex
and
+ * endIndex
parameters. If the two parameter values are the
+ * same, this method sets the insertion point, as if you set the
+ * caretIndex
property.
+ *
+ * @param beginIndex The zero-based index value of the first character in the
+ * selection(for example, the first character is 0, the
+ * second character is 1, and so on).
+ * @param endIndex The zero-based index value of the last character in the
+ * selection.
+ */
+ TextField.prototype.setSelection = function (beginIndex /*int*/ , endIndex /*int*/ ) {
+ };
+
+ /**
+ * Applies the text formatting that the format
parameter
+ * specifies to the specified text in a text field. The value of
+ * format
must be a TextFormat object that specifies the desired
+ * text formatting changes. Only the non-null properties of
+ * format
are applied to the text field. Any property of
+ * format
that is set to null
is not applied. By
+ * default, all of the properties of a newly created TextFormat object are
+ * set to null
.
+ *
+ * Note: This method does not work if a style sheet is applied to + * the text field.
+ * + *The setTextFormat()
method changes the text formatting
+ * applied to a range of characters or to the entire body of text in a text
+ * field. To apply the properties of format to all text in the text field, do
+ * not specify values for beginIndex
and endIndex
.
+ * To apply the properties of the format to a range of text, specify values
+ * for the beginIndex
and the endIndex
parameters.
+ * You can use the length
property to determine the index
+ * values.
The two types of formatting information in a TextFormat object are + * character level formatting and paragraph level formatting. Each character + * in a text field can have its own character formatting settings, such as + * font name, font size, bold, and italic.
+ * + *For paragraphs, the first character of the paragraph is examined for + * the paragraph formatting settings for the entire paragraph. Examples of + * paragraph formatting settings are left margin, right margin, and + * indentation.
+ * + *Any text inserted manually by the user, or replaced by the
+ * replaceSelectedText()
method, receives the default text field
+ * formatting for new text, and not the formatting specified for the text
+ * insertion point. To set the default formatting for new text, use
+ * defaultTextFormat
.
beginIndex
or endIndex
+ * specified is out of range.
+ */
+ TextField.prototype.setTextFormat = function (format, beginIndex, endIndex) {
+ if (typeof beginIndex === "undefined") { beginIndex = -1; }
+ if (typeof endIndex === "undefined") { endIndex = -1; }
+ };
+
+ /**
+ * Returns true if an embedded font is available with the specified
+ * fontName
and fontStyle
where
+ * Font.fontType
is flash.text.FontType.EMBEDDED
.
+ * Starting with Flash Player 10, two kinds of embedded fonts can appear in a
+ * SWF file. Normal embedded fonts are only used with TextField objects. CFF
+ * embedded fonts are only used with the flash.text.engine classes. The two
+ * types are distinguished by the fontType
property of the
+ * Font
class, as returned by the enumerateFonts()
+ * function.
+ *
+ * TextField cannot use a font of type EMBEDDED_CFF
. If
+ * embedFonts
is set to true
and the only font
+ * available at run time with the specified name and style is of type
+ * EMBEDDED_CFF
, Flash Player fails to render the text, as if no
+ * embedded font were available with the specified name and style.
If both EMBEDDED
and EMBEDDED_CFF
fonts are
+ * available with the same name and style, the EMBEDDED
font is
+ * selected and text renders with the EMBEDDED
font.
flash.text.FontStyle
+ * @return true
if a compatible embedded font is available,
+ * otherwise false
.
+ * @throws ArgumentError The fontStyle
specified is not a member
+ * of flash.text.FontStyle
.
+ */
+ TextField.isFontCompatible = function (fontName, fontStyle) {
+ return false;
+ };
+ return TextField;
+})(DisplayObject);
+
+module.exports = TextField;
+
+
+},{"awayjs-core/lib/core/base/DisplayObject":undefined}],"awayjs-core/lib/errors/AbstractMethodError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+/**
+* AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+* by a concrete subclass.
+*/
+var AbstractMethodError = (function (_super) {
+ __extends(AbstractMethodError, _super);
+ /**
+ * Create a new AbstractMethodError.
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ function AbstractMethodError(message, id) {
+ if (typeof message === "undefined") { message = null; }
+ if (typeof id === "undefined") { id = 0; }
+ _super.call(this, message || "An abstract method was called! Either an instance of an abstract class was created, or an abstract method was not overridden by the subclass.", id);
+ }
+ return AbstractMethodError;
+})(Error);
+
+module.exports = AbstractMethodError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/errors/ArgumentError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+/**
+* AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+* by a concrete subclass.
+*/
+var ArgumentError = (function (_super) {
+ __extends(ArgumentError, _super);
+ /**
+ * Create a new ArgumentError.
+ *
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ function ArgumentError(message, id) {
+ if (typeof message === "undefined") { message = null; }
+ if (typeof id === "undefined") { id = 0; }
+ _super.call(this, message || "ArgumentError", id);
+ }
+ return ArgumentError;
+})(Error);
+
+module.exports = ArgumentError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/errors/CastError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+var CastError = (function (_super) {
+ __extends(CastError, _super);
+ function CastError(message) {
+ _super.call(this, message);
+ }
+ return CastError;
+})(Error);
+
+module.exports = CastError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/errors/DocumentError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+var DocumentError = (function (_super) {
+ __extends(DocumentError, _super);
+ function DocumentError(message, id) {
+ if (typeof message === "undefined") { message = "DocumentError"; }
+ if (typeof id === "undefined") { id = 0; }
+ _super.call(this, message, id);
+ }
+ DocumentError.DOCUMENT_DOES_NOT_EXIST = "documentDoesNotExist";
+ return DocumentError;
+})(Error);
+
+module.exports = DocumentError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/errors/Error":[function(require,module,exports){
+var Error = (function () {
+ function Error(message, id, _name) {
+ if (typeof message === "undefined") { message = ''; }
+ if (typeof id === "undefined") { id = 0; }
+ if (typeof _name === "undefined") { _name = ''; }
+ this._errorID = 0;
+ this._messsage = '';
+ this._name = '';
+ this._messsage = message;
+ this._name = name;
+ this._errorID = id;
+ }
+ Object.defineProperty(Error.prototype, "message", {
+ /**
+ *
+ * @returns {string}
+ */
+ get: function () {
+ return this._messsage;
+ },
+ /**
+ *
+ * @param value
+ */
+ set: function (value) {
+ this._messsage = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Error.prototype, "name", {
+ /**
+ *
+ * @returns {string}
+ */
+ get: function () {
+ return this._name;
+ },
+ /**
+ *
+ * @param value
+ */
+ set: function (value) {
+ this._name = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Error.prototype, "errorID", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._errorID;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Error;
+})();
+
+module.exports = Error;
+
+
+},{}],"awayjs-core/lib/errors/PartialImplementationError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+/**
+* AbstractMethodError is thrown when an abstract method is called. The method in question should be overridden
+* by a concrete subclass.
+*/
+var PartialImplementationError = (function (_super) {
+ __extends(PartialImplementationError, _super);
+ /**
+ * Create a new AbstractMethodError.
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ function PartialImplementationError(dependency, id) {
+ if (typeof dependency === "undefined") { dependency = ''; }
+ if (typeof id === "undefined") { id = 0; }
+ _super.call(this, "PartialImplementationError - this function is in development. Required Dependency: " + dependency, id);
+ }
+ return PartialImplementationError;
+})(Error);
+
+module.exports = PartialImplementationError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/errors/RangeError":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+
+/**
+* RangeError is thrown when an index is accessed out of range of the number of
+* available indices on an Array.
+*/
+var RangeError = (function (_super) {
+ __extends(RangeError, _super);
+ /**
+ * Create a new RangeError.
+ *
+ * @param message An optional message to override the default error message.
+ * @param id The id of the error.
+ */
+ function RangeError(message, id) {
+ if (typeof message === "undefined") { message = null; }
+ if (typeof id === "undefined") { id = 0; }
+ _super.call(this, message || "RangeError", id);
+ }
+ return RangeError;
+})(Error);
+
+module.exports = RangeError;
+
+
+},{"awayjs-core/lib/errors/Error":undefined}],"awayjs-core/lib/events/AssetEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* @class away.events.AssetEvent
+*/
+var AssetEvent = (function (_super) {
+ __extends(AssetEvent, _super);
+ /**
+ *
+ */
+ function AssetEvent(type, asset, prevName) {
+ if (typeof asset === "undefined") { asset = null; }
+ if (typeof prevName === "undefined") { prevName = null; }
+ _super.call(this, type);
+
+ this._asset = asset;
+ this._prevName = prevName || (this._asset ? this._asset.name : null);
+ }
+ Object.defineProperty(AssetEvent.prototype, "asset", {
+ /**
+ *
+ */
+ get: function () {
+ return this._asset;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(AssetEvent.prototype, "assetPrevName", {
+ /**
+ *
+ */
+ get: function () {
+ return this._prevName;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ *
+ */
+ AssetEvent.prototype.clone = function () {
+ return new AssetEvent(this.type, this.asset, this.assetPrevName);
+ };
+ AssetEvent.ASSET_COMPLETE = "assetComplete";
+
+ AssetEvent.ASSET_RENAME = 'assetRename';
+
+ AssetEvent.ASSET_CONFLICT_RESOLVED = 'assetConflictResolved';
+
+ AssetEvent.TEXTURE_SIZE_ERROR = 'textureSizeError';
+ return AssetEvent;
+})(Event);
+
+module.exports = AssetEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/CameraEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* @class away.events.CameraEvent
+*/
+var CameraEvent = (function (_super) {
+ __extends(CameraEvent, _super);
+ function CameraEvent(type, camera) {
+ _super.call(this, type);
+
+ this._camera = camera;
+ }
+ Object.defineProperty(CameraEvent.prototype, "camera", {
+ get: function () {
+ return this._camera;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ CameraEvent.PROJECTION_CHANGED = "projectionChanged";
+ return CameraEvent;
+})(Event);
+
+module.exports = CameraEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/DisplayObjectEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var DisplayObjectEvent = (function (_super) {
+ __extends(DisplayObjectEvent, _super);
+ function DisplayObjectEvent(type, object) {
+ _super.call(this, type);
+ this.object = object;
+ }
+ DisplayObjectEvent.VISIBLITY_UPDATED = "visiblityUpdated";
+ DisplayObjectEvent.SCENETRANSFORM_CHANGED = "scenetransformChanged";
+ DisplayObjectEvent.SCENE_CHANGED = "sceneChanged";
+ DisplayObjectEvent.POSITION_CHANGED = "positionChanged";
+ DisplayObjectEvent.ROTATION_CHANGED = "rotationChanged";
+ DisplayObjectEvent.SCALE_CHANGED = "scaleChanged";
+ return DisplayObjectEvent;
+})(Event);
+
+module.exports = DisplayObjectEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/EventDispatcher":[function(require,module,exports){
+/**
+* Base class for dispatching events
+*
+* @class away.events.EventDispatcher
+*
+*/
+var EventDispatcher = (function () {
+ function EventDispatcher(target) {
+ if (typeof target === "undefined") { target = null; }
+ this.listeners = new Array();
+ this.target = target || this;
+ }
+ /**
+ * Add an event listener
+ * @method addEventListener
+ * @param {String} Name of event to add a listener for
+ * @param {Function} Callback function
+ */
+ EventDispatcher.prototype.addEventListener = function (type, listener) {
+ if (this.listeners[type] === undefined)
+ this.listeners[type] = new Array();
+
+ if (this.getEventListenerIndex(type, listener) === -1)
+ this.listeners[type].push(listener);
+ };
+
+ /**
+ * Remove an event listener
+ * @method removeEventListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ EventDispatcher.prototype.removeEventListener = function (type, listener) {
+ var index = this.getEventListenerIndex(type, listener);
+
+ if (index !== -1)
+ this.listeners[type].splice(index, 1);
+ };
+
+ /**
+ * Dispatch an event
+ * @method dispatchEvent
+ * @param {Event} Event to dispatch
+ */
+ EventDispatcher.prototype.dispatchEvent = function (event) {
+ var listenerArray = this.listeners[event.type];
+
+ if (listenerArray !== undefined) {
+ var l = listenerArray.length;
+
+ event.target = this.target;
+
+ for (var i = 0; i < l; i++)
+ listenerArray[i](event);
+ }
+ };
+
+ /**
+ * get Event Listener Index in array. Returns -1 if no listener is added
+ * @method getEventListenerIndex
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ EventDispatcher.prototype.getEventListenerIndex = function (type, listener) {
+ if (this.listeners[type] !== undefined) {
+ var a = this.listeners[type];
+ var l = a.length;
+
+ for (var i = 0; i < l; i++)
+ if (listener == a[i])
+ return i;
+ }
+
+ return -1;
+ };
+
+ /**
+ * check if an object has an event listener assigned to it
+ * @method hasListener
+ * @param {String} Name of event to remove a listener for
+ * @param {Function} Callback function
+ */
+ EventDispatcher.prototype.hasEventListener = function (type, listener) {
+ if (listener != null) {
+ return (this.getEventListenerIndex(type, listener) !== -1);
+ } else {
+ if (this.listeners[type] !== undefined)
+ return (this.listeners[type].length > 0);
+
+ return false;
+ }
+
+ return false;
+ };
+ return EventDispatcher;
+})();
+
+module.exports = EventDispatcher;
+
+
+},{}],"awayjs-core/lib/events/Event":[function(require,module,exports){
+var Event = (function () {
+ function Event(type) {
+ /**
+ * Type of event
+ * @property type
+ * @type String
+ */
+ this.type = undefined;
+ /**
+ * Reference to target object
+ * @property target
+ * @type Object
+ */
+ this.target = undefined;
+ this.type = type;
+ }
+ /**
+ * Clones the current event.
+ * @return An exact duplicate of the current event.
+ */
+ Event.prototype.clone = function () {
+ return new Event(this.type);
+ };
+ Event.COMPLETE = 'complete';
+ Event.OPEN = 'open';
+
+ Event.ENTER_FRAME = 'enterFrame';
+ Event.EXIT_FRAME = 'exitFrame';
+
+ Event.RESIZE = "resize";
+ Event.ERROR = "error";
+ Event.CHANGE = "change";
+ return Event;
+})();
+
+module.exports = Event;
+
+
+},{}],"awayjs-core/lib/events/GeometryEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* Dispatched to notify changes in a geometry object's state.
+*
+* @class away.events.GeometryEvent
+* @see away3d.core.base.Geometry
+*/
+var GeometryEvent = (function (_super) {
+ __extends(GeometryEvent, _super);
+ /**
+ * Create a new GeometryEvent
+ * @param type The event type.
+ * @param subGeometry An optional TriangleSubGeometry object that is the subject of this event.
+ */
+ function GeometryEvent(type, subGeometry) {
+ if (typeof subGeometry === "undefined") { subGeometry = null; }
+ _super.call(this, type);
+
+ this._subGeometry = subGeometry;
+ }
+ Object.defineProperty(GeometryEvent.prototype, "subGeometry", {
+ /**
+ * The TriangleSubGeometry object that is the subject of this event, if appropriate.
+ */
+ get: function () {
+ return this._subGeometry;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Clones the event.
+ * @return An exact duplicate of the current object.
+ */
+ GeometryEvent.prototype.clone = function () {
+ return new GeometryEvent(this.type, this._subGeometry);
+ };
+ GeometryEvent.SUB_GEOMETRY_ADDED = "SubGeometryAdded";
+
+ GeometryEvent.SUB_GEOMETRY_REMOVED = "SubGeometryRemoved";
+
+ GeometryEvent.BOUNDS_INVALID = "BoundsInvalid";
+ return GeometryEvent;
+})(Event);
+
+module.exports = GeometryEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/HTTPStatusEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* @class away.events.HTTPStatusEvent
+*/
+var HTTPStatusEvent = (function (_super) {
+ __extends(HTTPStatusEvent, _super);
+ function HTTPStatusEvent(type, status) {
+ if (typeof status === "undefined") { status = null; }
+ _super.call(this, type);
+
+ this.status = status;
+ }
+ HTTPStatusEvent.HTTP_STATUS = "httpStatus";
+ return HTTPStatusEvent;
+})(Event);
+
+module.exports = HTTPStatusEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/IEventDispatcher":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/events/IOErrorEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var IOErrorEvent = (function (_super) {
+ __extends(IOErrorEvent, _super);
+ function IOErrorEvent(type) {
+ _super.call(this, type);
+ }
+ IOErrorEvent.IO_ERROR = "ioError";
+ return IOErrorEvent;
+})(Event);
+
+module.exports = IOErrorEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/LightEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var LightEvent = (function (_super) {
+ __extends(LightEvent, _super);
+ function LightEvent(type) {
+ _super.call(this, type);
+ }
+ //@override
+ LightEvent.prototype.clone = function () {
+ return new LightEvent(this.type);
+ };
+ LightEvent.CASTS_SHADOW_CHANGE = "castsShadowChange";
+ return LightEvent;
+})(Event);
+
+module.exports = LightEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/LoaderEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var LoaderEvent = (function (_super) {
+ __extends(LoaderEvent, _super);
+ /**
+ * Create a new LoaderEvent object.
+ *
+ * @param type The event type.
+ * @param url The url of the loaded resource.
+ * @param assets The assets of the loaded resource.
+ */
+ function LoaderEvent(type, url, content, assets) {
+ if (typeof url === "undefined") { url = null; }
+ if (typeof content === "undefined") { content = null; }
+ if (typeof assets === "undefined") { assets = null; }
+ _super.call(this, type);
+
+ this._url = url;
+ this._content = content;
+ this._assets = assets;
+ }
+ Object.defineProperty(LoaderEvent.prototype, "content", {
+ /**
+ * The content returned if the resource has been loaded inside a Loader
object.
+ */
+ get: function () {
+ return this._content;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LoaderEvent.prototype, "url", {
+ /**
+ * The url of the loaded resource.
+ */
+ get: function () {
+ return this._url;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(LoaderEvent.prototype, "assets", {
+ /**
+ * The error string on loadError.
+ */
+ get: function () {
+ return this._assets;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Clones the current event.
+ * @return An exact duplicate of the current event.
+ */
+ LoaderEvent.prototype.clone = function () {
+ return new LoaderEvent(this.type, this._url, this._content, this._assets);
+ };
+ LoaderEvent.RESOURCE_COMPLETE = "resourceComplete";
+ return LoaderEvent;
+})(Event);
+
+module.exports = LoaderEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/MaterialEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var MaterialEvent = (function (_super) {
+ __extends(MaterialEvent, _super);
+ function MaterialEvent(type) {
+ _super.call(this, type);
+ }
+ MaterialEvent.SIZE_CHANGED = "sizeChanged";
+ return MaterialEvent;
+})(Event);
+
+module.exports = MaterialEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/MouseEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* A MouseEvent is dispatched when a mouse event occurs over a mouseEnabled object in View.
+* TODO: we don't have screenZ data, tho this should be easy to implement
+*/
+var MouseEvent = (function (_super) {
+ __extends(MouseEvent, _super);
+ /**
+ * Create a new MouseEvent object.
+ * @param type The type of the MouseEvent.
+ */
+ function MouseEvent(type) {
+ _super.call(this, type);
+ // Private.
+ this._iAllowedToPropagate = true;
+ }
+ Object.defineProperty(MouseEvent.prototype, "bubbles", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ var doesBubble = this._iAllowedToPropagate;
+ this._iAllowedToPropagate = true;
+
+ // Don't bubble if propagation has been stopped.
+ return doesBubble;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * @inheritDoc
+ */
+ MouseEvent.prototype.stopPropagation = function () {
+ this._iAllowedToPropagate = false;
+
+ if (this._iParentEvent)
+ this._iParentEvent.stopPropagation();
+ };
+
+ /**
+ * @inheritDoc
+ */
+ MouseEvent.prototype.stopImmediatePropagation = function () {
+ this._iAllowedToPropagate = false;
+
+ if (this._iParentEvent)
+ this._iParentEvent.stopImmediatePropagation();
+ };
+
+ /**
+ * Creates a copy of the MouseEvent object and sets the value of each property to match that of the original.
+ */
+ MouseEvent.prototype.clone = function () {
+ var result = new MouseEvent(this.type);
+
+ /* TODO: Debug / test - look into isDefaultPrevented
+ if (isDefaultPrevented())
+ result.preventDefault();
+ */
+ result.screenX = this.screenX;
+ result.screenY = this.screenY;
+
+ result.view = this.view;
+ result.object = this.object;
+ result.materialOwner = this.materialOwner;
+ result.material = this.material;
+ result.uv = this.uv;
+ result.localPosition = this.localPosition;
+ result.localNormal = this.localNormal;
+ result.index = this.index;
+ result.subGeometryIndex = this.subGeometryIndex;
+ result.delta = this.delta;
+
+ result.ctrlKey = this.ctrlKey;
+ result.shiftKey = this.shiftKey;
+
+ result._iParentEvent = this;
+ result._iAllowedToPropagate = this._iAllowedToPropagate;
+
+ return result;
+ };
+
+ Object.defineProperty(MouseEvent.prototype, "scenePosition", {
+ /**
+ * The position in scene space where the event took place
+ */
+ get: function () {
+ return this.object.sceneTransform.transformVector(this.localPosition);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(MouseEvent.prototype, "sceneNormal", {
+ /**
+ * The normal in scene space where the event took place
+ */
+ get: function () {
+ var sceneNormal = this.object.sceneTransform.deltaTransformVector(this.localNormal);
+ sceneNormal.normalize();
+
+ return sceneNormal;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ MouseEvent.MOUSE_OVER = "mouseOver3d";
+
+ MouseEvent.MOUSE_OUT = "mouseOut3d";
+
+ MouseEvent.MOUSE_UP = "mouseUp3d";
+
+ MouseEvent.MOUSE_DOWN = "mouseDown3d";
+
+ MouseEvent.MOUSE_MOVE = "mouseMove3d";
+
+ MouseEvent.CLICK = "click3d";
+
+ MouseEvent.DOUBLE_CLICK = "doubleClick3d";
+
+ MouseEvent.MOUSE_WHEEL = "mouseWheel3d";
+ return MouseEvent;
+})(Event);
+
+module.exports = MouseEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/ParserEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var ParserEvent = (function (_super) {
+ __extends(ParserEvent, _super);
+ function ParserEvent(type, message) {
+ if (typeof message === "undefined") { message = ''; }
+ _super.call(this, type);
+
+ this._message = message;
+ }
+ Object.defineProperty(ParserEvent.prototype, "message", {
+ /**
+ * Additional human-readable message. Usually supplied for ParserEvent.PARSE_ERROR events.
+ */
+ get: function () {
+ return this._message;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ ParserEvent.prototype.clone = function () {
+ return new ParserEvent(this.type, this.message);
+ };
+ ParserEvent.PARSE_COMPLETE = 'parseComplete';
+
+ ParserEvent.PARSE_ERROR = 'parseError';
+
+ ParserEvent.READY_FOR_DEPENDENCIES = 'readyForDependencies';
+ return ParserEvent;
+})(Event);
+
+module.exports = ParserEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/ProgressEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var ProgressEvent = (function (_super) {
+ __extends(ProgressEvent, _super);
+ function ProgressEvent(type) {
+ _super.call(this, type);
+ }
+ ProgressEvent.PROGRESS = "progress";
+ return ProgressEvent;
+})(Event);
+
+module.exports = ProgressEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/ProjectionEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var ProjectionEvent = (function (_super) {
+ __extends(ProjectionEvent, _super);
+ function ProjectionEvent(type, projection) {
+ _super.call(this, type);
+ this._projection = projection;
+ }
+ Object.defineProperty(ProjectionEvent.prototype, "projection", {
+ get: function () {
+ return this._projection;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ProjectionEvent.MATRIX_CHANGED = "matrixChanged";
+ return ProjectionEvent;
+})(Event);
+
+module.exports = ProjectionEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/RendererEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var RendererEvent = (function (_super) {
+ __extends(RendererEvent, _super);
+ function RendererEvent(type) {
+ _super.call(this, type);
+ }
+ RendererEvent.VIEWPORT_UPDATED = "viewportUpdated";
+ RendererEvent.SCISSOR_UPDATED = "scissorUpdated";
+ return RendererEvent;
+})(Event);
+
+module.exports = RendererEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/ResizeEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var ResizeEvent = (function (_super) {
+ __extends(ResizeEvent, _super);
+ function ResizeEvent(type, oldHeight, oldWidth) {
+ if (typeof oldHeight === "undefined") { oldHeight = NaN; }
+ if (typeof oldWidth === "undefined") { oldWidth = NaN; }
+ _super.call(this, type);
+
+ this._oldHeight = oldHeight;
+ this._oldWidth = oldWidth;
+ }
+ Object.defineProperty(ResizeEvent.prototype, "oldHeight", {
+ get: function () {
+ return this._oldHeight;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResizeEvent.prototype, "oldWidth", {
+ get: function () {
+ return this._oldWidth;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ResizeEvent.RESIZE = "resize";
+ return ResizeEvent;
+})(Event);
+
+module.exports = ResizeEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/SceneEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var SceneEvent = (function (_super) {
+ __extends(SceneEvent, _super);
+ function SceneEvent(type, displayObject) {
+ _super.call(this, type);
+
+ this.displayObject = displayObject;
+ }
+ SceneEvent.ADDED_TO_SCENE = "addedToScene";
+
+ SceneEvent.REMOVED_FROM_SCENE = "removedFromScene";
+
+ SceneEvent.PARTITION_CHANGED = "partitionChanged";
+ return SceneEvent;
+})(Event);
+
+module.exports = SceneEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/StageEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var StageEvent = (function (_super) {
+ __extends(StageEvent, _super);
+ function StageEvent(type) {
+ _super.call(this, type);
+ }
+ StageEvent.CONTEXT_CREATED = "contextCreated";
+ StageEvent.CONTEXT_DISPOSED = "contextDisposed";
+ StageEvent.CONTEXT_RECREATED = "contextRecreated";
+ StageEvent.VIEWPORT_UPDATED = "viewportUpdated";
+ return StageEvent;
+})(Event);
+
+module.exports = StageEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/SubGeometryEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+/**
+* Dispatched to notify changes in a sub geometry object's state.
+*
+* @class away.events.SubGeometryEvent
+* @see away.core.base.Geometry
+*/
+var SubGeometryEvent = (function (_super) {
+ __extends(SubGeometryEvent, _super);
+ /**
+ * Create a new GeometryEvent
+ * @param type The event type.
+ * @param dataType An optional data type of the vertex data being updated.
+ */
+ function SubGeometryEvent(type, dataType) {
+ if (typeof dataType === "undefined") { dataType = ""; }
+ _super.call(this, type);
+
+ this._dataType = dataType;
+ }
+ Object.defineProperty(SubGeometryEvent.prototype, "dataType", {
+ /**
+ * The data type of the vertex data.
+ */
+ get: function () {
+ return this._dataType;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Clones the event.
+ *
+ * @return An exact duplicate of the current object.
+ */
+ SubGeometryEvent.prototype.clone = function () {
+ return new SubGeometryEvent(this.type, this._dataType);
+ };
+ SubGeometryEvent.INDICES_UPDATED = "indicesUpdated";
+
+ SubGeometryEvent.VERTICES_UPDATED = "verticesUpdated";
+ return SubGeometryEvent;
+})(Event);
+
+module.exports = SubGeometryEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/events/TimerEvent":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Event = require("awayjs-core/lib/events/Event");
+
+var TimerEvent = (function (_super) {
+ __extends(TimerEvent, _super);
+ function TimerEvent(type) {
+ _super.call(this, type);
+ }
+ TimerEvent.TIMER = "timer";
+ TimerEvent.TIMER_COMPLETE = "timerComplete";
+ return TimerEvent;
+})(Event);
+
+module.exports = TimerEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-core/lib/managers/MouseManager":[function(require,module,exports){
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+
+var AwayMouseEvent = require("awayjs-core/lib/events/MouseEvent");
+
+/**
+* MouseManager enforces a singleton pattern and is not intended to be instanced.
+* it provides a manager class for detecting mouse hits on scene objects and sending out mouse events.
+*/
+var MouseManager = (function () {
+ /**
+ * Creates a new MouseManager
object.
+ */
+ function MouseManager() {
+ var _this = this;
+ this._viewLookup = new Array();
+ this._nullVector = new Vector3D();
+ this._queuedEvents = new Array();
+ this._mouseUp = new AwayMouseEvent(AwayMouseEvent.MOUSE_UP);
+ this._mouseClick = new AwayMouseEvent(AwayMouseEvent.CLICK);
+ this._mouseOut = new AwayMouseEvent(AwayMouseEvent.MOUSE_OUT);
+ this._mouseDown = new AwayMouseEvent(AwayMouseEvent.MOUSE_DOWN);
+ this._mouseMove = new AwayMouseEvent(AwayMouseEvent.MOUSE_MOVE);
+ this._mouseOver = new AwayMouseEvent(AwayMouseEvent.MOUSE_OVER);
+ this._mouseWheel = new AwayMouseEvent(AwayMouseEvent.MOUSE_WHEEL);
+ this._mouseDoubleClick = new AwayMouseEvent(AwayMouseEvent.DOUBLE_CLICK);
+ this.onClickDelegate = function (event) {
+ return _this.onClick(event);
+ };
+ this.onDoubleClickDelegate = function (event) {
+ return _this.onDoubleClick(event);
+ };
+ this.onMouseDownDelegate = function (event) {
+ return _this.onMouseDown(event);
+ };
+ this.onMouseMoveDelegate = function (event) {
+ return _this.onMouseMove(event);
+ };
+ this.onMouseUpDelegate = function (event) {
+ return _this.onMouseUp(event);
+ };
+ this.onMouseWheelDelegate = function (event) {
+ return _this.onMouseWheel(event);
+ };
+ this.onMouseOverDelegate = function (event) {
+ return _this.onMouseOver(event);
+ };
+ this.onMouseOutDelegate = function (event) {
+ return _this.onMouseOut(event);
+ };
+ }
+ MouseManager.getInstance = function () {
+ if (this._instance)
+ return this._instance;
+
+ return (this._instance = new MouseManager());
+ };
+
+ MouseManager.prototype.fireMouseEvents = function (forceMouseMove) {
+ // If colliding object has changed, queue over/out events.
+ if (this._iCollidingObject != this._previousCollidingObject) {
+ if (this._previousCollidingObject)
+ this.queueDispatch(this._mouseOut, this._mouseMoveEvent, this._previousCollidingObject);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseOver, this._mouseMoveEvent);
+ }
+
+ // Fire mouse move events here if forceMouseMove is on.
+ if (forceMouseMove && this._iCollidingObject)
+ this.queueDispatch(this._mouseMove, this._mouseMoveEvent);
+
+ var event;
+ var dispatcher;
+
+ // Dispatch all queued events.
+ var len = this._queuedEvents.length;
+ for (var i = 0; i < len; ++i) {
+ // Only dispatch from first implicitly enabled object ( one that is not a child of a mouseChildren = false hierarchy ).
+ event = this._queuedEvents[i];
+ dispatcher = event.object;
+
+ while (dispatcher && !dispatcher._iIsMouseEnabled())
+ dispatcher = dispatcher.parent;
+
+ if (dispatcher)
+ dispatcher.dispatchEvent(event);
+ }
+
+ this._queuedEvents.length = 0;
+
+ this._previousCollidingObject = this._iCollidingObject;
+
+ this._iUpdateDirty = false;
+ };
+
+ // public addViewLayer(view:View)
+ // {
+ // var stg:Stage = view.stage;
+ //
+ // // Add instance to mouse3dmanager to fire mouse events for multiple views
+ // if (!view.stageGL.mouse3DManager)
+ // view.stageGL.mouse3DManager = this;
+ //
+ // if (!hasKey(view))
+ // _view3Ds[view] = 0;
+ //
+ // _childDepth = 0;
+ // traverseDisplayObjects(stg);
+ // _viewCount = _childDepth;
+ // }
+ MouseManager.prototype.registerView = function (view) {
+ view.htmlElement.addEventListener("click", this.onClickDelegate);
+ view.htmlElement.addEventListener("dblclick", this.onDoubleClickDelegate);
+ view.htmlElement.addEventListener("mousedown", this.onMouseDownDelegate);
+ view.htmlElement.addEventListener("mousemove", this.onMouseMoveDelegate);
+ view.htmlElement.addEventListener("mouseup", this.onMouseUpDelegate);
+ view.htmlElement.addEventListener("mousewheel", this.onMouseWheelDelegate);
+ view.htmlElement.addEventListener("mouseover", this.onMouseOverDelegate);
+ view.htmlElement.addEventListener("mouseout", this.onMouseOutDelegate);
+
+ this._viewLookup.push(view);
+ };
+
+ MouseManager.prototype.unregisterView = function (view) {
+ view.htmlElement.removeEventListener("click", this.onClickDelegate);
+ view.htmlElement.removeEventListener("dblclick", this.onDoubleClickDelegate);
+ view.htmlElement.removeEventListener("mousedown", this.onMouseDownDelegate);
+ view.htmlElement.removeEventListener("mousemove", this.onMouseMoveDelegate);
+ view.htmlElement.removeEventListener("mouseup", this.onMouseUpDelegate);
+ view.htmlElement.removeEventListener("mousewheel", this.onMouseWheelDelegate);
+ view.htmlElement.removeEventListener("mouseover", this.onMouseOverDelegate);
+ view.htmlElement.removeEventListener("mouseout", this.onMouseOutDelegate);
+
+ this._viewLookup.slice(this._viewLookup.indexOf(view), 1);
+ };
+
+ // ---------------------------------------------------------------------
+ // Private.
+ // ---------------------------------------------------------------------
+ MouseManager.prototype.queueDispatch = function (event, sourceEvent, collider) {
+ if (typeof collider === "undefined") { collider = null; }
+ // 2D properties.
+ if (sourceEvent) {
+ event.ctrlKey = sourceEvent.ctrlKey;
+ event.altKey = sourceEvent.altKey;
+ event.shiftKey = sourceEvent.shiftKey;
+ event.screenX = sourceEvent.clientX;
+ event.screenY = sourceEvent.clientY;
+ }
+
+ if (collider == null)
+ collider = this._iCollidingObject;
+
+ // 3D properties.
+ if (collider) {
+ // Object.
+ event.object = collider.displayObject;
+ event.materialOwner = collider.materialOwner;
+
+ // UV.
+ event.uv = collider.uv;
+
+ // Position.
+ event.localPosition = collider.localPosition ? collider.localPosition.clone() : null;
+
+ // Normal.
+ event.localNormal = collider.localNormal ? collider.localNormal.clone() : null;
+
+ // Face index.
+ event.index = collider.index;
+ } else {
+ // Set all to null.
+ event.uv = null;
+ event.object = null;
+ event.localPosition = this._nullVector;
+ event.localNormal = this._nullVector;
+ event.index = 0;
+ event.subGeometryIndex = 0;
+ }
+
+ // Store event to be dispatched later.
+ this._queuedEvents.push(event);
+ };
+
+ // ---------------------------------------------------------------------
+ // Listeners.
+ // ---------------------------------------------------------------------
+ MouseManager.prototype.onMouseMove = function (event) {
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseMove, this._mouseMoveEvent = event);
+ };
+
+ MouseManager.prototype.onMouseOut = function (event) {
+ this._iActiveDiv = null;
+
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseOut, event);
+ };
+
+ MouseManager.prototype.onMouseOver = function (event) {
+ this._iActiveDiv = event.target;
+
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseOver, event);
+ };
+
+ MouseManager.prototype.onClick = function (event) {
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseClick, event);
+ };
+
+ MouseManager.prototype.onDoubleClick = function (event) {
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseDoubleClick, event);
+ };
+
+ MouseManager.prototype.onMouseDown = function (event) {
+ this._iActiveDiv = event.target;
+
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseDown, event);
+ };
+
+ MouseManager.prototype.onMouseUp = function (event) {
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseUp, event);
+ };
+
+ MouseManager.prototype.onMouseWheel = function (event) {
+ this.updateColliders(event);
+
+ if (this._iCollidingObject)
+ this.queueDispatch(this._mouseWheel, event);
+ };
+
+ MouseManager.prototype.updateColliders = function (event) {
+ if (this._iUpdateDirty)
+ return;
+
+ var view;
+ var bounds;
+ var mouseX = event.clientX;
+ var mouseY = event.clientY;
+ var len = this._viewLookup.length;
+ for (var i = 0; i < len; i++) {
+ view = this._viewLookup[i];
+ bounds = view.htmlElement.getBoundingClientRect();
+ if (mouseX < bounds.left || mouseX > bounds.right || mouseY < bounds.top || mouseY > bounds.bottom) {
+ view._pMouseX = null;
+ view._pMouseY = null;
+ } else {
+ view._pMouseX = mouseX + bounds.left;
+ view._pMouseY = mouseY + bounds.top;
+ view.updateCollider();
+
+ if (view.layeredView && this._iCollidingObject)
+ break;
+ }
+ }
+
+ this._iUpdateDirty = true;
+ };
+ return MouseManager;
+})();
+
+module.exports = MouseManager;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/events/MouseEvent":undefined}],"awayjs-core/lib/materials/CSSMaterialBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+var ImageTexture = require("awayjs-core/lib/textures/ImageTexture");
+
+/**
+* MaterialBase forms an abstract base class for any material.
+* A material consists of several passes, each of which constitutes at least one render call. Several passes could
+* be used for special effects (render lighting for many lights in several passes, render an outline in a separate
+* pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space
+* subsurface scattering, or rendering a depth map for specialized self-shadowing).
+*
+* Away3D provides default materials trough SinglePassMaterialBase and MultiPassMaterialBase, which use modular
+* methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom
+* shaders, or entire new material frameworks.
+*/
+var CSSMaterialBase = (function (_super) {
+ __extends(CSSMaterialBase, _super);
+ /**
+ * Creates a new MaterialBase object.
+ */
+ function CSSMaterialBase(texture, smooth, repeat) {
+ if (typeof texture === "undefined") { texture = null; }
+ if (typeof smooth === "undefined") { smooth = true; }
+ if (typeof repeat === "undefined") { repeat = false; }
+ _super.call(this);
+
+ this._iMaterialId = Number(this.id);
+
+ this.texture = texture;
+
+ this.smooth = smooth;
+ this.repeat = repeat;
+ }
+ Object.defineProperty(CSSMaterialBase.prototype, "imageElement", {
+ get: function () {
+ return this._imageElement;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(CSSMaterialBase.prototype, "imageStyle", {
+ get: function () {
+ return this._imageStyle;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(CSSMaterialBase.prototype, "texture", {
+ /**
+ * The texture object to use for the albedo colour.
+ */
+ get: function () {
+ return this._pTexture;
+ },
+ set: function (value) {
+ if (this._pTexture == value)
+ return;
+
+ this._pTexture = value;
+
+ if (value instanceof ImageTexture) {
+ this._imageElement = value.htmlImageElement;
+
+ var node = document.createElement("style");
+ node.type = "text/css";
+ document.getElementsByTagName("head")[0].appendChild(node);
+
+ var sheet = document.styleSheets[document.styleSheets.length - 1];
+ sheet.insertRule(".material" + this.id + "{ }", 0);
+ var style = sheet.cssRules[0].style;
+
+ style.backgroundImage = "url(" + this._imageElement.src + ")";
+ style.backgroundSize = "100% 100%";
+ style.position = "absolute";
+ style.width = this._imageElement.width + "px";
+ style.height = this._imageElement.height + "px";
+ style.transformOrigin = style["-webkit-transform-origin"] = style["-moz-transform-origin"] = style["-o-transform-origin"] = style["-ms-transform-origin"] = "0% 0%";
+
+ this._pHeight = this._imageElement.height;
+ this._pWidth = this._imageElement.width;
+
+ this._pNotifySizeChanged();
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ return CSSMaterialBase;
+})(MaterialBase);
+
+module.exports = CSSMaterialBase;
+
+
+},{"awayjs-core/lib/materials/MaterialBase":undefined,"awayjs-core/lib/textures/ImageTexture":undefined}],"awayjs-core/lib/materials/LightSources":[function(require,module,exports){
+/**
+* Enumeration class for defining which lighting types affect the specific material
+* lighting component (diffuse and specular). This can be useful if, for example, you
+* want to use light probes for diffuse global lighting, but want specular reflections from
+* traditional light sources without those affecting the diffuse light.
+*
+* @see away.materials.ColorMaterial.diffuseLightSources
+* @see away.materials.ColorMaterial.specularLightSources
+* @see away.materials.TextureMaterial.diffuseLightSources
+* @see away.materials.TextureMaterial.specularLightSources
+*/
+var LightSources = (function () {
+ function LightSources() {
+ }
+ LightSources.LIGHTS = 0x01;
+
+ LightSources.PROBES = 0x02;
+
+ LightSources.ALL = 0x03;
+ return LightSources;
+})();
+
+module.exports = LightSources;
+
+
+},{}],"awayjs-core/lib/materials/MaterialBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var BlendMode = require("awayjs-core/lib/core/base/BlendMode");
+
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+
+var Event = require("awayjs-core/lib/events/Event");
+var MaterialEvent = require("awayjs-core/lib/events/MaterialEvent");
+
+/**
+* MaterialBase forms an abstract base class for any material.
+* A material consists of several passes, each of which constitutes at least one render call. Several passes could
+* be used for special effects (render lighting for many lights in several passes, render an outline in a separate
+* pass) or to provide additional render-to-texture passes (rendering diffuse light to texture for texture-space
+* subsurface scattering, or rendering a depth map for specialized self-shadowing).
+*
+* Away3D provides default materials trough SinglePassMaterialBase and TriangleMaterial, which use modular
+* methods to build the shader code. MaterialBase can be extended to build specific and high-performant custom
+* shaders, or entire new material frameworks.
+*/
+var MaterialBase = (function (_super) {
+ __extends(MaterialBase, _super);
+ /**
+ * Creates a new MaterialBase object.
+ */
+ function MaterialBase() {
+ var _this = this;
+ _super.call(this);
+ this._materialPassData = new Array();
+ this._materialData = new Array();
+ this._pAlphaThreshold = 0;
+ this._pAnimateUVs = false;
+ this._enableLightFallOff = true;
+ this._specularLightSources = 0x01;
+ this._diffuseLightSources = 0x03;
+ /**
+ * An id for this material used to sort the renderables by shader program, which reduces Program state changes.
+ *
+ * @private
+ */
+ this._iMaterialId = 0;
+ this._iBaseScreenPassIndex = 0;
+ this._bothSides = false;
+ this._pScreenPassesInvalid = true;
+ this._pBlendMode = BlendMode.NORMAL;
+ this._numPasses = 0;
+ this._mipmap = false;
+ this._smooth = true;
+ this._repeat = false;
+ this._color = 0xFFFFFF;
+ this._pHeight = 1;
+ this._pWidth = 1;
+ this._pRequiresBlending = false;
+
+ this._iMaterialId = Number(this.id);
+
+ this._owners = new Array();
+ this._passes = new Array();
+
+ this._onPassChangeDelegate = function (event) {
+ return _this.onPassChange(event);
+ };
+ this._onLightChangeDelegate = function (event) {
+ return _this.onLightsChange(event);
+ };
+
+ this.alphaPremultiplied = false; //TODO: work out why this is different for WebGL
+ }
+ Object.defineProperty(MaterialBase.prototype, "assetType", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return AssetType.MATERIAL;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(MaterialBase.prototype, "height", {
+ /**
+ *
+ */
+ get: function () {
+ return this._pHeight;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(MaterialBase.prototype, "animationSet", {
+ /**
+ *
+ */
+ get: function () {
+ return this._animationSet;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(MaterialBase.prototype, "lightPicker", {
+ /**
+ * The light picker used by the material to provide lights to the material if it supports lighting.
+ *
+ * @see LightPickerBase
+ * @see StaticLightPicker
+ */
+ get: function () {
+ return this._pLightPicker;
+ },
+ set: function (value) {
+ if (this._pLightPicker == value)
+ return;
+
+ if (this._pLightPicker)
+ this._pLightPicker.removeEventListener(Event.CHANGE, this._onLightChangeDelegate);
+
+ this._pLightPicker = value;
+
+ if (this._pLightPicker)
+ this._pLightPicker.addEventListener(Event.CHANGE, this._onLightChangeDelegate);
+
+ this._pInvalidateScreenPasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "mipmap", {
+ /**
+ * Indicates whether or not any used textures should use mipmapping. Defaults to true.
+ */
+ get: function () {
+ return this._mipmap;
+ },
+ set: function (value) {
+ if (this._mipmap == value)
+ return;
+
+ this._mipmap = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "smooth", {
+ /**
+ * Indicates whether or not any used textures should use smoothing.
+ */
+ get: function () {
+ return this._smooth;
+ },
+ set: function (value) {
+ if (this._smooth == value)
+ return;
+
+ this._smooth = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "repeat", {
+ /**
+ * Indicates whether or not any used textures should be tiled. If set to false, texture samples are clamped to
+ * the texture's borders when the uv coordinates are outside the [0, 1] interval.
+ */
+ get: function () {
+ return this._repeat;
+ },
+ set: function (value) {
+ if (this._repeat == value)
+ return;
+
+ this._repeat = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "color", {
+ /**
+ * The diffuse reflectivity color of the surface.
+ */
+ get: function () {
+ return this._color;
+ },
+ set: function (value) {
+ if (this._color == value)
+ return;
+
+ this._color = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "texture", {
+ /**
+ * The texture object to use for the albedo colour.
+ */
+ get: function () {
+ return this._pTexture;
+ },
+ set: function (value) {
+ if (this._pTexture == value)
+ return;
+
+ this._pTexture = value;
+
+ this._pInvalidatePasses();
+
+ this._pHeight = this._pTexture.height;
+ this._pWidth = this._pTexture.width;
+
+ this._pNotifySizeChanged();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "animateUVs", {
+ /**
+ * Specifies whether or not the UV coordinates should be animated using a transformation matrix.
+ */
+ get: function () {
+ return this._pAnimateUVs;
+ },
+ set: function (value) {
+ if (this._pAnimateUVs == value)
+ return;
+
+ this._pAnimateUVs = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "enableLightFallOff", {
+ /**
+ * Whether or not to use fallOff and radius properties for lights. This can be used to improve performance and
+ * compatibility for constrained mode.
+ */
+ get: function () {
+ return this._enableLightFallOff;
+ },
+ set: function (value) {
+ if (this._enableLightFallOff == value)
+ return;
+
+ this._enableLightFallOff = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "diffuseLightSources", {
+ /**
+ * Define which light source types to use for diffuse reflections. This allows choosing between regular lights
+ * and/or light probes for diffuse reflections.
+ *
+ * @see away3d.materials.LightSources
+ */
+ get: function () {
+ return this._diffuseLightSources;
+ },
+ set: function (value) {
+ if (this._diffuseLightSources == value)
+ return;
+
+ this._diffuseLightSources = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "specularLightSources", {
+ /**
+ * Define which light source types to use for specular reflections. This allows choosing between regular lights
+ * and/or light probes for specular reflections.
+ *
+ * @see away3d.materials.LightSources
+ */
+ get: function () {
+ return this._specularLightSources;
+ },
+ set: function (value) {
+ if (this._specularLightSources == value)
+ return;
+
+ this._specularLightSources = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * Cleans up resources owned by the material, including passes. Textures are not owned by the material since they
+ * could be used by other materials and will not be disposed.
+ */
+ MaterialBase.prototype.dispose = function () {
+ var i;
+ var len;
+
+ this._pClearScreenPasses();
+
+ len = this._materialData.length;
+ for (i = 0; i < len; i++)
+ this._materialData[i].dispose();
+
+ this._materialData = new Array();
+
+ len = this._materialPassData.length;
+ for (i = 0; i < len; i++)
+ this._materialPassData[i].dispose();
+
+ this._materialPassData = new Array();
+ };
+
+ Object.defineProperty(MaterialBase.prototype, "bothSides", {
+ /**
+ * Defines whether or not the material should cull triangles facing away from the camera.
+ */
+ get: function () {
+ return this._bothSides;
+ },
+ set: function (value) {
+ if (this._bothSides = value)
+ return;
+
+ this._bothSides = value;
+
+ this._pInvalidatePasses();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(MaterialBase.prototype, "blendMode", {
+ /**
+ * The blend mode to use when drawing this renderable. The following blend modes are supported:
+ * ParserBase
provides an abstract base class for objects that convert blocks of data to data structures
+* supported by away.
+*
+* If used by AssetLoader
to automatically determine the parser type, two public static methods should
+* be implemented, with the following signatures:
+*
+* public static supportsType(extension : string) : boolean
+* Indicates whether or not a given file extension is supported by the parser.
+*
+* public static supportsData(data : *) : boolean
+* Tests whether a data block can be parsed by the parser.
+*
+* Furthermore, for any concrete subtype, the method initHandle
should be overridden to immediately
+* create the object that will contain the parsed data. This allows ResourceManager
to return an object
+* handle regardless of whether the object was loaded or not.
+*
+* @see AssetLoader
+*/
+var ParserBase = (function (_super) {
+ __extends(ParserBase, _super);
+ /**
+ * Creates a new ParserBase object
+ * @param format The data format of the file data to be parsed. Can be either ParserDataFormat.BINARY
or ParserDataFormat.PLAIN_TEXT
, and should be provided by the concrete subtype.
+ *
+ * @see away.loading.parsers.ParserDataFormat
+ */
+ function ParserBase(format) {
+ var _this = this;
+ _super.call(this);
+
+ this._materialMode = 0;
+ this._dataFormat = format;
+ this._dependencies = new Array();
+
+ this._pOnIntervalDelegate = function (event) {
+ return _this._pOnInterval(event);
+ };
+ }
+ //----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ // TODO: add error checking for the following ( could cause a problem if this function is not implemented )
+ //----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ // Needs to be implemented in all Parsers (
+ //public static supportsType(extension : string) : boolean
+ //* Indicates whether or not a given file extension is supported by the parser.
+ //----------------------------------------------------------------------------------------------------------------------------------------------------------------
+ ParserBase.supportsType = function (extension) {
+ throw new AbstractMethodError();
+ };
+
+ Object.defineProperty(ParserBase.prototype, "content", {
+ /* Protected */
+ get: function () {
+ return this._pContent;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Validates a bitmapData loaded before assigning to a default BitmapMaterial
+ */
+ ParserBase.prototype.isBitmapDataValid = function (bitmapData) {
+ var isValid = TextureUtils.isBitmapDataValid(bitmapData);
+
+ if (!isValid) {
+ console.log(">> Bitmap loaded is not having power of 2 dimensions or is higher than 2048");
+ }
+
+ return isValid;
+ };
+
+
+ Object.defineProperty(ParserBase.prototype, "parsingFailure", {
+ get: function () {
+ return this._parsingFailure;
+ },
+ set: function (b) {
+ this._parsingFailure = b;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ParserBase.prototype, "parsingPaused", {
+ get: function () {
+ return this._parsingPaused;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ParserBase.prototype, "parsingComplete", {
+ get: function () {
+ return this._parsingComplete;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ParserBase.prototype, "materialMode", {
+ get: function () {
+ return this._materialMode;
+ },
+ set: function (newMaterialMode) {
+ this._materialMode = newMaterialMode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ParserBase.prototype, "data", {
+ get: function () {
+ return this._data;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ParserBase.prototype, "dataFormat", {
+ /**
+ * The data format of the file data to be parsed. Options are URLLoaderDataFormat.BINARY
, URLLoaderDataFormat.ARRAY_BUFFER
, URLLoaderDataFormat.BLOB
, URLLoaderDataFormat.VARIABLES
or URLLoaderDataFormat.TEXT
.
+ */
+ get: function () {
+ return this._dataFormat;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Parse data (possibly containing bytearry, plain text or BitmapAsset) asynchronously, meaning that
+ * the parser will periodically stop parsing so that the AVM may proceed to the
+ * next frame.
+ *
+ * @param data The untyped data object in which the loaded data resides.
+ * @param frameLimit number of milliseconds of parsing allowed per frame. The
+ * actual time spent on a frame can exceed this number since time-checks can
+ * only be performed between logical sections of the parsing procedure.
+ */
+ ParserBase.prototype.parseAsync = function (data, frameLimit) {
+ if (typeof frameLimit === "undefined") { frameLimit = 30; }
+ this._data = data;
+ this._pStartParsing(frameLimit);
+ };
+
+ Object.defineProperty(ParserBase.prototype, "dependencies", {
+ /**
+ * A list of dependencies that need to be loaded and resolved for the object being parsed.
+ */
+ get: function () {
+ return this._dependencies;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * Resolve a dependency when it's loaded. For example, a dependency containing an ImageResource would be assigned
+ * to a Mesh instance as a BitmapMaterial, a scene graph object would be added to its intended parent. The
+ * dependency should be a member of the dependencies property.
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ ParserBase.prototype._iResolveDependency = function (resourceDependency) {
+ throw new AbstractMethodError();
+ };
+
+ /**
+ * Resolve a dependency loading failure. Used by parser to eventually provide a default map
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ ParserBase.prototype._iResolveDependencyFailure = function (resourceDependency) {
+ throw new AbstractMethodError();
+ };
+
+ /**
+ * Resolve a dependency name
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ ParserBase.prototype._iResolveDependencyName = function (resourceDependency, asset) {
+ return asset.name;
+ };
+
+ ParserBase.prototype._iResumeParsingAfterDependencies = function () {
+ this._parsingPaused = false;
+
+ if (this._timer)
+ this._timer.start();
+ };
+
+ ParserBase.prototype._pFinalizeAsset = function (asset, name) {
+ if (typeof name === "undefined") { name = null; }
+ var type_event;
+ var type_name;
+
+ if (name != null)
+ asset.name = name;
+
+ // If the asset has no name, give it
+ // a per-type default name.
+ if (!asset.name)
+ asset.name = asset.assetType;
+
+ this.dispatchEvent(new AssetEvent(AssetEvent.ASSET_COMPLETE, asset));
+ };
+
+ /**
+ * Parse the next block of data.
+ * @return Whether or not more data needs to be parsed. Can be ParserBase.ParserBase.PARSING_DONE
or
+ * ParserBase.ParserBase.MORE_TO_PARSE
.
+ */
+ ParserBase.prototype._pProceedParsing = function () {
+ throw new AbstractMethodError();
+ };
+
+ ParserBase.prototype._pDieWithError = function (message) {
+ if (typeof message === "undefined") { message = 'Unknown parsing error'; }
+ if (this._timer) {
+ this._timer.removeEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);
+ this._timer.stop();
+ this._timer = null;
+ }
+
+ this.dispatchEvent(new ParserEvent(ParserEvent.PARSE_ERROR, message));
+ };
+
+ ParserBase.prototype._pAddDependency = function (id, req, retrieveAsRawData, data, suppressErrorEvents) {
+ if (typeof retrieveAsRawData === "undefined") { retrieveAsRawData = false; }
+ if (typeof data === "undefined") { data = null; }
+ if (typeof suppressErrorEvents === "undefined") { suppressErrorEvents = false; }
+ var dependency = new ResourceDependency(id, req, data, null, this, retrieveAsRawData, suppressErrorEvents);
+ this._dependencies.push(dependency);
+
+ return dependency;
+ };
+
+ ParserBase.prototype._pPauseAndRetrieveDependencies = function () {
+ if (this._timer)
+ this._timer.stop();
+
+ this._parsingPaused = true;
+ this.dispatchEvent(new ParserEvent(ParserEvent.READY_FOR_DEPENDENCIES));
+ };
+
+ /**
+ * Tests whether or not there is still time left for parsing within the maximum allowed time frame per session.
+ * @return True if there is still time left, false if the maximum allotted time was exceeded and parsing should be interrupted.
+ */
+ ParserBase.prototype._pHasTime = function () {
+ return ((getTimer() - this._lastFrameTime) < this._frameLimit);
+ };
+
+ /**
+ * Called when the parsing pause interval has passed and parsing can proceed.
+ */
+ ParserBase.prototype._pOnInterval = function (event) {
+ if (typeof event === "undefined") { event = null; }
+ this._lastFrameTime = getTimer();
+
+ if (this._pProceedParsing() && !this._parsingFailure)
+ this._pFinishParsing();
+ };
+
+ /**
+ * Initializes the parsing of data.
+ * @param frameLimit The maximum duration of a parsing session.
+ */
+ ParserBase.prototype._pStartParsing = function (frameLimit) {
+ this._frameLimit = frameLimit;
+ this._timer = new Timer(this._frameLimit, 0);
+ this._timer.addEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);
+ this._timer.start();
+ };
+
+ /**
+ * Finish parsing the data.
+ */
+ ParserBase.prototype._pFinishParsing = function () {
+ if (this._timer) {
+ this._timer.removeEventListener(TimerEvent.TIMER, this._pOnIntervalDelegate);
+ this._timer.stop();
+ }
+
+ this._timer = null;
+ this._parsingComplete = true;
+
+ this.dispatchEvent(new ParserEvent(ParserEvent.PARSE_COMPLETE));
+ };
+
+ /**
+ *
+ * @returns {string}
+ * @private
+ */
+ ParserBase.prototype._pGetTextData = function () {
+ return ParserUtils.toString(this._data);
+ };
+
+ /**
+ *
+ * @returns {string}
+ * @private
+ */
+ ParserBase.prototype._pGetByteData = function () {
+ return ParserUtils.toByteArray(this._data);
+ };
+ ParserBase.PARSING_DONE = true;
+
+ ParserBase.MORE_TO_PARSE = false;
+ return ParserBase;
+})(EventDispatcher);
+
+module.exports = ParserBase;
+
+
+},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/AssetEvent":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/ParserEvent":undefined,"awayjs-core/lib/events/TimerEvent":undefined,"awayjs-core/lib/parsers/ParserUtils":undefined,"awayjs-core/lib/parsers/ResourceDependency":undefined,"awayjs-core/lib/utils/TextureUtils":undefined,"awayjs-core/lib/utils/Timer":undefined,"awayjs-core/lib/utils/getTimer":undefined}],"awayjs-core/lib/parsers/ParserDataFormat":[function(require,module,exports){
+/**
+* An enumeration providing values to describe the data format of parsed data.
+*/
+var ParserDataFormat = (function () {
+ function ParserDataFormat() {
+ }
+ ParserDataFormat.BINARY = "binary";
+
+ ParserDataFormat.PLAIN_TEXT = "plainText";
+
+ ParserDataFormat.IMAGE = "image";
+ return ParserDataFormat;
+})();
+
+module.exports = ParserDataFormat;
+
+
+},{}],"awayjs-core/lib/parsers/ParserUtils":[function(require,module,exports){
+var ByteArray = require("awayjs-core/lib/utils/ByteArray");
+
+var ParserUtils = (function () {
+ function ParserUtils() {
+ }
+ /**
+ * Converts an ArrayBuffer to a base64 string
+ *
+ * @param image data as a ByteArray
+ *
+ * @return HTMLImageElement
+ *
+ */
+ ParserUtils.arrayBufferToImage = function (data) {
+ var byteStr = '';
+ var bytes = new Uint8Array(data);
+ var len = bytes.byteLength;
+
+ for (var i = 0; i < len; i++)
+ byteStr += String.fromCharCode(bytes[i]);
+
+ var base64Image = window.btoa(byteStr);
+ var str = 'data:image/png;base64,' + base64Image;
+ var img = new Image();
+ img.src = str;
+
+ return img;
+ };
+
+ /**
+ * Converts an ByteArray to an Image - returns an HTMLImageElement
+ *
+ * @param image data as a ByteArray
+ *
+ * @return HTMLImageElement
+ *
+ */
+ ParserUtils.byteArrayToImage = function (data) {
+ var byteStr = '';
+ var bytes = new Uint8Array(data.arraybytes);
+ var len = bytes.byteLength;
+
+ for (var i = 0; i < len; i++)
+ byteStr += String.fromCharCode(bytes[i]);
+
+ var base64Image = window.btoa(byteStr);
+ var str = 'data:image/png;base64,' + base64Image;
+ var img = new Image();
+ img.src = str;
+
+ return img;
+ };
+
+ /**
+ * Converts an Blob to an Image - returns an HTMLImageElement
+ *
+ * @param image data as a Blob
+ *
+ * @return HTMLImageElement
+ *
+ */
+ ParserUtils.blobToImage = function (data) {
+ var URLObj = window['URL'] || window['webkitURL'];
+ var src = URLObj.createObjectURL(data);
+ var img = new Image();
+ img.src = src;
+
+ return img;
+ };
+
+ /**
+ * Returns a object as ByteArray, if possible.
+ *
+ * @param data The object to return as ByteArray
+ *
+ * @return The ByteArray or null
+ *
+ */
+ ParserUtils.toByteArray = function (data) {
+ var b = new ByteArray();
+ b.setArrayBuffer(data);
+ return b;
+ };
+
+ /**
+ * Returns a object as String, if possible.
+ *
+ * @param data The object to return as String
+ * @param length The length of the returned String
+ *
+ * @return The String or null
+ *
+ */
+ ParserUtils.toString = function (data, length) {
+ if (typeof length === "undefined") { length = 0; }
+ if (typeof data === 'string') {
+ var s = data;
+
+ if (s['substr'] != null)
+ return s.substr(0, s.length);
+ }
+
+ if (data instanceof ByteArray) {
+ var ba = data;
+ ba.position = 0;
+ return ba.readUTFBytes(Math.min(ba.getBytesAvailable(), length));
+ }
+
+ return null;
+ /*
+ var ba:ByteArray;
+
+ length ||= uint.MAX_VALUE;
+
+ if (data is String)
+ return String(data).substr(0, length);
+
+ ba = toByteArray(data);
+ if (ba) {
+ ba.position = 0;
+ return ba.readUTFBytes(Math.min(ba.bytesAvailable, length));
+ }
+
+ return null;
+
+ */
+ };
+ return ParserUtils;
+})();
+
+module.exports = ParserUtils;
+
+
+},{"awayjs-core/lib/utils/ByteArray":undefined}],"awayjs-core/lib/parsers/ResourceDependency":[function(require,module,exports){
+/**
+* ResourceDependency represents the data required to load, parse and resolve additional files ("dependencies")
+* required by a parser, used by ResourceLoadSession.
+*
+*/
+var ResourceDependency = (function () {
+ function ResourceDependency(id, request, data, parser, parentParser, retrieveAsRawData, suppressAssetEvents) {
+ if (typeof retrieveAsRawData === "undefined") { retrieveAsRawData = false; }
+ if (typeof suppressAssetEvents === "undefined") { suppressAssetEvents = false; }
+ this._id = id;
+ this._request = request;
+ this._data = data;
+ this._parser = parser;
+ this._parentParser = parentParser;
+ this._retrieveAsRawData = retrieveAsRawData;
+ this._suppressAssetEvents = suppressAssetEvents;
+
+ this._assets = new Array();
+ this._dependencies = new Array();
+ }
+ Object.defineProperty(ResourceDependency.prototype, "id", {
+ /**
+ *
+ */
+ get: function () {
+ return this._id;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "request", {
+ /**
+ *
+ */
+ get: function () {
+ return this._request;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "data", {
+ /**
+ * The data containing the dependency to be parsed, if the resource was already loaded.
+ */
+ get: function () {
+ return this._data;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "parser", {
+ /**
+ *
+ */
+ get: function () {
+ return this._parser;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "parentParser", {
+ /**
+ * The parser which is dependent on this ResourceDependency object.
+ */
+ get: function () {
+ return this._parentParser;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "retrieveAsRawData", {
+ /**
+ *
+ */
+ get: function () {
+ return this._retrieveAsRawData;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "suppresAssetEvents", {
+ /**
+ *
+ */
+ get: function () {
+ return this._suppressAssetEvents;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "assets", {
+ /**
+ *
+ */
+ get: function () {
+ return this._assets;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ResourceDependency.prototype, "dependencies", {
+ /**
+ *
+ */
+ get: function () {
+ return this._dependencies;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * @private
+ * Method to set data after having already created the dependency object, e.g. after load.
+ */
+ ResourceDependency.prototype._iSetData = function (data) {
+ this._data = data;
+ };
+
+ /**
+ * @private
+ *
+ */
+ ResourceDependency.prototype._iSetParser = function (parser) {
+ this._parser = parser;
+ };
+
+ /**
+ * Resolve the dependency when it's loaded with the parent parser. For example, a dependency containing an
+ * ImageResource would be assigned to a Mesh instance as a BitmapMaterial, a scene graph object would be added
+ * to its intended parent. The dependency should be a member of the dependencies property.
+ */
+ ResourceDependency.prototype.resolve = function () {
+ if (this._parentParser)
+ this._parentParser._iResolveDependency(this);
+ };
+
+ /**
+ * Resolve a dependency failure. For example, map loading failure from a 3d file
+ */
+ ResourceDependency.prototype.resolveFailure = function () {
+ if (this._parentParser)
+ this._parentParser._iResolveDependencyFailure(this);
+ };
+
+ /**
+ * Resolve the dependencies name
+ */
+ ResourceDependency.prototype.resolveName = function (asset) {
+ if (this._parentParser)
+ return this._parentParser._iResolveDependencyName(this, asset);
+
+ return asset.name;
+ };
+ return ResourceDependency;
+})();
+
+module.exports = ResourceDependency;
+
+
+},{}],"awayjs-core/lib/parsers/Texture2DParser":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var URLLoaderDataFormat = require("awayjs-core/lib/core/net/URLLoaderDataFormat");
+var Billboard = require("awayjs-core/lib/entities/Billboard");
+var CSSMaterialBase = require("awayjs-core/lib/materials/CSSMaterialBase");
+var ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+var ParserUtils = require("awayjs-core/lib/parsers/ParserUtils");
+var ImageTexture = require("awayjs-core/lib/textures/ImageTexture");
+
+var ByteArray = require("awayjs-core/lib/utils/ByteArray");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+/**
+* Texture2DParser provides a "parser" for natively supported image types (jpg, png). While it simply loads bytes into
+* a loader object, it wraps it in a BitmapDataResource so resource management can happen consistently without
+* exception cases.
+*/
+var Texture2DParser = (function (_super) {
+ __extends(Texture2DParser, _super);
+ /**
+ * Creates a new Texture2DParser object.
+ * @param uri The url or id of the data or file to be parsed.
+ * @param extra The holder for extra contextual data that the parser might need.
+ */
+ function Texture2DParser() {
+ _super.call(this, URLLoaderDataFormat.BLOB);
+ }
+ /**
+ * Indicates whether or not a given file extension is supported by the parser.
+ * @param extension The file extension of a potential file to be parsed.
+ * @return Whether or not the given file type is supported.
+ */
+ Texture2DParser.supportsType = function (extension) {
+ extension = extension.toLowerCase();
+ return extension == "jpg" || extension == "jpeg" || extension == "png" || extension == "gif";
+ };
+
+ /**
+ * Tests whether a data block can be parsed by the parser.
+ * @param data The data block to potentially be parsed.
+ * @return Whether or not the given data is supported.
+ */
+ Texture2DParser.supportsData = function (data) {
+ if (data instanceof HTMLImageElement)
+ return true;
+
+ if (!(data instanceof ByteArray))
+ return false;
+
+ var ba = data;
+ ba.position = 0;
+
+ if (ba.readUnsignedShort() == 0xffd8)
+ return true;
+
+ ba.position = 0;
+ if (ba.readShort() == 0x424D)
+ return true;
+
+ ba.position = 1;
+ if (ba.readUTFBytes(3) == 'PNG')
+ return true;
+
+ ba.position = 0;
+ if (ba.readUTFBytes(3) == 'GIF' && ba.readShort() == 0x3839 && ba.readByte() == 0x61)
+ return true;
+
+ ba.position = 0;
+ if (ba.readUTFBytes(3) == 'ATF')
+ return true;
+
+ return false;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ Texture2DParser.prototype._pProceedParsing = function () {
+ var _this = this;
+ var asset;
+ var sizeError = false;
+
+ if (this._loadingImage) {
+ return ParserBase.MORE_TO_PARSE;
+ } else if (this._htmlImageElement) {
+ if (TextureUtils.isHTMLImageElementValid(this._htmlImageElement)) {
+ asset = new ImageTexture(this._htmlImageElement);
+ this._pFinalizeAsset(asset, this._iFileName);
+ }
+ } else if (this.data instanceof HTMLImageElement) {
+ if (TextureUtils.isHTMLImageElementValid(this.data)) {
+ asset = new ImageTexture(this.data);
+ this._pFinalizeAsset(asset, this._iFileName);
+ } else {
+ sizeError = true;
+ }
+ } else if (this.data instanceof ByteArray) {
+ var ba = this.data;
+ ba.position = 0;
+ var htmlImageElement = ParserUtils.byteArrayToImage(this.data);
+
+ if (TextureUtils.isHTMLImageElementValid(htmlImageElement)) {
+ asset = new ImageTexture(htmlImageElement);
+ this._pFinalizeAsset(asset, this._iFileName);
+ } else {
+ sizeError = true;
+ }
+ } else if (this.data instanceof ArrayBuffer) {
+ this._htmlImageElement = ParserUtils.arrayBufferToImage(this.data);
+
+ asset = new ImageTexture(this._htmlImageElement);
+ this._pFinalizeAsset(asset, this._iFileName);
+ } else if (this.data instanceof Blob) {
+ this._htmlImageElement = ParserUtils.blobToImage(this.data);
+
+ this._htmlImageElement.onload = function (event) {
+ return _this.onLoadComplete(event);
+ };
+ this._loadingImage = true;
+
+ return ParserBase.MORE_TO_PARSE;
+ }
+
+ if (sizeError == true) {
+ // asset = new BitmapTexture(DefaultMaterialManager.createCheckeredBitmapData(), false);
+ // this._pFinalizeAsset(Torus
object.
+ * @param radius The radius of the torus.
+ * @param tuebRadius The radius of the inner tube of the torus.
+ * @param segmentsR Defines the number of horizontal segments that make up the torus.
+ * @param segmentsT Defines the number of vertical segments that make up the torus.
+ * @param yUp Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ function PrimitiveTorusPrefab(radius, tubeRadius, segmentsR, segmentsT, yUp) {
+ if (typeof radius === "undefined") { radius = 50; }
+ if (typeof tubeRadius === "undefined") { tubeRadius = 50; }
+ if (typeof segmentsR === "undefined") { segmentsR = 16; }
+ if (typeof segmentsT === "undefined") { segmentsT = 8; }
+ if (typeof yUp === "undefined") { yUp = true; }
+ _super.call(this);
+ this._numVertices = 0;
+
+ this._radius = radius;
+ this._tubeRadius = tubeRadius;
+ this._segmentsR = segmentsR;
+ this._segmentsT = segmentsT;
+ this._yUp = yUp;
+ }
+ Object.defineProperty(PrimitiveTorusPrefab.prototype, "radius", {
+ /**
+ * The radius of the torus.
+ */
+ get: function () {
+ return this._radius;
+ },
+ set: function (value) {
+ this._radius = value;
+ this._pInvalidateGeometry();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PrimitiveTorusPrefab.prototype, "tubeRadius", {
+ /**
+ * The radius of the inner tube of the torus.
+ */
+ get: function () {
+ return this._tubeRadius;
+ },
+ set: function (value) {
+ this._tubeRadius = value;
+ this._pInvalidateGeometry();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PrimitiveTorusPrefab.prototype, "segmentsR", {
+ /**
+ * Defines the number of horizontal segments that make up the torus. Defaults to 16.
+ */
+ get: function () {
+ return this._segmentsR;
+ },
+ set: function (value) {
+ this._segmentsR = value;
+ this._pInvalidateGeometry();
+ this._pInvalidateUVs();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PrimitiveTorusPrefab.prototype, "segmentsT", {
+ /**
+ * Defines the number of vertical segments that make up the torus. Defaults to 8.
+ */
+ get: function () {
+ return this._segmentsT;
+ },
+ set: function (value) {
+ this._segmentsT = value;
+ this._pInvalidateGeometry();
+ this._pInvalidateUVs();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PrimitiveTorusPrefab.prototype, "yUp", {
+ /**
+ * Defines whether the torus poles should lay on the Y-axis (true) or on the Z-axis (false).
+ */
+ get: function () {
+ return this._yUp;
+ },
+ set: function (value) {
+ this._yUp = value;
+ this._pInvalidateGeometry();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ * @inheritDoc
+ */
+ PrimitiveTorusPrefab.prototype._pBuildGeometry = function (target, geometryType) {
+ var indices;
+ var positions;
+ var normals;
+ var tangents;
+
+ var i, j;
+ var x, y, z, nx, ny, nz, revolutionAngleR, revolutionAngleT;
+ var vidx;
+ var fidx;
+ var numIndices = 0;
+
+ if (geometryType == "triangleSubGeometry") {
+ var triangleGeometry = target;
+
+ // evaluate target number of vertices, triangles and indices
+ this._numVertices = (this._segmentsT + 1) * (this._segmentsR + 1); // segmentsT + 1 because of closure, segmentsR + 1 because of closure
+ numIndices = this._segmentsT * this._segmentsR * 6; // each level has segmentR quads, each of 2 triangles
+
+ // need to initialize raw arrays or can be reused?
+ if (this._numVertices == triangleGeometry.numVertices) {
+ indices = triangleGeometry.indices;
+ positions = triangleGeometry.positions;
+ normals = triangleGeometry.vertexNormals;
+ tangents = triangleGeometry.vertexTangents;
+ } else {
+ indices = new Array(numIndices);
+ positions = new Array(this._numVertices * 3);
+ normals = new Array(this._numVertices * 3);
+ tangents = new Array(this._numVertices * 3);
+
+ this._pInvalidateUVs();
+ }
+
+ vidx = 0;
+ fidx = 0;
+
+ // evaluate revolution steps
+ var revolutionAngleDeltaR = 2 * Math.PI / this._segmentsR;
+ var revolutionAngleDeltaT = 2 * Math.PI / this._segmentsT;
+
+ var comp1, comp2;
+ var t1, t2, n1, n2;
+ var startIndex = 0;
+ var nextVertexIndex = 0;
+
+ // surface
+ var a, b, c, d, length;
+
+ for (j = 0; j <= this._segmentsT; ++j) {
+ startIndex = nextVertexIndex * 3;
+
+ for (i = 0; i <= this._segmentsR; ++i) {
+ // revolution vertex
+ revolutionAngleR = i * revolutionAngleDeltaR;
+ revolutionAngleT = j * revolutionAngleDeltaT;
+
+ length = Math.cos(revolutionAngleT);
+ nx = length * Math.cos(revolutionAngleR);
+ ny = length * Math.sin(revolutionAngleR);
+ nz = Math.sin(revolutionAngleT);
+
+ x = this._radius * Math.cos(revolutionAngleR) + this._tubeRadius * nx;
+ y = this._radius * Math.sin(revolutionAngleR) + this._tubeRadius * ny;
+ z = (j == this._segmentsT) ? 0 : this._tubeRadius * nz;
+
+ if (this._yUp) {
+ n1 = -nz;
+ n2 = ny;
+ t1 = 0;
+ t2 = (length ? nx / length : x / this._radius);
+ comp1 = -z;
+ comp2 = y;
+ } else {
+ n1 = ny;
+ n2 = nz;
+ t1 = (length ? nx / length : x / this._radius);
+ t2 = 0;
+ comp1 = y;
+ comp2 = z;
+ }
+
+ if (i == this._segmentsR) {
+ positions[vidx] = x;
+ positions[vidx + 1] = positions[startIndex + 1];
+ positions[vidx + 2] = positions[startIndex + 2];
+ } else {
+ positions[vidx] = x;
+ positions[vidx + 1] = comp1;
+ positions[vidx + 2] = comp2;
+ }
+
+ normals[vidx] = nx;
+ normals[vidx + 1] = n1;
+ normals[vidx + 2] = n2;
+ tangents[vidx] = -(length ? ny / length : y / this._radius);
+ tangents[vidx + 1] = t1;
+ tangents[vidx + 2] = t2;
+
+ vidx += 3;
+
+ // close triangle
+ if (i > 0 && j > 0) {
+ a = nextVertexIndex; // current
+ b = nextVertexIndex - 1; // previous
+ c = b - this._segmentsR - 1; // previous of last level
+ d = a - this._segmentsR - 1; // current of last level
+
+ indices[fidx++] = a;
+ indices[fidx++] = b;
+ indices[fidx++] = c;
+
+ indices[fidx++] = a;
+ indices[fidx++] = c;
+ indices[fidx++] = d;
+ }
+
+ nextVertexIndex++;
+ }
+ }
+
+ // build real data from raw data
+ triangleGeometry.updateIndices(indices);
+
+ triangleGeometry.updatePositions(positions);
+ triangleGeometry.updateVertexNormals(normals);
+ triangleGeometry.updateVertexTangents(tangents);
+ } else if (geometryType == "lineSubGeometry") {
+ //TODO
+ }
+ };
+
+ /**
+ * @inheritDoc
+ */
+ PrimitiveTorusPrefab.prototype._pBuildUVs = function (target, geometryType) {
+ var i, j;
+ var uvs;
+
+ if (geometryType == "triangleSubGeometry") {
+ var triangleGeometry = target;
+
+ // need to initialize raw array or can be reused?
+ if (triangleGeometry.uvs && this._numVertices == triangleGeometry.numVertices) {
+ uvs = triangleGeometry.uvs;
+ } else {
+ uvs = new Array(this._numVertices * 2);
+ }
+
+ // current uv component index
+ var index = 0;
+
+ for (j = 0; j <= this._segmentsT; ++j) {
+ for (i = 0; i <= this._segmentsR; ++i) {
+ // revolution vertex
+ uvs[index++] = (i / this._segmentsR) * triangleGeometry.scaleU;
+ uvs[index++] = (j / this._segmentsT) * triangleGeometry.scaleV;
+ }
+ }
+
+ // build real data from raw data
+ triangleGeometry.updateUVs(uvs);
+ } else if (geometryType == "lineSubGeometry") {
+ //nothing to do here
+ }
+ };
+ return PrimitiveTorusPrefab;
+})(PrimitivePrefabBase);
+
+module.exports = PrimitiveTorusPrefab;
+
+
+},{"awayjs-core/lib/prefabs/PrimitivePrefabBase":undefined}],"awayjs-core/lib/projections/CoordinateSystem":[function(require,module,exports){
+/**
+* Provides constant values for camera lens projection options use the the coordinateSystem
property
+*
+* @see away.projections.PerspectiveLens#coordinateSystem
+*/
+var CoordinateSystem = (function () {
+ function CoordinateSystem() {
+ }
+ CoordinateSystem.LEFT_HANDED = "leftHanded";
+
+ CoordinateSystem.RIGHT_HANDED = "rightHanded";
+ return CoordinateSystem;
+})();
+
+module.exports = CoordinateSystem;
+
+
+},{}],"awayjs-core/lib/projections/FreeMatrixProjection":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var PerspectiveProjection = require("awayjs-core/lib/projections/PerspectiveProjection");
+var ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+
+var FreeMatrixProjection = (function (_super) {
+ __extends(FreeMatrixProjection, _super);
+ function FreeMatrixProjection() {
+ _super.call(this);
+
+ this._pMatrix.copyFrom(new PerspectiveProjection().matrix);
+ }
+ Object.defineProperty(FreeMatrixProjection.prototype, "near", {
+ //@override
+ set: function (value) {
+ this._pNear = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(FreeMatrixProjection.prototype, "far", {
+ //@override
+ set: function (value) {
+ this._pFar = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(FreeMatrixProjection.prototype, "iAspectRatio", {
+ //@override
+ set: function (value) {
+ this._pAspectRatio = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ //@override
+ FreeMatrixProjection.prototype.clone = function () {
+ var clone = new FreeMatrixProjection();
+ clone._pMatrix.copyFrom(this._pMatrix);
+ clone._pNear = this._pNear;
+ clone._pFar = this._pFar;
+ clone._pAspectRatio = this._pAspectRatio;
+ clone.pInvalidateMatrix();
+ return clone;
+ };
+
+ //@override
+ FreeMatrixProjection.prototype.pUpdateMatrix = function () {
+ this._pMatrixInvalid = false;
+ };
+ return FreeMatrixProjection;
+})(ProjectionBase);
+
+module.exports = FreeMatrixProjection;
+
+
+},{"awayjs-core/lib/projections/PerspectiveProjection":undefined,"awayjs-core/lib/projections/ProjectionBase":undefined}],"awayjs-core/lib/projections/IProjection":[function(require,module,exports){
+
+
+
+},{}],"awayjs-core/lib/projections/ObliqueNearPlaneProjection":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ProjectionEvent = require("awayjs-core/lib/events/ProjectionEvent");
+
+var ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+
+var ObliqueNearPlaneProjection = (function (_super) {
+ __extends(ObliqueNearPlaneProjection, _super);
+ function ObliqueNearPlaneProjection(baseProjection, plane) {
+ var _this = this;
+ _super.call(this);
+ this.baseProjection = baseProjection;
+ this.plane = plane;
+
+ this._onProjectionMatrixChangedDelegate = function (event) {
+ return _this.onProjectionMatrixChanged(event);
+ };
+ }
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "frustumCorners", {
+ //@override
+ get: function () {
+ return this._baseProjection.frustumCorners;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "near", {
+ //@override
+ get: function () {
+ return this._baseProjection.near;
+ },
+ //@override
+ set: function (value) {
+ this._baseProjection.near = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "far", {
+ //@override
+ get: function () {
+ return this._baseProjection.far;
+ },
+ //@override
+ set: function (value) {
+ this._baseProjection.far = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "iAspectRatio", {
+ //@override
+ get: function () {
+ return this._baseProjection._iAspectRatio;
+ },
+ //@override
+ set: function (value) {
+ this._baseProjection._iAspectRatio = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "plane", {
+ get: function () {
+ return this._plane;
+ },
+ set: function (value) {
+ this._plane = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ObliqueNearPlaneProjection.prototype, "baseProjection", {
+ set: function (value) {
+ if (this._baseProjection) {
+ this._baseProjection.removeEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);
+ }
+ this._baseProjection = value;
+
+ if (this._baseProjection) {
+ this._baseProjection.addEventListener(ProjectionEvent.MATRIX_CHANGED, this._onProjectionMatrixChangedDelegate);
+ }
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ ObliqueNearPlaneProjection.prototype.onProjectionMatrixChanged = function (event) {
+ this.pInvalidateMatrix();
+ };
+
+ //@override
+ ObliqueNearPlaneProjection.prototype.pUpdateMatrix = function () {
+ this._pMatrix.copyFrom(this._baseProjection.matrix);
+
+ var cx = this._plane.a;
+ var cy = this._plane.b;
+ var cz = this._plane.c;
+ var cw = -this._plane.d + .05;
+ var signX = cx >= 0 ? 1 : -1;
+ var signY = cy >= 0 ? 1 : -1;
+ var p = new Vector3D(signX, signY, 1, 1);
+ var inverse = this._pMatrix.clone();
+ inverse.invert();
+ var q = inverse.transformVector(p);
+ this._pMatrix.copyRowTo(3, p);
+ var a = (q.x * p.x + q.y * p.y + q.z * p.z + q.w * p.w) / (cx * q.x + cy * q.y + cz * q.z + cw * q.w);
+ this._pMatrix.copyRowFrom(2, new Vector3D(cx * a, cy * a, cz * a, cw * a));
+ };
+ return ObliqueNearPlaneProjection;
+})(ProjectionBase);
+
+module.exports = ObliqueNearPlaneProjection;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/events/ProjectionEvent":undefined,"awayjs-core/lib/projections/ProjectionBase":undefined}],"awayjs-core/lib/projections/OrthographicOffCenterProjection":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+
+var OrthographicOffCenterProjection = (function (_super) {
+ __extends(OrthographicOffCenterProjection, _super);
+ function OrthographicOffCenterProjection(minX, maxX, minY, maxY) {
+ _super.call(this);
+ this._minX = minX;
+ this._maxX = maxX;
+ this._minY = minY;
+ this._maxY = maxY;
+ }
+ Object.defineProperty(OrthographicOffCenterProjection.prototype, "minX", {
+ get: function () {
+ return this._minX;
+ },
+ set: function (value) {
+ this._minX = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(OrthographicOffCenterProjection.prototype, "maxX", {
+ get: function () {
+ return this._maxX;
+ },
+ set: function (value) {
+ this._maxX = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(OrthographicOffCenterProjection.prototype, "minY", {
+ get: function () {
+ return this._minY;
+ },
+ set: function (value) {
+ this._minY = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(OrthographicOffCenterProjection.prototype, "maxY", {
+ get: function () {
+ return this._maxY;
+ },
+ set: function (value) {
+ this._maxY = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ //@override
+ OrthographicOffCenterProjection.prototype.unproject = function (nX, nY, sZ) {
+ var v = new Vector3D(nX, -nY, sZ, 1.0);
+ v = this.unprojectionMatrix.transformVector(v);
+
+ //z is unaffected by transform
+ v.z = sZ;
+
+ return v;
+ };
+
+ //@override
+ OrthographicOffCenterProjection.prototype.clone = function () {
+ var clone = new OrthographicOffCenterProjection(this._minX, this._maxX, this._minY, this._maxY);
+ clone._pNear = this._pNear;
+ clone._pFar = this._pFar;
+ clone._pAspectRatio = this._pAspectRatio;
+ return clone;
+ };
+
+ //@override
+ OrthographicOffCenterProjection.prototype.pUpdateMatrix = function () {
+ var raw = [];
+ var w = 1 / (this._maxX - this._minX);
+ var h = 1 / (this._maxY - this._minY);
+ var d = 1 / (this._pFar - this._pNear);
+
+ raw[0] = 2 * w;
+ raw[5] = 2 * h;
+ raw[10] = d;
+ raw[12] = -(this._maxX + this._minX) * w;
+ raw[13] = -(this._maxY + this._minY) * h;
+ raw[14] = -this._pNear * d;
+ raw[15] = 1;
+ raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;
+ this._pMatrix.copyRawDataFrom(raw);
+
+ this._pFrustumCorners[0] = this._pFrustumCorners[9] = this._pFrustumCorners[12] = this._pFrustumCorners[21] = this._minX;
+ this._pFrustumCorners[3] = this._pFrustumCorners[6] = this._pFrustumCorners[15] = this._pFrustumCorners[18] = this._maxX;
+ this._pFrustumCorners[1] = this._pFrustumCorners[4] = this._pFrustumCorners[13] = this._pFrustumCorners[16] = this._minY;
+ this._pFrustumCorners[7] = this._pFrustumCorners[10] = this._pFrustumCorners[19] = this._pFrustumCorners[22] = this._maxY;
+ this._pFrustumCorners[2] = this._pFrustumCorners[5] = this._pFrustumCorners[8] = this._pFrustumCorners[11] = this._pNear;
+ this._pFrustumCorners[14] = this._pFrustumCorners[17] = this._pFrustumCorners[20] = this._pFrustumCorners[23] = this._pFar;
+
+ this._pMatrixInvalid = false;
+ };
+ return OrthographicOffCenterProjection;
+})(ProjectionBase);
+
+module.exports = OrthographicOffCenterProjection;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/projections/ProjectionBase":undefined}],"awayjs-core/lib/projections/OrthographicProjection":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+
+var OrthographicProjection = (function (_super) {
+ __extends(OrthographicProjection, _super);
+ function OrthographicProjection(projectionHeight) {
+ if (typeof projectionHeight === "undefined") { projectionHeight = 500; }
+ _super.call(this);
+ this._projectionHeight = projectionHeight;
+ }
+ Object.defineProperty(OrthographicProjection.prototype, "projectionHeight", {
+ get: function () {
+ return this._projectionHeight;
+ },
+ set: function (value) {
+ if (value == this._projectionHeight) {
+ return;
+ }
+ this._projectionHeight = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ //@override
+ OrthographicProjection.prototype.unproject = function (nX, nY, sZ) {
+ var v = new Vector3D(nX + this.matrix.rawData[12], -nY + this.matrix.rawData[13], sZ, 1.0);
+ v = this.unprojectionMatrix.transformVector(v);
+
+ //z is unaffected by transform
+ v.z = sZ;
+
+ return v;
+ };
+
+ //@override
+ OrthographicProjection.prototype.clone = function () {
+ var clone = new OrthographicProjection();
+ clone._pNear = this._pNear;
+ clone._pFar = this._pFar;
+ clone._pAspectRatio = this._pAspectRatio;
+ clone.projectionHeight = this._projectionHeight;
+ return clone;
+ };
+
+ //@override
+ OrthographicProjection.prototype.pUpdateMatrix = function () {
+ var raw = [];
+ this._yMax = this._projectionHeight * .5;
+ this._xMax = this._yMax * this._pAspectRatio;
+
+ var left;
+ var right;
+ var top;
+ var bottom;
+
+ if (this._pScissorRect.x == 0 && this._pScissorRect.y == 0 && this._pScissorRect.width == this._pViewPort.width && this._pScissorRect.height == this._pViewPort.height) {
+ // assume symmetric frustum
+ left = -this._xMax;
+ right = this._xMax;
+ top = -this._yMax;
+ bottom = this._yMax;
+
+ raw[0] = 2 / (this._projectionHeight * this._pAspectRatio);
+ raw[5] = 2 / this._projectionHeight;
+ raw[10] = 1 / (this._pFar - this._pNear);
+ raw[14] = this._pNear / (this._pNear - this._pFar);
+ raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = raw[12] = raw[13] = 0;
+ raw[15] = 1;
+ } else {
+ var xWidth = this._xMax * (this._pViewPort.width / this._pScissorRect.width);
+ var yHgt = this._yMax * (this._pViewPort.height / this._pScissorRect.height);
+ var center = this._xMax * (this._pScissorRect.x * 2 - this._pViewPort.width) / this._pScissorRect.width + this._xMax;
+ var middle = -this._yMax * (this._pScissorRect.y * 2 - this._pViewPort.height) / this._pScissorRect.height - this._yMax;
+
+ left = center - xWidth;
+ right = center + xWidth;
+ top = middle - yHgt;
+ bottom = middle + yHgt;
+
+ raw[0] = 2 * 1 / (right - left);
+ raw[5] = -2 * 1 / (top - bottom);
+ raw[10] = 1 / (this._pFar - this._pNear);
+
+ raw[12] = (right + left) / (right - left);
+ raw[13] = (bottom + top) / (bottom - top);
+ raw[14] = this._pNear / (this.near - this.far);
+
+ raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[8] = raw[9] = raw[11] = 0;
+ raw[15] = 1;
+ }
+
+ this._pFrustumCorners[0] = this._pFrustumCorners[9] = this._pFrustumCorners[12] = this._pFrustumCorners[21] = left;
+ this._pFrustumCorners[3] = this._pFrustumCorners[6] = this._pFrustumCorners[15] = this._pFrustumCorners[18] = right;
+ this._pFrustumCorners[1] = this._pFrustumCorners[4] = this._pFrustumCorners[13] = this._pFrustumCorners[16] = top;
+ this._pFrustumCorners[7] = this._pFrustumCorners[10] = this._pFrustumCorners[19] = this._pFrustumCorners[22] = bottom;
+ this._pFrustumCorners[2] = this._pFrustumCorners[5] = this._pFrustumCorners[8] = this._pFrustumCorners[11] = this._pNear;
+ this._pFrustumCorners[14] = this._pFrustumCorners[17] = this._pFrustumCorners[20] = this._pFrustumCorners[23] = this._pFar;
+
+ this._pMatrix.copyRawDataFrom(raw);
+
+ this._pMatrixInvalid = false;
+ };
+ return OrthographicProjection;
+})(ProjectionBase);
+
+module.exports = OrthographicProjection;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/projections/ProjectionBase":undefined}],"awayjs-core/lib/projections/PerspectiveProjection":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var CoordinateSystem = require("awayjs-core/lib/projections/CoordinateSystem");
+var ProjectionBase = require("awayjs-core/lib/projections/ProjectionBase");
+
+var PerspectiveProjection = (function (_super) {
+ __extends(PerspectiveProjection, _super);
+ function PerspectiveProjection(fieldOfView, coordinateSystem) {
+ if (typeof fieldOfView === "undefined") { fieldOfView = 60; }
+ if (typeof coordinateSystem === "undefined") { coordinateSystem = "leftHanded"; }
+ _super.call(this, coordinateSystem);
+ this._fieldOfView = 60;
+ this._focalLength = 1000;
+ this._hFieldOfView = 60;
+ this._hFocalLength = 1000;
+ this._preserveAspectRatio = true;
+ this._preserveFocalLength = false;
+ this.fieldOfView = fieldOfView;
+ }
+ Object.defineProperty(PerspectiveProjection.prototype, "preserveAspectRatio", {
+ /**
+ *
+ */
+ get: function () {
+ return this._preserveAspectRatio;
+ },
+ set: function (value) {
+ if (this._preserveAspectRatio == value)
+ return;
+
+ this._preserveAspectRatio = value;
+
+ if (this._preserveAspectRatio)
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PerspectiveProjection.prototype, "preserveFocalLength", {
+ /**
+ *
+ */
+ get: function () {
+ return this._preserveFocalLength;
+ },
+ set: function (value) {
+ if (this._preserveFocalLength == value)
+ return;
+
+ this._preserveFocalLength = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PerspectiveProjection.prototype, "fieldOfView", {
+ /**
+ *
+ */
+ get: function () {
+ return this._fieldOfView;
+ },
+ set: function (value) {
+ if (this._fieldOfView == value)
+ return;
+
+ this._fieldOfView = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PerspectiveProjection.prototype, "focalLength", {
+ /**
+ *
+ */
+ get: function () {
+ return this._focalLength;
+ },
+ set: function (value) {
+ if (this._focalLength == value)
+ return;
+
+ this._focalLength = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PerspectiveProjection.prototype, "hFieldOfView", {
+ /**
+ *
+ */
+ get: function () {
+ return this._hFieldOfView;
+ },
+ set: function (value) {
+ if (this._hFieldOfView == value)
+ return;
+
+ this._hFieldOfView = value;
+
+ this._hFocalLength = 1 / Math.tan(this._hFieldOfView * Math.PI / 360);
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(PerspectiveProjection.prototype, "hFocalLength", {
+ /**
+ *
+ */
+ get: function () {
+ return this._hFocalLength;
+ },
+ set: function (value) {
+ if (this._hFocalLength == value)
+ return;
+
+ this._hFocalLength = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ //@override
+ PerspectiveProjection.prototype.unproject = function (nX, nY, sZ) {
+ var v = new Vector3D(nX, -nY, sZ, 1.0);
+
+ v.x *= sZ;
+ v.y *= sZ;
+
+ v = this.unprojectionMatrix.transformVector(v);
+
+ //z is unaffected by transform
+ v.z = sZ;
+
+ return v;
+ };
+
+ //@override
+ PerspectiveProjection.prototype.clone = function () {
+ var clone = new PerspectiveProjection(this._fieldOfView);
+ clone._pNear = this._pNear;
+ clone._pFar = this._pFar;
+ clone._pAspectRatio = this._pAspectRatio;
+ clone._pCoordinateSystem = this._pCoordinateSystem;
+ return clone;
+ };
+
+ //@override
+ PerspectiveProjection.prototype.pUpdateMatrix = function () {
+ var raw = [];
+
+ if (this._preserveFocalLength) {
+ if (this._preserveAspectRatio)
+ this._hFocalLength = this._focalLength;
+
+ this._fieldOfView = Math.atan(0.5 * this._pScissorRect.height / this._focalLength) * 360 / Math.PI;
+ this._hFieldOfView = Math.atan(0.5 * this._pScissorRect.width / this._hFocalLength) * 360 / Math.PI;
+ } else {
+ this._focalLength = 0.5 * this._pScissorRect.height / Math.tan(this._fieldOfView * Math.PI / 360);
+
+ if (this._preserveAspectRatio)
+ this._hFocalLength = this._focalLength;
+ else
+ this._hFocalLength = 0.5 * this._pScissorRect.width / Math.tan(this._hFieldOfView * Math.PI / 360);
+ }
+
+ var tanMinX = -this._pOriginX / this._hFocalLength;
+ var tanMaxX = (1 - this._pOriginX) / this._hFocalLength;
+ var tanMinY = -this._pOriginY / this._focalLength;
+ var tanMaxY = (1 - this._pOriginY) / this._focalLength;
+
+ var left;
+ var right;
+ var top;
+ var bottom;
+
+ // assume scissored frustum
+ var center = -((tanMinX - tanMaxX) * this._pScissorRect.x + tanMinX * this._pScissorRect.width);
+ var middle = ((tanMinY - tanMaxY) * this._pScissorRect.y + tanMinY * this._pScissorRect.height);
+
+ left = center - (tanMaxX - tanMinX) * this._pViewPort.width;
+ right = center;
+ top = middle;
+ bottom = middle + (tanMaxY - tanMinY) * this._pViewPort.height;
+
+ raw[0] = 2 / (right - left);
+ raw[5] = 2 / (bottom - top);
+ raw[8] = (right + left) / (right - left);
+ raw[9] = (bottom + top) / (bottom - top);
+ raw[10] = (this._pFar + this._pNear) / (this._pFar - this._pNear);
+ raw[11] = 1;
+ raw[1] = raw[2] = raw[3] = raw[4] = raw[6] = raw[7] = raw[12] = raw[13] = raw[15] = 0;
+ raw[14] = -2 * this._pFar * this._pNear / (this._pFar - this._pNear);
+
+ if (this._pCoordinateSystem == CoordinateSystem.RIGHT_HANDED)
+ raw[5] = -raw[5];
+
+ this._pMatrix.copyRawDataFrom(raw);
+
+ this._pFrustumCorners[0] = this._pFrustumCorners[9] = this._pNear * left;
+ this._pFrustumCorners[3] = this._pFrustumCorners[6] = this._pNear * right;
+ this._pFrustumCorners[1] = this._pFrustumCorners[4] = this._pNear * top;
+ this._pFrustumCorners[7] = this._pFrustumCorners[10] = this._pNear * bottom;
+
+ this._pFrustumCorners[12] = this._pFrustumCorners[21] = this._pFar * left;
+ this._pFrustumCorners[15] = this._pFrustumCorners[18] = this._pFar * right;
+ this._pFrustumCorners[13] = this._pFrustumCorners[16] = this._pFar * top;
+ this._pFrustumCorners[19] = this._pFrustumCorners[22] = this._pFar * bottom;
+
+ this._pFrustumCorners[2] = this._pFrustumCorners[5] = this._pFrustumCorners[8] = this._pFrustumCorners[11] = this._pNear;
+ this._pFrustumCorners[14] = this._pFrustumCorners[17] = this._pFrustumCorners[20] = this._pFrustumCorners[23] = this._pFar;
+
+ this._pMatrixInvalid = false;
+ };
+ return PerspectiveProjection;
+})(ProjectionBase);
+
+module.exports = PerspectiveProjection;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/projections/CoordinateSystem":undefined,"awayjs-core/lib/projections/ProjectionBase":undefined}],"awayjs-core/lib/projections/ProjectionBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+var ProjectionEvent = require("awayjs-core/lib/events/ProjectionEvent");
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+
+var ProjectionBase = (function (_super) {
+ __extends(ProjectionBase, _super);
+ function ProjectionBase(coordinateSystem) {
+ if (typeof coordinateSystem === "undefined") { coordinateSystem = "leftHanded"; }
+ _super.call(this);
+ this._pMatrix = new Matrix3D();
+ this._pScissorRect = new Rectangle();
+ this._pViewPort = new Rectangle();
+ this._pNear = 20;
+ this._pFar = 3000;
+ this._pAspectRatio = 1;
+ this._pMatrixInvalid = true;
+ this._pFrustumCorners = [];
+ this._pOriginX = 0.5;
+ this._pOriginY = 0.5;
+ this._unprojectionInvalid = true;
+
+ this.coordinateSystem = coordinateSystem;
+ }
+ Object.defineProperty(ProjectionBase.prototype, "coordinateSystem", {
+ /**
+ * The handedness of the coordinate system projection. The default is LEFT_HANDED.
+ */
+ get: function () {
+ return this._pCoordinateSystem;
+ },
+ set: function (value) {
+ if (this._pCoordinateSystem == value)
+ return;
+
+ this._pCoordinateSystem = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "frustumCorners", {
+ get: function () {
+ return this._pFrustumCorners;
+ },
+ set: function (frustumCorners) {
+ this._pFrustumCorners = frustumCorners;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "matrix", {
+ get: function () {
+ if (this._pMatrixInvalid) {
+ this.pUpdateMatrix();
+ this._pMatrixInvalid = false;
+ }
+ return this._pMatrix;
+ },
+ set: function (value) {
+ this._pMatrix = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "near", {
+ get: function () {
+ return this._pNear;
+ },
+ set: function (value) {
+ if (value == this._pNear) {
+ return;
+ }
+ this._pNear = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "originX", {
+ get: function () {
+ return this._pOriginX;
+ },
+ set: function (value) {
+ if (this._pOriginX == value)
+ return;
+
+ this._pOriginX = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "originY", {
+ get: function () {
+ return this._pOriginY;
+ },
+ set: function (value) {
+ if (this._pOriginY == value)
+ return;
+
+ this._pOriginY = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ProjectionBase.prototype, "far", {
+ get: function () {
+ return this._pFar;
+ },
+ set: function (value) {
+ if (value == this._pFar) {
+ return;
+ }
+ this._pFar = value;
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ ProjectionBase.prototype.project = function (point3d) {
+ var v = this.matrix.transformVector(point3d);
+ v.x = v.x / v.w;
+ v.y = -v.y / v.w;
+
+ //z is unaffected by transform
+ v.z = point3d.z;
+
+ return v;
+ };
+
+ Object.defineProperty(ProjectionBase.prototype, "unprojectionMatrix", {
+ get: function () {
+ if (this._unprojectionInvalid) {
+ if (!this._unprojection)
+ this._unprojection = new Matrix3D();
+
+ this._unprojection.copyFrom(this.matrix);
+ this._unprojection.invert();
+ this._unprojectionInvalid = false;
+ }
+ return this._unprojection;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ ProjectionBase.prototype.unproject = function (nX, nY, sZ) {
+ throw new AbstractMethodError();
+ };
+
+ ProjectionBase.prototype.clone = function () {
+ throw new AbstractMethodError();
+ };
+
+ Object.defineProperty(ProjectionBase.prototype, "_iAspectRatio", {
+ get: function () {
+ return this._pAspectRatio;
+ },
+ set: function (value) {
+ if (this._pAspectRatio == value)
+ return;
+
+ this._pAspectRatio = value;
+
+ this.pInvalidateMatrix();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ ProjectionBase.prototype.pInvalidateMatrix = function () {
+ this._pMatrixInvalid = true;
+ this._unprojectionInvalid = true;
+ this.dispatchEvent(new ProjectionEvent(ProjectionEvent.MATRIX_CHANGED, this));
+ };
+
+ ProjectionBase.prototype.pUpdateMatrix = function () {
+ throw new AbstractMethodError();
+ };
+
+ ProjectionBase.prototype._iUpdateScissorRect = function (x, y, width, height) {
+ this._pScissorRect.x = x;
+ this._pScissorRect.y = y;
+ this._pScissorRect.width = width;
+ this._pScissorRect.height = height;
+ this.pInvalidateMatrix();
+ };
+
+ ProjectionBase.prototype._iUpdateViewport = function (x, y, width, height) {
+ this._pViewPort.x = x;
+ this._pViewPort.y = y;
+ this._pViewPort.width = width;
+ this._pViewPort.height = height;
+ this.pInvalidateMatrix();
+ };
+ return ProjectionBase;
+})(EventDispatcher);
+
+module.exports = ProjectionBase;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Rectangle":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/ProjectionEvent":undefined}],"awayjs-core/lib/textures/BitmapCubeTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+var BitmapCubeTexture = (function (_super) {
+ __extends(BitmapCubeTexture, _super);
+ function BitmapCubeTexture(posX, negX, posY, negY, posZ, negZ, generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+ this._bitmapDatas = new Array(6);
+
+ this._testSize(this._bitmapDatas[0] = posX);
+ this._testSize(this._bitmapDatas[1] = negX);
+ this._testSize(this._bitmapDatas[2] = posY);
+ this._testSize(this._bitmapDatas[3] = negY);
+ this._testSize(this._bitmapDatas[4] = posZ);
+ this._testSize(this._bitmapDatas[5] = negZ);
+
+ this.invalidateContent();
+
+ this._pSetSize(posX.width);
+ }
+ Object.defineProperty(BitmapCubeTexture.prototype, "positiveX", {
+ /**
+ * The texture on the cube's right face.
+ */
+ get: function () {
+ return this._bitmapDatas[0];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapCubeTexture.prototype, "negativeX", {
+ /**
+ * The texture on the cube's left face.
+ */
+ get: function () {
+ return this._bitmapDatas[1];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapCubeTexture.prototype, "positiveY", {
+ /**
+ * The texture on the cube's top face.
+ */
+ get: function () {
+ return this._bitmapDatas[2];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapCubeTexture.prototype, "negativeY", {
+ /**
+ * The texture on the cube's bottom face.
+ */
+ get: function () {
+ return this._bitmapDatas[3];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[3] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapCubeTexture.prototype, "positiveZ", {
+ /**
+ * The texture on the cube's far face.
+ */
+ get: function () {
+ return this._bitmapDatas[4];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[4] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(BitmapCubeTexture.prototype, "negativeZ", {
+ /**
+ * The texture on the cube's near face.
+ */
+ get: function () {
+ return this._bitmapDatas[5];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._bitmapDatas[5] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ /**
+ *
+ * @param value
+ * @private
+ */
+ BitmapCubeTexture.prototype._testSize = function (value) {
+ if (value.width != value.height)
+ throw new Error("BitmapData should have equal width and height!");
+ if (!TextureUtils.isBitmapDataValid(value))
+ throw new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048");
+ };
+
+ BitmapCubeTexture.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ var len = this._bitmapDatas.length;
+ for (var i = 0; i < len; i++) {
+ this._bitmapDatas[i].dispose();
+ this._bitmapDatas[i] = null;
+ }
+
+ this._bitmapDatas = null;
+ };
+
+ BitmapCubeTexture.prototype._iGetTextureData = function (side) {
+ return this._bitmapDatas[side];
+ };
+ return BitmapCubeTexture;
+})(CubeTextureBase);
+
+module.exports = BitmapCubeTexture;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/textures/CubeTextureBase":undefined,"awayjs-core/lib/utils/TextureUtils":undefined}],"awayjs-core/lib/textures/BitmapTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+var BitmapTexture = (function (_super) {
+ __extends(BitmapTexture, _super);
+ function BitmapTexture(bitmapData, generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+
+ this.bitmapData = bitmapData;
+ }
+ Object.defineProperty(BitmapTexture.prototype, "bitmapData", {
+ /**
+ *
+ * @returns {BitmapData}
+ */
+ get: function () {
+ return this._bitmapData;
+ },
+ set: function (value) {
+ if (this._bitmapData == value)
+ return;
+
+ if (!TextureUtils.isBitmapDataValid(value))
+ throw new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048");
+
+ this._bitmapData = value;
+
+ this.invalidateContent();
+
+ this._pSetSize(value.width, value.height);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ BitmapTexture.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ this._bitmapData.dispose();
+ this._bitmapData = null;
+ };
+
+ BitmapTexture.prototype._iGetTextureData = function () {
+ return this._bitmapData;
+ };
+ return BitmapTexture;
+})(Texture2DBase);
+
+module.exports = BitmapTexture;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/textures/Texture2DBase":undefined,"awayjs-core/lib/utils/TextureUtils":undefined}],"awayjs-core/lib/textures/CubeTextureBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var MipmapGenerator = require("awayjs-core/lib/textures/MipmapGenerator");
+var TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+
+var CubeTextureBase = (function (_super) {
+ __extends(CubeTextureBase, _super);
+ function CubeTextureBase(generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+ this._mipmapDataArray = new Array(6);
+ this._mipmapDataDirtyArray = new Array(6);
+ }
+ /**
+ *
+ * @param width
+ * @param height
+ * @private
+ */
+ CubeTextureBase.prototype._pSetSize = function (size) {
+ if (this._pSize != size)
+ this.invalidateSize();
+
+ for (var i = 0; i < 6; i++)
+ this._mipmapDataDirtyArray[i] = true;
+
+ this._pSize = size;
+ };
+
+ /**
+ * @inheritDoc
+ */
+ CubeTextureBase.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ for (var i = 0; i < 6; i++) {
+ var mipmapData = this._mipmapDataArray[i];
+ var len = mipmapData.length;
+ for (var j = 0; j < len; j++)
+ MipmapGenerator.freeMipMapHolder(mipmapData[j]);
+ }
+ };
+
+ /**
+ *
+ */
+ CubeTextureBase.prototype.invalidateContent = function () {
+ _super.prototype.invalidateContent.call(this);
+
+ for (var i = 0; i < 6; i++)
+ this._mipmapDataDirtyArray[i] = true;
+ };
+
+ CubeTextureBase.prototype._iGetMipmapData = function (side) {
+ if (this._mipmapDataDirtyArray[side]) {
+ this._mipmapDataDirtyArray[side] = false;
+
+ var mipmapData = this._mipmapDataArray[side] || (this._mipmapDataArray[side] = new Array());
+ MipmapGenerator.generateMipMaps(this._iGetTextureData(side), mipmapData, true);
+ }
+
+ return this._mipmapDataArray[side];
+ };
+
+ CubeTextureBase.prototype._iGetTextureData = function (side) {
+ throw new AbstractMethodError();
+ };
+ return CubeTextureBase;
+})(TextureProxyBase);
+
+module.exports = CubeTextureBase;
+
+
+},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/textures/MipmapGenerator":undefined,"awayjs-core/lib/textures/TextureProxyBase":undefined}],"awayjs-core/lib/textures/ImageCubeTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+var ImageCubeTexture = (function (_super) {
+ __extends(ImageCubeTexture, _super);
+ function ImageCubeTexture(posX, negX, posY, negY, posZ, negZ, generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+ this._htmlImageElements = new Array(6);
+
+ this._testSize(this._htmlImageElements[0] = posX);
+ this._testSize(this._htmlImageElements[1] = negX);
+ this._testSize(this._htmlImageElements[2] = posY);
+ this._testSize(this._htmlImageElements[3] = negY);
+ this._testSize(this._htmlImageElements[4] = posZ);
+ this._testSize(this._htmlImageElements[5] = negZ);
+
+ this.invalidateContent();
+
+ this._pSetSize(posX.width);
+ }
+ Object.defineProperty(ImageCubeTexture.prototype, "positiveX", {
+ /**
+ * The texture on the cube's right face.
+ */
+ get: function () {
+ return this._htmlImageElements[0];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ImageCubeTexture.prototype, "negativeX", {
+ /**
+ * The texture on the cube's left face.
+ */
+ get: function () {
+ return this._htmlImageElements[1];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ImageCubeTexture.prototype, "positiveY", {
+ /**
+ * The texture on the cube's top face.
+ */
+ get: function () {
+ return this._htmlImageElements[2];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ImageCubeTexture.prototype, "negativeY", {
+ /**
+ * The texture on the cube's bottom face.
+ */
+ get: function () {
+ return this._htmlImageElements[3];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[3] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ImageCubeTexture.prototype, "positiveZ", {
+ /**
+ * The texture on the cube's far face.
+ */
+ get: function () {
+ return this._htmlImageElements[4];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[4] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(ImageCubeTexture.prototype, "negativeZ", {
+ /**
+ * The texture on the cube's near face.
+ */
+ get: function () {
+ return this._htmlImageElements[5];
+ },
+ set: function (value) {
+ this._testSize(value);
+ this.invalidateContent();
+ this._pSetSize(value.width);
+ this._htmlImageElements[5] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ ImageCubeTexture.prototype._testSize = function (value) {
+ if (value.width != value.height)
+ throw new Error("BitmapData should have equal width and height!");
+ if (!TextureUtils.isHTMLImageElementValid(value))
+ throw new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048");
+ };
+
+ ImageCubeTexture.prototype._iGetTextureData = function (side) {
+ return this._htmlImageElements[side];
+ };
+ return ImageCubeTexture;
+})(CubeTextureBase);
+
+module.exports = ImageCubeTexture;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/textures/CubeTextureBase":undefined,"awayjs-core/lib/utils/TextureUtils":undefined}],"awayjs-core/lib/textures/ImageTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+var ImageTexture = (function (_super) {
+ __extends(ImageTexture, _super);
+ /**
+ *
+ * @param htmlImageElement
+ * @param generateMipmaps
+ */
+ function ImageTexture(htmlImageElement, generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+
+ this.htmlImageElement = htmlImageElement;
+ }
+ Object.defineProperty(ImageTexture.prototype, "htmlImageElement", {
+ /**
+ *
+ */
+ get: function () {
+ return this._htmlImageElement;
+ },
+ set: function (value) {
+ if (this._htmlImageElement == value)
+ return;
+
+ if (!TextureUtils.isHTMLImageElementValid(value))
+ throw new Error("Invalid bitmapData: Width and height must be power of 2 and cannot exceed 2048");
+
+ this._htmlImageElement = value;
+
+ this.invalidateContent();
+ this._pSetSize(value.width, value.height);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ ImageTexture.prototype._iGetTextureData = function () {
+ return this._htmlImageElement;
+ };
+ return ImageTexture;
+})(Texture2DBase);
+
+module.exports = ImageTexture;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/textures/Texture2DBase":undefined,"awayjs-core/lib/utils/TextureUtils":undefined}],"awayjs-core/lib/textures/MipmapGenerator":[function(require,module,exports){
+var BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+var Matrix = require("awayjs-core/lib/core/geom/Matrix");
+var Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+
+/**
+* MipmapGenerator is a helper class that uploads BitmapData to a Texture including mipmap levels.
+*/
+var MipmapGenerator = (function () {
+ function MipmapGenerator() {
+ }
+ MipmapGenerator.generateMipMaps = function (source, output, alpha) {
+ if (typeof alpha === "undefined") { alpha = false; }
+ var w = source.width;
+ var h = source.height;
+ var i = 0;
+
+ var mipmap;
+
+ MipmapGenerator._rect.width = w;
+ MipmapGenerator._rect.height = h;
+
+ while (w >= 1 && h >= 1) {
+ mipmap = output[i] = MipmapGenerator._getMipmapHolder(output[i], w, h);
+
+ if (alpha)
+ mipmap.fillRect(MipmapGenerator._rect, 0);
+
+ MipmapGenerator._matrix.a = MipmapGenerator._rect.width / source.width;
+ MipmapGenerator._matrix.d = MipmapGenerator._rect.height / source.height;
+
+ mipmap.draw(source, MipmapGenerator._matrix); //TODO: smoothing?
+
+ w >>= 1;
+ h >>= 1;
+
+ MipmapGenerator._rect.width = w > 1 ? w : 1;
+ MipmapGenerator._rect.height = h > 1 ? h : 1;
+
+ i++;
+ }
+ };
+
+ MipmapGenerator._getMipmapHolder = function (mipMapHolder, newW, newH) {
+ if (mipMapHolder) {
+ if (mipMapHolder.width == newW && mipMapHolder.height == newH)
+ return mipMapHolder;
+
+ MipmapGenerator.freeMipMapHolder(mipMapHolder);
+ }
+
+ if (!MipmapGenerator._mipMaps[newW]) {
+ MipmapGenerator._mipMaps[newW] = [];
+ MipmapGenerator._mipMapUses[newW] = [];
+ }
+
+ if (!MipmapGenerator._mipMaps[newW][newH]) {
+ mipMapHolder = MipmapGenerator._mipMaps[newW][newH] = new BitmapData(newW, newH, true);
+ MipmapGenerator._mipMapUses[newW][newH] = 1;
+ } else {
+ MipmapGenerator._mipMapUses[newW][newH] = MipmapGenerator._mipMapUses[newW][newH] + 1;
+ mipMapHolder = MipmapGenerator._mipMaps[newW][newH];
+ }
+
+ return mipMapHolder;
+ };
+
+ MipmapGenerator.freeMipMapHolder = function (mipMapHolder) {
+ var holderWidth = mipMapHolder.width;
+ var holderHeight = mipMapHolder.height;
+
+ if (--MipmapGenerator._mipMapUses[holderWidth][holderHeight] == 0) {
+ MipmapGenerator._mipMaps[holderWidth][holderHeight].dispose();
+ MipmapGenerator._mipMaps[holderWidth][holderHeight] = null;
+ }
+ };
+ MipmapGenerator._mipMaps = [];
+ MipmapGenerator._mipMapUses = [];
+
+ MipmapGenerator._matrix = new Matrix();
+ MipmapGenerator._rect = new Rectangle();
+ return MipmapGenerator;
+})();
+
+module.exports = MipmapGenerator;
+
+
+},{"awayjs-core/lib/core/base/BitmapData":undefined,"awayjs-core/lib/core/geom/Matrix":undefined,"awayjs-core/lib/core/geom/Rectangle":undefined}],"awayjs-core/lib/textures/RenderTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+var TextureUtils = require("awayjs-core/lib/utils/TextureUtils");
+
+var RenderTexture = (function (_super) {
+ __extends(RenderTexture, _super);
+ function RenderTexture(width, height) {
+ _super.call(this, false);
+
+ this._pSetSize(width, height);
+ }
+ Object.defineProperty(RenderTexture.prototype, "width", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._pWidth;
+ },
+ set: function (value) {
+ if (value == this._pWidth)
+ return;
+
+ if (!TextureUtils.isDimensionValid(value))
+ throw new Error("Invalid size: Width and height must be power of 2 and cannot exceed 2048");
+
+ this.invalidateContent();
+
+ this._pSetSize(value, this._pHeight);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(RenderTexture.prototype, "height", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._pHeight;
+ },
+ set: function (value) {
+ if (value == this._pHeight)
+ return;
+
+ if (!TextureUtils.isDimensionValid(value))
+ throw new Error("Invalid size: Width and height must be power of 2 and cannot exceed 2048");
+
+ this.invalidateContent();
+ this._pSetSize(this._pWidth, value);
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ return RenderTexture;
+})(Texture2DBase);
+
+module.exports = RenderTexture;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/textures/Texture2DBase":undefined,"awayjs-core/lib/utils/TextureUtils":undefined}],"awayjs-core/lib/textures/SpecularBitmapTexture":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+var BitmapDataChannel = require("awayjs-core/lib/core/base/BitmapDataChannel");
+var Point = require("awayjs-core/lib/core/geom/Point");
+
+var BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture");
+
+/**
+* A convenience texture that encodes a specular map in the red channel, and the gloss map in the green channel, as expected by BasicSpecularMapMethod
+*/
+var SpecularBitmapTexture = (function (_super) {
+ __extends(SpecularBitmapTexture, _super);
+ function SpecularBitmapTexture(specularMap, glossMap, generateMipmaps) {
+ if (typeof specularMap === "undefined") { specularMap = null; }
+ if (typeof glossMap === "undefined") { glossMap = null; }
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = true; }
+ var bmd = specularMap ? specularMap : glossMap;
+
+ bmd = bmd ? new BitmapData(bmd.width, bmd.height, false, 0xffffff) : new BitmapData(1, 1, false, 0xffffff);
+
+ _super.call(this, bmd, generateMipmaps);
+
+ this.specularMap = specularMap;
+ this.glossMap = glossMap;
+ }
+ Object.defineProperty(SpecularBitmapTexture.prototype, "specularMap", {
+ get: function () {
+ return this._specularMap;
+ },
+ set: function (value) {
+ this._specularMap = value;
+
+ this.invalidateContent();
+
+ this._testSize();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(SpecularBitmapTexture.prototype, "glossMap", {
+ get: function () {
+ return this._glossMap;
+ },
+ set: function (value) {
+ this._glossMap = value;
+ this.invalidateContent();
+
+ this._testSize();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ SpecularBitmapTexture.prototype._testSize = function () {
+ var w, h;
+
+ if (this._specularMap) {
+ w = this._specularMap.width;
+ h = this._specularMap.height;
+ } else if (this._glossMap) {
+ w = this._glossMap.width;
+ h = this._glossMap.height;
+ } else {
+ w = 1;
+ h = 1;
+ }
+
+ if (w != this._bitmapData.width && h != this._bitmapData.height) {
+ var oldBitmap = this._bitmapData;
+ this.bitmapData = new BitmapData(this._specularMap.width, this._specularMap.height, false, 0xffffff);
+ oldBitmap.dispose();
+ }
+ };
+
+ SpecularBitmapTexture.prototype._iGetTextureData = function () {
+ var rect = this._specularMap.rect;
+ var origin = new Point();
+
+ this._bitmapData.fillRect(rect, 0xffffff);
+
+ if (this._glossMap)
+ this._bitmapData.copyChannel(this._glossMap, rect, origin, BitmapDataChannel.GREEN, BitmapDataChannel.GREEN);
+
+ if (this._specularMap)
+ this._bitmapData.copyChannel(this._specularMap, rect, origin, BitmapDataChannel.RED, BitmapDataChannel.RED);
+
+ return this._bitmapData;
+ };
+ return SpecularBitmapTexture;
+})(BitmapTexture);
+
+module.exports = SpecularBitmapTexture;
+
+
+},{"awayjs-core/lib/core/base/BitmapData":undefined,"awayjs-core/lib/core/base/BitmapDataChannel":undefined,"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/textures/BitmapTexture":undefined}],"awayjs-core/lib/textures/Texture2DBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var MipmapGenerator = require("awayjs-core/lib/textures/MipmapGenerator");
+var TextureProxyBase = require("awayjs-core/lib/textures/TextureProxyBase");
+
+var Texture2DBase = (function (_super) {
+ __extends(Texture2DBase, _super);
+ function Texture2DBase(generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this, generateMipmaps);
+ }
+ Object.defineProperty(Texture2DBase.prototype, "width", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._pWidth;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Texture2DBase.prototype, "height", {
+ /**
+ *
+ * @returns {number}
+ */
+ get: function () {
+ return this._pHeight;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Texture2DBase.prototype, "size", {
+ get: function () {
+ return this._pWidth;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ * @inheritDoc
+ */
+ Texture2DBase.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+
+ if (this._mipmapData) {
+ var len = this._mipmapData.length;
+ for (var i = 0; i < len; i++)
+ MipmapGenerator.freeMipMapHolder(this._mipmapData[i]);
+ }
+ };
+
+ /**
+ *
+ */
+ Texture2DBase.prototype.invalidateContent = function () {
+ _super.prototype.invalidateContent.call(this);
+
+ this._mipmapDataDirty = true;
+ };
+
+ /**
+ *
+ * @param width
+ * @param height
+ * @private
+ */
+ Texture2DBase.prototype._pSetSize = function (width, height) {
+ if (this._pWidth != width || this._pHeight != height)
+ this.invalidateSize();
+
+ this._mipmapDataDirty = true;
+
+ this._pWidth = width;
+ this._pHeight = height;
+ };
+
+ Texture2DBase.prototype._iGetMipmapData = function () {
+ if (this._mipmapDataDirty) {
+ this._mipmapDataDirty = false;
+
+ if (!this._mipmapData)
+ this._mipmapData = new Array();
+
+ MipmapGenerator.generateMipMaps(this._iGetTextureData(), this._mipmapData, true);
+ }
+
+ return this._mipmapData;
+ };
+
+ Texture2DBase.prototype._iGetTextureData = function () {
+ throw new AbstractMethodError();
+ };
+ return Texture2DBase;
+})(TextureProxyBase);
+
+module.exports = Texture2DBase;
+
+
+},{"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-core/lib/textures/MipmapGenerator":undefined,"awayjs-core/lib/textures/TextureProxyBase":undefined}],"awayjs-core/lib/textures/TextureProxyBase":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+
+/**
+*
+*/
+var TextureProxyBase = (function (_super) {
+ __extends(TextureProxyBase, _super);
+ /**
+ *
+ */
+ function TextureProxyBase(generateMipmaps) {
+ if (typeof generateMipmaps === "undefined") { generateMipmaps = false; }
+ _super.call(this);
+ this._pFormat = "bgra";
+ this._textureData = new Array();
+
+ this._generateMipmaps = this._hasMipmaps = generateMipmaps;
+ }
+ Object.defineProperty(TextureProxyBase.prototype, "size", {
+ get: function () {
+ return this._pSize;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextureProxyBase.prototype, "hasMipmaps", {
+ get: function () {
+ return this._hasMipmaps;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextureProxyBase.prototype, "format", {
+ /**
+ *
+ * @returns {string}
+ */
+ get: function () {
+ return this._pFormat;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(TextureProxyBase.prototype, "generateMipmaps", {
+ /**
+ *
+ * @returns {boolean}
+ */
+ get: function () {
+ return this._generateMipmaps;
+ },
+ set: function (value) {
+ if (this._generateMipmaps == value)
+ return;
+
+ this._generateMipmaps = this._hasMipmaps = value;
+
+ this.invalidateContent();
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(TextureProxyBase.prototype, "assetType", {
+ /**
+ *
+ * @returns {string}
+ */
+ get: function () {
+ return AssetType.TEXTURE;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ /**
+ *
+ */
+ TextureProxyBase.prototype.invalidateContent = function () {
+ var len = this._textureData.length;
+ for (var i = 0; i < len; i++)
+ this._textureData[i].invalidate();
+ };
+
+ /**
+ *
+ * @private
+ */
+ TextureProxyBase.prototype.invalidateSize = function () {
+ while (this._textureData.length)
+ this._textureData[0].dispose();
+ };
+
+ /**
+ * @inheritDoc
+ */
+ TextureProxyBase.prototype.dispose = function () {
+ while (this._textureData.length)
+ this._textureData[0].dispose();
+ };
+
+ TextureProxyBase.prototype._iAddTextureData = function (textureData) {
+ this._textureData.push(textureData);
+
+ return textureData;
+ };
+
+ TextureProxyBase.prototype._iRemoveTextureData = function (textureData) {
+ this._textureData.splice(this._textureData.indexOf(textureData), 1);
+
+ return textureData;
+ };
+ return TextureProxyBase;
+})(NamedAssetBase);
+
+module.exports = TextureProxyBase;
+
+
+},{"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined}],"awayjs-core/lib/utils/ByteArrayBase":[function(require,module,exports){
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+
+var ByteArrayBase = (function () {
+ function ByteArrayBase() {
+ this.position = 0;
+ this.length = 0;
+ this._mode = "";
+ }
+ ByteArrayBase.prototype.writeByte = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.readByte = function () {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.writeUnsignedByte = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.readUnsignedByte = function () {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.writeUnsignedShort = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.readUnsignedShort = function () {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.writeUnsignedInt = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.readUnsignedInt = function () {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.writeFloat = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.toFloatBits = function (x) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.readFloat = function (b) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.fromFloatBits = function (x) {
+ throw "Virtual method";
+ };
+
+ ByteArrayBase.prototype.getBytesAvailable = function () {
+ throw new AbstractMethodError('ByteArrayBase, getBytesAvailable() not implemented ');
+ };
+
+ ByteArrayBase.prototype.toString = function () {
+ return "[ByteArray] ( " + this._mode + " ) position=" + this.position + " length=" + this.length;
+ };
+
+ ByteArrayBase.prototype.compareEqual = function (other, count) {
+ if (count == undefined || count > this.length - this.position)
+ count = this.length - this.position;
+ if (count > other.length - other.position)
+ count = other.length - other.position;
+ var co0 = count;
+ var r = true;
+ while (r && count >= 4) {
+ count -= 4;
+ if (this.readUnsignedInt() != other.readUnsignedInt())
+ r = false;
+ }
+ while (r && count >= 1) {
+ count--;
+ if (this.readUnsignedByte() != other.readUnsignedByte())
+ r = false;
+ }
+ var c0;
+ this.position -= (c0 - count);
+ other.position -= (c0 - count);
+ return r;
+ };
+
+ ByteArrayBase.prototype.writeBase64String = function (s) {
+ for (var i = 0; i < s.length; i++) {
+ var v = s.charAt(i);
+ }
+ };
+
+ ByteArrayBase.prototype.dumpToConsole = function () {
+ var oldpos = this.position;
+ this.position = 0;
+ var nstep = 8;
+
+ function asHexString(x, digits) {
+ var lut = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
+ var sh = "";
+ for (var d = 0; d < digits; d++) {
+ sh = lut[(x >> (d << 2)) & 0xf] + sh;
+ }
+ return sh;
+ }
+
+ for (var i = 0; i < this.length; i += nstep) {
+ var s = asHexString(i, 4) + ":";
+ for (var j = 0; j < nstep && i + j < this.length; j++) {
+ s += " " + asHexString(this.readUnsignedByte(), 2);
+ }
+ console.log(s);
+ }
+ this.position = oldpos;
+ };
+
+ ByteArrayBase.prototype.readBase64String = function (count) {
+ if (count == undefined || count > this.length - this.position)
+ count = this.length - this.position;
+ if (!(count > 0))
+ return "";
+
+ return ByteArrayBase.internalGetBase64String(count, this.readUnsignedByte, this);
+ };
+
+ ByteArrayBase.internalGetBase64String = function (count, getUnsignedByteFunc, self) {
+ var r = "";
+ var b0, b1, b2, enc1, enc2, enc3, enc4;
+ var base64Key = ByteArrayBase.Base64Key;
+ while (count >= 3) {
+ b0 = getUnsignedByteFunc.apply(self);
+ b1 = getUnsignedByteFunc.apply(self);
+ b2 = getUnsignedByteFunc.apply(self);
+ enc1 = b0 >> 2;
+ enc2 = ((b0 & 3) << 4) | (b1 >> 4);
+ enc3 = ((b1 & 15) << 2) | (b2 >> 6);
+ enc4 = b2 & 63;
+ r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + base64Key.charAt(enc3) + base64Key.charAt(enc4);
+ count -= 3;
+ }
+
+ // pad
+ if (count == 2) {
+ b0 = getUnsignedByteFunc.apply(self);
+ b1 = getUnsignedByteFunc.apply(self);
+ enc1 = b0 >> 2;
+ enc2 = ((b0 & 3) << 4) | (b1 >> 4);
+ enc3 = ((b1 & 15) << 2);
+ r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + base64Key.charAt(enc3) + "=";
+ } else if (count == 1) {
+ b0 = getUnsignedByteFunc.apply(self);
+ enc1 = b0 >> 2;
+ enc2 = ((b0 & 3) << 4);
+ r += base64Key.charAt(enc1) + base64Key.charAt(enc2) + "==";
+ }
+ return r;
+ };
+ ByteArrayBase.Base64Key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ return ByteArrayBase;
+})();
+
+module.exports = ByteArrayBase;
+
+
+},{"awayjs-core/lib/errors/AbstractMethodError":undefined}],"awayjs-core/lib/utils/ByteArrayBuffer":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var ByteArrayBase = require("awayjs-core/lib/utils/ByteArrayBase");
+
+var ByteArrayBuffer = (function (_super) {
+ __extends(ByteArrayBuffer, _super);
+ function ByteArrayBuffer() {
+ _super.call(this);
+ this._bytes = [];
+ this._mode = "Array";
+ }
+ ByteArrayBuffer.prototype.writeByte = function (b) {
+ var bi = ~~b;
+ this._bytes[this.position++] = bi;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArrayBuffer.prototype.readByte = function () {
+ if (this.position >= this.length) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ return this._bytes[this.position++];
+ };
+
+ ByteArrayBuffer.prototype.writeUnsignedByte = function (b) {
+ var bi = ~~b;
+ this._bytes[this.position++] = bi & 0xff;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArrayBuffer.prototype.readUnsignedByte = function () {
+ if (this.position >= this.length) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ return this._bytes[this.position++];
+ };
+
+ ByteArrayBuffer.prototype.writeUnsignedShort = function (b) {
+ var bi = ~~b;
+ this._bytes[this.position++] = bi & 0xff;
+ this._bytes[this.position++] = (bi >> 8) & 0xff;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArrayBuffer.prototype.readUnsignedShort = function () {
+ if (this.position + 2 > this.length) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ var r = this._bytes[this.position] | (this._bytes[this.position + 1] << 8);
+ this.position += 2;
+ return r;
+ };
+
+ ByteArrayBuffer.prototype.writeUnsignedInt = function (b) {
+ var bi = ~~b;
+ this._bytes[this.position++] = bi & 0xff;
+ this._bytes[this.position++] = (bi >>> 8) & 0xff;
+ this._bytes[this.position++] = (bi >>> 16) & 0xff;
+ this._bytes[this.position++] = (bi >>> 24) & 0xff;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArrayBuffer.prototype.readUnsignedInt = function () {
+ if (this.position + 4 > this.length) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ var r = this._bytes[this.position] | (this._bytes[this.position + 1] << 8) | (this._bytes[this.position + 2] << 16) | (this._bytes[this.position + 3] << 24);
+ this.position += 4;
+ return r >>> 0;
+ };
+
+ ByteArrayBuffer.prototype.writeFloat = function (b) {
+ // this is crazy slow and silly, but as a fallback...
+ this.writeUnsignedInt(this.toFloatBits(Number(b)));
+ };
+
+ ByteArrayBuffer.prototype.toFloatBits = function (x) {
+ // don't handle inf/nan yet
+ // special case zero
+ if (x == 0) {
+ return 0;
+ }
+
+ // remove the sign, after this we only deal with positive numbers
+ var sign = 0;
+ if (x < 0) {
+ x = -x;
+ sign = 1;
+ } else {
+ sign = 0;
+ }
+
+ // a float value is now defined as: x = (1+(mantissa*2^-23))*(2^(exponent-127))
+ var exponent = Math.log(x) / Math.log(2);
+ exponent = Math.floor(exponent);
+ x = x * Math.pow(2, 23 - exponent); // normalize to 24 bits
+ var mantissa = Math.floor(x) - 0x800000;
+ exponent = exponent + 127;
+ return ((sign << 31) >>> 0) | (exponent << 23) | mantissa;
+ };
+
+ ByteArrayBuffer.prototype.readFloat = function (b) {
+ return this.fromFloatBits(this.readUnsignedInt());
+ };
+
+ ByteArrayBuffer.prototype.fromFloatBits = function (x) {
+ if (x == 0) {
+ return 0;
+ }
+ var exponent = (x >>> 23) & 0xff;
+ var mantissa = (x & 0x7fffff) | 0x800000;
+ var y = Math.pow(2, (exponent - 127) - 23) * mantissa;
+ if (x >>> 31 != 0) {
+ y = -y;
+ }
+ return y;
+ };
+ return ByteArrayBuffer;
+})(ByteArrayBase);
+
+module.exports = ByteArrayBuffer;
+
+
+},{"awayjs-core/lib/utils/ByteArrayBase":undefined}],"awayjs-core/lib/utils/ByteArray":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var ByteArrayBase = require("awayjs-core/lib/utils/ByteArrayBase");
+
+var ByteArray = (function (_super) {
+ __extends(ByteArray, _super);
+ function ByteArray() {
+ _super.call(this);
+ this.maxlength = 0;
+ this._mode = "Typed array";
+ this.maxlength = 4;
+ this.arraybytes = new ArrayBuffer(this.maxlength);
+ this.unalignedarraybytestemp = new ArrayBuffer(16);
+ }
+ ByteArray.prototype.ensureWriteableSpace = function (n) {
+ this.ensureSpace(n + this.position);
+ };
+
+ ByteArray.prototype.setArrayBuffer = function (aBuffer) {
+ this.ensureSpace(aBuffer.byteLength);
+
+ this.length = aBuffer.byteLength;
+
+ var inInt8AView = new Int8Array(aBuffer);
+ var localInt8View = new Int8Array(this.arraybytes, 0, this.length);
+
+ localInt8View.set(inInt8AView);
+
+ this.position = 0;
+ };
+
+ ByteArray.prototype.getBytesAvailable = function () {
+ return (this.length) - (this.position);
+ };
+
+ ByteArray.prototype.ensureSpace = function (n) {
+ if (n > this.maxlength) {
+ var newmaxlength = (n + 255) & (~255);
+ var newarraybuffer = new ArrayBuffer(newmaxlength);
+ var view = new Uint8Array(this.arraybytes, 0, this.length);
+ var newview = new Uint8Array(newarraybuffer, 0, this.length);
+ newview.set(view); // memcpy
+ this.arraybytes = newarraybuffer;
+ this.maxlength = newmaxlength;
+ }
+ };
+
+ ByteArray.prototype.writeByte = function (b) {
+ this.ensureWriteableSpace(1);
+ var view = new Int8Array(this.arraybytes);
+ view[this.position++] = (~~b); // ~~ is cast to int in js...
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArray.prototype.readByte = function () {
+ if (this.position >= this.length) {
+ throw "ByteArray out of bounds read. Positon=" + this.position + ", Length=" + this.length;
+ }
+ var view = new Int8Array(this.arraybytes);
+
+ return view[this.position++];
+ };
+
+ ByteArray.prototype.readBytes = function (bytes, offset, length) {
+ if (typeof offset === "undefined") { offset = 0; }
+ if (typeof length === "undefined") { length = 0; }
+ if (length == null) {
+ length = bytes.length;
+ }
+
+ bytes.ensureWriteableSpace(offset + length);
+
+ var byteView = new Int8Array(bytes.arraybytes);
+ var localByteView = new Int8Array(this.arraybytes);
+
+ byteView.set(localByteView.subarray(this.position, this.position + length), offset);
+
+ this.position += length;
+
+ if (length + offset > bytes.length) {
+ bytes.length += (length + offset) - bytes.length;
+ }
+ };
+
+ ByteArray.prototype.writeUnsignedByte = function (b) {
+ this.ensureWriteableSpace(1);
+ var view = new Uint8Array(this.arraybytes);
+ view[this.position++] = (~~b) & 0xff; // ~~ is cast to int in js...
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArray.prototype.readUnsignedByte = function () {
+ if (this.position >= this.length) {
+ throw "ByteArray out of bounds read. Positon=" + this.position + ", Length=" + this.length;
+ }
+ var view = new Uint8Array(this.arraybytes);
+ return view[this.position++];
+ };
+
+ ByteArray.prototype.writeUnsignedShort = function (b) {
+ this.ensureWriteableSpace(2);
+ if ((this.position & 1) == 0) {
+ var view = new Uint16Array(this.arraybytes);
+ view[this.position >> 1] = (~~b) & 0xffff; // ~~ is cast to int in js...
+ } else {
+ var view = new Uint16Array(this.unalignedarraybytestemp, 0, 1);
+ view[0] = (~~b) & 0xffff;
+ var view2 = new Uint8Array(this.arraybytes, this.position, 2);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 2);
+ view2.set(view3);
+ }
+ this.position += 2;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArray.prototype.readUTFBytes = function (len) {
+ var value = "";
+ var max = this.position + len;
+ var data = new DataView(this.arraybytes);
+
+ while (this.position < max) {
+ var c = data.getUint8(this.position++);
+
+ if (c < 0x80) {
+ if (c == 0)
+ break;
+ value += String.fromCharCode(c);
+ } else if (c < 0xE0) {
+ value += String.fromCharCode(((c & 0x3F) << 6) | (data.getUint8(this.position++) & 0x7F));
+ } else if (c < 0xF0) {
+ var c2 = data.getUint8(this.position++);
+ value += String.fromCharCode(((c & 0x1F) << 12) | ((c2 & 0x7F) << 6) | (data.getUint8(this.position++) & 0x7F));
+ } else {
+ var c2 = data.getUint8(this.position++);
+ var c3 = data.getUint8(this.position++);
+
+ value += String.fromCharCode(((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 << 6) & 0x7F) | (data.getUint8(this.position++) & 0x7F));
+ }
+ }
+
+ return value;
+ };
+
+ ByteArray.prototype.readInt = function () {
+ var data = new DataView(this.arraybytes);
+ var int = data.getInt32(this.position, true);
+
+ this.position += 4;
+
+ return int;
+ };
+
+ ByteArray.prototype.readShort = function () {
+ var data = new DataView(this.arraybytes);
+ var short = data.getInt16(this.position, true);
+
+ this.position += 2;
+ return short;
+ };
+
+ ByteArray.prototype.readDouble = function () {
+ var data = new DataView(this.arraybytes);
+ var double = data.getFloat64(this.position, true);
+
+ this.position += 8;
+ return double;
+ };
+
+ ByteArray.prototype.readUnsignedShort = function () {
+ if (this.position > this.length + 2) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ if ((this.position & 1) == 0) {
+ var view = new Uint16Array(this.arraybytes);
+ var pa = this.position >> 1;
+ this.position += 2;
+ return view[pa];
+ } else {
+ var view = new Uint16Array(this.unalignedarraybytestemp, 0, 1);
+ var view2 = new Uint8Array(this.arraybytes, this.position, 2);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 2);
+ view3.set(view2);
+ this.position += 2;
+ return view[0];
+ }
+ };
+
+ ByteArray.prototype.writeUnsignedInt = function (b) {
+ this.ensureWriteableSpace(4);
+ if ((this.position & 3) == 0) {
+ var view = new Uint32Array(this.arraybytes);
+ view[this.position >> 2] = (~~b) & 0xffffffff; // ~~ is cast to int in js...
+ } else {
+ var view = new Uint32Array(this.unalignedarraybytestemp, 0, 1);
+ view[0] = (~~b) & 0xffffffff;
+ var view2 = new Uint8Array(this.arraybytes, this.position, 4);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);
+ view2.set(view3);
+ }
+ this.position += 4;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArray.prototype.readUnsignedInt = function () {
+ if (this.position > this.length + 4) {
+ throw "ByteArray out of bounds read. Position=" + this.position + ", Length=" + this.length;
+ }
+ if ((this.position & 3) == 0) {
+ var view = new Uint32Array(this.arraybytes);
+ var pa = this.position >> 2;
+ this.position += 4;
+ return view[pa];
+ } else {
+ var view = new Uint32Array(this.unalignedarraybytestemp, 0, 1);
+ var view2 = new Uint8Array(this.arraybytes, this.position, 4);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);
+ view3.set(view2);
+ this.position += 4;
+ return view[0];
+ }
+ };
+
+ ByteArray.prototype.writeFloat = function (b) {
+ this.ensureWriteableSpace(4);
+ if ((this.position & 3) == 0) {
+ var view = new Float32Array(this.arraybytes);
+ view[this.position >> 2] = b;
+ } else {
+ var view = new Float32Array(this.unalignedarraybytestemp, 0, 1);
+ view[0] = b;
+ var view2 = new Uint8Array(this.arraybytes, this.position, 4);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);
+ view2.set(view3);
+ }
+ this.position += 4;
+ if (this.position > this.length) {
+ this.length = this.position;
+ }
+ };
+
+ ByteArray.prototype.readFloat = function () {
+ if (this.position > this.length + 4) {
+ throw "ByteArray out of bounds read. Positon=" + this.position + ", Length=" + this.length;
+ }
+ if ((this.position & 3) == 0) {
+ var view = new Float32Array(this.arraybytes);
+ var pa = this.position >> 2;
+ this.position += 4;
+ return view[pa];
+ } else {
+ var view = new Float32Array(this.unalignedarraybytestemp, 0, 1);
+ var view2 = new Uint8Array(this.arraybytes, this.position, 4);
+ var view3 = new Uint8Array(this.unalignedarraybytestemp, 0, 4);
+ view3.set(view2);
+ this.position += 4;
+ return view[0];
+ }
+ };
+ return ByteArray;
+})(ByteArrayBase);
+
+module.exports = ByteArray;
+
+
+},{"awayjs-core/lib/utils/ByteArrayBase":undefined}],"awayjs-core/lib/utils/CSS":[function(require,module,exports){
+var CSS = (function () {
+ function CSS() {
+ }
+ CSS.setElementSize = function (element, width, height) {
+ element.style.width = width + "px";
+ element.style.height = height + "px";
+ element["width"] = width;
+ element["height"] = height;
+ };
+
+ CSS.setElementWidth = function (element, width) {
+ element.style.width = width + "px";
+ element["width"] = width;
+ };
+
+ CSS.setElementHeight = function (element, height) {
+ element.style.height = height + "px";
+ element["height"] = height;
+ };
+
+ CSS.setElementX = function (element, x) {
+ element.style.position = 'absolute';
+ element.style.left = x + "px";
+ };
+
+ CSS.setElementY = function (element, y) {
+ element.style.position = 'absolute';
+ element.style.top = y + "px";
+ };
+
+ CSS.getElementVisibility = function (element) {
+ return element.style.visibility == 'visible';
+ };
+
+ CSS.setElementVisibility = function (element, visible) {
+ if (visible) {
+ element.style.visibility = 'visible';
+ } else {
+ element.style.visibility = 'hidden';
+ }
+ };
+
+ CSS.setElementAlpha = function (element, alpha) {
+ if (element instanceof HTMLCanvasElement) {
+ var context = element.getContext("2d");
+ context.globalAlpha = alpha;
+ }
+ };
+
+ CSS.setElementPosition = function (element, x, y, absolute) {
+ if (typeof absolute === "undefined") { absolute = false; }
+ if (absolute) {
+ element.style.position = "absolute";
+ } else {
+ element.style.position = "relative";
+ }
+
+ element.style.left = x + "px";
+ element.style.top = y + "px";
+ };
+ return CSS;
+})();
+
+module.exports = CSS;
+
+
+},{}],"awayjs-core/lib/utils/Cast":[function(require,module,exports){
+var BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+var CastError = require("awayjs-core/lib/errors/CastError");
+var BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture");
+var ImageTexture = require("awayjs-core/lib/textures/ImageTexture");
+var ByteArray = require("awayjs-core/lib/utils/ByteArray");
+
+/**
+* Helper class for casting assets to usable objects
+*/
+var Cast = (function () {
+ function Cast() {
+ }
+ Cast.string = function (data) {
+ if (typeof (data) == 'function')
+ data = new data;
+
+ if (typeof (data) == 'string')
+ return data;
+
+ return data;
+ };
+
+ Cast.byteArray = function (data) {
+ if (typeof (data) == 'function')
+ data = new data;
+
+ if (data instanceof ByteArray)
+ return data;
+
+ return data;
+ };
+
+ // public static xml(data:any):XML
+ // {
+ // if (typeof(data) == 'function')
+ // data = new data;
+ //
+ // if (data is XML)
+ // return data;
+ //
+ // return XML(data);
+ // }
+ Cast.isHex = function (str) {
+ var length = str.length;
+ for (var i = 0; i < length; ++i) {
+ if (this._hexChars.indexOf(str.charAt(i)) == -1)
+ return false;
+ }
+
+ return true;
+ };
+
+ Cast.tryColor = function (data) {
+ if (typeof (data) == 'number')
+ return Math.floor(data);
+
+ if (typeof (data) == 'string') {
+ if (data == "random")
+ return Math.floor(Math.random() * 0x1000000);
+
+ if (this._colorNames == null) {
+ this._colorNames = new Object();
+ this._colorNames["steelblue"] = 0x4682B4;
+ this._colorNames["royalblue"] = 0x041690;
+ this._colorNames["cornflowerblue"] = 0x6495ED;
+ this._colorNames["lightsteelblue"] = 0xB0C4DE;
+ this._colorNames["mediumslateblue"] = 0x7B68EE;
+ this._colorNames["slateblue"] = 0x6A5ACD;
+ this._colorNames["darkslateblue"] = 0x483D8B;
+ this._colorNames["midnightblue"] = 0x191970;
+ this._colorNames["navy"] = 0x000080;
+ this._colorNames["darkblue"] = 0x00008B;
+ this._colorNames["mediumblue"] = 0x0000CD;
+ this._colorNames["blue"] = 0x0000FF;
+ this._colorNames["dodgerblue"] = 0x1E90FF;
+ this._colorNames["deepskyblue"] = 0x00BFFF;
+ this._colorNames["lightskyblue"] = 0x87CEFA;
+ this._colorNames["skyblue"] = 0x87CEEB;
+ this._colorNames["lightblue"] = 0xADD8E6;
+ this._colorNames["powderblue"] = 0xB0E0E6;
+ this._colorNames["azure"] = 0xF0FFFF;
+ this._colorNames["lightcyan"] = 0xE0FFFF;
+ this._colorNames["paleturquoise"] = 0xAFEEEE;
+ this._colorNames["mediumturquoise"] = 0x48D1CC;
+ this._colorNames["lightseagreen"] = 0x20B2AA;
+ this._colorNames["darkcyan"] = 0x008B8B;
+ this._colorNames["teal"] = 0x008080;
+ this._colorNames["cadetblue"] = 0x5F9EA0;
+ this._colorNames["darkturquoise"] = 0x00CED1;
+ this._colorNames["aqua"] = 0x00FFFF;
+ this._colorNames["cyan"] = 0x00FFFF;
+ this._colorNames["turquoise"] = 0x40E0D0;
+ this._colorNames["aquamarine"] = 0x7FFFD4;
+ this._colorNames["mediumaquamarine"] = 0x66CDAA;
+ this._colorNames["darkseagreen"] = 0x8FBC8F;
+ this._colorNames["mediumseagreen"] = 0x3CB371;
+ this._colorNames["seagreen"] = 0x2E8B57;
+ this._colorNames["darkgreen"] = 0x006400;
+ this._colorNames["green"] = 0x008000;
+ this._colorNames["forestgreen"] = 0x228B22;
+ this._colorNames["limegreen"] = 0x32CD32;
+ this._colorNames["lime"] = 0x00FF00;
+ this._colorNames["chartreuse"] = 0x7FFF00;
+ this._colorNames["lawngreen"] = 0x7CFC00;
+ this._colorNames["greenyellow"] = 0xADFF2F;
+ this._colorNames["yellowgreen"] = 0x9ACD32;
+ this._colorNames["palegreen"] = 0x98FB98;
+ this._colorNames["lightgreen"] = 0x90EE90;
+ this._colorNames["springgreen"] = 0x00FF7F;
+ this._colorNames["mediumspringgreen"] = 0x00FA9A;
+ this._colorNames["darkolivegreen"] = 0x556B2F;
+ this._colorNames["olivedrab"] = 0x6B8E23;
+ this._colorNames["olive"] = 0x808000;
+ this._colorNames["darkkhaki"] = 0xBDB76B;
+ this._colorNames["darkgoldenrod"] = 0xB8860B;
+ this._colorNames["goldenrod"] = 0xDAA520;
+ this._colorNames["gold"] = 0xFFD700;
+ this._colorNames["yellow"] = 0xFFFF00;
+ this._colorNames["khaki"] = 0xF0E68C;
+ this._colorNames["palegoldenrod"] = 0xEEE8AA;
+ this._colorNames["blanchedalmond"] = 0xFFEBCD;
+ this._colorNames["moccasin"] = 0xFFE4B5;
+ this._colorNames["wheat"] = 0xF5DEB3;
+ this._colorNames["navajowhite"] = 0xFFDEAD;
+ this._colorNames["burlywood"] = 0xDEB887;
+ this._colorNames["tan"] = 0xD2B48C;
+ this._colorNames["rosybrown"] = 0xBC8F8F;
+ this._colorNames["sienna"] = 0xA0522D;
+ this._colorNames["saddlebrown"] = 0x8B4513;
+ this._colorNames["chocolate"] = 0xD2691E;
+ this._colorNames["peru"] = 0xCD853F;
+ this._colorNames["sandybrown"] = 0xF4A460;
+ this._colorNames["darkred"] = 0x8B0000;
+ this._colorNames["maroon"] = 0x800000;
+ this._colorNames["brown"] = 0xA52A2A;
+ this._colorNames["firebrick"] = 0xB22222;
+ this._colorNames["indianred"] = 0xCD5C5C;
+ this._colorNames["lightcoral"] = 0xF08080;
+ this._colorNames["salmon"] = 0xFA8072;
+ this._colorNames["darksalmon"] = 0xE9967A;
+ this._colorNames["lightsalmon"] = 0xFFA07A;
+ this._colorNames["coral"] = 0xFF7F50;
+ this._colorNames["tomato"] = 0xFF6347;
+ this._colorNames["darkorange"] = 0xFF8C00;
+ this._colorNames["orange"] = 0xFFA500;
+ this._colorNames["orangered"] = 0xFF4500;
+ this._colorNames["crimson"] = 0xDC143C;
+ this._colorNames["red"] = 0xFF0000;
+ this._colorNames["deeppink"] = 0xFF1493;
+ this._colorNames["fuchsia"] = 0xFF00FF;
+ this._colorNames["magenta"] = 0xFF00FF;
+ this._colorNames["hotpink"] = 0xFF69B4;
+ this._colorNames["lightpink"] = 0xFFB6C1;
+ this._colorNames["pink"] = 0xFFC0CB;
+ this._colorNames["palevioletred"] = 0xDB7093;
+ this._colorNames["mediumvioletred"] = 0xC71585;
+ this._colorNames["purple"] = 0x800080;
+ this._colorNames["darkmagenta"] = 0x8B008B;
+ this._colorNames["mediumpurple"] = 0x9370DB;
+ this._colorNames["blueviolet"] = 0x8A2BE2;
+ this._colorNames["indigo"] = 0x4B0082;
+ this._colorNames["darkviolet"] = 0x9400D3;
+ this._colorNames["darkorchid"] = 0x9932CC;
+ this._colorNames["mediumorchid"] = 0xBA55D3;
+ this._colorNames["orchid"] = 0xDA70D6;
+ this._colorNames["violet"] = 0xEE82EE;
+ this._colorNames["plum"] = 0xDDA0DD;
+ this._colorNames["thistle"] = 0xD8BFD8;
+ this._colorNames["lavender"] = 0xE6E6FA;
+ this._colorNames["ghostwhite"] = 0xF8F8FF;
+ this._colorNames["aliceblue"] = 0xF0F8FF;
+ this._colorNames["mintcream"] = 0xF5FFFA;
+ this._colorNames["honeydew"] = 0xF0FFF0;
+ this._colorNames["lightgoldenrodyellow"] = 0xFAFAD2;
+ this._colorNames["lemonchiffon"] = 0xFFFACD;
+ this._colorNames["cornsilk"] = 0xFFF8DC;
+ this._colorNames["lightyellow"] = 0xFFFFE0;
+ this._colorNames["ivory"] = 0xFFFFF0;
+ this._colorNames["floralwhite"] = 0xFFFAF0;
+ this._colorNames["linen"] = 0xFAF0E6;
+ this._colorNames["oldlace"] = 0xFDF5E6;
+ this._colorNames["antiquewhite"] = 0xFAEBD7;
+ this._colorNames["bisque"] = 0xFFE4C4;
+ this._colorNames["peachpuff"] = 0xFFDAB9;
+ this._colorNames["papayawhip"] = 0xFFEFD5;
+ this._colorNames["beige"] = 0xF5F5DC;
+ this._colorNames["seashell"] = 0xFFF5EE;
+ this._colorNames["lavenderblush"] = 0xFFF0F5;
+ this._colorNames["mistyrose"] = 0xFFE4E1;
+ this._colorNames["snow"] = 0xFFFAFA;
+ this._colorNames["white"] = 0xFFFFFF;
+ this._colorNames["whitesmoke"] = 0xF5F5F5;
+ this._colorNames["gainsboro"] = 0xDCDCDC;
+ this._colorNames["lightgrey"] = 0xD3D3D3;
+ this._colorNames["silver"] = 0xC0C0C0;
+ this._colorNames["darkgrey"] = 0xA9A9A9;
+ this._colorNames["grey"] = 0x808080;
+ this._colorNames["lightslategrey"] = 0x778899;
+ this._colorNames["slategrey"] = 0x708090;
+ this._colorNames["dimgrey"] = 0x696969;
+ this._colorNames["darkslategrey"] = 0x2F4F4F;
+ this._colorNames["black"] = 0x000000;
+ this._colorNames["transparent"] = 0xFF000000;
+ }
+
+ if (this._colorNames[data] != null)
+ return this._colorNames[data];
+
+ if ((data.length == 6) && this.isHex(data))
+ return parseInt("0x" + data);
+ }
+
+ return null;
+ };
+
+ Cast.color = function (data) {
+ var result = this.tryColor(data);
+
+ if (result == null)
+ throw new CastError("Can't cast to color: " + data);
+
+ return result;
+ };
+
+ Cast.tryClass = function (name) {
+ if (this._notClasses[name])
+ return name;
+
+ var result = this._classes[name];
+
+ if (result != null)
+ return result;
+
+ try {
+ result = window[name];
+ this._classes[name] = result;
+ return result;
+ } catch (e) {
+ }
+
+ this._notClasses[name] = true;
+
+ return name;
+ };
+
+ Cast.bitmapData = function (data) {
+ if (data == null)
+ return null;
+
+ if (typeof (data) == 'string')
+ data = this.tryClass(data);
+
+ if (typeof (data) == 'function') {
+ try {
+ data = new data();
+ } catch (e) {
+ data = new data(0, 0);
+ }
+ }
+
+ if (data instanceof BitmapData)
+ return data;
+
+ if (data instanceof ImageTexture)
+ data = data.htmlImageElement;
+
+ if (data instanceof HTMLImageElement) {
+ var imageElement = data;
+ var bitmapData = new BitmapData(imageElement.width, imageElement.height, true, 0x0);
+ bitmapData.draw(imageElement);
+ return bitmapData;
+ }
+
+ throw new CastError("Can't cast to BitmapData: " + data);
+ };
+
+ Cast.bitmapTexture = function (data) {
+ if (data == null)
+ return null;
+
+ if (typeof (data) == 'string')
+ data = this.tryClass(data);
+
+ if (typeof (data) == 'function') {
+ try {
+ data = new data();
+ } catch (e) {
+ data = new data(0, 0);
+ }
+ }
+
+ if (data instanceof BitmapTexture)
+ return data;
+
+ try {
+ var bmd = Cast.bitmapData(data);
+ return new BitmapTexture(bmd);
+ } catch (e) {
+ }
+
+ throw new CastError("Can't cast to BitmapTexture: " + data);
+ };
+ Cast._hexChars = "0123456789abcdefABCDEF";
+
+ Cast._notClasses = new Object();
+ Cast._classes = new Object();
+ return Cast;
+})();
+
+module.exports = Cast;
+
+
+},{"awayjs-core/lib/core/base/BitmapData":undefined,"awayjs-core/lib/errors/CastError":undefined,"awayjs-core/lib/textures/BitmapTexture":undefined,"awayjs-core/lib/textures/ImageTexture":undefined,"awayjs-core/lib/utils/ByteArray":undefined}],"awayjs-core/lib/utils/ColorUtils":[function(require,module,exports){
+/**
+*
+*/
+var ColorUtils = (function () {
+ function ColorUtils() {
+ }
+ ColorUtils.float32ColorToARGB = function (float32Color) {
+ var a = (float32Color & 0xff000000) >>> 24;
+ var r = (float32Color & 0xff0000) >>> 16;
+ var g = (float32Color & 0xff00) >>> 8;
+ var b = float32Color & 0xff;
+ var result = [a, r, g, b];
+
+ return result;
+ };
+
+ ColorUtils.componentToHex = function (c) {
+ var hex = c.toString(16);
+ return hex.length == 1 ? "0" + hex : hex;
+ };
+
+ ColorUtils.RGBToHexString = function (argb) {
+ return "#" + ColorUtils.componentToHex(argb[1]) + ColorUtils.componentToHex(argb[2]) + ColorUtils.componentToHex(argb[3]);
+ };
+
+ ColorUtils.ARGBToHexString = function (argb) {
+ return "#" + ColorUtils.componentToHex(argb[0]) + ColorUtils.componentToHex(argb[1]) + ColorUtils.componentToHex(argb[2]) + ColorUtils.componentToHex(argb[3]);
+ };
+ return ColorUtils;
+})();
+
+module.exports = ColorUtils;
+
+
+},{}],"awayjs-core/lib/utils/Debug":[function(require,module,exports){
+var PartialImplementationError = require("awayjs-core/lib/errors/PartialImplementationError");
+
+/**
+*
+*/
+var Debug = (function () {
+ function Debug() {
+ }
+ Debug.breakpoint = function () {
+ Debug['break']();
+ };
+
+ Debug.throwPIROnKeyWordOnly = function (str, enable) {
+ if (typeof enable === "undefined") { enable = true; }
+ if (!enable)
+ Debug.keyword = null;
+ else
+ Debug.keyword = str;
+ };
+
+ Debug.throwPIR = function (clss, fnc, msg) {
+ Debug.logPIR('PartialImplementationError ' + clss, fnc, msg);
+
+ if (Debug.THROW_ERRORS) {
+ if (Debug.keyword) {
+ var e = clss + fnc + msg;
+
+ if (e.indexOf(Debug.keyword) == -1)
+ return;
+ }
+
+ throw new PartialImplementationError(clss + '.' + fnc + ': ' + msg);
+ }
+ };
+
+ Debug.logPIR = function (clss, fnc, msg) {
+ if (typeof msg === "undefined") { msg = ''; }
+ if (Debug.LOG_PI_ERRORS)
+ console.log(clss + '.' + fnc + ': ' + msg);
+ };
+
+ Debug.log = function () {
+ var args = [];
+ for (var _i = 0; _i < (arguments.length - 0); _i++) {
+ args[_i] = arguments[_i + 0];
+ }
+ if (Debug.ENABLE_LOG)
+ console.log(args);
+ };
+ Debug.THROW_ERRORS = true;
+ Debug.ENABLE_LOG = true;
+ Debug.LOG_PI_ERRORS = true;
+
+ Debug.keyword = null;
+ return Debug;
+})();
+
+module.exports = Debug;
+
+
+},{"awayjs-core/lib/errors/PartialImplementationError":undefined}],"awayjs-core/lib/utils/RequestAnimationFrame":[function(require,module,exports){
+var getTimer = require("awayjs-core/lib/utils/getTimer");
+
+var RequestAnimationFrame = (function () {
+ function RequestAnimationFrame(callback, callbackContext) {
+ var _this = this;
+ this._active = false;
+ this._argsArray = new Array();
+ this._getTimer = getTimer;
+
+ this.setCallback(callback, callbackContext);
+
+ this._rafUpdateFunction = function () {
+ if (_this._active)
+ _this._tick();
+ };
+
+ this._argsArray.push(this._dt);
+ }
+ // Public
+ /**
+ *
+ * @param callback
+ * @param callbackContext
+ */
+ RequestAnimationFrame.prototype.setCallback = function (callback, callbackContext) {
+ this._callback = callback;
+ this._callbackContext = callbackContext;
+ };
+
+ /**
+ *
+ */
+ RequestAnimationFrame.prototype.start = function () {
+ this._prevTime = this._getTimer();
+ this._active = true;
+
+ if (window.requestAnimationFrame) {
+ window.requestAnimationFrame(this._rafUpdateFunction);
+ } else {
+ if (window['mozRequestAnimationFrame'])
+ window.requestAnimationFrame = window['mozRequestAnimationFrame'];
+ else if (window['webkitRequestAnimationFrame'])
+ window.requestAnimationFrame = window['webkitRequestAnimationFrame'];
+ else if (window['oRequestAnimationFrame'])
+ window.requestAnimationFrame = window['oRequestAnimationFrame'];
+ }
+ };
+
+ /**
+ *
+ */
+ RequestAnimationFrame.prototype.stop = function () {
+ this._active = false;
+ };
+
+ Object.defineProperty(RequestAnimationFrame.prototype, "active", {
+ // Get / Set
+ /**
+ *
+ * @returns {boolean}
+ */
+ get: function () {
+ return this._active;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ // Private
+ /**
+ *
+ * @private
+ */
+ RequestAnimationFrame.prototype._tick = function () {
+ this._currentTime = this._getTimer();
+ this._dt = this._currentTime - this._prevTime;
+ this._argsArray[0] = this._dt;
+ this._callback.apply(this._callbackContext, this._argsArray);
+
+ window.requestAnimationFrame(this._rafUpdateFunction);
+
+ this._prevTime = this._currentTime;
+ };
+ return RequestAnimationFrame;
+})();
+
+module.exports = RequestAnimationFrame;
+
+
+},{"awayjs-core/lib/utils/getTimer":undefined}],"awayjs-core/lib/utils/TextureUtils":[function(require,module,exports){
+var TextureUtils = (function () {
+ function TextureUtils() {
+ }
+ TextureUtils.isBitmapDataValid = function (bitmapData) {
+ if (bitmapData == null) {
+ return true;
+ }
+
+ return TextureUtils.isDimensionValid(bitmapData.width) && TextureUtils.isDimensionValid(bitmapData.height);
+ };
+
+ TextureUtils.isHTMLImageElementValid = function (image) {
+ if (image == null)
+ return true;
+
+ return TextureUtils.isDimensionValid(image.width) && TextureUtils.isDimensionValid(image.height);
+ };
+
+ TextureUtils.isDimensionValid = function (d) {
+ return d >= 1 && d <= TextureUtils.MAX_SIZE && TextureUtils.isPowerOfTwo(d);
+ };
+
+ TextureUtils.isPowerOfTwo = function (value) {
+ return value ? ((value & -value) == value) : false;
+ };
+
+ TextureUtils.getBestPowerOf2 = function (value) {
+ var p = 1;
+
+ while (p < value)
+ p <<= 1;
+
+ if (p > TextureUtils.MAX_SIZE)
+ p = TextureUtils.MAX_SIZE;
+
+ return p;
+ };
+ TextureUtils.MAX_SIZE = 2048;
+ return TextureUtils;
+})();
+
+module.exports = TextureUtils;
+
+
+},{}],"awayjs-core/lib/utils/Timer":[function(require,module,exports){
+var __extends = this.__extends || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ __.prototype = b.prototype;
+ d.prototype = new __();
+};
+var Error = require("awayjs-core/lib/errors/Error");
+var EventDispatcher = require("awayjs-core/lib/events/EventDispatcher");
+var TimerEvent = require("awayjs-core/lib/events/TimerEvent");
+
+var Timer = (function (_super) {
+ __extends(Timer, _super);
+ function Timer(delay, repeatCount) {
+ if (typeof repeatCount === "undefined") { repeatCount = 0; }
+ _super.call(this);
+ this._repeatCount = 0;
+ this._currentCount = 0;
+ this._running = false;
+
+ this._delay = delay;
+ this._repeatCount = repeatCount;
+
+ if (isNaN(delay) || delay < 0) {
+ throw new Error("Delay is negative or not a number");
+ }
+ }
+ Object.defineProperty(Timer.prototype, "currentCount", {
+ get: function () {
+ return this._currentCount;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Object.defineProperty(Timer.prototype, "delay", {
+ get: function () {
+ return this._delay;
+ },
+ set: function (value) {
+ this._delay = value;
+
+ if (this._running) {
+ this.stop();
+ this.start();
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Object.defineProperty(Timer.prototype, "repeatCount", {
+ get: function () {
+ return this._repeatCount;
+ },
+ set: function (value) {
+ this._repeatCount = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+
+ Timer.prototype.reset = function () {
+ if (this._running) {
+ this.stop();
+ }
+
+ this._currentCount = 0;
+ };
+
+ Object.defineProperty(Timer.prototype, "running", {
+ get: function () {
+ return this._running;
+ },
+ enumerable: true,
+ configurable: true
+ });
+
+ Timer.prototype.start = function () {
+ var _this = this;
+ this._running = true;
+ clearInterval(this._iid);
+ this._iid = setInterval(function () {
+ return _this.tick();
+ }, this._delay);
+ };
+
+ Timer.prototype.stop = function () {
+ this._running = false;
+ clearInterval(this._iid);
+ };
+
+ Timer.prototype.tick = function () {
+ this._currentCount++;
+
+ if ((this._repeatCount > 0) && this._currentCount >= this._repeatCount) {
+ this.stop();
+ this.dispatchEvent(new TimerEvent(TimerEvent.TIMER));
+ this.dispatchEvent(new TimerEvent(TimerEvent.TIMER_COMPLETE));
+ } else {
+ this.dispatchEvent(new TimerEvent(TimerEvent.TIMER));
+ }
+ };
+ return Timer;
+})(EventDispatcher);
+
+module.exports = Timer;
+
+
+},{"awayjs-core/lib/errors/Error":undefined,"awayjs-core/lib/events/EventDispatcher":undefined,"awayjs-core/lib/events/TimerEvent":undefined}],"awayjs-core/lib/utils/getTimer":[function(require,module,exports){
+/**
+*
+*
+* @returns {number}
+*/
+function getTimer() {
+ // number milliseconds of 1970/01/01
+ // this different to AS3 implementation which gets the number of milliseconds
+ // since instance of Flash player was initialised
+ return Date.now();
+}
+
+module.exports = getTimer;
+
+
+},{}]},{},[])
+
+
+//# sourceMappingURL=awayjs-core.js.map
\ No newline at end of file
diff --git a/build/awayjs-core.js.map b/build/awayjs-core.js.map
new file mode 100644
index 00000000..a0b53780
--- /dev/null
+++ b/build/awayjs-core.js.map
@@ -0,0 +1,475 @@
+{
+ "version": 3,
+ "sources": [
+ "node_modules/browserify/node_modules/browser-pack/_prelude.js",
+ "animators/IAnimationSet.ts",
+ "animators/IAnimator.ts",
+ "animators/nodes/AnimationNodeBase.ts",
+ "bounds/AxisAlignedBoundingBox.ts",
+ "bounds/BoundingSphere.ts",
+ "bounds/BoundingVolumeBase.ts",
+ "bounds/NullBounds.ts",
+ "containers/DisplayObjectContainer.ts",
+ "containers/Loader.ts",
+ "containers/Scene.ts",
+ "containers/View.ts",
+ "controllers/ControllerBase.ts",
+ "controllers/FirstPersonController.ts",
+ "controllers/FollowController.ts",
+ "controllers/HoverController.ts",
+ "controllers/LookAtController.ts",
+ "controllers/SpringController.ts",
+ "core/base/AlignmentMode.ts",
+ "core/base/BitmapDataChannel.ts",
+ "core/base/BitmapData.ts",
+ "core/base/BlendMode.ts",
+ "core/base/CapsStyle.ts",
+ "core/base/DisplayObject.ts",
+ "core/base/Geometry.ts",
+ "core/base/GradientType.ts",
+ "core/base/GraphicsPathWinding.ts",
+ "core/base/Graphics.ts",
+ "core/base/IBitmapDrawable.ts",
+ "core/base/IGraphicsData.ts",
+ "core/base/IMaterialOwner.ts",
+ "core/base/IStage.ts",
+ "core/base/ISubMeshClass.ts",
+ "core/base/ISubMesh.ts",
+ "core/base/InterpolationMethod.ts",
+ "core/base/JointStyle.ts",
+ "core/base/LightBase.ts",
+ "core/base/LineScaleMode.ts",
+ "core/base/LineSubGeometry.ts",
+ "core/base/LineSubMesh.ts",
+ "core/base/LoaderInfo.ts",
+ "core/base/OrientationMode.ts",
+ "core/base/PixelSnapping.ts",
+ "core/base/SpreadMethod.ts",
+ "core/base/SubGeometryBase.ts",
+ "core/base/SubMeshBase.ts",
+ "core/base/TriangleCulling.ts",
+ "core/base/TriangleSubGeometry.ts",
+ "core/base/TriangleSubMesh.ts",
+ "core/display/ContextMode.ts",
+ "core/display/IContext.ts",
+ "core/geom/Box.ts",
+ "core/geom/ColorTransform.ts",
+ "core/geom/MathConsts.ts",
+ "core/geom/Matrix3DUtils.ts",
+ "core/geom/Matrix3D.ts",
+ "core/geom/Matrix.ts",
+ "core/geom/Orientation3D.ts",
+ "core/geom/PerspectiveProjection.ts",
+ "core/geom/Plane3D.ts",
+ "core/geom/PlaneClassification.ts",
+ "core/geom/Point.ts",
+ "core/geom/PoissonLookup.ts",
+ "core/geom/Quaternion.ts",
+ "core/geom/Rectangle.ts",
+ "core/geom/Transform.ts",
+ "core/geom/UVTransform.ts",
+ "core/geom/Vector3D.ts",
+ "core/library/AssetLibraryBundle.ts",
+ "core/library/AssetLibraryIterator.ts",
+ "core/library/AssetLibrary.ts",
+ "core/library/AssetLoaderContext.ts",
+ "core/library/AssetLoaderToken.ts",
+ "core/library/AssetLoader.ts",
+ "core/library/AssetType.ts",
+ "core/library/ConflictPrecedence.ts",
+ "core/library/ConflictStrategyBase.ts",
+ "core/library/ConflictStrategy.ts",
+ "core/library/ErrorConflictStrategy.ts",
+ "core/library/IAsset.ts",
+ "core/library/IDUtil.ts",
+ "core/library/IgnoreConflictStrategy.ts",
+ "core/library/NamedAssetBase.ts",
+ "core/library/NumSuffixConflictStrategy.ts",
+ "core/net/CrossDomainPolicy.ts",
+ "core/net/URLLoaderDataFormat.ts",
+ "core/net/URLLoader.ts",
+ "core/net/URLRequestMethod.ts",
+ "core/net/URLRequest.ts",
+ "core/net/URLVariables.ts",
+ "core/partition/CameraNode.ts",
+ "core/partition/DirectionalLightNode.ts",
+ "core/partition/EntityNode.ts",
+ "core/partition/LightProbeNode.ts",
+ "core/partition/NodeBase.ts",
+ "core/partition/NullNode.ts",
+ "core/partition/Partition.ts",
+ "core/partition/PointLightNode.ts",
+ "core/partition/SkyboxNode.ts",
+ "core/pick/IPicker.ts",
+ "core/pick/IPickingCollider.ts",
+ "core/pick/PickingCollisionVO.ts",
+ "core/pick/RaycastPicker.ts",
+ "core/pool/CSSBillboardRenderable.ts",
+ "core/pool/CSSLineSegmentRenderable.ts",
+ "core/pool/CSSRenderableBase.ts",
+ "core/pool/CSSSkyboxRenderable.ts",
+ "core/pool/EntityListItemPool.ts",
+ "core/pool/EntityListItem.ts",
+ "core/pool/IMaterialData.ts",
+ "core/pool/IMaterialPassData.ts",
+ "core/pool/IRenderableClass.ts",
+ "core/pool/IRenderable.ts",
+ "core/pool/ITextureData.ts",
+ "core/pool/RenderablePool.ts",
+ "core/render/CSSDefaultRenderer.ts",
+ "core/render/CSSRendererBase.ts",
+ "core/render/IRenderer.ts",
+ "core/sort/IEntitySorter.ts",
+ "core/sort/RenderableMergeSort.ts",
+ "core/text/AntiAliasType.ts",
+ "core/text/GridFitType.ts",
+ "core/text/TextFieldAutoSize.ts",
+ "core/text/TextFieldType.ts",
+ "core/text/TextFormatAlign.ts",
+ "core/text/TextFormat.ts",
+ "core/text/TextInteractionMode.ts",
+ "core/text/TextLineMetrics.ts",
+ "core/traverse/CSSEntityCollector.ts",
+ "core/traverse/CollectorBase.ts",
+ "core/traverse/EntityCollector.ts",
+ "core/traverse/ICollector.ts",
+ "core/traverse/RaycastCollector.ts",
+ "core/traverse/ShadowCasterCollector.ts",
+ "core/ui/Keyboard.ts",
+ "entities/Billboard.ts",
+ "entities/Camera.ts",
+ "entities/DirectionalLight.ts",
+ "entities/IEntity.ts",
+ "entities/LightProbe.ts",
+ "entities/LineSegment.ts",
+ "entities/Mesh.ts",
+ "entities/PointLight.ts",
+ "entities/Shape.ts",
+ "entities/Skybox.ts",
+ "entities/TextField.ts",
+ "errors/AbstractMethodError.ts",
+ "errors/ArgumentError.ts",
+ "errors/CastError.ts",
+ "errors/DocumentError.ts",
+ "errors/Error.ts",
+ "errors/PartialImplementationError.ts",
+ "errors/RangeError.ts",
+ "events/AssetEvent.ts",
+ "events/CameraEvent.ts",
+ "events/DisplayObjectEvent.ts",
+ "events/EventDispatcher.ts",
+ "events/Event.ts",
+ "events/GeometryEvent.ts",
+ "events/HTTPStatusEvent.ts",
+ "events/IEventDispatcher.ts",
+ "events/IOErrorEvent.ts",
+ "events/LightEvent.ts",
+ "events/LoaderEvent.ts",
+ "events/MaterialEvent.ts",
+ "events/MouseEvent.ts",
+ "events/ParserEvent.ts",
+ "events/ProgressEvent.ts",
+ "events/ProjectionEvent.ts",
+ "events/RendererEvent.ts",
+ "events/ResizeEvent.ts",
+ "events/SceneEvent.ts",
+ "events/StageEvent.ts",
+ "events/SubGeometryEvent.ts",
+ "events/TimerEvent.ts",
+ "managers/MouseManager.ts",
+ "materials/CSSMaterialBase.ts",
+ "materials/LightSources.ts",
+ "materials/MaterialBase.ts",
+ "materials/lightpickers/LightPickerBase.ts",
+ "materials/lightpickers/StaticLightPicker.ts",
+ "materials/passes/IMaterialPass.ts",
+ "materials/shadowmappers/CascadeShadowMapper.ts",
+ "materials/shadowmappers/CubeMapShadowMapper.ts",
+ "materials/shadowmappers/DirectionalShadowMapper.ts",
+ "materials/shadowmappers/NearDirectionalShadowMapper.ts",
+ "materials/shadowmappers/ShadowMapperBase.ts",
+ "parsers/CubeTextureParser.ts",
+ "parsers/ParserBase.ts",
+ "parsers/ParserDataFormat.ts",
+ "parsers/ParserUtils.ts",
+ "parsers/ResourceDependency.ts",
+ "parsers/Texture2DParser.ts",
+ "prefabs/PrefabBase.ts",
+ "prefabs/PrimitiveCapsulePrefab.ts",
+ "prefabs/PrimitiveConePrefab.ts",
+ "prefabs/PrimitiveCubePrefab.ts",
+ "prefabs/PrimitiveCylinderPrefab.ts",
+ "prefabs/PrimitivePlanePrefab.ts",
+ "prefabs/PrimitivePolygonPrefab.ts",
+ "prefabs/PrimitivePrefabBase.ts",
+ "prefabs/PrimitiveSpherePrefab.ts",
+ "prefabs/PrimitiveTorusPrefab.ts",
+ "projections/CoordinateSystem.ts",
+ "projections/FreeMatrixProjection.ts",
+ "projections/IProjection.ts",
+ "projections/ObliqueNearPlaneProjection.ts",
+ "projections/OrthographicOffCenterProjection.ts",
+ "projections/OrthographicProjection.ts",
+ "projections/PerspectiveProjection.ts",
+ "projections/ProjectionBase.ts",
+ "textures/BitmapCubeTexture.ts",
+ "textures/BitmapTexture.ts",
+ "textures/CubeTextureBase.ts",
+ "textures/ImageCubeTexture.ts",
+ "textures/ImageTexture.ts",
+ "textures/MipmapGenerator.ts",
+ "textures/RenderTexture.ts",
+ "textures/SpecularBitmapTexture.ts",
+ "textures/Texture2DBase.ts",
+ "textures/TextureProxyBase.ts",
+ "utils/ByteArrayBase.ts",
+ "utils/ByteArrayBuffer.ts",
+ "utils/ByteArray.ts",
+ "utils/CSS.ts",
+ "utils/Cast.ts",
+ "utils/ColorUtils.ts",
+ "utils/Debug.ts",
+ "utils/RequestAnimationFrame.ts",
+ "utils/TextureUtils.ts",
+ "utils/Timer.ts",
+ "utils/getTimer.ts"
+ ],
+ "names": [],
+ "mappings": "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,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC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CAAC;YACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,GAAG,GAAG,GAAC,CAAC,GAAG,GAAC,GAAG,GAAG,GAAG,GAAC,GAAG,CAAC,CAAC;SAClG;QACD,OAAO,UAAU;IAClB,CAAC;;IAWD;;;;MALG;IAEH;;MAEG;iCACH,UAAe,GAAY;QAE1B,IAAI,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,GAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;;QAE99B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;;QAE/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;;QAE/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAC/D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI;QAChE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IAAI,GAAG,IAAI,GAAC,IA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AO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAC,IAAI,CAAC,OA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",
+ "file": "generated.js",
+ "sourceRoot": "",
+ "sourcesContent": [
+ "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;oAnimationNodeBase
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get assetType():string\n\t{\n\t\treturn AssetType.ANIMATION_NODE;\n\t}\n}\n\nexport = AnimationNodeBase;",
+ "import BoundingVolumeBase\t\t\t= require(\"awayjs-core/lib/bounds/BoundingVolumeBase\");\nimport Matrix3D\t\t\t\t\t\t= require(\"awayjs-core/lib/core/geom/Matrix3D\");\nimport Matrix3DUtils\t\t\t\t= require(\"awayjs-core/lib/core/geom/Matrix3DUtils\");\nimport PlaneClassification\t\t\t= require(\"awayjs-core/lib/core/geom/PlaneClassification\");\nimport Plane3D\t\t\t\t\t\t= require(\"awayjs-core/lib/core/geom/Plane3D\");\nimport Vector3D\t\t\t\t\t\t= require(\"awayjs-core/lib/core/geom/Vector3D\");\nimport IEntity\t\t\t\t\t\t= require(\"awayjs-core/lib/entities/IEntity\");\n\n/**\n * AxisAlignedBoundingBox represents a bounding box volume that has its planes aligned to the local coordinate axes of the bounded object.\n * This is useful for most meshes.\n */\nclass AxisAlignedBoundingBox extends BoundingVolumeBase\n{\n\tprivate _centerX:number = 0;\n\tprivate _centerY:number = 0;\n\tprivate _centerZ:number = 0;\n\tprivate _halfExtentsX:number = 0;\n\tprivate _halfExtentsY:number = 0;\n\tprivate _halfExtentsZ:number = 0;\n\n\t/**\n\t * Creates a new AxisAlignedBoundingBox
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic nullify()\n\t{\n\t\tsuper.nullify();\n\n\t\tthis._centerX = this._centerY = this._centerZ = 0;\n\t\tthis._halfExtentsX = this._halfExtentsY = this._halfExtentsZ = 0;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic isInFrustum(planes:ArrayDisplayObject is an abstract base class; therefore, you cannot call\n * DisplayObject directly. Invoking new DisplayObject()
throws an\n * ArgumentError
exception.
new DisplayObjectContainer()
constructor throws an\n * ArgumentError
exception.\n *\n * For more information, see the \"Display Programming\" chapter of the\n * ActionScript 3.0 Developer's Guide.
\n */\nclass DisplayObjectContainer extends DisplayObject implements IAsset\n{\n\tprivate _mouseChildren:boolean = true;\n\tprivate _children:Arraytrue
.\n\t *\n\t * This property is useful when you create a button with an instance of\n\t * the Sprite class(instead of using the SimpleButton class). When you use a\n\t * Sprite instance to create a button, you can choose to decorate the button\n\t * by using the addChild()
method to add additional Sprite\n\t * instances. This process can cause unexpected behavior with mouse events\n\t * because the Sprite instances you add as children can become the target\n\t * object of a mouse event when you expect the parent instance to be the\n\t * target object. To ensure that the parent instance serves as the target\n\t * objects for mouse events, you can set the mouseChildren
\n\t * property of the parent instance to false
.
No event is dispatched by setting this property. You must use the\n\t * addEventListener()
method to create interactive\n\t * functionality.
true
.\n\t *\n\t * Note: Do not use the tabChildren
property with\n\t * Flex. Instead, use the\n\t * mx.core.UIComponent.hasFocusableChildren
property.
new DisplayObjectContainer()
constructor throws\n\t * an ArgumentError
exception. You can, however, call\n\t * constructors for the following subclasses of DisplayObjectContainer:\n\t * new Loader()
new Sprite()
new MovieClip()
addChildAt()
method.)\n\t *\n\t * If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.
\n\t *\n\t *Note: The command stage.addChild()
can cause\n\t * problems with a published SWF file, including security problems and\n\t * conflicts with other loaded SWF files. There is only one Stage within a\n\t * Flash runtime instance, no matter how many SWF files you load into the\n\t * runtime. So, generally, objects should not be added to the Stage,\n\t * directly, at all. The only object the Stage should contain is the root\n\t * object. Create a DisplayObjectContainer to contain all of the items on the\n\t * display list. Then, if necessary, add that DisplayObjectContainer instance\n\t * to the Stage.
child
\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null.\");\n\n\t\t//if child already has a parent, remove it.\n\t\tif (child._pParent)\n\t\t\tchild._pParent.removeChildInternal(child);\n\n\t\tchild.iSetParent(this);\n\n\t\tthis._children.push(child);\n\n\t\treturn child;\n\t}\n\n\n\t/**\n\t * Adds a child DisplayObject instance to this DisplayObjectContainer\n\t * instance. The child is added at the index position specified. An index of\n\t * 0 represents the back(bottom) of the display list for this\n\t * DisplayObjectContainer object.\n\t *\n\t * For example, the following example shows three display objects, labeled\n\t * a, b, and c, at index positions 0, 2, and 1, respectively:
\n\t *\n\t *If you add a child object that already has a different display object\n\t * container as a parent, the object is removed from the child list of the\n\t * other display object container.
\n\t *\n\t * @param child The DisplayObject instance to add as a child of this\n\t * DisplayObjectContainer instance.\n\t * @param index The index position to which the child is added. If you\n\t * specify a currently occupied index position, the child object\n\t * that exists at that position and all higher positions are\n\t * moved up one position in the child list.\n\t * @return The DisplayObject instance that you pass in thechild
\n\t * parameter.\n\t * @throws ArgumentError Throws if the child is the same as the parent. Also\n\t * throws if the caller is a child(or grandchild etc.)\n\t * of the child being added.\n\t * @throws RangeError Throws if the index position does not exist in the\n\t * child list.\n\t * @event added Dispatched when a display object is added to the display\n\t * list.\n\t */\n\tpublic addChildAt(child:DisplayObject, index:number /*int*/):DisplayObject\n\t{\n\t\treturn child;\n\t}\n\n\tpublic addChildren(...childarray:Arraytrue
.\n\t *\n\t * @param child The child object to test.\n\t * @return true
if the child
object is a child of\n\t * the DisplayObjectContainer or the container itself; otherwise\n\t * false
.\n\t */\n\tpublic contains(child:DisplayObject):boolean\n\t{\n\t\treturn this._children.indexOf(child) >= 0;\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic disposeWithChildren()\n\t{\n\t\tthis.dispose();\n\n\t\twhile (this.numChildren > 0)\n\t\t\tthis.getChildAt(0).dispose();\n\t}\n\n\t/**\n\t * Returns the child display object instance that exists at the specified\n\t * index.\n\t *\n\t * @param index The index position of the child object.\n\t * @return The child display object at the specified index position.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic getChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\tvar child:DisplayObject = this._children[index];\n\n\t\tif (child == null)\n\t\t\tthrow new RangeError(\"Index does not exist in the child list of the caller\");\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Returns the child display object that exists with the specified name. If\n\t * more that one child display object has the specified name, the method\n\t * returns the first object in the child list.\n\t *\n\t * The getChildAt()
method is faster than the\n\t * getChildByName()
method. The getChildAt()
method\n\t * accesses a child from a cached array, whereas the\n\t * getChildByName()
method has to traverse a linked list to\n\t * access a child.
child
DisplayObject instance.\n\t *\n\t * @param child The DisplayObject instance to identify.\n\t * @return The index position of the child display object to identify.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic getChildIndex(child:DisplayObject):number /*int*/\n\t{\n\t\tvar childIndex:number = this._children.indexOf(child);\n\n\t\tif (childIndex == -1)\n\t\t\tthrow new ArgumentError(\"Child parameter is not a child of the caller\");\n\n\t\treturn childIndex;\n\t}\n\n\t/**\n\t * Returns an array of objects that lie under the specified point and are\n\t * children(or grandchildren, and so on) of this DisplayObjectContainer\n\t * instance. Any child objects that are inaccessible for security reasons are\n\t * omitted from the returned array. To determine whether this security\n\t * restriction affects the returned array, call the\n\t * areInaccessibleObjectsUnderPoint()
method.\n\t *\n\t * The point
parameter is in the coordinate space of the\n\t * Stage, which may differ from the coordinate space of the display object\n\t * container(unless the display object container is the Stage). You can use\n\t * the globalToLocal()
and the localToGlobal()
\n\t * methods to convert points between these coordinate spaces.
child
DisplayObject instance from the\n\t * child list of the DisplayObjectContainer instance. The parent
\n\t * property of the removed child is set to null
, and the object\n\t * is garbage collected if no other references to the child exist. The index\n\t * positions of any display objects above the child in the\n\t * DisplayObjectContainer are decreased by 1.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.
\n\t *\n\t * @param child The DisplayObject instance to remove.\n\t * @return The DisplayObject instance that you pass in thechild
\n\t * parameter.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t */\n\tpublic removeChild(child:DisplayObject):DisplayObject\n\t{\n\t\tif (child == null)\n\t\t\tthrow new Error(\"Parameter child cannot be null\");\n\n\t\tthis.removeChildInternal(child);\n\n\t\tchild.iSetParent(null);\n\n\t\treturn child;\n\t}\n\n\t/**\n\t * Removes a child DisplayObject from the specified index
\n\t * position in the child list of the DisplayObjectContainer. The\n\t * parent
property of the removed child is set to\n\t * null
, and the object is garbage collected if no other\n\t * references to the child exist. The index positions of any display objects\n\t * above the child in the DisplayObjectContainer are decreased by 1.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable\n\t * or object is no longer actively referenced or stored somewhere, the\n\t * garbage collector sweeps through and wipes out the memory space it used to\n\t * occupy if no other references to it exist.
\n\t *\n\t * @param index The child index of the DisplayObject to remove.\n\t * @return The DisplayObject instance that was removed.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t * @throws SecurityError This child display object belongs to a sandbox to\n\t * which the calling object does not have access. You\n\t * can avoid this situation by having the child movie\n\t * call theSecurity.allowDomain()
method.\n\t */\n\tpublic removeChildAt(index:number /*int*/):DisplayObject\n\t{\n\t\treturn this.removeChild(this._children[index]);\n\t}\n\n\t/**\n\t * Removes all child
DisplayObject instances from the child list\n\t * of the DisplayObjectContainer instance. The parent
property\n\t * of the removed children is set to null
, and the objects are\n\t * garbage collected if no other references to the children exist.\n\t *\n\t * The garbage collector reallocates unused memory space. When a variable or\n\t * object is no longer actively referenced or stored somewhere, the garbage\n\t * collector sweeps through and wipes out the memory space it used to occupy\n\t * if no other references to it exist.\n\t *\n\t * @param beginIndex The beginning position. A value smaller than 0 throws a RangeError.\n\t * @param endIndex The ending position. A value smaller than 0 throws a RangeError.\n\t * @throws RangeError Throws if the beginIndex or endIndex positions do\n\t * not exist in the child list.\n\t */\n\tpublic removeChildren(beginIndex:number /*int*/ = 0, endIndex:number /*int*/ = 2147483647)\n\t{\n\t\tif (beginIndex < 0)\n\t\t\tthrow new RangeError(\"beginIndex is out of range of the child list\");\n\n\t\tif (endIndex > this._children.length)\n\t\t\tthrow new RangeError(\"endIndex is out of range of the child list\");\n\n\t\tfor(var i:number /*uint*/ = beginIndex; i < endIndex; i++)\n\t\t\tthis.removeChild(this._children[i]);\n\t}\n\n\t/**\n\t * Changes the position of an existing child in the display object container.\n\t * This affects the layering of child objects. For example, the following\n\t * example shows three display objects, labeled a, b, and c, at index\n\t * positions 0, 1, and 2, respectively:\n\t *\n\t * When you use the setChildIndex()
method and specify an\n\t * index position that is already occupied, the only positions that change\n\t * are those in between the display object's former and new position. All\n\t * others will stay the same. If a child is moved to an index LOWER than its\n\t * current index, all children in between will INCREASE by 1 for their index\n\t * reference. If a child is moved to an index HIGHER than its current index,\n\t * all children in between will DECREASE by 1 for their index reference. For\n\t * example, if the display object container in the previous example is named\n\t * container
, you can swap the position of the display objects\n\t * labeled a and b by calling the following code:
This code results in the following arrangement of objects:
\n\t *\n\t * @param child The child DisplayObject instance for which you want to change\n\t * the index number.\n\t * @param index The resulting index number for thechild
display\n\t * object.\n\t * @throws ArgumentError Throws if the child parameter is not a child of this\n\t * object.\n\t * @throws RangeError Throws if the index does not exist in the child\n\t * list.\n\t */\n\tpublic setChildIndex(child:DisplayObject, index:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order (front-to-back order) of the two specified child\n\t * objects. All other child objects in the display object container remain in\n\t * the same index positions.\n\t *\n\t * @param child1 The first child object.\n\t * @param child2 The second child object.\n\t * @throws ArgumentError Throws if either child parameter is not a child of\n\t * this object.\n\t */\n\tpublic swapChildren(child1:DisplayObject, child2:DisplayObject)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Swaps the z-order(front-to-back order) of the child objects at the two\n\t * specified index positions in the child list. All other child objects in\n\t * the display object container remain in the same index positions.\n\t *\n\t * @param index1 The index position of the first child object.\n\t * @param index2 The index position of the second child object.\n\t * @throws RangeError If either index does not exist in the child list.\n\t */\n\tpublic swapChildrenAt(index1:number /*int*/, index2:number /*int*/)\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic pInvalidateSceneTransform()\n\t{\n\t\tsuper.pInvalidateSceneTransform();\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i].pInvalidateSceneTransform();\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateScene(value:Scene)\n\t{\n\t\tsuper._pUpdateScene(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateScene(value);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitMouseEnabled(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitMouseEnabled(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitMouseEnabled(this._mouseChildren);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitVisibility(value:boolean)\n\t{\n\t\tsuper._pUpdateImplicitVisibility(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitVisibility(this._pImplicitVisibility);\n\t}\n\n\t/**\n\t * @protected\n\t */\n\tpublic _pUpdateImplicitPartition(value:Partition)\n\t{\n\t\tsuper._pUpdateImplicitPartition(value);\n\n\t\tvar len:number = this._children.length;\n\t\tfor (var i:number = 0; i < len; ++i)\n\t\t\tthis._children[i]._pUpdateImplicitPartition(this._pImplicitPartition);\n\t}\n\n\t/**\n\t * @private\n\t *\n\t * @param child\n\t */\n\tprivate removeChildInternal(child:DisplayObject):DisplayObject\n\t{\n\t\tthis._children.splice(this.getChildIndex(child), 1);\n\n\t\treturn child;\n\t}\n}\n\nexport = DisplayObjectContainer;",
+ "import DisplayObjectContainer\t\t= require(\"awayjs-core/lib/containers/DisplayObjectContainer\");\nimport DisplayObject\t\t\t\t= require(\"awayjs-core/lib/core/base/DisplayObject\");\nimport LoaderInfo\t\t\t\t\t= require(\"awayjs-core/lib/core/base/LoaderInfo\");\nimport AssetLibraryBundle\t\t\t= require(\"awayjs-core/lib/core/library/AssetLibraryBundle\");\nimport AssetLoader\t\t\t\t\t= require(\"awayjs-core/lib/core/library/AssetLoader\");\nimport AssetLoaderContext\t\t\t= require(\"awayjs-core/lib/core/library/AssetLoaderContext\");\nimport AssetLoaderToken\t\t\t\t= require(\"awayjs-core/lib/core/library/AssetLoaderToken\");\nimport URLRequest\t\t\t\t\t= require(\"awayjs-core/lib/core/net/URLRequest\");\nimport AssetEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/AssetEvent\");\nimport EventDispatcher\t\t\t\t= require(\"awayjs-core/lib/events/EventDispatcher\");\nimport IOErrorEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/IOErrorEvent\");\nimport LoaderEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/LoaderEvent\");\nimport ParserEvent\t\t\t\t\t= require(\"awayjs-core/lib/events/ParserEvent\");\nimport ParserBase\t\t\t\t\t= require(\"awayjs-core/lib/parsers/ParserBase\");\n\n/**\n * The Loader class is used to load SWF files or image(JPG, PNG, or GIF)\n * files. Use the load()
method to initiate loading. The loaded\n * display object is added as a child of the Loader object.\n *\n * Use the URLLoader class to load text or binary data.
\n *\n *The Loader class overrides the following methods that it inherits,\n * because a Loader object can only have one child display object - the\n * display object that it loads. Calling the following methods throws an\n * exception: addChild()
, addChildAt()
,\n * removeChild()
, removeChildAt()
, and\n * setChildIndex()
. To remove a loaded display object, you must\n * remove the Loader object from its parent DisplayObjectContainer\n * child array.
Note: The ActionScript 2.0 MovieClipLoader and LoadVars classes\n * are not used in ActionScript 3.0. The Loader and URLLoader classes replace\n * them.
\n *\n *When you use the Loader class, consider the Flash Player and Adobe AIR\n * security model:
\n *\n *System.allowDomain()
or the\n * System.allowInsecureDomain()
method in the loaded content\n * file.However, in AIR, content in the application
security\n * sandbox(content installed with the AIR application) are not restricted by\n * these security limitations.
For more information related to security, see the Flash Player Developer\n * Center Topic: Security.
\n *\n *When loading a SWF file from an untrusted source(such as a domain other\n * than that of the Loader object's root SWF file), you may want to define a\n * mask for the Loader object, to prevent the loaded content(which is a child\n * of the Loader object) from drawing to portions of the Stage outside of that\n * mask, as shown in the following code:
\n */\nclass Loader extends DisplayObjectContainer\n{\n\t/**\n\t * Dispatched when any asset finishes parsing. Also see specific events for each\n\t * individual asset type (meshes, materials et c.)\n\t *\n\t * @eventType AssetEvent\n\t */\n\t//[Event(name=\"assetComplete\", type=\"AssetEvent\")]\n\n\n\t/**\n\t * Dispatched when a full resource (including dependencies) finishes loading.\n\t *\n\t * @eventType LoaderEvent\n\t */\n\t//[Event(name=\"resourceComplete\", type=\"LoaderEvent\")]\n\n\tprivate _loadingSessions:Arrayload()
or\n\t * loadBytes()
methods.\n\t *\n\t * @throws SecurityError The loaded SWF file or image file belongs to a\n\t * security sandbox to which you do not have access.\n\t * For a loaded SWF file, you can avoid this situation\n\t * by having the file call the\n\t * Security.allowDomain()
method or by\n\t * having the loading file specify a\n\t * loaderContext
parameter with its\n\t * securityDomain
property set to\n\t * SecurityDomain.currentDomain
when you\n\t * call the load()
or\n\t * loadBytes()
method.\n\t */\n\tpublic get content():DisplayObject\n\t{\n\t\treturn this._content;\n\t}\n\n\t/**\n\t * Returns a LoaderInfo object corresponding to the object being loaded.\n\t * LoaderInfo objects are shared between the Loader object and the loaded\n\t * content object. The LoaderInfo object supplies loading progress\n\t * information and statistics about the loaded file.\n\t *\n\t * Events related to the load are dispatched by the LoaderInfo object\n\t * referenced by the contentLoaderInfo
property of the Loader\n\t * object. The contentLoaderInfo
property is set to a valid\n\t * LoaderInfo object, even before the content is loaded, so that you can add\n\t * event listeners to the object prior to the load.
To detect uncaught errors that happen in a loaded SWF, use the\n\t * Loader.uncaughtErrorEvents
property, not the\n\t * Loader.contentLoaderInfo.uncaughtErrorEvents
property.
load()
method to load the asset\n\t * as a child of the Loader instance. You can then add the Loader object to\n\t * the display list(for instance, by using the addChild()
\n\t * method of a DisplayObjectContainer instance). The asset appears on the\n\t * Stage as it loads.\n\t *\n\t * You can also use a Loader instance \"offlist,\" that is without adding it\n\t * to a display object container on the display list. In this mode, the\n\t * Loader instance might be used to load a SWF file that contains additional\n\t * modules of an application.
\n\t *\n\t *To detect when the SWF file is finished loading, you can use the events\n\t * of the LoaderInfo object associated with the\n\t * contentLoaderInfo
property of the Loader object. At that\n\t * point, the code in the module SWF file can be executed to initialize and\n\t * start the module. In the offlist mode, a Loader instance might also be\n\t * used to load a SWF file that contains components or media assets. Again,\n\t * you can use the LoaderInfo object event notifications to detect when the\n\t * components are finished loading. At that point, the application can start\n\t * using the components and media assets in the library of the SWF file by\n\t * instantiating the ActionScript 3.0 classes that represent those components\n\t * and assets.
To determine the status of a Loader object, monitor the following\n\t * events that the LoaderInfo object associated with the\n\t * contentLoaderInfo
property of the Loader object:
open
event is dispatched when loading begins.ioError
or securityError
event is\n\t * dispatched if the file cannot be loaded or if an error occured during the\n\t * load process. progress
event fires continuously while the file is\n\t * being loaded.complete
event is dispatched when a file completes\n\t * downloading, but before the loaded movie clip's methods and properties are\n\t * available. init
event is dispatched after the properties and\n\t * methods of the loaded SWF file are accessible, so you can begin\n\t * manipulating the loaded SWF file. This event is dispatched before the\n\t * complete
handler. In streaming SWF files, the\n\t * init
event can occur significantly earlier than the\n\t * complete
event. For most purposes, use the init
\n\t * handler.load()
method operation that is currently in\n\t * progress for the Loader instance.\n\t *\n\t */\n\tpublic close()\n\t{\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\tlib.stopAllLoadingSessions();\n\t\t\tthis._loadingSessions = null;\n\t\t\treturn\n\t\t}\n\t\tvar i:number /*int*/;\n\t\tvar length:number /*int*/ = this._loadingSessions.length;\n\t\tfor (i = 0; i < length; i++) {\n\t\t\tthis.removeListeners(this._loadingSessions[i]);\n\t\t\tthis._loadingSessions[i].stop();\n\t\t\tthis._loadingSessions[i] = null;\n\t\t}\n\t\tthis._loadingSessions = null;\n\t}\n\n\t/**\n\t * Loads a SWF, JPEG, progressive JPEG, unanimated GIF, or PNG file into an\n\t * object that is a child of this Loader object. If you load an animated GIF\n\t * file, only the first frame is displayed. As the Loader object can contain\n\t * only a single child, issuing a subsequent load()
request\n\t * terminates the previous request, if still pending, and commences a new\n\t * load.\n\t *\n\t * Note: In AIR 1.5 and Flash Player 10, the maximum size for a\n\t * loaded image is 8,191 pixels in width or height, and the total number of\n\t * pixels cannot exceed 16,777,215 pixels.(So, if an loaded image is 8,191\n\t * pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and\n\t * earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height\n\t * and 2,880 pixels in width.
\n\t *\n\t *A SWF file or image loaded into a Loader object inherits the position,\n\t * rotation, and scale properties of the parent display objects of the Loader\n\t * object.
\n\t *\n\t *Use the unload()
method to remove movies or images loaded\n\t * with this method, or to cancel a load operation that is in progress.
You can prevent a SWF file from using this method by setting the\n\t * allowNetworking
parameter of the the object
and\n\t * embed
tags in the HTML page that contains the SWF\n\t * content.
When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.
\n\t *\n\t *In Flash Player 10 and later, if you use a multipart Content-Type(for\n\t * example \"multipart/form-data\") that contains an upload(indicated by a\n\t * \"filename\" parameter in a \"content-disposition\" header within the POST\n\t * body), the POST operation is subject to the security rules applied to\n\t * uploads:
\n\t *\n\t *Also, for any multipart Content-Type, the syntax must be valid\n\t * (according to the RFC2046 standard). If the syntax appears to be invalid,\n\t * the POST operation is subject to the security rules applied to\n\t * uploads.
\n\t *\n\t *For more information related to security, see the Flash Player\n\t * Developer Center Topic: Security.
\n\t *\n\t * @param request The absolute or relative URL of the SWF, JPEG, GIF, or PNG\n\t * file to be loaded. A relative path must be relative to the\n\t * main SWF file. Absolute URLs must include the protocol\n\t * reference, such as http:// or file:///. Filenames cannot\n\t * include disk drive specifications.\n\t * @param context A LoaderContext object, which has properties that define\n\t * the following:\n\t *If the context
parameter is not specified\n\t * or refers to a null object, the loaded content remains in\n\t * its own security domain.
For complete details, see the description of the\n\t * properties in the LoaderContext\n\t * class.
\n\t * @param ns An optional namespace string under which the file is to be\n\t * loaded, allowing the differentiation of two resources with\n\t * identical assets.\n\t * @param parser An optional parser object for translating the loaded data\n\t * into a usable resource. If not provided, AssetLoader will\n\t * attempt to auto-detect the file type.\n\t * @throws IOError Thedigest
property of the\n\t * request
object is not\n\t * null
. You should only set the\n\t * digest
property of a URLRequest\n\t * object when calling the\n\t * URLLoader.load()
method when\n\t * loading a SWZ file(an Adobe platform\n\t * component).\n\t * @throws IllegalOperationError If the requestedContentParent
\n\t * property of the context
\n\t * parameter is a Loader
.\n\t * @throws IllegalOperationError If the LoaderContext.parameters
\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError The value of\n\t * LoaderContext.securityDomain
\n\t * must be either null
or\n\t * SecurityDomain.currentDomain
.\n\t * This reflects the fact that you can only\n\t * place the loaded media in its natural\n\t * security sandbox or your own(the latter\n\t * requires a policy file).\n\t * @throws SecurityError Local SWF files may not set\n\t * LoaderContext.securityDomain to anything\n\t * other than null
. It is not\n\t * permitted to import non-local media into a\n\t * local sandbox, or to place other local media\n\t * in anything other than its natural sandbox.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @throws SecurityError If the applicationDomain
or\n\t * securityDomain
properties of\n\t * the context
parameter are from\n\t * a disallowed domain.\n\t * @throws SecurityError If a local SWF file is attempting to use the\n\t * securityDomain
property of the\n\t * context
parameter.\n\t * @event asyncError Dispatched by the contentLoaderInfo
\n\t * object if the\n\t * LoaderContext.requestedContentParent
\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie
or if the\n\t * addChild()
call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo
\n\t * object when the file has completed loading. The\n\t * complete
event is always dispatched\n\t * after the init
event.\n\t * @event httpStatus Dispatched by the contentLoaderInfo
\n\t * object when a network request is made over HTTP and\n\t * Flash Player can detect the HTTP status code.\n\t * @event init Dispatched by the contentLoaderInfo
\n\t * object when the properties and methods of the loaded\n\t * SWF file are accessible. The init
event\n\t * always precedes the complete
event.\n\t * @event ioError Dispatched by the contentLoaderInfo
\n\t * object when an input or output error occurs that\n\t * causes a load operation to fail.\n\t * @event open Dispatched by the contentLoaderInfo
\n\t * object when the loading operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo
\n\t * object as data is received while load operation\n\t * progresses.\n\t * @event securityError Dispatched by the contentLoaderInfo
\n\t * object if a SWF file in the local-with-filesystem\n\t * sandbox attempts to load content in the\n\t * local-with-networking sandbox, or vice versa.\n\t * @event securityError Dispatched by the contentLoaderInfo
\n\t * object if the\n\t * LoaderContext.requestedContentParent
\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent
\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo
\n\t * object when a loaded object is removed.\n\t */\n\tpublic load(request:URLRequest, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.load(request, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.load(request, context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Loads from binary data stored in a ByteArray object.\n\t *\n\t * The loadBytes()
method is asynchronous. You must wait for\n\t * the \"init\" event before accessing the properties of a loaded object.
When you use this method, consider the Flash Player security model,\n\t * which is described in the Loader class description.
\n\t *\n\t * @param bytes A ByteArray object. The contents of the ByteArray can be\n\t * any of the file formats supported by the Loader class: SWF,\n\t * GIF, JPEG, or PNG.\n\t * @param context A LoaderContext object. Only the\n\t *applicationDomain
property of the\n\t * LoaderContext object applies; the\n\t * checkPolicyFile
and\n\t * securityDomain
properties of the LoaderContext\n\t * object do not apply.\n\t *\n\t * If the context
parameter is not specified\n\t * or refers to a null object, the content is loaded into the\n\t * current security domain - a process referred to as \"import\n\t * loading\" in Flash Player security documentation.\n\t * Specifically, if the loading SWF file trusts the remote SWF\n\t * by incorporating the remote SWF into its code, then the\n\t * loading SWF can import it directly into its own security\n\t * domain.
For more information related to security, see the Flash\n\t * Player Developer Center Topic: Security.
\n\t * @throws ArgumentError If thelength
property of the\n\t * ByteArray object is not greater than 0.\n\t * @throws IllegalOperationError If the checkPolicyFile
or\n\t * securityDomain
property of the\n\t * context
parameter are non-null.\n\t * @throws IllegalOperationError If the requestedContentParent
\n\t * property of the context
\n\t * parameter is a Loader
.\n\t * @throws IllegalOperationError If the LoaderContext.parameters
\n\t * parameter is set to non-null and has some\n\t * values which are not Strings.\n\t * @throws SecurityError If the provided\n\t * applicationDomain
property of\n\t * the context
property is from a\n\t * disallowed domain.\n\t * @throws SecurityError You cannot connect to commonly reserved\n\t * ports. For a complete list of blocked ports,\n\t * see \"Restricting Networking APIs\" in the\n\t * ActionScript 3.0 Developer's Guide.\n\t * @event asyncError Dispatched by the contentLoaderInfo
\n\t * object if the\n\t * LoaderContext.requestedContentParent
\n\t * property has been specified and it is not possible to\n\t * add the loaded content as a child to the specified\n\t * DisplayObjectContainer. This could happen if the\n\t * loaded content is a\n\t * flash.display.AVM1Movie
or if the\n\t * addChild()
call to the\n\t * requestedContentParent throws an error.\n\t * @event complete Dispatched by the contentLoaderInfo
\n\t * object when the operation is complete. The\n\t * complete
event is always dispatched\n\t * after the init
event.\n\t * @event init Dispatched by the contentLoaderInfo
\n\t * object when the properties and methods of the loaded\n\t * data are accessible. The init
event\n\t * always precedes the complete
event.\n\t * @event ioError Dispatched by the contentLoaderInfo
\n\t * object when the runtime cannot parse the data in the\n\t * byte array.\n\t * @event open Dispatched by the contentLoaderInfo
\n\t * object when the operation starts.\n\t * @event progress Dispatched by the contentLoaderInfo
\n\t * object as data is transfered in memory.\n\t * @event securityError Dispatched by the contentLoaderInfo
\n\t * object if the\n\t * LoaderContext.requestedContentParent
\n\t * property has been specified and the security sandbox\n\t * of the\n\t * LoaderContext.requestedContentParent
\n\t * does not have access to the loaded SWF.\n\t * @event unload Dispatched by the contentLoaderInfo
\n\t * object when a loaded object is removed.\n\t */\n\tpublic loadData(data:any, context:AssetLoaderContext = null, ns:string = null, parser:ParserBase = null):AssetLoaderToken\n\t{\n\t\tvar token:AssetLoaderToken;\n\n\t\tif (this._useAssetLib) {\n\t\t\tvar lib:AssetLibraryBundle;\n\t\t\tlib = AssetLibraryBundle.getInstance(this._assetLibId);\n\t\t\ttoken = lib.loadData(data, context, ns, parser);\n\t\t} else {\n\t\t\tvar loader:AssetLoader = new AssetLoader();\n\t\t\tthis._loadingSessions.push(loader);\n\t\t\ttoken = loader.loadData(data, '', context, ns, parser);\n\t\t}\n\n\t\ttoken.addEventListener(LoaderEvent.RESOURCE_COMPLETE, this._onResourceCompleteDelegate);\n\t\ttoken.addEventListener(AssetEvent.ASSET_COMPLETE, this._onAssetCompleteDelegate);\n\n\t\t// Error are handled separately (see documentation for addErrorHandler)\n\t\ttoken._iLoader._iAddErrorHandler(this.onLoadError);\n\t\ttoken._iLoader._iAddParseErrorHandler(this.onParseError);\n\n\t\treturn token;\n\t}\n\n\t/**\n\t * Removes a child of this Loader object that was loaded by using the\n\t * load()
method. The property
of the associated\n\t * LoaderInfo object is reset to null
. The child is not\n\t * necessarily destroyed because other objects might have references to it;\n\t * however, it is no longer a child of the Loader object.\n\t *\n\t * As a best practice, before you unload a child SWF file, you should\n\t * explicitly close any streams in the child SWF file's objects, such as\n\t * LocalConnection, NetConnection, NetStream, and Sound objects. Otherwise,\n\t * audio in the child SWF file might continue to play, even though the child\n\t * SWF file was unloaded. To close streams in the child SWF file, add an\n\t * event listener to the child that listens for the unload
\n\t * event. When the parent calls Loader.unload()
, the\n\t * unload
event is dispatched to the child. The following code\n\t * shows how you might do this:
public closeAllStreams(evt:Event) {\n\t * myNetStream.close(); mySound.close(); myNetConnection.close();\n\t * myLocalConnection.close(); }\n\t * myMovieClip.loaderInfo.addEventListener(Event.UNLOAD,\n\t * closeAllStreams);\n\t *\n\t */\n\tpublic unload()\n\t{\n\t\t//TODO\n\t}\n\n\t/**\n\t * Enables a specific parser.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClass The parser class to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParser(parserClass:Object)\n\t{\n\t\tAssetLoader.enableParser(parserClass);\n\t}\n\n\t/**\n\t * Enables a list of parsers.\n\t * When no specific parser is set for a loading/parsing opperation,\n\t * loader3d can autoselect the correct parser to use.\n\t * A parser must have been enabled, to be considered when autoselecting the parser.\n\t *\n\t * @param parserClasses A Vector of parser classes to enable.\n\t * @see away.parsers.Parsers\n\t */\n\tpublic static enableParsers(parserClasses:Array