diff --git a/Gruntfile.js b/Gruntfile.js
deleted file mode 100644
index 478398a9e..000000000
--- 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/StageGLExtensions.ts', // TypeScript export source
- tsPath: 'src/', // TypeScript source folder
-
- tsExportFile: 'build/stagegl-extensions.' + version + '.js', // JavaScript export target
- tsExportUglyFile: 'build/stagegl-extensions.' + 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-renderergl.d.ts b/build/awayjs-renderergl.d.ts
new file mode 100755
index 000000000..f8c60976a
--- /dev/null
+++ b/build/awayjs-renderergl.d.ts
@@ -0,0 +1,6401 @@
+declare module "awayjs-renderergl/lib/animators/data/ParticleData" {
+ import TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+ class ParticleData {
+ particleIndex: number;
+ numVertices: number;
+ startVertexIndex: number;
+ subGeometry: TriangleSubGeometry;
+ }
+ export = ParticleData;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/ParticleAnimationData" {
+ import ParticleData = require("awayjs-renderergl/lib/animators/data/ParticleData");
+ /**
+ * ...
+ */
+ class ParticleAnimationData {
+ index: number;
+ startTime: number;
+ totalTime: number;
+ duration: number;
+ delay: number;
+ startVertexIndex: number;
+ numVertices: number;
+ constructor(index: number, startTime: number, duration: number, delay: number, particle: ParticleData);
+ }
+ export = ParticleAnimationData;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/AnimationSubGeometry" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import IContextStageGL = require("awayjs-stagegl/lib/core/stagegl/IContextStageGL");
+ import IVertexBuffer = require("awayjs-stagegl/lib/core/stagegl/IVertexBuffer");
+ import ParticleAnimationData = require("awayjs-renderergl/lib/animators/data/ParticleAnimationData");
+ /**
+ * ...
+ */
+ class AnimationSubGeometry {
+ static SUBGEOM_ID_COUNT: number;
+ _pVertexData: number[];
+ _pVertexBuffer: IVertexBuffer[];
+ _pBufferContext: IContextStageGL[];
+ _pBufferDirty: boolean[];
+ private _numVertices;
+ private _totalLenOfOneVertex;
+ numProcessedVertices: number;
+ previousTime: number;
+ animationParticles: ParticleAnimationData[];
+ /**
+ * An id for this animation subgeometry, used to identify animation subgeometries when using animation sets.
+ *
+ * @private
+ */
+ _iUniqueId: number;
+ constructor();
+ createVertexData(numVertices: number, totalLenOfOneVertex: number): void;
+ activateVertexBuffer(index: number, bufferOffset: number, stage: Stage, format: string): void;
+ dispose(): void;
+ invalidateBuffer(): void;
+ vertexData: number[];
+ numVertices: number;
+ totalLenOfOneVertex: number;
+ }
+ export = AnimationSubGeometry;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/ParticleProperties" {
+ /**
+ * Dynamic class for holding the local properties of a particle, used for processing the static properties
+ * of particles in the particle animation set before beginning upload to the GPU.
+ */
+ class ParticleProperties {
+ /**
+ * The index of the current particle being set.
+ */
+ index: number;
+ /**
+ * The total number of particles being processed by the particle animation set.
+ */
+ total: number;
+ /**
+ * The start time of the particle.
+ */
+ startTime: number;
+ /**
+ * The duration of the particle, an optional value used when the particle aniamtion set settings for useDuration
are enabled in the constructor.
+ *
+ * @see away.animators.ParticleAnimationSet
+ */
+ duration: number;
+ /**
+ * The delay between cycles of the particle, an optional value used when the particle aniamtion set settings for useLooping
and useDelay
are enabled in the constructor.
+ *
+ * @see away.animators.ParticleAnimationSet
+ */
+ delay: number;
+ }
+ export = ParticleProperties;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/ParticlePropertiesMode" {
+ /**
+ * Options for setting the properties mode of a particle animation node.
+ */
+ class ParticlePropertiesMode {
+ /**
+ * Mode that defines the particle node as acting on global properties (ie. the properties set in the node constructor or the corresponding animation state).
+ */
+ static GLOBAL: number;
+ /**
+ * Mode that defines the particle node as acting on local static properties (ie. the properties of particles set in the initialising on the animation set).
+ */
+ static LOCAL_STATIC: number;
+ /**
+ * Mode that defines the particle node as acting on local dynamic properties (ie. the properties of the particles set in the corresponding animation state).
+ */
+ static LOCAL_DYNAMIC: number;
+ }
+ export = ParticlePropertiesMode;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleNodeBase" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ /**
+ * Provides an abstract base class for particle animation nodes.
+ */
+ class ParticleNodeBase extends AnimationNodeBase {
+ private _priority;
+ _pMode: number;
+ _pDataLength: number;
+ _pOneData: number[];
+ _iDataOffset: number;
+ private static GLOBAL;
+ private static LOCAL_STATIC;
+ private static LOCAL_DYNAMIC;
+ private static MODES;
+ /**
+ * Returns the property mode of the particle animation node. Typically set in the node constructor
+ *
+ * @see away.animators.ParticlePropertiesMode
+ */
+ mode: number;
+ /**
+ * Returns the priority of the particle animation node, used to order the agal generated in a particle animation set. Set automatically on instantiation.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #getAGALVertexCode
+ */
+ priority: number;
+ /**
+ * Returns the length of the data used by the node when in LOCAL_STATIC
mode. Used to generate the local static data of the particle animation set.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #getAGALVertexCode
+ */
+ dataLength: number;
+ /**
+ * Returns the generated data vector of the node after one particle pass during the generation of all local static data of the particle animation set.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #generatePropertyOfOneParticle
+ */
+ oneData: number[];
+ /**
+ * Creates a new ParticleNodeBase
object.
+ *
+ * @param name Defines the generic name of the particle animation node.
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param dataLength Defines the length of the data used by the node when in LOCAL_STATIC
mode.
+ * @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.
+ */
+ constructor(name: string, mode: number, dataLength: number, priority?: number);
+ /**
+ * Returns the AGAL code of the particle animation node for use in the vertex shader.
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * Returns the AGAL code of the particle animation node for use in the fragment shader.
+ */
+ getAGALFragmentCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * Returns the AGAL code of the particle animation node for use in the fragment shader when UV coordinates are required.
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * Called internally by the particle animation set when assigning the set of static properties originally defined by the initParticleFunc of the set.
+ *
+ * @see away.animators.ParticleAnimationSet#initParticleFunc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ /**
+ * Called internally by the particle animation set when determining the requirements of the particle animation node AGAL.
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ }
+ export = ParticleNodeBase;
+
+}
+declare module "awayjs-renderergl/lib/events/AnimationStateEvent" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import Event = require("awayjs-core/lib/events/Event");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import IAnimationState = require("awayjs-stagegl/lib/animators/states/IAnimationState");
+ /**
+ * Dispatched to notify changes in an animation state's state.
+ */
+ class AnimationStateEvent extends Event {
+ /**
+ * Dispatched when a non-looping clip node inside an animation state reaches the end of its timeline.
+ */
+ static PLAYBACK_COMPLETE: string;
+ static TRANSITION_COMPLETE: string;
+ private _animator;
+ private _animationState;
+ private _animationNode;
+ /**
+ * Create a new AnimatonStateEvent
+ *
+ * @param type The event type.
+ * @param animator The animation state object that is the subject of this event.
+ * @param animationNode The animation node inside the animation state from which the event originated.
+ */
+ constructor(type: string, animator: AnimatorBase, animationState: IAnimationState, animationNode: AnimationNodeBase);
+ /**
+ * The animator object that is the subject of this event.
+ */
+ animator: AnimatorBase;
+ /**
+ * The animation state object that is the subject of this event.
+ */
+ animationState: IAnimationState;
+ /**
+ * The animation node inside the animation state from which the event originated.
+ */
+ animationNode: AnimationNodeBase;
+ /**
+ * Clones the event.
+ *
+ * @return An exact duplicate of the current object.
+ */
+ clone(): Event;
+ }
+ export = AnimationStateEvent;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/AnimationStateBase" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import IAnimationState = require("awayjs-stagegl/lib/animators/states/IAnimationState");
+ /**
+ *
+ */
+ class AnimationStateBase implements IAnimationState {
+ _pAnimationNode: AnimationNodeBase;
+ _pRootDelta: Vector3D;
+ _pPositionDeltaDirty: boolean;
+ _pTime: number;
+ _pStartTime: number;
+ _pAnimator: AnimatorBase;
+ /**
+ * Returns a 3d vector representing the translation delta of the animating entity for the current timestep of animation
+ */
+ positionDelta: Vector3D;
+ constructor(animator: AnimatorBase, animationNode: AnimationNodeBase);
+ /**
+ * Resets the start time of the node to a new value.
+ *
+ * @param startTime The absolute start time (in milliseconds) of the node's starting time.
+ */
+ offset(startTime: number): void;
+ /**
+ * Updates the configuration of the node to its current state.
+ *
+ * @param time The absolute time (in milliseconds) of the animator's play head position.
+ *
+ * @see AnimatorBase#update()
+ */
+ update(time: number): void;
+ /**
+ * Sets the animation phase of the node.
+ *
+ * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end.
+ */
+ phase(value: number): void;
+ /**
+ * Updates the node's internal playhead position.
+ *
+ * @param time The local time (in milliseconds) of the node's playhead position.
+ */
+ _pUpdateTime(time: number): void;
+ /**
+ * Updates the node's root delta position
+ */
+ _pUpdatePositionDelta(): void;
+ }
+ export = AnimationStateBase;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleStateBase" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ /**
+ * ...
+ */
+ class ParticleStateBase extends AnimationStateBase {
+ private _particleNode;
+ _pDynamicProperties: Vector3D[];
+ _pDynamicPropertiesDirty: Object;
+ _pNeedUpdateTime: boolean;
+ constructor(animator: ParticleAnimator, particleNode: ParticleNodeBase, needUpdateTime?: boolean);
+ needUpdateTime: boolean;
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ _pUpdateDynamicProperties(animationSubGeometry: AnimationSubGeometry): void;
+ }
+ export = ParticleStateBase;
+
+}
+declare module "awayjs-renderergl/lib/animators/ParticleAnimator" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ /**
+ * Provides an interface for assigning paricle-based animation data sets to mesh-based entity objects
+ * and controlling the various available states of animation through an interative playhead that can be
+ * automatically updated or manually triggered.
+ *
+ * Requires that the containing geometry of the parent mesh is particle geometry
+ *
+ * @see away.base.ParticleGeometry
+ */
+ class ParticleAnimator extends AnimatorBase {
+ private _particleAnimationSet;
+ private _animationParticleStates;
+ private _animatorParticleStates;
+ private _timeParticleStates;
+ private _totalLenOfOneVertex;
+ private _animatorSubGeometries;
+ /**
+ * Creates a new ParticleAnimator
object.
+ *
+ * @param particleAnimationSet The animation data set containing the particle animations used by the animator.
+ */
+ constructor(particleAnimationSet: ParticleAnimationSet);
+ /**
+ * @inheritDoc
+ */
+ clone(): AnimatorBase;
+ /**
+ * @inheritDoc
+ */
+ setRenderState(shaderObject: ShaderObjectBase, renderable: RenderableBase, stage: Stage, camera: Camera, vertexConstantOffset: number, vertexStreamOffset: number): void;
+ /**
+ * @inheritDoc
+ */
+ testGPUCompatibility(shaderObject: ShaderObjectBase): void;
+ /**
+ * @inheritDoc
+ */
+ start(): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateDeltaTime(dt: number): void;
+ /**
+ * @inheritDoc
+ */
+ resetTime(offset?: number): void;
+ dispose(): void;
+ private getAnimatorSubGeometry(subMesh);
+ }
+ export = ParticleAnimator;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleTimeState" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleTimeNode = require("awayjs-renderergl/lib/animators/nodes/ParticleTimeNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleTimeState extends ParticleStateBase {
+ /** @private */
+ static TIME_STREAM_INDEX: number;
+ /** @private */
+ static TIME_CONSTANT_INDEX: number;
+ private _particleTimeNode;
+ constructor(animator: ParticleAnimator, particleTimeNode: ParticleTimeNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleTimeState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleTimeNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleTimeState = require("awayjs-renderergl/lib/animators/states/ParticleTimeState");
+ /**
+ * A particle animation node used as the base node for timekeeping inside a particle. Automatically added to a particle animation set on instatiation.
+ */
+ class ParticleTimeNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesDuration: boolean;
+ /** @private */
+ _iUsesDelay: boolean;
+ /** @private */
+ _iUsesLooping: boolean;
+ /**
+ * Creates a new ParticleTimeNode
+ *
+ * @param [optional] usesDuration Defines whether the node uses the duration
data in the static properties to determine how long a particle is visible for. Defaults to false.
+ * @param [optional] usesDelay Defines whether the node uses the delay
data in the static properties to determine how long a particle is hidden for. Defaults to false. Requires usesDuration
to be true.
+ * @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime
, duration
and delay
data in the static properties function. Defaults to false. Requires usesLooping
to be true.
+ */
+ constructor(usesDuration?: boolean, usesLooping?: boolean, usesDelay?: boolean);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleTimeState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleTimeNode;
+
+}
+declare module "awayjs-renderergl/lib/core/base/ParticleGeometry" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import ParticleData = require("awayjs-renderergl/lib/animators/data/ParticleData");
+ /**
+ * @class away.base.ParticleGeometry
+ */
+ class ParticleGeometry extends Geometry {
+ particles: ParticleData[];
+ numParticles: number;
+ }
+ export = ParticleGeometry;
+
+}
+declare module "awayjs-renderergl/lib/animators/ParticleAnimationSet" {
+ import IAnimationSet = require("awayjs-core/lib/animators/IAnimationSet");
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import ISubMesh = require("awayjs-core/lib/core/base/ISubMesh");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ import AnimationSetBase = require("awayjs-stagegl/lib/animators/AnimationSetBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ /**
+ * The animation data set used by particle-based animators, containing particle animation data.
+ *
+ * @see away.animators.ParticleAnimator
+ */
+ class ParticleAnimationSet extends AnimationSetBase implements IAnimationSet {
+ /** @private */
+ _iAnimationRegisterCache: AnimationRegisterCache;
+ private _timeNode;
+ /**
+ * Property used by particle nodes that require compilation at the end of the shader
+ */
+ static POST_PRIORITY: number;
+ /**
+ * Property used by particle nodes that require color compilation
+ */
+ static COLOR_PRIORITY: number;
+ private _animationSubGeometries;
+ private _particleNodes;
+ private _localDynamicNodes;
+ private _localStaticNodes;
+ private _totalLenOfOneVertex;
+ hasUVNode: boolean;
+ needVelocity: boolean;
+ hasBillboard: boolean;
+ hasColorMulNode: boolean;
+ hasColorAddNode: boolean;
+ /**
+ * Initialiser function for static particle properties. Needs to reference a with the following format
+ *
+ *
+ * initParticleFunc(prop:ParticleProperties)
+ * {
+ * //code for settings local properties
+ * }
+ *
+ *
+ * Aside from setting any properties required in particle animation nodes using local static properties, the initParticleFunc function
+ * is required to time node requirements as they may be needed. These properties on the ParticleProperties object can include
+ * startTime
, duration
and delay
. The use of these properties is determined by the setting
+ * arguments passed in the constructor of the particle animation set. By default, only the startTime
property is required.
+ */
+ initParticleFunc: Function;
+ /**
+ * Initialiser function scope for static particle properties
+ */
+ initParticleScope: Object;
+ /**
+ * Creates a new ParticleAnimationSet
+ *
+ * @param [optional] usesDuration Defines whether the animation set uses the duration
data in its static properties to determine how long a particle is visible for. Defaults to false.
+ * @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime
, duration
and delay
data in its static properties function. Defaults to false. Requires usesDuration
to be true.
+ * @param [optional] usesDelay Defines whether the animation set uses the delay
data in its static properties to determine how long a particle is hidden for. Defaults to false. Requires usesLooping
to be true.
+ */
+ constructor(usesDuration?: boolean, usesLooping?: boolean, usesDelay?: boolean);
+ /**
+ * Returns a vector of the particle animation nodes contained within the set.
+ */
+ particleNodes: ParticleNodeBase[];
+ /**
+ * @inheritDoc
+ */
+ addAnimation(node: AnimationNodeBase): void;
+ /**
+ * @inheritDoc
+ */
+ activate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ deactivate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ getAGALFragmentCode(shaderObject: ShaderObjectBase, shadedTarget: string): string;
+ /**
+ * @inheritDoc
+ */
+ doneAGALCode(shaderObject: ShaderObjectBase): void;
+ /**
+ * @inheritDoc
+ */
+ usesCPU: boolean;
+ /**
+ * @inheritDoc
+ */
+ cancelGPUCompatibility(): void;
+ dispose(): void;
+ getAnimationSubGeometry(subMesh: ISubMesh): any;
+ /** @private */
+ _iGenerateAnimationSubGeometries(mesh: Mesh): void;
+ }
+ export = ParticleAnimationSet;
+
+}
+declare module "awayjs-renderergl/lib/animators/SkeletonAnimationSet" {
+ import IAnimationSet = require("awayjs-core/lib/animators/IAnimationSet");
+ import AnimationSetBase = require("awayjs-stagegl/lib/animators/AnimationSetBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ /**
+ * The animation data set used by skeleton-based animators, containing skeleton animation data.
+ *
+ * @see away.animators.SkeletonAnimator
+ */
+ class SkeletonAnimationSet extends AnimationSetBase implements IAnimationSet {
+ private _jointsPerVertex;
+ /**
+ * Returns the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the
+ * maximum allowed value is 4.
+ */
+ jointsPerVertex: number;
+ /**
+ * Creates a new SkeletonAnimationSet
object.
+ *
+ * @param jointsPerVertex Sets the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the maximum allowed value is 4. Defaults to 4.
+ */
+ constructor(jointsPerVertex?: number);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ activate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ deactivate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ getAGALFragmentCode(shaderObject: ShaderObjectBase, shadedTarget: string): string;
+ /**
+ * @inheritDoc
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ doneAGALCode(shaderObject: ShaderObjectBase): void;
+ }
+ export = SkeletonAnimationSet;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/JointPose" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Quaternion = require("awayjs-core/lib/core/geom/Quaternion");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * Contains transformation data for a skeleton joint, used for skeleton animation.
+ *
+ * @see away.animation.Skeleton
+ * @see away.animation.SkeletonJoint
+ *
+ * todo: support (uniform) scale
+ */
+ class JointPose {
+ /**
+ * The name of the joint to which the pose is associated
+ */
+ name: string;
+ /**
+ * The rotation of the pose stored as a quaternion
+ */
+ orientation: Quaternion;
+ /**
+ * The translation of the pose
+ */
+ translation: Vector3D;
+ constructor();
+ /**
+ * Converts the transformation to a Matrix3D representation.
+ *
+ * @param target An optional target matrix to store the transformation. If not provided, it will create a new instance.
+ * @return The transformation matrix of the pose.
+ */
+ toMatrix3D(target?: Matrix3D): Matrix3D;
+ /**
+ * Copies the transformation data from a source pose object into the existing pose object.
+ *
+ * @param pose The source pose to copy from.
+ */
+ copyFrom(pose: JointPose): void;
+ }
+ export = JointPose;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/SkeletonJoint" {
+ /**
+ * A value obect representing a single joint in a skeleton object.
+ *
+ * @see away.animators.Skeleton
+ */
+ class SkeletonJoint {
+ /**
+ * The index of the parent joint in the skeleton's joints vector.
+ *
+ * @see away.animators.Skeleton#joints
+ */
+ parentIndex: number;
+ /**
+ * The name of the joint
+ */
+ name: string;
+ /**
+ * The inverse bind pose matrix, as raw data, used to transform vertices to bind joint space in preparation for transformation using the joint matrix.
+ */
+ inverseBindPose: number[];
+ /**
+ * Creates a new SkeletonJoint
object
+ */
+ constructor();
+ }
+ export = SkeletonJoint;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/Skeleton" {
+ import SkeletonJoint = require("awayjs-renderergl/lib/animators/data/SkeletonJoint");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ /**
+ * A Skeleton object is a hierarchical grouping of joint objects that can be used for skeletal animation.
+ *
+ * @see away.animators.SkeletonJoint
+ */
+ class Skeleton extends NamedAssetBase implements IAsset {
+ /**
+ * A flat list of joint objects that comprise the skeleton. Every joint except for the root has a parentIndex
+ * property that is an index into this list.
+ * A child joint should always have a higher index than its parent.
+ */
+ joints: SkeletonJoint[];
+ /**
+ * The total number of joints in the skeleton.
+ */
+ numJoints: number;
+ /**
+ * Creates a new Skeleton
object
+ */
+ constructor();
+ /**
+ * Returns the joint object in the skeleton with the given name, otherwise returns a null object.
+ *
+ * @param jointName The name of the joint object to be found.
+ * @return The joint object with the given name.
+ *
+ * @see #joints
+ */
+ jointFromName(jointName: string): SkeletonJoint;
+ /**
+ * Returns the joint index, given the joint name. -1 is returned if the joint name is not found.
+ *
+ * @param jointName The name of the joint object to be found.
+ * @return The index of the joint object in the joints Array
+ *
+ * @see #joints
+ */
+ jointIndexFromName(jointName: string): number;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ assetType: string;
+ }
+ export = Skeleton;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/SkeletonPose" {
+ import JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+ /**
+ * A collection of pose objects, determining the pose for an entire skeleton.
+ * The jointPoses
vector object corresponds to a skeleton's joints
vector object, however, there is no
+ * reference to a skeleton's instance, since several skeletons can be influenced by the same pose (eg: animation
+ * clips are added to any animator with a valid skeleton)
+ *
+ * @see away.animators.Skeleton
+ * @see away.animators.JointPose
+ */
+ class SkeletonPose extends NamedAssetBase implements IAsset {
+ /**
+ * A flat list of pose objects that comprise the skeleton pose. The pose indices correspond to the target skeleton's joint indices.
+ *
+ * @see away.animators.Skeleton#joints
+ */
+ jointPoses: JointPose[];
+ /**
+ * The total number of joint poses in the skeleton pose.
+ */
+ numJointPoses: number;
+ /**
+ * Creates a new SkeletonPose
object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ assetType: string;
+ /**
+ * Returns the joint pose object with the given joint name, otherwise returns a null object.
+ *
+ * @param jointName The name of the joint object whose pose is to be found.
+ * @return The pose object with the given joint name.
+ */
+ jointPoseFromName(jointName: string): JointPose;
+ /**
+ * Returns the pose index, given the joint name. -1 is returned if the joint name is not found in the pose.
+ *
+ * @param The name of the joint object whose pose is to be found.
+ * @return The index of the pose object in the jointPoses Array
+ *
+ * @see #jointPoses
+ */
+ jointPoseIndexFromName(jointName: string): number;
+ /**
+ * Creates a copy of the SkeletonPose
object, with a dulpicate of its component joint poses.
+ *
+ * @return SkeletonPose
+ */
+ clone(): SkeletonPose;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ }
+ export = SkeletonPose;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ISkeletonAnimationState" {
+ import IAnimationState = require("awayjs-stagegl/lib/animators/states/IAnimationState");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ interface ISkeletonAnimationState extends IAnimationState {
+ /**
+ * Returns the output skeleton pose of the animation node.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ }
+ export = ISkeletonAnimationState;
+
+}
+declare module "awayjs-renderergl/lib/animators/transitions/IAnimationTransition" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ /**
+ *
+ */
+ interface IAnimationTransition {
+ getAnimationNode(animator: AnimatorBase, startNode: AnimationNodeBase, endNode: AnimationNodeBase, startTime: number): AnimationNodeBase;
+ }
+ export = IAnimationTransition;
+
+}
+declare module "awayjs-renderergl/lib/animators/SkeletonAnimator" {
+ import TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import TriangleSubMeshRenderable = require("awayjs-stagegl/lib/core/pool/TriangleSubMeshRenderable");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import SkeletonAnimationSet = require("awayjs-renderergl/lib/animators/SkeletonAnimationSet");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import IAnimationTransition = require("awayjs-renderergl/lib/animators/transitions/IAnimationTransition");
+ /**
+ * Provides an interface for assigning skeleton-based animation data sets to mesh-based entity objects
+ * and controlling the various available states of animation through an interative playhead that can be
+ * automatically updated or manually triggered.
+ */
+ class SkeletonAnimator extends AnimatorBase {
+ private _globalMatrices;
+ private _globalPose;
+ private _globalPropertiesDirty;
+ private _numJoints;
+ private _morphedSubGeometry;
+ private _morphedSubGeometryDirty;
+ private _condensedMatrices;
+ private _skeleton;
+ private _forceCPU;
+ private _useCondensedIndices;
+ private _jointsPerVertex;
+ private _activeSkeletonState;
+ private _onTransitionCompleteDelegate;
+ private _onIndicesUpdateDelegate;
+ private _onVerticesUpdateDelegate;
+ /**
+ * returns the calculated global matrices of the current skeleton pose.
+ *
+ * @see #globalPose
+ */
+ globalMatrices: number[];
+ /**
+ * returns the current skeleton pose output from the animator.
+ *
+ * @see away.animators.data.SkeletonPose
+ */
+ globalPose: SkeletonPose;
+ /**
+ * Returns the skeleton object in use by the animator - this defines the number and heirarchy of joints used by the
+ * skinned geoemtry to which skeleon animator is applied.
+ */
+ skeleton: Skeleton;
+ /**
+ * Indicates whether the skeleton animator is disabled by default for GPU rendering, something that allows the animator to perform calculation on the GPU.
+ * Defaults to false.
+ */
+ forceCPU: boolean;
+ /**
+ * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints
+ * by condensing the number of joint index values required per mesh. Only applicable to
+ * skeleton animations that utilise more than one mesh object. Defaults to false.
+ */
+ useCondensedIndices: boolean;
+ /**
+ * Creates a new SkeletonAnimator
object.
+ *
+ * @param skeletonAnimationSet The animation data set containing the skeleton animations used by the animator.
+ * @param skeleton The skeleton object used for calculating the resulting global matrices for transforming skinned mesh data.
+ * @param forceCPU Optional value that only allows the animator to perform calculation on the CPU. Defaults to false.
+ */
+ constructor(animationSet: SkeletonAnimationSet, skeleton: Skeleton, forceCPU?: boolean);
+ /**
+ * @inheritDoc
+ */
+ clone(): AnimatorBase;
+ /**
+ * Plays an animation state registered with the given name in the animation data set.
+ *
+ * @param name The data set name of the animation state to be played.
+ * @param transition An optional transition object that determines how the animator will transition from the currently active animation state.
+ * @param offset An option offset time (in milliseconds) that resets the state's internal clock to the absolute time of the animator plus the offset value. Required for non-looping animation states.
+ */
+ play(name: string, transition?: IAnimationTransition, offset?: number): void;
+ /**
+ * @inheritDoc
+ */
+ setRenderState(shaderObject: ShaderObjectBase, renderable: RenderableBase, stage: Stage, camera: Camera, vertexConstantOffset: number, vertexStreamOffset: number): void;
+ /**
+ * @inheritDoc
+ */
+ testGPUCompatibility(shaderObject: ShaderObjectBase): void;
+ /**
+ * Applies the calculated time delta to the active animation state node or state transition object.
+ */
+ _pUpdateDeltaTime(dt: number): void;
+ private updateCondensedMatrices(condensedIndexLookUp, numJoints);
+ private updateGlobalProperties();
+ getRenderableSubGeometry(renderable: TriangleSubMeshRenderable, sourceSubGeometry: TriangleSubGeometry): TriangleSubGeometry;
+ /**
+ * If the animation can't be performed on GPU, transform vertices manually
+ * @param subGeom The subgeometry containing the weights and joint index data per vertex.
+ * @param pass The material pass for which we need to transform the vertices
+ */
+ morphSubGeometry(renderable: TriangleSubMeshRenderable, sourceSubGeometry: TriangleSubGeometry): void;
+ /**
+ * Converts a local hierarchical skeleton pose to a global pose
+ * @param targetPose The SkeletonPose object that will contain the global pose.
+ * @param skeleton The skeleton containing the joints, and as such, the hierarchical data to transform to global poses.
+ */
+ private localToGlobalPose(sourcePose, targetPose, skeleton);
+ private onTransitionComplete(event);
+ private onIndicesUpdate(event);
+ private onVerticesUpdate(event);
+ }
+ export = SkeletonAnimator;
+
+}
+declare module "awayjs-renderergl/lib/animators/data/VertexAnimationMode" {
+ /**
+ * Options for setting the animation mode of a vertex animator object.
+ *
+ * @see away.animators.VertexAnimator
+ */
+ class VertexAnimationMode {
+ /**
+ * Animation mode that adds all outputs from active vertex animation state to form the current vertex animation pose.
+ */
+ static ADDITIVE: string;
+ /**
+ * Animation mode that picks the output from a single vertex animation state to form the current vertex animation pose.
+ */
+ static ABSOLUTE: string;
+ }
+ export = VertexAnimationMode;
+
+}
+declare module "awayjs-renderergl/lib/animators/VertexAnimationSet" {
+ import IAnimationSet = require("awayjs-core/lib/animators/IAnimationSet");
+ import AnimationSetBase = require("awayjs-stagegl/lib/animators/AnimationSetBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ /**
+ * The animation data set used by vertex-based animators, containing vertex animation state data.
+ *
+ * @see VertexAnimator
+ */
+ class VertexAnimationSet extends AnimationSetBase implements IAnimationSet {
+ private _numPoses;
+ private _blendMode;
+ /**
+ * Returns the number of poses made available at once to the GPU animation code.
+ */
+ numPoses: number;
+ /**
+ * Returns the active blend mode of the vertex animator object.
+ */
+ blendMode: string;
+ /**
+ * Returns whether or not normal data is used in last set GPU pass of the vertex shader.
+ */
+ /**
+ * Creates a new VertexAnimationSet
object.
+ *
+ * @param numPoses The number of poses made available at once to the GPU animation code.
+ * @param blendMode Optional value for setting the animation mode of the vertex animator object.
+ *
+ * @see away3d.animators.data.VertexAnimationMode
+ */
+ constructor(numPoses?: number, blendMode?: string);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ activate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ deactivate(shaderObject: ShaderObjectBase, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ getAGALFragmentCode(shaderObject: ShaderObjectBase, shadedTarget: string): string;
+ /**
+ * @inheritDoc
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase): string;
+ /**
+ * @inheritDoc
+ */
+ doneAGALCode(shaderObject: ShaderObjectBase): void;
+ /**
+ * Generates the vertex AGAL code for absolute blending.
+ */
+ private getAbsoluteAGALCode(shaderObject);
+ /**
+ * Generates the vertex AGAL code for additive blending.
+ */
+ private getAdditiveAGALCode(shaderObject);
+ }
+ export = VertexAnimationSet;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/IVertexAnimationState" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import IAnimationState = require("awayjs-stagegl/lib/animators/states/IAnimationState");
+ /**
+ * Provides an interface for animation node classes that hold animation data for use in the Vertex animator class.
+ *
+ * @see away.animators.VertexAnimator
+ */
+ interface IVertexAnimationState extends IAnimationState {
+ /**
+ * Returns the current geometry frame of animation in the clip based on the internal playhead position.
+ */
+ currentGeometry: Geometry;
+ /**
+ * Returns the current geometry frame of animation in the clip based on the internal playhead position.
+ */
+ nextGeometry: Geometry;
+ /**
+ * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position
+ * between the current geometry frame (0) and next geometry frame (1) of the animation.
+ */
+ blendWeight: number;
+ }
+ export = IVertexAnimationState;
+
+}
+declare module "awayjs-renderergl/lib/animators/VertexAnimator" {
+ import TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import TriangleSubMeshRenderable = require("awayjs-stagegl/lib/core/pool/TriangleSubMeshRenderable");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import VertexAnimationSet = require("awayjs-renderergl/lib/animators/VertexAnimationSet");
+ import IAnimationTransition = require("awayjs-renderergl/lib/animators/transitions/IAnimationTransition");
+ /**
+ * Provides an interface for assigning vertex-based animation data sets to mesh-based entity objects
+ * and controlling the various available states of animation through an interative playhead that can be
+ * automatically updated or manually triggered.
+ */
+ class VertexAnimator extends AnimatorBase {
+ private _vertexAnimationSet;
+ private _poses;
+ private _weights;
+ private _numPoses;
+ private _blendMode;
+ private _activeVertexState;
+ /**
+ * Creates a new VertexAnimator
object.
+ *
+ * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.
+ */
+ constructor(vertexAnimationSet: VertexAnimationSet);
+ /**
+ * @inheritDoc
+ */
+ clone(): AnimatorBase;
+ /**
+ * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame.
+ * @param sequenceName The name of the clip to be played.
+ */
+ play(name: string, transition?: IAnimationTransition, offset?: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateDeltaTime(dt: number): void;
+ /**
+ * @inheritDoc
+ */
+ setRenderState(shaderObject: ShaderObjectBase, renderable: RenderableBase, stage: Stage, camera: Camera, vertexConstantOffset: number, vertexStreamOffset: number): void;
+ private setNullPose(shaderObject, renderable, stage, vertexConstantOffset, vertexStreamOffset);
+ /**
+ * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu.
+ * Needs to be called if gpu code is potentially required.
+ */
+ testGPUCompatibility(shaderObject: ShaderObjectBase): void;
+ getRenderableSubGeometry(renderable: TriangleSubMeshRenderable, sourceSubGeometry: TriangleSubGeometry): TriangleSubGeometry;
+ }
+ export = VertexAnimator;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ * Provides an abstract base class for nodes with time-based animation data in an animation blend tree.
+ */
+ class AnimationClipNodeBase extends AnimationNodeBase {
+ _pLooping: boolean;
+ _pTotalDuration: number;
+ _pLastFrame: number;
+ _pStitchDirty: boolean;
+ _pStitchFinalFrame: boolean;
+ _pNumFrames: number;
+ _pDurations: number[];
+ _pTotalDelta: Vector3D;
+ fixedFrameRate: boolean;
+ /**
+ * Determines whether the contents of the animation node have looping characteristics enabled.
+ */
+ looping: boolean;
+ /**
+ * Defines if looping content blends the final frame of animation data with the first (true) or works on the
+ * assumption that both first and last frames are identical (false). Defaults to false.
+ */
+ stitchFinalFrame: boolean;
+ totalDuration: number;
+ totalDelta: Vector3D;
+ lastFrame: number;
+ /**
+ * Returns a vector of time values representing the duration (in milliseconds) of each animation frame in the clip.
+ */
+ durations: number[];
+ /**
+ * Creates a new AnimationClipNodeBase
object.
+ */
+ constructor();
+ /**
+ * Updates the node's final frame stitch state.
+ *
+ * @see #stitchFinalFrame
+ */
+ _pUpdateStitch(): void;
+ }
+ export = AnimationClipNodeBase;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/AnimationClipState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationClipNodeBase = require("awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ /**
+ *
+ */
+ class AnimationClipState extends AnimationStateBase {
+ private _animationClipNode;
+ private _animationStatePlaybackComplete;
+ _pBlendWeight: number;
+ _pCurrentFrame: number;
+ _pNextFrame: number;
+ _pOldFrame: number;
+ _pTimeDir: number;
+ _pFramesDirty: boolean;
+ /**
+ * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position
+ * between the current frame (0) and next frame (1) of the animation.
+ *
+ * @see #currentFrame
+ * @see #nextFrame
+ */
+ blendWeight: number;
+ /**
+ * Returns the current frame of animation in the clip based on the internal playhead position.
+ */
+ currentFrame: number;
+ /**
+ * Returns the next frame of animation in the clip based on the internal playhead position.
+ */
+ nextFrame: number;
+ constructor(animator: AnimatorBase, animationClipNode: AnimationClipNodeBase);
+ /**
+ * @inheritDoc
+ */
+ update(time: number): void;
+ /**
+ * @inheritDoc
+ */
+ phase(value: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateTime(time: number): void;
+ /**
+ * Updates the nodes internal playhead to determine the current and next animation frame, and the blendWeight between the two.
+ *
+ * @see #currentFrame
+ * @see #nextFrame
+ * @see #blendWeight
+ */
+ _pUpdateFrames(): void;
+ private notifyPlaybackComplete();
+ }
+ export = AnimationClipState;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/SkeletonClipState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import SkeletonClipNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonClipNode");
+ import AnimationClipState = require("awayjs-renderergl/lib/animators/states/AnimationClipState");
+ import ISkeletonAnimationState = require("awayjs-renderergl/lib/animators/states/ISkeletonAnimationState");
+ /**
+ *
+ */
+ class SkeletonClipState extends AnimationClipState implements ISkeletonAnimationState {
+ private _rootPos;
+ private _frames;
+ private _skeletonClipNode;
+ private _skeletonPose;
+ private _skeletonPoseDirty;
+ private _currentPose;
+ private _nextPose;
+ /**
+ * Returns the current skeleton pose frame of animation in the clip based on the internal playhead position.
+ */
+ currentPose: SkeletonPose;
+ /**
+ * Returns the next skeleton pose frame of animation in the clip based on the internal playhead position.
+ */
+ nextPose: SkeletonPose;
+ constructor(animator: AnimatorBase, skeletonClipNode: SkeletonClipNode);
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateTime(time: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateFrames(): void;
+ /**
+ * Updates the output skeleton pose of the node based on the internal playhead position.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ private updateSkeletonPose(skeleton);
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ }
+ export = SkeletonClipState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/SkeletonClipNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import AnimationClipNodeBase = require("awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase");
+ import SkeletonClipState = require("awayjs-renderergl/lib/animators/states/SkeletonClipState");
+ /**
+ * A skeleton animation node containing time-based animation data as individual skeleton poses.
+ */
+ class SkeletonClipNode extends AnimationClipNodeBase {
+ private _frames;
+ /**
+ * Determines whether to use SLERP equations (true) or LERP equations (false) in the calculation
+ * of the output skeleton pose. Defaults to false.
+ */
+ highQuality: boolean;
+ /**
+ * Returns a vector of skeleton poses representing the pose of each animation frame in the clip.
+ */
+ frames: SkeletonPose[];
+ /**
+ * Creates a new SkeletonClipNode
object.
+ */
+ constructor();
+ /**
+ * Adds a skeleton pose frame to the internal timeline of the animation node.
+ *
+ * @param skeletonPose The skeleton pose object to add to the timeline of the node.
+ * @param duration The specified duration of the frame in milliseconds.
+ */
+ addFrame(skeletonPose: SkeletonPose, duration: number): void;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): SkeletonClipState;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateStitch(): void;
+ }
+ export = SkeletonClipNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/VertexClipState" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import VertexClipNode = require("awayjs-renderergl/lib/animators/nodes/VertexClipNode");
+ import AnimationClipState = require("awayjs-renderergl/lib/animators/states/AnimationClipState");
+ import IVertexAnimationState = require("awayjs-renderergl/lib/animators/states/IVertexAnimationState");
+ /**
+ *
+ */
+ class VertexClipState extends AnimationClipState implements IVertexAnimationState {
+ private _frames;
+ private _vertexClipNode;
+ private _currentGeometry;
+ private _nextGeometry;
+ /**
+ * @inheritDoc
+ */
+ currentGeometry: Geometry;
+ /**
+ * @inheritDoc
+ */
+ nextGeometry: Geometry;
+ constructor(animator: AnimatorBase, vertexClipNode: VertexClipNode);
+ /**
+ * @inheritDoc
+ */
+ _pUpdateFrames(): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ }
+ export = VertexClipState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/VertexClipNode" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimationClipNodeBase = require("awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase");
+ /**
+ * A vertex animation node containing time-based animation data as individual geometry obejcts.
+ */
+ class VertexClipNode extends AnimationClipNodeBase {
+ private _frames;
+ private _translations;
+ /**
+ * Returns a vector of geometry frames representing the vertex values of each animation frame in the clip.
+ */
+ frames: Geometry[];
+ /**
+ * Creates a new VertexClipNode
object.
+ */
+ constructor();
+ /**
+ * Adds a geometry object to the internal timeline of the animation node.
+ *
+ * @param geometry The geometry object to add to the timeline of the node.
+ * @param duration The specified duration of the frame in milliseconds.
+ * @param translation The absolute translation of the frame, used in root delta calculations for mesh movement.
+ */
+ addFrame(geometry: Geometry, duration: number, translation?: Vector3D): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateStitch(): void;
+ }
+ export = VertexClipNode;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/AmbientEnvMapMethod" {
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import AmbientBasicMethod = require("awayjs-stagegl/lib/materials/methods/AmbientBasicMethod");
+ /**
+ * AmbientEnvMapMethod provides a diffuse shading method that uses a diffuse irradiance environment map to
+ * approximate global lighting rather than lights.
+ */
+ class AmbientEnvMapMethod extends AmbientBasicMethod {
+ private _cubeTexture;
+ /**
+ * Creates a new AmbientEnvMapMethod
object.
+ *
+ * @param envMap The cube environment map to use for the ambient lighting.
+ */
+ constructor(envMap: CubeTextureBase);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The cube environment map to use for the diffuse lighting.
+ */
+ envMap: CubeTextureBase;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, regCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = AmbientEnvMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseDepthMethod" {
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ /**
+ * DiffuseDepthMethod provides a debug method to visualise depth maps
+ */
+ class DiffuseDepthMethod extends DiffuseBasicMethod {
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPostLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = DiffuseDepthMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ /**
+ * DiffuseCompositeMethod provides a base class for diffuse methods that wrap a diffuse method to alter the
+ * calculated diffuse reflection strength.
+ */
+ class DiffuseCompositeMethod extends DiffuseBasicMethod {
+ pBaseMethod: DiffuseBasicMethod;
+ private _onShaderInvalidatedDelegate;
+ /**
+ * Creates a new DiffuseCompositeMethod
object.
+ *
+ * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.
+ * @param baseMethod The base diffuse method on which this method's shading is based.
+ */
+ constructor(modulateMethod: (shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData) => string, baseMethod?: DiffuseBasicMethod);
+ /**
+ * The base diffuse method on which this method's shading is based.
+ */
+ baseMethod: DiffuseBasicMethod;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ /**
+ * @inheritDoc
+ */
+ texture: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ /**
+ * @inheritDoc
+ */
+ diffuseColor: number;
+ /**
+ * @inheritDoc
+ */
+ /**
+ * @inheritDoc
+ */
+ ambientColor: number;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerProbe(shaderObject: ShaderLightingObject, methodVO: MethodVO, cubeMapReg: ShaderRegisterElement, weightRegister: string, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iSetRenderState(shaderObject: ShaderLightingObject, methodVO: MethodVO, renderable: RenderableBase, stage: Stage, camera: Camera): void;
+ /**
+ * @inheritDoc
+ */
+ iDeactivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetVertexCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPostLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iReset(): void;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ private onShaderInvalidated(event);
+ }
+ export = DiffuseCompositeMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseCelMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ import DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+ /**
+ * DiffuseCelMethod provides a shading method to add diffuse cel (cartoon) shading.
+ */
+ class DiffuseCelMethod extends DiffuseCompositeMethod {
+ private _levels;
+ private _dataReg;
+ private _smoothness;
+ /**
+ * Creates a new DiffuseCelMethod object.
+ * @param levels The amount of shadow gradations.
+ * @param baseMethod An optional diffuse method on which the cartoon shading is based. If omitted, DiffuseBasicMethod is used.
+ */
+ constructor(levels?: number, baseMethod?: DiffuseBasicMethod);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * The amount of shadow gradations.
+ */
+ levels: number;
+ /**
+ * The smoothness of the edge between 2 shading levels.
+ */
+ smoothness: number;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * Snaps the diffuse shading of the wrapped method to one of the levels.
+ * @param vo The MethodVO used to compile the current shader.
+ * @param t The register containing the diffuse strength in the "w" component.
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared register data for this shader.
+ * @return The AGAL fragment code for the method.
+ */
+ private clampDiffuse(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ }
+ export = DiffuseCelMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseGradientMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ /**
+ * DiffuseGradientMethod is an alternative to DiffuseBasicMethod in which the shading can be modulated with a gradient
+ * to introduce color-tinted shading as opposed to the single-channel diffuse strength. This can be used as a crude
+ * approximation to subsurface scattering (for instance, the mid-range shading for skin can be tinted red to similate
+ * scattered light within the skin attributing to the final colour)
+ */
+ class DiffuseGradientMethod extends DiffuseBasicMethod {
+ private _gradientTextureRegister;
+ private _gradient;
+ /**
+ * Creates a new DiffuseGradientMethod object.
+ * @param gradient A texture that contains the light colour based on the angle. This can be used to change
+ * the light colour due to subsurface scattering when the surface faces away from the light.
+ */
+ constructor(gradient: Texture2DBase);
+ /**
+ * A texture that contains the light colour based on the angle. This can be used to change the light colour
+ * due to subsurface scattering when the surface faces away from the light.
+ */
+ gradient: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ pApplyShadow(shaderObject: ShaderLightingObject, methodVO: MethodVO, regCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ }
+ export = DiffuseGradientMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseLightMapMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ import DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+ /**
+ * DiffuseLightMapMethod provides a diffuse shading method that uses a light map to modulate the calculated diffuse
+ * lighting. It is different from EffectLightMapMethod in that the latter modulates the entire calculated pixel color, rather
+ * than only the diffuse lighting value.
+ */
+ class DiffuseLightMapMethod extends DiffuseCompositeMethod {
+ /**
+ * Indicates the light map should be multiplied with the calculated shading result.
+ * This can be used to add pre-calculated shadows or occlusion.
+ */
+ static MULTIPLY: string;
+ /**
+ * Indicates the light map should be added into the calculated shading result.
+ * This can be used to add pre-calculated lighting or global illumination.
+ */
+ static ADD: string;
+ private _lightMapTexture;
+ private _blendMode;
+ private _useSecondaryUV;
+ /**
+ * Creates a new DiffuseLightMapMethod method.
+ *
+ * @param lightMap The texture containing the light map.
+ * @param blendMode The blend mode with which the light map should be applied to the lighting result.
+ * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.
+ * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.
+ */
+ constructor(lightMap: Texture2DBase, blendMode?: string, useSecondaryUV?: boolean, baseMethod?: DiffuseBasicMethod);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * The blend mode with which the light map should be applied to the lighting result.
+ *
+ * @see DiffuseLightMapMethod.ADD
+ * @see DiffuseLightMapMethod.MULTIPLY
+ */
+ blendMode: string;
+ /**
+ * The texture containing the light map data.
+ */
+ lightMapTexture: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPostLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = DiffuseLightMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseWrapMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ /**
+ * DiffuseWrapMethod is an alternative to DiffuseBasicMethod in which the light is allowed to be "wrapped around" the normally dark area, to some extent.
+ * It can be used as a crude approximation to Oren-Nayar or simple subsurface scattering.
+ */
+ class DiffuseWrapMethod extends DiffuseBasicMethod {
+ private _wrapDataRegister;
+ private _wrapFactor;
+ /**
+ * Creates a new DiffuseWrapMethod object.
+ * @param wrapFactor A factor to indicate the amount by which the light is allowed to wrap
+ */
+ constructor(wrapFactor?: number);
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * A factor to indicate the amount by which the light is allowed to wrap.
+ */
+ wrapFactor: number;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ }
+ export = DiffuseWrapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectAlphaMaskMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectAlphaMaskMethod allows the use of an additional texture to specify the alpha value of the material. When used
+ * with the secondary uv set, it allows for a tiled main texture with independently varying alpha (useful for water
+ * etc).
+ */
+ class EffectAlphaMaskMethod extends EffectMethodBase {
+ private _texture;
+ private _useSecondaryUV;
+ /**
+ * Creates a new EffectAlphaMaskMethod object.
+ *
+ * @param texture The texture to use as the alpha mask.
+ * @param useSecondaryUV Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently.
+ */
+ constructor(texture: Texture2DBase, useSecondaryUV?: boolean);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently, for
+ * instance to tile the main texture and normal map while providing untiled alpha, for example to define the
+ * transparency over a tiled water surface.
+ */
+ useSecondaryUV: boolean;
+ /**
+ * The texture to use as the alpha mask.
+ */
+ texture: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectAlphaMaskMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectColorMatrixMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectColorMatrixMethod provides a shading method that changes the colour of a material analogous to a ColorMatrixFilter.
+ */
+ class EffectColorMatrixMethod extends EffectMethodBase {
+ private _matrix;
+ /**
+ * Creates a new EffectColorTransformMethod.
+ *
+ * @param matrix An array of 20 items for 4 x 5 color transform.
+ */
+ constructor(matrix: number[]);
+ /**
+ * The 4 x 5 matrix to transform the color of the material.
+ */
+ colorMatrix: number[];
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ }
+ export = EffectColorMatrixMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectEnvMapMethod" {
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectEnvMapMethod provides a material method to perform reflection mapping using cube maps.
+ */
+ class EffectEnvMapMethod extends EffectMethodBase {
+ private _cubeTexture;
+ private _alpha;
+ private _mask;
+ /**
+ * Creates an EffectEnvMapMethod object.
+ * @param envMap The environment map containing the reflected scene.
+ * @param alpha The reflectivity of the surface.
+ */
+ constructor(envMap: CubeTextureBase, alpha?: number);
+ /**
+ * An optional texture to modulate the reflectivity of the surface.
+ */
+ mask: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The cubic environment map containing the reflected scene.
+ */
+ envMap: CubeTextureBase;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * The reflectivity of the surface.
+ */
+ alpha: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectEnvMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectFogMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectFogMethod provides a method to add distance-based fog to a material.
+ */
+ class EffectFogMethod extends EffectMethodBase {
+ private _minDistance;
+ private _maxDistance;
+ private _fogColor;
+ private _fogR;
+ private _fogG;
+ private _fogB;
+ /**
+ * Creates a new EffectFogMethod object.
+ * @param minDistance The distance from which the fog starts appearing.
+ * @param maxDistance The distance at which the fog is densest.
+ * @param fogColor The colour of the fog.
+ */
+ constructor(minDistance: number, maxDistance: number, fogColor?: number);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The distance from which the fog starts appearing.
+ */
+ minDistance: number;
+ /**
+ * The distance at which the fog is densest.
+ */
+ maxDistance: number;
+ /**
+ * The colour of the fog.
+ */
+ fogColor: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectFogMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectFresnelEnvMapMethod" {
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectFresnelEnvMapMethod provides a method to add fresnel-based reflectivity to an object using cube maps, which gets
+ * stronger as the viewing angle becomes more grazing.
+ */
+ class EffectFresnelEnvMapMethod extends EffectMethodBase {
+ private _cubeTexture;
+ private _fresnelPower;
+ private _normalReflectance;
+ private _alpha;
+ private _mask;
+ /**
+ * Creates a new EffectFresnelEnvMapMethod
object.
+ *
+ * @param envMap The environment map containing the reflected scene.
+ * @param alpha The reflectivity of the material.
+ */
+ constructor(envMap: CubeTextureBase, alpha?: number);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * An optional texture to modulate the reflectivity of the surface.
+ */
+ mask: Texture2DBase;
+ /**
+ * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.
+ */
+ fresnelPower: number;
+ /**
+ * The cubic environment map containing the reflected scene.
+ */
+ envMap: CubeTextureBase;
+ /**
+ * The reflectivity of the surface.
+ */
+ alpha: number;
+ /**
+ * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.
+ */
+ normalReflectance: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectFresnelEnvMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectLightMapMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectLightMapMethod provides a method that allows applying a light map texture to the calculated pixel colour.
+ * It is different from DiffuseLightMapMethod in that the latter only modulates the diffuse shading value rather
+ * than the whole pixel colour.
+ */
+ class EffectLightMapMethod extends EffectMethodBase {
+ /**
+ * Indicates the light map should be multiplied with the calculated shading result.
+ */
+ static MULTIPLY: string;
+ /**
+ * Indicates the light map should be added into the calculated shading result.
+ */
+ static ADD: string;
+ private _texture;
+ private _blendMode;
+ private _useSecondaryUV;
+ /**
+ * Creates a new EffectLightMapMethod object.
+ *
+ * @param texture The texture containing the light map.
+ * @param blendMode The blend mode with which the light map should be applied to the lighting result.
+ * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.
+ */
+ constructor(texture: Texture2DBase, blendMode?: string, useSecondaryUV?: boolean);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The blend mode with which the light map should be applied to the lighting result.
+ *
+ * @see EffectLightMapMethod.ADD
+ * @see EffectLightMapMethod.MULTIPLY
+ */
+ blendMode: string;
+ /**
+ * The texture containing the light map.
+ */
+ texture: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectLightMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectRimLightMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectRimLightMethod provides a method to add rim lighting to a material. This adds a glow-like effect to edges of objects.
+ */
+ class EffectRimLightMethod extends EffectMethodBase {
+ static ADD: string;
+ static MULTIPLY: string;
+ static MIX: string;
+ private _color;
+ private _blendMode;
+ private _colorR;
+ private _colorG;
+ private _colorB;
+ private _strength;
+ private _power;
+ /**
+ * Creates a new EffectRimLightMethod
object.
+ *
+ * @param color The colour of the rim light.
+ * @param strength The strength of the rim light.
+ * @param power The power of the rim light. Higher values will result in a higher edge fall-off.
+ * @param blend The blend mode with which to add the light to the object.
+ */
+ constructor(color?: number, strength?: number, power?: number, blend?: string);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The blend mode with which to add the light to the object.
+ *
+ * EffectRimLightMethod.MULTIPLY multiplies the rim light with the material's colour.
+ * EffectRimLightMethod.ADD adds the rim light with the material's colour.
+ * EffectRimLightMethod.MIX provides normal alpha blending.
+ */
+ blendMode: string;
+ /**
+ * The color of the rim light.
+ */
+ color: number;
+ /**
+ * The strength of the rim light.
+ */
+ strength: number;
+ /**
+ * The power of the rim light. Higher values will result in a higher edge fall-off.
+ */
+ power: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectRimLightMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/NormalSimpleWaterMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import NormalBasicMethod = require("awayjs-stagegl/lib/materials/methods/NormalBasicMethod");
+ /**
+ * NormalSimpleWaterMethod provides a basic normal map method to create water ripples by translating two wave normal maps.
+ */
+ class NormalSimpleWaterMethod extends NormalBasicMethod {
+ private _texture2;
+ private _normalTextureRegister2;
+ private _useSecondNormalMap;
+ private _water1OffsetX;
+ private _water1OffsetY;
+ private _water2OffsetX;
+ private _water2OffsetY;
+ /**
+ * Creates a new NormalSimpleWaterMethod object.
+ * @param waveMap1 A normal map containing one layer of a wave structure.
+ * @param waveMap2 A normal map containing a second layer of a wave structure.
+ */
+ constructor(waveMap1: Texture2DBase, waveMap2: Texture2DBase);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The translation of the first wave layer along the X-axis.
+ */
+ water1OffsetX: number;
+ /**
+ * The translation of the first wave layer along the Y-axis.
+ */
+ water1OffsetY: number;
+ /**
+ * The translation of the second wave layer along the X-axis.
+ */
+ water2OffsetX: number;
+ /**
+ * The translation of the second wave layer along the Y-axis.
+ */
+ water2OffsetY: number;
+ /**
+ * A second normal map that will be combined with the first to create a wave-like animation pattern.
+ */
+ secondaryNormalMap: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = NormalSimpleWaterMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/ShadowDitheredMethod" {
+ import DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+ /**
+ * ShadowDitheredMethod provides a soft shadowing technique by randomly distributing sample points differently for each fragment.
+ */
+ class ShadowDitheredMethod extends ShadowMethodBase {
+ private static _grainTexture;
+ private static _grainUsages;
+ private static _grainBitmapData;
+ private _depthMapSize;
+ private _range;
+ private _numSamples;
+ /**
+ * Creates a new ShadowDitheredMethod object.
+ * @param castingLight The light casting the shadows
+ * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 24.
+ */
+ constructor(castingLight: DirectionalLight, numSamples?: number, range?: number);
+ /**
+ * The amount of samples to take for dithering. Minimum 1, maximum 24. The actual maximum may depend on the
+ * complexity of the shader.
+ */
+ numSamples: number;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The range in the shadow map in which to distribute the samples.
+ */
+ range: number;
+ /**
+ * Creates a texture containing the dithering noise texture.
+ */
+ private initGrainTexture();
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ _pGetPlanarFragmentCode(methodVO: MethodVO, targetReg: ShaderRegisterElement, regCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Get the actual shader code for shadow mapping
+ * @param regCache The register cache managing the registers.
+ * @param depthMapRegister The texture register containing the depth map.
+ * @param decReg The register containing the depth map decoding data.
+ * @param targetReg The target register to add the shadow coverage.
+ */
+ private getSampleCode(customDataReg, depthMapRegister, decReg, targetReg, regCache, sharedRegisters);
+ /**
+ * Adds the code for another tap to the shader code.
+ * @param uvReg The uv register for the tap.
+ * @param depthMapRegister The texture register containing the depth map.
+ * @param decReg The register containing the depth map decoding data.
+ * @param targetReg The target register to add the tap comparison result.
+ * @param regCache The register cache managing the registers.
+ * @return
+ */
+ private addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ /**
+ * @inheritDoc
+ */
+ iActivateForCascade(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ _iGetCascadeFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, decodeRegister: ShaderRegisterElement, depthTexture: ShaderRegisterElement, depthProjection: ShaderRegisterElement, targetRegister: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = ShadowDitheredMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/ShadowFilteredMethod" {
+ import DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+ /**
+ * ShadowFilteredMethod provides a softened shadowing technique by bilinearly interpolating shadow comparison
+ * results of neighbouring pixels.
+ */
+ class ShadowFilteredMethod extends ShadowMethodBase {
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ *
+ * @param castingLight The light casting the shadow
+ */
+ constructor(castingLight: DirectionalLight);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ _pGetPlanarFragmentCode(methodVO: MethodVO, targetReg: ShaderRegisterElement, regCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivateForCascade(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ _iGetCascadeFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, decodeRegister: ShaderRegisterElement, depthTexture: ShaderRegisterElement, depthProjection: ShaderRegisterElement, targetRegister: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = ShadowFilteredMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+ import MaterialPassBase = require("awayjs-stagegl/lib/materials/passes/MaterialPassBase");
+ /**
+ * SpecularCompositeMethod provides a base class for specular methods that wrap a specular method to alter the
+ * calculated specular reflection strength.
+ */
+ class SpecularCompositeMethod extends SpecularBasicMethod {
+ private _baseMethod;
+ private _onShaderInvalidatedDelegate;
+ /**
+ * Creates a new SpecularCompositeMethod
object.
+ *
+ * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature modSpecular(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the specular strength and t.xyz will contain the half-vector or the reflection vector.
+ * @param baseMethod The base specular method on which this method's shading is based.
+ */
+ constructor(modulateMethod: (shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData) => string, baseMethod?: SpecularBasicMethod);
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The base specular method on which this method's shading is based.
+ */
+ baseMethod: SpecularBasicMethod;
+ /**
+ * @inheritDoc
+ */
+ gloss: number;
+ /**
+ * @inheritDoc
+ */
+ specular: number;
+ /**
+ * @inheritDoc
+ */
+ passes: MaterialPassBase[];
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ texture: Texture2DBase;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iSetRenderState(shaderObject: ShaderLightingObject, methodVO: MethodVO, renderable: RenderableBase, stage: Stage, camera: Camera): void;
+ /**
+ * @inheritDoc
+ */
+ iDeactivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetVertexCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ * @return
+ */
+ iGetFragmentCodePerProbe(shaderObject: ShaderLightingObject, methodVO: MethodVO, cubeMapReg: ShaderRegisterElement, weightRegister: string, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPostLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iReset(): void;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ private onShaderInvalidated(event);
+ }
+ export = SpecularCompositeMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/SpecularFresnelMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+ import SpecularCompositeMethod = require("awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod");
+ /**
+ * SpecularFresnelMethod provides a specular shading method that causes stronger highlights on grazing view angles.
+ */
+ class SpecularFresnelMethod extends SpecularCompositeMethod {
+ private _dataReg;
+ private _incidentLight;
+ private _fresnelPower;
+ private _normalReflectance;
+ /**
+ * Creates a new SpecularFresnelMethod object.
+ * @param basedOnSurface Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.
+ * @param baseMethod The specular method to which the fresnel equation. Defaults to SpecularBasicMethod.
+ */
+ constructor(basedOnSurface?: boolean, baseMethod?: SpecularBasicMethod);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.
+ */
+ basedOnSurface: boolean;
+ /**
+ * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.
+ */
+ fresnelPower: number;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.
+ */
+ normalReflectance: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Applies the fresnel effect to the specular strength.
+ *
+ * @param vo The MethodVO object containing the method data for the currently compiled material pass.
+ * @param target The register containing the specular strength in the "w" component, and the half-vector/reflection vector in "xyz".
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared registers created by the compiler.
+ * @return The AGAL fragment code for the method.
+ */
+ private modulateSpecular(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ }
+ export = SpecularFresnelMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/SpecularAnisotropicMethod" {
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+ /**
+ * SpecularAnisotropicMethod provides a specular method resulting in anisotropic highlights. These are typical for
+ * surfaces with microfacet details such as tiny grooves. In particular, this uses the Heidrich-Seidel distrubution.
+ * The tangent vectors are used as the surface groove directions.
+ */
+ class SpecularAnisotropicMethod extends SpecularBasicMethod {
+ /**
+ * Creates a new SpecularAnisotropicMethod object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = SpecularAnisotropicMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/SpecularCelMethod" {
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+ import SpecularCompositeMethod = require("awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod");
+ /**
+ * SpecularCelMethod provides a shading method to add specular cel (cartoon) shading.
+ */
+ class SpecularCelMethod extends SpecularCompositeMethod {
+ private _dataReg;
+ private _smoothness;
+ private _specularCutOff;
+ /**
+ * Creates a new SpecularCelMethod object.
+ * @param specularCutOff The threshold at which the specular highlight should be shown.
+ * @param baseMethod An optional specular method on which the cartoon shading is based. If ommitted, SpecularBasicMethod is used.
+ */
+ constructor(specularCutOff?: number, baseMethod?: SpecularBasicMethod);
+ /**
+ * The smoothness of the highlight edge.
+ */
+ smoothness: number;
+ /**
+ * The threshold at which the specular highlight should be shown.
+ */
+ specularCutOff: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * Snaps the specular shading strength of the wrapped method to zero or one, depending on whether or not it exceeds the specularCutOff
+ * @param vo The MethodVO used to compile the current shader.
+ * @param t The register containing the specular strength in the "w" component, and either the half-vector or the reflection vector in "xyz".
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared register data for this shader.
+ * @return The AGAL fragment code for the method.
+ */
+ private clampSpecular(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = SpecularCelMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/SpecularPhongMethod" {
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+ /**
+ * SpecularPhongMethod provides a specular method that provides Phong highlights.
+ */
+ class SpecularPhongMethod extends SpecularBasicMethod {
+ /**
+ * Creates a new SpecularPhongMethod object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = SpecularPhongMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/ShadowNearMethod" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+ /**
+ * ShadowNearMethod provides a shadow map method that restricts the shadowed area near the camera to optimize
+ * shadow map usage. This method needs to be used in conjunction with a NearDirectionalShadowMapper.
+ *
+ * @see away.lights.NearDirectionalShadowMapper
+ */
+ class ShadowNearMethod extends ShadowMethodBase {
+ private _baseMethod;
+ private _fadeRatio;
+ private _nearShadowMapper;
+ private _onShaderInvalidatedDelegate;
+ /**
+ * Creates a new ShadowNearMethod object.
+ * @param baseMethod The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)
+ * @param fadeRatio The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.
+ */
+ constructor(baseMethod: ShadowMethodBase, fadeRatio?: number);
+ /**
+ * The base shadow map method on which this method's shading is based.
+ */
+ baseMethod: ShadowMethodBase;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * @inheritDoc
+ */
+ alpha: number;
+ /**
+ * @inheritDoc
+ */
+ epsilon: number;
+ /**
+ * The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.
+ */
+ fadeRatio: number;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iDeactivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iSetRenderState(shaderObject: ShaderObjectBase, methodVO: MethodVO, renderable: RenderableBase, stage: Stage, camera: Camera): void;
+ /**
+ * @inheritDoc
+ */
+ iGetVertexCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iReset(): void;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ private onShaderInvalidated(event);
+ }
+ export = ShadowNearMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/ShadowSoftMethod" {
+ import DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+ /**
+ * ShadowSoftMethod provides a soft shadowing technique by randomly distributing sample points.
+ */
+ class ShadowSoftMethod extends ShadowMethodBase {
+ private _range;
+ private _numSamples;
+ private _offsets;
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ *
+ * @param castingLight The light casting the shadows
+ * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 32.
+ */
+ constructor(castingLight: DirectionalLight, numSamples?: number, range?: number);
+ /**
+ * The amount of samples to take for dithering. Minimum 1, maximum 32. The actual maximum may depend on the
+ * complexity of the shader.
+ */
+ numSamples: number;
+ /**
+ * The range in the shadow map in which to distribute the samples.
+ */
+ range: number;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ _pGetPlanarFragmentCode(methodVO: MethodVO, targetReg: ShaderRegisterElement, regCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Adds the code for another tap to the shader code.
+ * @param uv The uv register for the tap.
+ * @param texture The texture register containing the depth map.
+ * @param decode The register containing the depth map decoding data.
+ * @param target The target register to add the tap comparison result.
+ * @param regCache The register cache managing the registers.
+ * @return
+ */
+ private addSample(uv, texture, decode, target, regCache);
+ /**
+ * @inheritDoc
+ */
+ iActivateForCascade(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ _iGetCascadeFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, decodeRegister: ShaderRegisterElement, depthTexture: ShaderRegisterElement, depthProjection: ShaderRegisterElement, targetRegister: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Get the actual shader code for shadow mapping
+ * @param regCache The register cache managing the registers.
+ * @param depthTexture The texture register containing the depth map.
+ * @param decodeRegister The register containing the depth map decoding data.
+ * @param targetReg The target register to add the shadow coverage.
+ * @param dataReg The register containing additional data.
+ */
+ private getSampleCode(regCache, depthTexture, decodeRegister, targetRegister, dataReg);
+ }
+ export = ShadowSoftMethod;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/AWDBlock" {
+ import ByteArray = require("awayjs-core/lib/utils/ByteArray");
+ /**
+ *
+ */
+ class AWDBlock {
+ id: number;
+ name: string;
+ data: any;
+ len: any;
+ geoID: number;
+ extras: Object;
+ bytes: ByteArray;
+ errorMessages: string[];
+ uvsForVertexAnimation: number[][];
+ constructor();
+ dispose(): void;
+ addError(errorMsg: string): void;
+ }
+ export = AWDBlock;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/AWDProperties" {
+ class AWDProperties {
+ set(key: number, value: any): void;
+ get(key: number, fallback: any): any;
+ }
+ export = AWDProperties;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/BitFlags" {
+ /**
+ *
+ */
+ class BitFlags {
+ static FLAG1: number;
+ static FLAG2: number;
+ static FLAG3: number;
+ static FLAG4: number;
+ static FLAG5: number;
+ static FLAG6: number;
+ static FLAG7: number;
+ static FLAG8: number;
+ static FLAG9: number;
+ static FLAG10: number;
+ static FLAG11: number;
+ static FLAG12: number;
+ static FLAG13: number;
+ static FLAG14: number;
+ static FLAG15: number;
+ static FLAG16: number;
+ static test(flags: number, testFlag: number): boolean;
+ }
+ export = BitFlags;
+
+}
+declare module "awayjs-renderergl/lib/parsers/AWDParser" {
+ import IAsset = require("awayjs-core/lib/core/library/IAsset");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ import ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+ /**
+ * AWDParser provides a parser for the AWD data type.
+ */
+ class AWDParser extends ParserBase {
+ private _debug;
+ private _byteData;
+ private _startedParsing;
+ private _cur_block_id;
+ private _blocks;
+ private _newBlockBytes;
+ private _version;
+ private _compression;
+ private _accuracyOnBlocks;
+ private _accuracyMatrix;
+ private _accuracyGeo;
+ private _accuracyProps;
+ private _matrixNrType;
+ private _geoNrType;
+ private _propsNrType;
+ private _streaming;
+ private _texture_users;
+ private _parsed_header;
+ private _body;
+ private _defaultTexture;
+ private _cubeTextures;
+ private _defaultBitmapMaterial;
+ private _defaultCubeTexture;
+ static COMPRESSIONMODE_LZMA: string;
+ static UNCOMPRESSED: number;
+ static DEFLATE: number;
+ static LZMA: number;
+ static INT8: number;
+ static INT16: number;
+ static INT32: number;
+ static UINT8: number;
+ static UINT16: number;
+ static UINT32: number;
+ static FLOAT32: number;
+ static FLOAT64: number;
+ static BOOL: number;
+ static COLOR: number;
+ static BADDR: number;
+ static AWDSTRING: number;
+ static AWDBYTEARRAY: number;
+ static VECTOR2x1: number;
+ static VECTOR3x1: number;
+ static VECTOR4x1: number;
+ static MTX3x2: number;
+ static MTX3x3: number;
+ static MTX4x3: number;
+ static MTX4x4: number;
+ private blendModeDic;
+ private _depthSizeDic;
+ /**
+ * Creates a new AWDParser 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
+ */
+ _iResolveDependency(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
+ /**
+ * Resolve a dependency name
+ *
+ * @param resourceDependency The dependency to be resolved.
+ */
+ _iResolveDependencyName(resourceDependency: ResourceDependency, asset: IAsset): string;
+ /**
+ * @inheritDoc
+ */
+ _pProceedParsing(): boolean;
+ _pStartParsing(frameLimit: number): void;
+ private dispose();
+ private parseNextBlock();
+ private parseTriangleGeometrieBlock(blockID);
+ private parsePrimitves(blockID);
+ private parseContainer(blockID);
+ private parseMeshInstance(blockID);
+ private parseSkyboxInstance(blockID);
+ private parseLight(blockID);
+ private parseCamera(blockID);
+ private parseLightPicker(blockID);
+ private parseMaterial(blockID);
+ private parseMaterial_v1(blockID);
+ private parseTexture(blockID);
+ private parseCubeTexture(blockID);
+ private parseSharedMethodBlock(blockID);
+ private parseShadowMethodBlock(blockID);
+ private parseCommand(blockID);
+ private parseMetaData(blockID);
+ private parseNameSpace(blockID);
+ private parseShadowMethodList(light, blockID);
+ private parseSkeleton(blockID);
+ private parseSkeletonPose(blockID);
+ private parseSkeletonAnimation(blockID);
+ private parseMeshPoseAnimation(blockID, poseOnly?);
+ private parseVertexAnimationSet(blockID);
+ private parseAnimatorSet(blockID);
+ private parseSharedMethodList(blockID);
+ private parseUserAttributes();
+ private parseProperties(expected);
+ private parseAttrValue(type, len);
+ private parseHeader();
+ private getUVForVertexAnimation(meshID);
+ private parseVarStr();
+ private getAssetByID(assetID, assetTypesToGet, extraTypeInfo?);
+ private getDefaultAsset(assetType, extraTypeInfo);
+ private getDefaultMaterial();
+ private getDefaultTexture();
+ private getDefaultCubeTexture();
+ private readNumber(precision?);
+ private parseMatrix3D();
+ private parseMatrix32RawData();
+ private parseMatrix43RawData();
+ }
+ export = AWDParser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/MD2Parser" {
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ import ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+ /**
+ * MD2Parser provides a parser for the MD2 data type.
+ */
+ class MD2Parser extends ParserBase {
+ static FPS: number;
+ private _clipNodes;
+ private _byteData;
+ private _startedParsing;
+ private _parsedHeader;
+ private _parsedUV;
+ private _parsedFaces;
+ private _parsedFrames;
+ private _ident;
+ private _version;
+ private _skinWidth;
+ private _skinHeight;
+ private _numSkins;
+ private _numVertices;
+ private _numST;
+ private _numTris;
+ private _numFrames;
+ private _offsetSkins;
+ private _offsetST;
+ private _offsetTris;
+ private _offsetFrames;
+ private _offsetEnd;
+ private _uvIndices;
+ private _indices;
+ private _vertIndices;
+ private _animationSet;
+ private _firstSubGeom;
+ private _uvs;
+ private _finalUV;
+ private _materialNames;
+ private _textureType;
+ private _ignoreTexturePath;
+ private _mesh;
+ private _geometry;
+ private materialFinal;
+ private geoCreated;
+ /**
+ * Creates a new MD2Parser object.
+ * @param textureType The extension of the texture (e.g. jpg/png/...)
+ * @param ignoreTexturePath If true, the path of the texture is ignored
+ */
+ constructor(textureType?: string, ignoreTexturePath?: boolean);
+ /**
+ * 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
+ */
+ _iResolveDependency(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _pProceedParsing(): boolean;
+ _pStartParsing(frameLimit: number): void;
+ /**
+ * Reads in all that MD2 Header data that is declared as private variables.
+ * I know its a lot, and it looks ugly, but only way to do it in Flash
+ */
+ private parseHeader();
+ /**
+ * Parses the file names for the materials.
+ */
+ private parseMaterialNames();
+ /**
+ * Parses the uv data for the mesh.
+ */
+ private parseUV();
+ /**
+ * Parses unique indices for the faces.
+ */
+ private parseFaces();
+ /**
+ * Adds a face index to the list if it doesn't exist yet, based on vertexIndex and uvIndex, and adds the
+ * corresponding vertex and uv data in the correct location.
+ * @param vertexIndex The original index in the vertex list.
+ * @param uvIndex The original index in the uv list.
+ */
+ private addIndex(vertexIndex, uvIndex);
+ /**
+ * Finds the final index corresponding to the original MD2's vertex and uv indices. Returns -1 if it wasn't added yet.
+ * @param vertexIndex The original index in the vertex list.
+ * @param uvIndex The original index in the uv list.
+ * @return The index of the final mesh corresponding to the original vertex and uv index. -1 if it doesn't exist yet.
+ */
+ private findIndex(vertexIndex, uvIndex);
+ /**
+ * Parses all the frame geometries.
+ */
+ private parseFrames();
+ private readFrameName();
+ }
+ export = MD2Parser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/BaseFrameData" {
+ import Quaternion = require("awayjs-core/lib/core/geom/Quaternion");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ *
+ */
+ class BaseFrameData {
+ /**
+ *
+ */
+ position: Vector3D;
+ /**
+ *
+ */
+ orientation: Quaternion;
+ }
+ export = BaseFrameData;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/BoundsData" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ /**
+ *
+ */
+ class BoundsData {
+ /**
+ *
+ */
+ min: Vector3D;
+ /**
+ *
+ */
+ max: Vector3D;
+ }
+ export = BoundsData;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/FrameData" {
+ /**
+ *
+ */
+ class FrameData {
+ /**
+ *
+ */
+ index: number;
+ /**
+ *
+ */
+ components: number[];
+ }
+ export = FrameData;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/HierarchyData" {
+ /**
+ *
+ */
+ class HierarchyData {
+ /**
+ *
+ */
+ name: string;
+ /**
+ *
+ */
+ parentIndex: number;
+ /**
+ *
+ */
+ flags: number;
+ /**
+ *
+ */
+ startIndex: number;
+ }
+ export = HierarchyData;
+
+}
+declare module "awayjs-renderergl/lib/parsers/MD5AnimParser" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * MD5AnimParser provides a parser for the md5anim data type, providing an animation sequence for the md5 format.
+ *
+ * todo: optimize
+ */
+ class MD5AnimParser extends ParserBase {
+ private _textData;
+ private _startedParsing;
+ static VERSION_TOKEN: string;
+ static COMMAND_LINE_TOKEN: string;
+ static NUM_FRAMES_TOKEN: string;
+ static NUM_JOINTS_TOKEN: string;
+ static FRAME_RATE_TOKEN: string;
+ static NUM_ANIMATED_COMPONENTS_TOKEN: string;
+ static HIERARCHY_TOKEN: string;
+ static BOUNDS_TOKEN: string;
+ static BASE_FRAME_TOKEN: string;
+ static FRAME_TOKEN: string;
+ static COMMENT_TOKEN: string;
+ private _parseIndex;
+ private _reachedEOF;
+ private _line;
+ private _charLineIndex;
+ private _version;
+ private _frameRate;
+ private _numFrames;
+ private _numJoints;
+ private _numAnimatedComponents;
+ private _hierarchy;
+ private _bounds;
+ private _frameData;
+ private _baseFrameData;
+ private _rotationQuat;
+ private _clip;
+ /**
+ * Creates a new MD5AnimParser 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(additionalRotationAxis?: Vector3D, additionalRotationRadians?: number);
+ /**
+ * 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
+ */
+ _pProceedParsing(): boolean;
+ /**
+ * Converts all key frame data to an SkinnedAnimationSequence.
+ */
+ private translateClip();
+ /**
+ * Converts a single key frame data to a SkeletonPose.
+ * @param frameData The actual frame data.
+ * @return A SkeletonPose containing the frame data's pose.
+ */
+ private translatePose(frameData);
+ /**
+ * Parses the skeleton's hierarchy data.
+ */
+ private parseHierarchy();
+ /**
+ * Parses frame bounds.
+ */
+ private parseBounds();
+ /**
+ * Parses the base frame.
+ */
+ private parseBaseFrame();
+ /**
+ * Parses a single frame.
+ */
+ private parseFrame();
+ /**
+ * Puts back the last read character into the data stream.
+ */
+ private putBack();
+ /**
+ * Gets the next token in the data stream.
+ */
+ private getNextToken();
+ /**
+ * Skips all whitespace in the data stream.
+ */
+ private skipWhiteSpace();
+ /**
+ * Skips to the next line.
+ */
+ private ignoreLine();
+ /**
+ * Retrieves the next single character in the data stream.
+ */
+ private getNextChar();
+ /**
+ * Retrieves the next integer in the data stream.
+ */
+ private getNextInt();
+ /**
+ * Retrieves the next floating point number in the data stream.
+ */
+ private getNextNumber();
+ /**
+ * Retrieves the next 3d vector in the data stream.
+ */
+ private parseVector3D();
+ /**
+ * Retrieves the next quaternion in the data stream.
+ */
+ private parseQuaternion();
+ /**
+ * Parses the command line data.
+ */
+ private parseCMD();
+ /**
+ * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded
+ * by double quotes.
+ */
+ private parseLiteralstring();
+ /**
+ * Throws an end-of-file error when a premature end of file was encountered.
+ */
+ private sendEOFError();
+ /**
+ * Throws an error when an unexpected token was encountered.
+ * @param expected The token type that was actually expected.
+ */
+ private sendParseError(expected);
+ /**
+ * Throws an error when an unknown keyword was encountered.
+ */
+ private sendUnknownKeywordError();
+ }
+ export = MD5AnimParser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/MD5MeshParser" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ /**
+ * MD5MeshParser provides a parser for the md5mesh data type, providing the geometry of the md5 format.
+ *
+ * todo: optimize
+ */
+ class MD5MeshParser extends ParserBase {
+ private _textData;
+ private _startedParsing;
+ static VERSION_TOKEN: string;
+ static COMMAND_LINE_TOKEN: string;
+ static NUM_JOINTS_TOKEN: string;
+ static NUM_MESHES_TOKEN: string;
+ static COMMENT_TOKEN: string;
+ static JOINTS_TOKEN: string;
+ static MESH_TOKEN: string;
+ static MESH_SHADER_TOKEN: string;
+ static MESH_NUM_VERTS_TOKEN: string;
+ static MESH_VERT_TOKEN: string;
+ static MESH_NUM_TRIS_TOKEN: string;
+ static MESH_TRI_TOKEN: string;
+ static MESH_NUM_WEIGHTS_TOKEN: string;
+ static MESH_WEIGHT_TOKEN: string;
+ private _parseIndex;
+ private _reachedEOF;
+ private _line;
+ private _charLineIndex;
+ private _version;
+ private _numJoints;
+ private _numMeshes;
+ private _mesh;
+ private _shaders;
+ private _maxJointCount;
+ private _meshData;
+ private _bindPoses;
+ private _geometry;
+ private _skeleton;
+ private _animationSet;
+ private _rotationQuat;
+ /**
+ * Creates a new MD5MeshParser object.
+ */
+ constructor(additionalRotationAxis?: Vector3D, additionalRotationRadians?: number);
+ /**
+ * 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
+ */
+ _pProceedParsing(): boolean;
+ _pStartParsing(frameLimit: number): void;
+ private calculateMaxJointCount();
+ private countZeroWeightJoints(vertex, weights);
+ /**
+ * Parses the skeleton's joints.
+ */
+ private parseJoints();
+ /**
+ * Puts back the last read character into the data stream.
+ */
+ private putBack();
+ /**
+ * Parses the mesh geometry.
+ */
+ private parseMesh();
+ /**
+ * Converts the mesh data to a SkinnedSub instance.
+ * @param vertexData The mesh's vertices.
+ * @param weights The joint weights per vertex.
+ * @param indices The indices for the faces.
+ * @return A SubGeometry instance containing all geometrical data for the current mesh.
+ */
+ private translateGeom(vertexData, weights, indices);
+ /**
+ * Retrieve the next triplet of vertex indices that form a face.
+ * @param indices The index list in which to store the read data.
+ */
+ private parseTri(indices);
+ /**
+ * Reads a new joint data set for a single joint.
+ * @param weights the target list to contain the weight data.
+ */
+ private parseJoint(weights);
+ /**
+ * Reads the data for a single vertex.
+ * @param vertexData The list to contain the vertex data.
+ */
+ private parseVertex(vertexData);
+ /**
+ * Reads the next uv coordinate.
+ * @param vertexData The vertexData to contain the UV coordinates.
+ */
+ private parseUV(vertexData);
+ /**
+ * Gets the next token in the data stream.
+ */
+ private getNextToken();
+ /**
+ * Skips all whitespace in the data stream.
+ */
+ private skipWhiteSpace();
+ /**
+ * Skips to the next line.
+ */
+ private ignoreLine();
+ /**
+ * Retrieves the next single character in the data stream.
+ */
+ private getNextChar();
+ /**
+ * Retrieves the next integer in the data stream.
+ */
+ private getNextInt();
+ /**
+ * Retrieves the next floating point number in the data stream.
+ */
+ private getNextNumber();
+ /**
+ * Retrieves the next 3d vector in the data stream.
+ */
+ private parseVector3D();
+ /**
+ * Retrieves the next quaternion in the data stream.
+ */
+ private parseQuaternion();
+ /**
+ * Parses the command line data.
+ */
+ private parseCMD();
+ /**
+ * Retrieves the next literal string in the data stream. A literal string is a sequence of characters bounded
+ * by double quotes.
+ */
+ private parseLiteralstring();
+ /**
+ * Throws an end-of-file error when a premature end of file was encountered.
+ */
+ private sendEOFError();
+ /**
+ * Throws an error when an unexpected token was encountered.
+ * @param expected The token type that was actually expected.
+ */
+ private sendParseError(expected);
+ /**
+ * Throws an error when an unknown keyword was encountered.
+ */
+ private sendUnknownKeywordError();
+ }
+ export = MD5MeshParser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/FaceVO" {
+ /**
+ *
+ */
+ class FaceVO {
+ a: number;
+ b: number;
+ c: number;
+ smoothGroup: number;
+ }
+ export = FaceVO;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/TextureVO" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ /**
+ *
+ */
+ class TextureVO {
+ url: string;
+ texture: Texture2DBase;
+ }
+ export = TextureVO;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/MaterialVO" {
+ import MaterialBase = require("awayjs-core/lib/materials/MaterialBase");
+ import TextureVO = require("awayjs-renderergl/lib/parsers/data/TextureVO");
+ /**
+ *
+ */
+ class MaterialVO {
+ name: string;
+ ambientColor: number;
+ diffuseColor: number;
+ specularColor: number;
+ twoSided: boolean;
+ colorMap: TextureVO;
+ specularMap: TextureVO;
+ material: MaterialBase;
+ }
+ export = MaterialVO;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/ObjectVO" {
+ class ObjectVO {
+ name: string;
+ type: string;
+ pivotX: number;
+ pivotY: number;
+ pivotZ: number;
+ transform: number[];
+ verts: number[];
+ indices: number[];
+ uvs: number[];
+ materialFaces: Object;
+ materials: string[];
+ smoothingGroups: number[];
+ }
+ export = ObjectVO;
+
+}
+declare module "awayjs-renderergl/lib/parsers/data/VertexVO" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ class VertexVO {
+ x: number;
+ y: number;
+ z: number;
+ u: number;
+ v: number;
+ normal: Vector3D;
+ tangent: Vector3D;
+ }
+ export = VertexVO;
+
+}
+declare module "awayjs-renderergl/lib/parsers/Max3DSParser" {
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ import ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+ /**
+ * Max3DSParser provides a parser for the 3ds data type.
+ */
+ class Max3DSParser extends ParserBase {
+ private _byteData;
+ private _textures;
+ private _materials;
+ private _unfinalized_objects;
+ private _cur_obj_end;
+ private _cur_obj;
+ private _cur_mat_end;
+ private _cur_mat;
+ private _useSmoothingGroups;
+ /**
+ * Creates a new Max3DSParser
object.
+ *
+ * @param useSmoothingGroups Determines whether the parser looks for smoothing groups in the 3ds file or assumes uniform smoothing. Defaults to true.
+ */
+ constructor(useSmoothingGroups?: boolean);
+ /**
+ * 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
+ */
+ _iResolveDependency(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _pProceedParsing(): boolean;
+ _pStartParsing(frameLimit: number): void;
+ private parseMaterial();
+ private parseTexture(end);
+ private parseVertexList();
+ private parseFaceList();
+ private parseSmoothingGroups();
+ private parseUVList();
+ private parseFaceMaterialList();
+ private parseObjectAnimation(end);
+ private constructObject(obj, pivot?);
+ private prepareData(vertices, faces, obj);
+ private applySmoothGroups(vertices, faces);
+ private finalizeCurrentMaterial();
+ private readNulTermstring();
+ private readTransform();
+ private readColor();
+ }
+ export = Max3DSParser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/OBJParser" {
+ import ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+ import ResourceDependency = require("awayjs-core/lib/parsers/ResourceDependency");
+ /**
+ * OBJParser provides a parser for the OBJ data type.
+ */
+ class OBJParser extends ParserBase {
+ private _textData;
+ private _startedParsing;
+ private _charIndex;
+ private _oldIndex;
+ private _stringLength;
+ private _currentObject;
+ private _currentGroup;
+ private _currentMaterialGroup;
+ private _objects;
+ private _materialIDs;
+ private _materialLoaded;
+ private _materialSpecularData;
+ private _meshes;
+ private _lastMtlID;
+ private _objectIndex;
+ private _realIndices;
+ private _vertexIndex;
+ private _vertices;
+ private _vertexNormals;
+ private _uvs;
+ private _scale;
+ private _mtlLib;
+ private _mtlLibLoaded;
+ private _activeMaterialID;
+ /**
+ * Creates a new OBJParser 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(scale?: number);
+ /**
+ * Scaling factor applied directly to vertices data
+ * @param value The scaling factor.
+ */
+ scale: number;
+ /**
+ * 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
+ */
+ _iResolveDependency(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _iResolveDependencyFailure(resourceDependency: ResourceDependency): void;
+ /**
+ * @inheritDoc
+ */
+ _pProceedParsing(): boolean;
+ _pStartParsing(frameLimit: number): void;
+ /**
+ * Parses a single line in the OBJ file.
+ */
+ private parseLine(trunk);
+ /**
+ * Converts the parsed data into an Away3D scenegraph structure
+ */
+ private translate();
+ /**
+ * Translates an obj's material group to a subgeometry.
+ * @param materialGroup The material group data to convert.
+ * @param geometry The Geometry to contain the converted SubGeometry.
+ */
+ private translateMaterialGroup(materialGroup, geometry);
+ private translateVertexData(face, vertexIndex, vertices, uvs, indices, normals);
+ /**
+ * Creates a new object group.
+ * @param trunk The data block containing the object tag and its parameters
+ */
+ private createObject(trunk);
+ /**
+ * Creates a new group.
+ * @param trunk The data block containing the group tag and its parameters
+ */
+ private createGroup(trunk);
+ /**
+ * Creates a new material group.
+ * @param trunk The data block containing the material tag and its parameters
+ */
+ private createMaterialGroup(trunk);
+ /**
+ * Reads the next vertex coordinates.
+ * @param trunk The data block containing the vertex tag and its parameters
+ */
+ private parseVertex(trunk);
+ /**
+ * Reads the next uv coordinates.
+ * @param trunk The data block containing the uv tag and its parameters
+ */
+ private parseUV(trunk);
+ /**
+ * Reads the next vertex normal coordinates.
+ * @param trunk The data block containing the vertex normal tag and its parameters
+ */
+ private parseVertexNormal(trunk);
+ /**
+ * Reads the next face's indices.
+ * @param trunk The data block containing the face tag and its parameters
+ */
+ private parseFace(trunk);
+ /**
+ * This is a hack around negative face coords
+ */
+ private parseIndex(index, length);
+ private parseMtl(data);
+ private parseMapKdString(trunk);
+ private loadMtl(mtlurl);
+ private applyMaterial(lm);
+ private applyMaterials();
+ }
+ export = OBJParser;
+
+}
+declare module "awayjs-renderergl/lib/parsers/Parsers" {
+ /**
+ *
+ */
+ class Parsers {
+ /**
+ * A list of all parsers that come bundled with Away3D. Use this to quickly
+ * enable support for all bundled parsers to the file format auto-detection
+ * feature, using any of the enableParsers() methods on loaders, e.g.:
+ *
+ * AssetLibrary.enableParsers(Parsers.ALL_BUNDLED);
+ *
+ * Beware however that this requires all parser classes to be included in the
+ * SWF file, which will add 50-100 kb to the file. When only a limited set of
+ * file formats are used, SWF file size can be saved by adding the parsers
+ * individually using AssetLibrary.enableParser()
+ *
+ * A third way is to specify a parser for each loaded file, thereby bypassing
+ * the auto-detection mechanisms altogether, while at the same time allowing
+ * any properties that are unique to that parser to be set for that load.
+ *
+ * The bundled parsers are:
+ *
+ *
Vector3D
object representing the direction of acceleration on the particle.
+ */
+ static ACCELERATION_VECTOR3D: string;
+ /**
+ * Creates a new ParticleAccelerationNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.
+ */
+ constructor(mode: number, acceleration?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ pGetAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleAccelerationState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleAccelerationNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleBezierCurveState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleBezierCurveNode = require("awayjs-renderergl/lib/animators/nodes/ParticleBezierCurveNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleBezierCurveState extends ParticleStateBase {
+ /** @private */
+ static BEZIER_CONTROL_INDEX: number;
+ /** @private */
+ static BEZIER_END_INDEX: number;
+ private _particleBezierCurveNode;
+ private _controlPoint;
+ private _endPoint;
+ /**
+ * Defines the default control point of the node, used when in global mode.
+ */
+ controlPoint: Vector3D;
+ /**
+ * Defines the default end point of the node, used when in global mode.
+ */
+ endPoint: Vector3D;
+ constructor(animator: ParticleAnimator, particleBezierCurveNode: ParticleBezierCurveNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleBezierCurveState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleBezierCurveNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleBezierCurveState = require("awayjs-renderergl/lib/animators/states/ParticleBezierCurveState");
+ /**
+ * A particle animation node used to control the position of a particle over time along a bezier curve.
+ */
+ class ParticleBezierCurveNode extends ParticleNodeBase {
+ /** @private */
+ _iControlPoint: Vector3D;
+ /** @private */
+ _iEndPoint: Vector3D;
+ /**
+ * Reference for bezier curve node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the control point position (0, 1, 2) of the curve.
+ */
+ static BEZIER_CONTROL_VECTOR3D: string;
+ /**
+ * Reference for bezier curve node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the end point position (0, 1, 2) of the curve.
+ */
+ static BEZIER_END_VECTOR3D: string;
+ /**
+ * Creates a new ParticleBezierCurveNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] controlPoint Defines the default control point of the node, used when in global mode.
+ * @param [optional] endPoint Defines the default end point of the node, used when in global mode.
+ */
+ constructor(mode: number, controlPoint?: Vector3D, endPoint?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleBezierCurveState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleBezierCurveNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleBillboardState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleBillboardNode = require("awayjs-renderergl/lib/animators/nodes/ParticleBillboardNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleBillboardState extends ParticleStateBase {
+ /** @private */
+ static MATRIX_INDEX: number;
+ private _matrix;
+ private _billboardAxis;
+ /**
+ *
+ */
+ constructor(animator: ParticleAnimator, particleNode: ParticleBillboardNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ /**
+ * Defines the billboard axis.
+ */
+ billboardAxis: Vector3D;
+ }
+ export = ParticleBillboardState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleBillboardNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleBillboardState = require("awayjs-renderergl/lib/animators/states/ParticleBillboardState");
+ /**
+ * A particle animation node that controls the rotation of a particle to always face the camera.
+ */
+ class ParticleBillboardNode extends ParticleNodeBase {
+ /** @private */
+ _iBillboardAxis: Vector3D;
+ /**
+ * Creates a new ParticleBillboardNode
+ */
+ constructor(billboardAxis?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleBillboardState;
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ }
+ export = ParticleBillboardNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleColorState" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleColorNode = require("awayjs-renderergl/lib/animators/nodes/ParticleColorNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ * @author ...
+ */
+ class ParticleColorState extends ParticleStateBase {
+ /** @private */
+ static START_MULTIPLIER_INDEX: number;
+ /** @private */
+ static DELTA_MULTIPLIER_INDEX: number;
+ /** @private */
+ static START_OFFSET_INDEX: number;
+ /** @private */
+ static DELTA_OFFSET_INDEX: number;
+ /** @private */
+ static CYCLE_INDEX: number;
+ private _particleColorNode;
+ private _usesMultiplier;
+ private _usesOffset;
+ private _usesCycle;
+ private _usesPhase;
+ private _startColor;
+ private _endColor;
+ private _cycleDuration;
+ private _cyclePhase;
+ private _cycleData;
+ private _startMultiplierData;
+ private _deltaMultiplierData;
+ private _startOffsetData;
+ private _deltaOffsetData;
+ /**
+ * Defines the start color transform of the state, when in global mode.
+ */
+ startColor: ColorTransform;
+ /**
+ * Defines the end color transform of the state, when in global mode.
+ */
+ endColor: ColorTransform;
+ /**
+ * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ cycleDuration: number;
+ /**
+ * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ cyclePhase: number;
+ constructor(animator: ParticleAnimator, particleColorNode: ParticleColorNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateColorData();
+ }
+ export = ParticleColorState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleColorNode" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleColorState = require("awayjs-renderergl/lib/animators/states/ParticleColorState");
+ /**
+ * A particle animation node used to control the color variation of a particle over time.
+ */
+ class ParticleColorNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesMultiplier: boolean;
+ /** @private */
+ _iUsesOffset: boolean;
+ /** @private */
+ _iUsesCycle: boolean;
+ /** @private */
+ _iUsesPhase: boolean;
+ /** @private */
+ _iStartColor: ColorTransform;
+ /** @private */
+ _iEndColor: ColorTransform;
+ /** @private */
+ _iCycleDuration: number;
+ /** @private */
+ _iCyclePhase: number;
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the start color transform applied to the particle.
+ */
+ static COLOR_START_COLORTRANSFORM: string;
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the end color transform applied to the particle.
+ */
+ static COLOR_END_COLORTRANSFORM: string;
+ /**
+ * Creates a new ParticleColorNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesMultiplier Defines whether the node uses multiplier data in the shader for its color transformations. Defaults to true.
+ * @param [optional] usesOffset Defines whether the node uses offset data in the shader for its color transformations. Defaults to true.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the animation independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.
+ * @param [optional] startColor Defines the default start color transform of the node, when in global mode.
+ * @param [optional] endColor Defines the default end color transform of the node, when in global mode.
+ * @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ constructor(mode: number, usesMultiplier?: boolean, usesOffset?: boolean, usesCycle?: boolean, usesPhase?: boolean, startColor?: ColorTransform, endColor?: ColorTransform, cycleDuration?: number, cyclePhase?: number);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleColorState;
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleColorNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleFollowState" {
+ import DisplayObject = require("awayjs-core/lib/core/base/DisplayObject");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleFollowNode = require("awayjs-renderergl/lib/animators/nodes/ParticleFollowNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleFollowState extends ParticleStateBase {
+ /** @private */
+ static FOLLOW_POSITION_INDEX: number;
+ /** @private */
+ static FOLLOW_ROTATION_INDEX: number;
+ private _particleFollowNode;
+ private _followTarget;
+ private _targetPos;
+ private _targetEuler;
+ private _prePos;
+ private _preEuler;
+ private _smooth;
+ private _temp;
+ constructor(animator: ParticleAnimator, particleFollowNode: ParticleFollowNode);
+ followTarget: DisplayObject;
+ smooth: boolean;
+ /**
+ * @inheritDoc
+ */
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private processPosition(currentTime, deltaTime, animationSubGeometry);
+ private precessRotation(currentTime, deltaTime, animationSubGeometry);
+ private processPositionAndRotation(currentTime, deltaTime, animationSubGeometry);
+ }
+ export = ParticleFollowState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleFollowNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleFollowState = require("awayjs-renderergl/lib/animators/states/ParticleFollowState");
+ /**
+ * A particle animation node used to create a follow behaviour on a particle system.
+ */
+ class ParticleFollowNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesPosition: boolean;
+ /** @private */
+ _iUsesRotation: boolean;
+ /** @private */
+ _iSmooth: boolean;
+ /**
+ * Creates a new ParticleFollowNode
+ *
+ * @param [optional] usesPosition Defines wehether the individual particle reacts to the position of the target.
+ * @param [optional] usesRotation Defines wehether the individual particle reacts to the rotation of the target.
+ * @param [optional] smooth Defines wehether the state calculate the interpolated value.
+ */
+ constructor(usesPosition?: boolean, usesRotation?: boolean, smooth?: boolean);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleFollowState;
+ }
+ export = ParticleFollowNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleInitialColorState" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleInitialColorNode = require("awayjs-renderergl/lib/animators/nodes/ParticleInitialColorNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ *
+ */
+ class ParticleInitialColorState extends ParticleStateBase {
+ /** @private */
+ static MULTIPLIER_INDEX: number;
+ /** @private */
+ static OFFSET_INDEX: number;
+ private _particleInitialColorNode;
+ private _usesMultiplier;
+ private _usesOffset;
+ private _initialColor;
+ private _multiplierData;
+ private _offsetData;
+ constructor(animator: ParticleAnimator, particleInitialColorNode: ParticleInitialColorNode);
+ /**
+ * Defines the initial color transform of the state, when in global mode.
+ */
+ initialColor: ColorTransform;
+ /**
+ * @inheritDoc
+ */
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateColorData();
+ }
+ export = ParticleInitialColorState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleInitialColorNode" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ /**
+ *
+ */
+ class ParticleInitialColorNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesMultiplier: boolean;
+ /** @private */
+ _iUsesOffset: boolean;
+ /** @private */
+ _iInitialColor: ColorTransform;
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the color transform applied to the particle.
+ */
+ static COLOR_INITIAL_COLORTRANSFORM: string;
+ constructor(mode: number, usesMultiplier?: boolean, usesOffset?: boolean, initialColor?: ColorTransform);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleInitialColorNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleOrbitState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleOrbitNode = require("awayjs-renderergl/lib/animators/nodes/ParticleOrbitNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleOrbitState extends ParticleStateBase {
+ /** @private */
+ static ORBIT_INDEX: number;
+ /** @private */
+ static EULERS_INDEX: number;
+ private _particleOrbitNode;
+ private _usesEulers;
+ private _usesCycle;
+ private _usesPhase;
+ private _radius;
+ private _cycleDuration;
+ private _cyclePhase;
+ private _eulers;
+ private _orbitData;
+ private _eulersMatrix;
+ /**
+ * Defines the radius of the orbit when in global mode. Defaults to 100.
+ */
+ radius: number;
+ /**
+ * Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ cycleDuration: number;
+ /**
+ * Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ cyclePhase: number;
+ /**
+ * Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.
+ */
+ eulers: Vector3D;
+ constructor(animator: ParticleAnimator, particleOrbitNode: ParticleOrbitNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateOrbitData();
+ }
+ export = ParticleOrbitState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleOrbitNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleOrbitState = require("awayjs-renderergl/lib/animators/states/ParticleOrbitState");
+ /**
+ * A particle animation node used to control the position of a particle over time around a circular orbit.
+ */
+ class ParticleOrbitNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesEulers: boolean;
+ /** @private */
+ _iUsesCycle: boolean;
+ /** @private */
+ _iUsesPhase: boolean;
+ /** @private */
+ _iRadius: number;
+ /** @private */
+ _iCycleDuration: number;
+ /** @private */
+ _iCyclePhase: number;
+ /** @private */
+ _iEulers: Vector3D;
+ /**
+ * Reference for orbit node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the radius (x), cycle speed (y) and cycle phase (z) of the motion on the particle.
+ */
+ static ORBIT_VECTOR3D: string;
+ /**
+ * Creates a new ParticleOrbitNode
object.
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesEulers Defines whether the node uses the eulers
property in the shader to calculate a rotation on the orbit. Defaults to true.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the orbit independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.
+ * @param [optional] radius Defines the radius of the orbit when in global mode. Defaults to 100.
+ * @param [optional] cycleDuration Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ * @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.
+ */
+ constructor(mode: number, usesEulers?: boolean, usesCycle?: boolean, usesPhase?: boolean, radius?: number, cycleDuration?: number, cyclePhase?: number, eulers?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleOrbitState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleOrbitNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleOscillatorState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleOscillatorNode = require("awayjs-renderergl/lib/animators/nodes/ParticleOscillatorNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleOscillatorState extends ParticleStateBase {
+ /** @private */
+ static OSCILLATOR_INDEX: number;
+ private _particleOscillatorNode;
+ private _oscillator;
+ private _oscillatorData;
+ /**
+ * Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the state, used when in global mode.
+ */
+ oscillator: Vector3D;
+ constructor(animator: ParticleAnimator, particleOscillatorNode: ParticleOscillatorNode);
+ /**
+ * @inheritDoc
+ */
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateOscillatorData();
+ }
+ export = ParticleOscillatorState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleOscillatorNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleOscillatorState = require("awayjs-renderergl/lib/animators/states/ParticleOscillatorState");
+ /**
+ * A particle animation node used to control the position of a particle over time using simple harmonic motion.
+ */
+ class ParticleOscillatorNode extends ParticleNodeBase {
+ /** @private */
+ _iOscillator: Vector3D;
+ /**
+ * Reference for ocsillator node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the axis (x,y,z) and cycle speed (w) of the motion on the particle.
+ */
+ static OSCILLATOR_VECTOR3D: string;
+ /**
+ * Creates a new ParticleOscillatorNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.
+ */
+ constructor(mode: number, oscillator?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleOscillatorState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleOscillatorNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticlePositionState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticlePositionNode = require("awayjs-renderergl/lib/animators/nodes/ParticlePositionNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ * @author ...
+ */
+ class ParticlePositionState extends ParticleStateBase {
+ /** @private */
+ static POSITION_INDEX: number;
+ private _particlePositionNode;
+ private _position;
+ /**
+ * Defines the position of the particle when in global mode. Defaults to 0,0,0.
+ */
+ position: Vector3D;
+ /**
+ *
+ */
+ getPositions(): Vector3D[];
+ setPositions(value: Vector3D[]): void;
+ constructor(animator: ParticleAnimator, particlePositionNode: ParticlePositionNode);
+ /**
+ * @inheritDoc
+ */
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticlePositionState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticlePositionNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticlePositionState = require("awayjs-renderergl/lib/animators/states/ParticlePositionState");
+ /**
+ * A particle animation node used to set the starting position of a particle.
+ */
+ class ParticlePositionNode extends ParticleNodeBase {
+ /** @private */
+ _iPosition: Vector3D;
+ /**
+ * Reference for position node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing position of the particle.
+ */
+ static POSITION_VECTOR3D: string;
+ /**
+ * Creates a new ParticlePositionNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.
+ */
+ constructor(mode: number, position?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticlePositionState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticlePositionNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleRotateToHeadingState" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleRotateToHeadingState extends ParticleStateBase {
+ /** @private */
+ static MATRIX_INDEX: number;
+ private _matrix;
+ constructor(animator: ParticleAnimator, particleNode: ParticleNodeBase);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleRotateToHeadingState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleRotateToHeadingNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleRotateToHeadingState = require("awayjs-renderergl/lib/animators/states/ParticleRotateToHeadingState");
+ /**
+ * A particle animation node used to control the rotation of a particle to match its heading vector.
+ */
+ class ParticleRotateToHeadingNode extends ParticleNodeBase {
+ /**
+ * Creates a new ParticleBillboardNode
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleRotateToHeadingState;
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ }
+ export = ParticleRotateToHeadingNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleRotateToPositionState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleRotateToPositionNode = require("awayjs-renderergl/lib/animators/nodes/ParticleRotateToPositionNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleRotateToPositionState extends ParticleStateBase {
+ /** @private */
+ static MATRIX_INDEX: number;
+ /** @private */
+ static POSITION_INDEX: number;
+ private _particleRotateToPositionNode;
+ private _position;
+ private _matrix;
+ private _offset;
+ /**
+ * Defines the position of the point the particle will rotate to face when in global mode. Defaults to 0,0,0.
+ */
+ position: Vector3D;
+ constructor(animator: ParticleAnimator, particleRotateToPositionNode: ParticleRotateToPositionNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleRotateToPositionState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleRotateToPositionNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleRotateToPositionState = require("awayjs-renderergl/lib/animators/states/ParticleRotateToPositionState");
+ /**
+ * A particle animation node used to control the rotation of a particle to face to a position
+ */
+ class ParticleRotateToPositionNode extends ParticleNodeBase {
+ /** @private */
+ _iPosition: Vector3D;
+ /**
+ * Reference for the position the particle will rotate to face for a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the position that the particle must face.
+ */
+ static POSITION_VECTOR3D: string;
+ /**
+ * Creates a new ParticleRotateToPositionNode
+ */
+ constructor(mode: number, position?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleRotateToPositionState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleRotateToPositionNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleRotationalVelocityState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleRotationalVelocityNode = require("awayjs-renderergl/lib/animators/nodes/ParticleRotationalVelocityNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleRotationalVelocityState extends ParticleStateBase {
+ /** @private */
+ static ROTATIONALVELOCITY_INDEX: number;
+ private _particleRotationalVelocityNode;
+ private _rotationalVelocityData;
+ private _rotationalVelocity;
+ /**
+ * Defines the default rotationalVelocity of the state, used when in global mode.
+ */
+ rotationalVelocity: Vector3D;
+ /**
+ *
+ */
+ getRotationalVelocities(): Vector3D[];
+ setRotationalVelocities(value: Vector3D[]): void;
+ constructor(animator: ParticleAnimator, particleRotationNode: ParticleRotationalVelocityNode);
+ /**
+ * @inheritDoc
+ */
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateRotationalVelocityData();
+ }
+ export = ParticleRotationalVelocityState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleRotationalVelocityNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleRotationalVelocityState = require("awayjs-renderergl/lib/animators/states/ParticleRotationalVelocityState");
+ /**
+ * A particle animation node used to set the starting rotational velocity of a particle.
+ */
+ class ParticleRotationalVelocityNode extends ParticleNodeBase {
+ /** @private */
+ _iRotationalVelocity: Vector3D;
+ /**
+ * Reference for rotational velocity node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the rotational velocity around an axis of the particle.
+ */
+ static ROTATIONALVELOCITY_VECTOR3D: string;
+ /**
+ * Creates a new ParticleRotationalVelocityNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ */
+ constructor(mode: number, rotationalVelocity?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleRotationalVelocityState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleRotationalVelocityNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleScaleState" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleScaleNode = require("awayjs-renderergl/lib/animators/nodes/ParticleScaleNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleScaleState extends ParticleStateBase {
+ /** @private */
+ static SCALE_INDEX: number;
+ private _particleScaleNode;
+ private _usesCycle;
+ private _usesPhase;
+ private _minScale;
+ private _maxScale;
+ private _cycleDuration;
+ private _cyclePhase;
+ private _scaleData;
+ /**
+ * Defines the end scale of the state, when in global mode. Defaults to 1.
+ */
+ minScale: number;
+ /**
+ * Defines the end scale of the state, when in global mode. Defaults to 1.
+ */
+ maxScale: number;
+ /**
+ * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ cycleDuration: number;
+ /**
+ * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ cyclePhase: number;
+ constructor(animator: ParticleAnimator, particleScaleNode: ParticleScaleNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateScaleData();
+ }
+ export = ParticleScaleState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleScaleNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleScaleState = require("awayjs-renderergl/lib/animators/states/ParticleScaleState");
+ /**
+ * A particle animation node used to control the scale variation of a particle over time.
+ */
+ class ParticleScaleNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesCycle: boolean;
+ /** @private */
+ _iUsesPhase: boolean;
+ /** @private */
+ _iMinScale: number;
+ /** @private */
+ _iMaxScale: number;
+ /** @private */
+ _iCycleDuration: number;
+ /** @private */
+ _iCyclePhase: number;
+ /**
+ * Reference for scale node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
representing the min scale (x), max scale(y), optional cycle speed (z) and phase offset (w) applied to the particle.
+ */
+ static SCALE_VECTOR3D: string;
+ /**
+ * Creates a new ParticleScaleNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of animation independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the animation cycle. Defaults to false.
+ * @param [optional] minScale Defines the default min scale transform of the node, when in global mode. Defaults to 1.
+ * @param [optional] maxScale Defines the default max color transform of the node, when in global mode. Defaults to 1.
+ * @param [optional] cycleDuration Defines the default duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the default phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ constructor(mode: number, usesCycle: boolean, usesPhase: boolean, minScale?: number, maxScale?: number, cycleDuration?: number, cyclePhase?: number);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleScaleState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleScaleNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleSegmentedColorState" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ColorSegmentPoint = require("awayjs-renderergl/lib/animators/data/ColorSegmentPoint");
+ import ParticleSegmentedColorNode = require("awayjs-renderergl/lib/animators/nodes/ParticleSegmentedColorNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ *
+ */
+ class ParticleSegmentedColorState extends ParticleStateBase {
+ /** @private */
+ static START_MULTIPLIER_INDEX: number;
+ /** @private */
+ static START_OFFSET_INDEX: number;
+ /** @private */
+ static TIME_DATA_INDEX: number;
+ private _usesMultiplier;
+ private _usesOffset;
+ private _startColor;
+ private _endColor;
+ private _segmentPoints;
+ private _numSegmentPoint;
+ private _timeLifeData;
+ private _multiplierData;
+ private _offsetData;
+ /**
+ * Defines the start color transform of the state, when in global mode.
+ */
+ startColor: ColorTransform;
+ /**
+ * Defines the end color transform of the state, when in global mode.
+ */
+ endColor: ColorTransform;
+ /**
+ * Defines the number of segments.
+ */
+ numSegmentPoint: number;
+ /**
+ * Defines the key points of color
+ */
+ segmentPoints: ColorSegmentPoint[];
+ usesMultiplier: boolean;
+ usesOffset: boolean;
+ constructor(animator: ParticleAnimator, particleSegmentedColorNode: ParticleSegmentedColorNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateColorData();
+ }
+ export = ParticleSegmentedColorState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleSegmentedColorNode" {
+ import ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ColorSegmentPoint = require("awayjs-renderergl/lib/animators/data/ColorSegmentPoint");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ /**
+ *
+ */
+ class ParticleSegmentedColorNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesMultiplier: boolean;
+ /** @private */
+ _iUsesOffset: boolean;
+ /** @private */
+ _iStartColor: ColorTransform;
+ /** @private */
+ _iEndColor: ColorTransform;
+ /** @private */
+ _iNumSegmentPoint: number;
+ /** @private */
+ _iSegmentPoints: ColorSegmentPoint[];
+ constructor(usesMultiplier: boolean, usesOffset: boolean, numSegmentPoint: number, startColor: ColorTransform, endColor: ColorTransform, segmentPoints: ColorSegmentPoint[]);
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ }
+ export = ParticleSegmentedColorNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleSpriteSheetState" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleSpriteSheetNode = require("awayjs-renderergl/lib/animators/nodes/ParticleSpriteSheetNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleSpriteSheetState extends ParticleStateBase {
+ /** @private */
+ static UV_INDEX_0: number;
+ /** @private */
+ static UV_INDEX_1: number;
+ private _particleSpriteSheetNode;
+ private _usesCycle;
+ private _usesPhase;
+ private _totalFrames;
+ private _numColumns;
+ private _numRows;
+ private _cycleDuration;
+ private _cyclePhase;
+ private _spriteSheetData;
+ /**
+ * Defines the cycle phase, when in global mode. Defaults to zero.
+ */
+ cyclePhase: number;
+ /**
+ * Defines the cycle duration in seconds, when in global mode. Defaults to 1.
+ */
+ cycleDuration: number;
+ constructor(animator: ParticleAnimator, particleSpriteSheetNode: ParticleSpriteSheetNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ private updateSpriteSheetData();
+ }
+ export = ParticleSpriteSheetState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleSpriteSheetNode" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleSpriteSheetState = require("awayjs-renderergl/lib/animators/states/ParticleSpriteSheetState");
+ /**
+ * A particle animation node used when a spritesheet texture is required to animate the particle.
+ * NB: to enable use of this node, the repeat
property on the material has to be set to true.
+ */
+ class ParticleSpriteSheetNode extends ParticleNodeBase {
+ /** @private */
+ _iUsesCycle: boolean;
+ /** @private */
+ _iUsesPhase: boolean;
+ /** @private */
+ _iTotalFrames: number;
+ /** @private */
+ _iNumColumns: number;
+ /** @private */
+ _iNumRows: number;
+ /** @private */
+ _iCycleDuration: number;
+ /** @private */
+ _iCyclePhase: number;
+ /**
+ * Reference for spritesheet node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
representing the cycleDuration (x), optional phaseTime (y).
+ */
+ static UV_VECTOR3D: string;
+ /**
+ * Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. Read only.
+ */
+ numColumns: number;
+ /**
+ * Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. Read only.
+ */
+ numRows: number;
+ /**
+ * Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. Read only.
+ */
+ totalFrames: number;
+ /**
+ * Creates a new ParticleSpriteSheetNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] numColumns Defines the number of columns in the spritesheet, when in global mode. Defaults to 1.
+ * @param [optional] numRows Defines the number of rows in the spritesheet, when in global mode. Defaults to 1.
+ * @param [optional] cycleDuration Defines the default cycle duration in seconds, when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the default cycle phase, when in global mode. Defaults to 0.
+ * @param [optional] totalFrames Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows.
+ * @param [optional] looping Defines whether the spritesheet animation is set to loop indefinitely. Defaults to true.
+ */
+ constructor(mode: number, usesCycle: boolean, usesPhase: boolean, numColumns?: number, numRows?: number, cycleDuration?: number, cyclePhase?: number, totalFrames?: number);
+ /**
+ * @inheritDoc
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleSpriteSheetState;
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleSpriteSheetNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleUVState" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleUVNode = require("awayjs-renderergl/lib/animators/nodes/ParticleUVNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleUVState extends ParticleStateBase {
+ /** @private */
+ static UV_INDEX: number;
+ private _particleUVNode;
+ constructor(animator: ParticleAnimator, particleUVNode: ParticleUVNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleUVState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleUVNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleUVState = require("awayjs-renderergl/lib/animators/states/ParticleUVState");
+ /**
+ * A particle animation node used to control the UV offset and scale of a particle over time.
+ */
+ class ParticleUVNode extends ParticleNodeBase {
+ /** @private */
+ _iUvData: Vector3D;
+ /**
+ *
+ */
+ static U_AXIS: string;
+ /**
+ *
+ */
+ static V_AXIS: string;
+ private _cycle;
+ private _scale;
+ private _axis;
+ /**
+ * Creates a new ParticleTimeNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] cycle Defines whether the time track is in loop mode. Defaults to false.
+ * @param [optional] scale Defines whether the time track is in loop mode. Defaults to false.
+ * @param [optional] axis Defines whether the time track is in loop mode. Defaults to false.
+ */
+ constructor(mode: number, cycle?: number, scale?: number, axis?: string);
+ /**
+ *
+ */
+ cycle: number;
+ /**
+ *
+ */
+ scale: number;
+ /**
+ *
+ */
+ axis: string;
+ /**
+ * @inheritDoc
+ */
+ getAGALUVCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleUVState;
+ private updateUVData();
+ /**
+ * @inheritDoc
+ */
+ _iProcessAnimationSetting(particleAnimationSet: ParticleAnimationSet): void;
+ }
+ export = ParticleUVNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/ParticleVelocityState" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ParticleAnimator = require("awayjs-renderergl/lib/animators/ParticleAnimator");
+ import AnimationSubGeometry = require("awayjs-renderergl/lib/animators/data/AnimationSubGeometry");
+ import ParticleVelocityNode = require("awayjs-renderergl/lib/animators/nodes/ParticleVelocityNode");
+ import ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+ /**
+ * ...
+ */
+ class ParticleVelocityState extends ParticleStateBase {
+ /** @private */
+ static VELOCITY_INDEX: number;
+ private _particleVelocityNode;
+ private _velocity;
+ /**
+ * Defines the default velocity vector of the state, used when in global mode.
+ */
+ velocity: Vector3D;
+ /**
+ *
+ */
+ getVelocities(): Vector3D[];
+ setVelocities(value: Vector3D[]): void;
+ constructor(animator: ParticleAnimator, particleVelocityNode: ParticleVelocityNode);
+ setRenderState(stage: Stage, renderable: RenderableBase, animationSubGeometry: AnimationSubGeometry, animationRegisterCache: AnimationRegisterCache, camera: Camera): void;
+ }
+ export = ParticleVelocityState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/ParticleVelocityNode" {
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import AnimationRegisterCache = require("awayjs-stagegl/lib/animators/data/AnimationRegisterCache");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ParticleProperties = require("awayjs-renderergl/lib/animators/data/ParticleProperties");
+ import ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+ import ParticleVelocityState = require("awayjs-renderergl/lib/animators/states/ParticleVelocityState");
+ /**
+ * A particle animation node used to set the starting velocity of a particle.
+ */
+ class ParticleVelocityNode extends ParticleNodeBase {
+ /** @private */
+ _iVelocity: Vector3D;
+ /**
+ * Reference for velocity node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the direction of movement on the particle.
+ */
+ static VELOCITY_VECTOR3D: string;
+ /**
+ * Creates a new ParticleVelocityNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] velocity Defines the default velocity vector of the node, used when in global mode.
+ */
+ constructor(mode: number, velocity?: Vector3D);
+ /**
+ * @inheritDoc
+ */
+ getAGALVertexCode(shaderObject: ShaderObjectBase, animationRegisterCache: AnimationRegisterCache): string;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): ParticleVelocityState;
+ /**
+ * @inheritDoc
+ */
+ _iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
+ }
+ export = ParticleVelocityNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import SkeletonBinaryLERPNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ import ISkeletonAnimationState = require("awayjs-renderergl/lib/animators/states/ISkeletonAnimationState");
+ /**
+ *
+ */
+ class SkeletonBinaryLERPState extends AnimationStateBase implements ISkeletonAnimationState {
+ private _blendWeight;
+ private _skeletonAnimationNode;
+ private _skeletonPose;
+ private _skeletonPoseDirty;
+ private _inputA;
+ private _inputB;
+ /**
+ * Defines a fractional value between 0 and 1 representing the blending ratio between inputA (0) and inputB (1),
+ * used to produce the skeleton pose output.
+ *
+ * @see inputA
+ * @see inputB
+ */
+ blendWeight: number;
+ constructor(animator: AnimatorBase, skeletonAnimationNode: SkeletonBinaryLERPNode);
+ /**
+ * @inheritDoc
+ */
+ phase(value: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateTime(time: number): void;
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ /**
+ * Updates the output skeleton pose of the node based on the blendWeight value between input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ private updateSkeletonPose(skeleton);
+ }
+ export = SkeletonBinaryLERPState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonBinaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState");
+ /**
+ * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+ class SkeletonBinaryLERPNode extends AnimationNodeBase {
+ /**
+ * Defines input node A to use for the blended output.
+ */
+ inputA: AnimationNodeBase;
+ /**
+ * Defines input node B to use for the blended output.
+ */
+ inputB: AnimationNodeBase;
+ /**
+ * Creates a new SkeletonBinaryLERPNode
object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): SkeletonBinaryLERPState;
+ }
+ export = SkeletonBinaryLERPNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/SkeletonDifferenceState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import SkeletonDifferenceNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonDifferenceNode");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ import ISkeletonAnimationState = require("awayjs-renderergl/lib/animators/states/ISkeletonAnimationState");
+ /**
+ *
+ */
+ class SkeletonDifferenceState extends AnimationStateBase implements ISkeletonAnimationState {
+ private _blendWeight;
+ private static _tempQuat;
+ private _skeletonAnimationNode;
+ private _skeletonPose;
+ private _skeletonPoseDirty;
+ private _baseInput;
+ private _differenceInput;
+ /**
+ * Defines a fractional value between 0 and 1 representing the blending ratio between the base input (0) and difference input (1),
+ * used to produce the skeleton pose output.
+ *
+ * @see #baseInput
+ * @see #differenceInput
+ */
+ blendWeight: number;
+ constructor(animator: AnimatorBase, skeletonAnimationNode: SkeletonDifferenceNode);
+ /**
+ * @inheritDoc
+ */
+ phase(value: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdateTime(time: number): void;
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ /**
+ * Updates the output skeleton pose of the node based on the blendWeight value between base input and difference input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ private updateSkeletonPose(skeleton);
+ }
+ export = SkeletonDifferenceState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/SkeletonDifferenceNode" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonDifferenceState = require("awayjs-renderergl/lib/animators/states/SkeletonDifferenceState");
+ /**
+ * A skeleton animation node that uses a difference input pose with a base input pose to blend a linearly interpolated output of a skeleton pose.
+ */
+ class SkeletonDifferenceNode extends AnimationNodeBase {
+ /**
+ * Defines a base input node to use for the blended output.
+ */
+ baseInput: AnimationNodeBase;
+ /**
+ * Defines a difference input node to use for the blended output.
+ */
+ differenceInput: AnimationNodeBase;
+ /**
+ * Creates a new SkeletonAdditiveNode
object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): SkeletonDifferenceState;
+ }
+ export = SkeletonDifferenceNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/SkeletonDirectionalState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import SkeletonDirectionalNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonDirectionalNode");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ import ISkeletonAnimationState = require("awayjs-renderergl/lib/animators/states/ISkeletonAnimationState");
+ /**
+ *
+ */
+ class SkeletonDirectionalState extends AnimationStateBase implements ISkeletonAnimationState {
+ private _skeletonAnimationNode;
+ private _skeletonPose;
+ private _skeletonPoseDirty;
+ private _inputA;
+ private _inputB;
+ private _blendWeight;
+ private _direction;
+ private _blendDirty;
+ private _forward;
+ private _backward;
+ private _left;
+ private _right;
+ /**
+ * Defines the direction in degrees of the aniamtion between the forwards (0), right(90) backwards (180) and left(270) input nodes,
+ * used to produce the skeleton pose output.
+ */
+ direction: number;
+ constructor(animator: AnimatorBase, skeletonAnimationNode: SkeletonDirectionalNode);
+ /**
+ * @inheritDoc
+ */
+ phase(value: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUdateTime(time: number): void;
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ /**
+ * Updates the output skeleton pose of the node based on the direction value between forward, backwards, left and right input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ private updateSkeletonPose(skeleton);
+ /**
+ * Updates the blend value for the animation output based on the direction value between forward, backwards, left and right input nodes.
+ *
+ * @private
+ */
+ private updateBlend();
+ }
+ export = SkeletonDirectionalState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/SkeletonDirectionalNode" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonDirectionalState = require("awayjs-renderergl/lib/animators/states/SkeletonDirectionalState");
+ /**
+ * A skeleton animation node that uses four directional input poses with an input direction to blend a linearly interpolated output of a skeleton pose.
+ */
+ class SkeletonDirectionalNode extends AnimationNodeBase {
+ /**
+ * Defines the forward configured input node to use for the blended output.
+ */
+ forward: AnimationNodeBase;
+ /**
+ * Defines the backwards configured input node to use for the blended output.
+ */
+ backward: AnimationNodeBase;
+ /**
+ * Defines the left configured input node to use for the blended output.
+ */
+ left: AnimationNodeBase;
+ /**
+ * Defines the right configured input node to use for the blended output.
+ */
+ right: AnimationNodeBase;
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): SkeletonDirectionalState;
+ }
+ export = SkeletonDirectionalNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/states/SkeletonNaryLERPState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import Skeleton = require("awayjs-renderergl/lib/animators/data/Skeleton");
+ import SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+ import SkeletonNaryLERPNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonNaryLERPNode");
+ import AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+ import ISkeletonAnimationState = require("awayjs-renderergl/lib/animators/states/ISkeletonAnimationState");
+ /**
+ *
+ */
+ class SkeletonNaryLERPState extends AnimationStateBase implements ISkeletonAnimationState {
+ private _skeletonAnimationNode;
+ private _skeletonPose;
+ private _skeletonPoseDirty;
+ private _blendWeights;
+ private _inputs;
+ constructor(animator: AnimatorBase, skeletonAnimationNode: SkeletonNaryLERPNode);
+ /**
+ * @inheritDoc
+ */
+ phase(value: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUdateTime(time: number): void;
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ getSkeletonPose(skeleton: Skeleton): SkeletonPose;
+ /**
+ * Returns the blend weight of the skeleton aniamtion node that resides at the given input index.
+ *
+ * @param index The input index for which the skeleton animation node blend weight is requested.
+ */
+ getBlendWeightAt(index: number): number;
+ /**
+ * Sets the blend weight of the skeleton aniamtion node that resides at the given input index.
+ *
+ * @param index The input index on which the skeleton animation node blend weight is to be set.
+ * @param blendWeight The blend weight value to use for the given skeleton animation node index.
+ */
+ setBlendWeightAt(index: number, blendWeight: number): void;
+ /**
+ * @inheritDoc
+ */
+ _pUpdatePositionDelta(): void;
+ /**
+ * Updates the output skeleton pose of the node based on the blend weight values given to the input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ private updateSkeletonPose(skeleton);
+ }
+ export = SkeletonNaryLERPState;
+
+}
+declare module "awayjs-renderergl/lib/animators/nodes/SkeletonNaryLERPNode" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonNaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonNaryLERPState");
+ /**
+ * A skeleton animation node that uses an n-dimensional array of animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+ class SkeletonNaryLERPNode extends AnimationNodeBase {
+ _iInputs: AnimationNodeBase[];
+ private _numInputs;
+ numInputs: number;
+ /**
+ * Creates a new SkeletonNaryLERPNode
object.
+ */
+ constructor();
+ /**
+ * Returns an integer representing the input index of the given skeleton animation node.
+ *
+ * @param input The skeleton animation node for with the input index is requested.
+ */
+ getInputIndex(input: AnimationNodeBase): number;
+ /**
+ * Returns the skeleton animation node object that resides at the given input index.
+ *
+ * @param index The input index for which the skeleton animation node is requested.
+ */
+ getInputAt(index: number): AnimationNodeBase;
+ /**
+ * Adds a new skeleton animation node input to the animation node.
+ */
+ addInput(input: AnimationNodeBase): void;
+ /**
+ * @inheritDoc
+ */
+ getAnimationState(animator: AnimatorBase): SkeletonNaryLERPState;
+ }
+ export = SkeletonNaryLERPNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionState" {
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import SkeletonBinaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState");
+ import CrossfadeTransitionNode = require("awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode");
+ /**
+ *
+ */
+ class CrossfadeTransitionState extends SkeletonBinaryLERPState {
+ private _crossfadeTransitionNode;
+ private _animationStateTransitionComplete;
+ constructor(animator: AnimatorBase, skeletonAnimationNode: CrossfadeTransitionNode);
+ /**
+ * @inheritDoc
+ */
+ _pUpdateTime(time: number): void;
+ }
+ export = CrossfadeTransitionState;
+
+}
+declare module "awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode" {
+ import SkeletonBinaryLERPNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode");
+ /**
+ * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+ class CrossfadeTransitionNode extends SkeletonBinaryLERPNode {
+ blendSpeed: number;
+ startBlend: number;
+ /**
+ * Creates a new CrossfadeTransitionNode
object.
+ */
+ constructor();
+ }
+ export = CrossfadeTransitionNode;
+
+}
+declare module "awayjs-renderergl/lib/animators/transitions/CrossfadeTransition" {
+ import AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+ import AnimatorBase = require("awayjs-stagegl/lib/animators/AnimatorBase");
+ import IAnimationTransition = require("awayjs-renderergl/lib/animators/transitions/IAnimationTransition");
+ /**
+ *
+ */
+ class CrossfadeTransition implements IAnimationTransition {
+ blendSpeed: number;
+ constructor(blendSpeed: number);
+ getAnimationNode(animator: AnimatorBase, startNode: AnimationNodeBase, endNode: AnimationNodeBase, startBlend: number): AnimationNodeBase;
+ }
+ export = CrossfadeTransition;
+
+}
+declare module "awayjs-renderergl/lib/core/pick/PickingColliderBase" {
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ import Point = require("awayjs-core/lib/core/geom/Point");
+ import Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+ import Billboard = require("awayjs-core/lib/entities/Billboard");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ /**
+ * An abstract base class for all picking collider classes. It should not be instantiated directly.
+ *
+ * @class away.pick.PickingColliderBase
+ */
+ class PickingColliderBase {
+ private _billboardRenderablePool;
+ private _subMeshRenderablePool;
+ rayPosition: Vector3D;
+ rayDirection: Vector3D;
+ constructor();
+ _pPetCollisionNormal(indexData: number[], vertexData: number[], triangleIndex: number): Vector3D;
+ _pGetCollisionUV(indexData: number[], uvData: number[], triangleIndex: number, v: number, w: number, u: number, uvOffset: number, uvStride: number): Point;
+ /**
+ * @inheritDoc
+ */
+ _pTestRenderableCollision(renderable: RenderableBase, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean;
+ /**
+ * @inheritDoc
+ */
+ setLocalRay(localPosition: Vector3D, localDirection: Vector3D): void;
+ /**
+ * Tests a Billboard
object for a collision with the picking ray.
+ *
+ * @param billboard The billboard 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
+ */
+ testBillboardCollision(billboard: Billboard, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean;
+ /**
+ * Tests a Mesh
object for a collision with the picking ray.
+ *
+ * @param mesh The mesh 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(mesh: Mesh, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number, findClosest: boolean): boolean;
+ }
+ export = PickingColliderBase;
+
+}
+declare module "awayjs-renderergl/lib/core/pick/JSPickingCollider" {
+ import PickingCollisionVO = require("awayjs-core/lib/core/pick/PickingCollisionVO");
+ import IPickingCollider = require("awayjs-core/lib/core/pick/IPickingCollider");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import PickingColliderBase = require("awayjs-renderergl/lib/core/pick/PickingColliderBase");
+ /**
+ * Pure JS picking collider for display objects. Used with the RaycastPicker
picking object.
+ *
+ * @see away.base.DisplayObject#pickingCollider
+ * @see away.pick.RaycastPicker
+ *
+ * @class away.pick.JSPickingCollider
+ */
+ class JSPickingCollider extends PickingColliderBase implements IPickingCollider {
+ private _findClosestCollision;
+ /**
+ * Creates a new JSPickingCollider
object.
+ *
+ * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.
+ */
+ constructor(findClosestCollision?: boolean);
+ /**
+ * @inheritDoc
+ */
+ _pTestRenderableCollision(renderable: RenderableBase, pickingCollisionVO: PickingCollisionVO, shortestCollisionDistance: number): boolean;
+ }
+ export = JSPickingCollider;
+
+}
+declare module "awayjs-renderergl/lib/core/pick/ShaderPicker" {
+ 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");
+ import EntityCollector = require("awayjs-core/lib/core/traverse/EntityCollector");
+ import ITextureBase = require("awayjs-stagegl/lib/core/stagegl/ITextureBase");
+ /**
+ * Picks a 3d object from a view or scene by performing a separate render pass on the scene around the area being picked using key color values,
+ * then reading back the color value of the pixel in the render representing the picking ray. Requires multiple passes and readbacks for retriving details
+ * on an entity that has its shaderPickingDetails property set to true.
+ *
+ * A read-back operation from any GPU is not a very efficient process, and the amount of processing used can vary significantly between different hardware.
+ *
+ * @see away.entities.Entity#shaderPickingDetails
+ *
+ * @class away.pick.ShaderPicker
+ */
+ class ShaderPicker implements IPicker {
+ private _opaqueRenderableHead;
+ private _blendedRenderableHead;
+ private _stage;
+ private _context;
+ private _onlyMouseEnabled;
+ private _objectProgram;
+ private _triangleProgram;
+ private _bitmapData;
+ private _viewportData;
+ private _boundOffsetScale;
+ private _id;
+ private _interactives;
+ private _interactiveId;
+ private _hitColor;
+ private _projX;
+ private _projY;
+ private _hitRenderable;
+ private _hitEntity;
+ private _localHitPosition;
+ private _hitUV;
+ private _faceIndex;
+ private _subGeometryIndex;
+ private _localHitNormal;
+ private _rayPos;
+ private _rayDir;
+ private _potentialFound;
+ private static MOUSE_SCISSOR_RECT;
+ private _shaderPickingDetails;
+ /**
+ * @inheritDoc
+ */
+ onlyMouseEnabled: boolean;
+ /**
+ * Creates a new ShaderPicker
object.
+ *
+ * @param shaderPickingDetails Determines whether the picker includes a second pass to calculate extra
+ * properties such as uv and normal coordinates.
+ */
+ constructor(shaderPickingDetails?: boolean);
+ /**
+ * @inheritDoc
+ */
+ getViewCollision(x: number, y: number, view: View): PickingCollisionVO;
+ /**
+ * @inheritDoc
+ */
+ getSceneCollision(position: Vector3D, direction: Vector3D, scene: Scene): PickingCollisionVO;
+ /**
+ * @inheritDoc
+ */
+ pDraw(entityCollector: EntityCollector, target: ITextureBase): void;
+ /**
+ * Draw a list of renderables.
+ * @param renderables The renderables to draw.
+ * @param camera The camera for which to render.
+ */
+ private drawRenderables(renderable, camera);
+ private updateRay(camera);
+ /**
+ * Creates the Program that color-codes objects.
+ */
+ private initObjectProgram();
+ /**
+ * Creates the Program that renders positions.
+ */
+ private initTriangleProgram();
+ /**
+ * Gets more detailed information about the hir position, if required.
+ * @param camera The camera used to view the hit object.
+ */
+ private getHitDetails(camera);
+ /**
+ * Finds a first-guess approximate position about the hit position.
+ *
+ * @param camera The camera used to view the hit object.
+ */
+ private getApproximatePosition(camera);
+ /**
+ * Use the approximate position info to find the face under the mouse position from which we can derive the precise
+ * ray-face intersection point, then use barycentric coordinates to figure out the uv coordinates, etc.
+ * @param camera The camera used to view the hit object.
+ */
+ private getPreciseDetails(camera);
+ /**
+ * Finds the precise hit position by unprojecting the screen coordinate back unto the hit face's plane and
+ * calculating the intersection point.
+ * @param camera The camera used to render the object.
+ * @param invSceneTransform The inverse scene transformation of the hit object.
+ * @param nx The x-coordinate of the face's plane normal.
+ * @param ny The y-coordinate of the face plane normal.
+ * @param nz The z-coordinate of the face plane normal.
+ * @param px The x-coordinate of a point on the face's plane (ie a face vertex)
+ * @param py The y-coordinate of a point on the face's plane (ie a face vertex)
+ * @param pz The z-coordinate of a point on the face's plane (ie a face vertex)
+ */
+ private getPrecisePosition(invSceneTransform, nx, ny, nz, px, py, pz);
+ dispose(): void;
+ }
+ export = ShaderPicker;
+
+}
+declare module "awayjs-renderergl/lib/materials/passes/SingleObjectDepthPass" {
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import RenderTexture = require("awayjs-core/lib/textures/RenderTexture");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MaterialPassData = require("awayjs-stagegl/lib/core/pool/MaterialPassData");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import MaterialPassBase = require("awayjs-stagegl/lib/materials/passes/MaterialPassBase");
+ /**
+ * The SingleObjectDepthPass provides a material pass that renders a single object to a depth map from the point
+ * of view from a light.
+ */
+ class SingleObjectDepthPass extends MaterialPassBase {
+ private _textures;
+ private _projections;
+ private _textureSize;
+ private _polyOffset;
+ private _enc;
+ private _projectionTexturesInvalid;
+ /**
+ * The size of the depth map texture to render to.
+ */
+ textureSize: number;
+ /**
+ * The amount by which the rendered object will be inflated, to prevent depth map rounding errors.
+ */
+ polyOffset: number;
+ /**
+ * Creates a new SingleObjectDepthPass object.
+ */
+ constructor();
+ /**
+ * @inheritDoc
+ */
+ dispose(): void;
+ /**
+ * Updates the projection textures used to contain the depth renders.
+ */
+ private updateProjectionTextures();
+ /**
+ * @inheritDoc
+ */
+ _iGetVertexCode(): string;
+ /**
+ * @inheritDoc
+ */
+ _iGetFragmentCode(shaderObject: ShaderObjectBase, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Gets the depth maps rendered for this object from all lights.
+ * @param renderable The renderable for which to retrieve the depth maps.
+ * @param stage3DProxy The Stage3DProxy object currently used for rendering.
+ * @return A list of depth map textures for all supported lights.
+ */
+ _iGetDepthMap(renderable: RenderableBase): RenderTexture;
+ /**
+ * Retrieves the depth map projection maps for all lights.
+ * @param renderable The renderable for which to retrieve the projection maps.
+ * @return A list of projection maps for all supported lights.
+ */
+ _iGetProjection(renderable: RenderableBase): Matrix3D;
+ /**
+ * @inheritDoc
+ */
+ _iRender(pass: MaterialPassData, renderable: RenderableBase, stage: Stage, camera: Camera, viewProjection: Matrix3D): void;
+ /**
+ * @inheritDoc
+ */
+ _iActivate(pass: MaterialPassData, stage: Stage, camera: Camera): void;
+ }
+ export = SingleObjectDepthPass;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/DiffuseSubSurfaceMethod" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+ import DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+ /**
+ * DiffuseSubSurfaceMethod provides a depth map-based diffuse shading method that mimics the scattering of
+ * light inside translucent surfaces. It allows light to shine through an object and to soften the diffuse shading.
+ * It can be used for candle wax, ice, skin, ...
+ */
+ class DiffuseSubSurfaceMethod extends DiffuseCompositeMethod {
+ private _depthPass;
+ private _lightProjVarying;
+ private _propReg;
+ private _scattering;
+ private _translucency;
+ private _lightColorReg;
+ private _scatterColor;
+ private _colorReg;
+ private _decReg;
+ private _scatterR;
+ private _scatterG;
+ private _scatterB;
+ private _targetReg;
+ /**
+ * Creates a new DiffuseSubSurfaceMethod
object.
+ *
+ * @param depthMapSize The size of the depth map used.
+ * @param depthMapOffset The amount by which the rendered object will be inflated, to prevent depth map rounding errors.
+ * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.
+ */
+ constructor(depthMapSize?: number, depthMapOffset?: number, baseMethod?: DiffuseBasicMethod);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ iCleanCompilationData(): void;
+ /**
+ * The amount by which the light scatters. It can be used to set the translucent surface's thickness. Use low
+ * values for skin.
+ */
+ scattering: number;
+ /**
+ * The translucency of the object.
+ */
+ translucency: number;
+ /**
+ * The colour of the "insides" of the object, ie: the colour the light becomes after leaving the object.
+ */
+ scatterColor: number;
+ /**
+ * @inheritDoc
+ */
+ iGetVertexCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPreLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCodePerLight(shaderObject: ShaderLightingObject, methodVO: MethodVO, lightDirReg: ShaderRegisterElement, lightColReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentPostLightingCode(shaderObject: ShaderLightingObject, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderLightingObject, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iSetRenderState(shaderObject: ShaderObjectBase, methodVO: MethodVO, renderable: RenderableBase, stage: Stage, camera: Camera): void;
+ /**
+ * Generates the code for this method
+ */
+ private scatterLight(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ }
+ export = DiffuseSubSurfaceMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/EffectRefractionEnvMapMethod" {
+ import CubeTextureBase = require("awayjs-core/lib/textures/CubeTextureBase");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+ /**
+ * EffectRefractionEnvMapMethod provides a method to add refracted transparency based on cube maps.
+ */
+ class EffectRefractionEnvMapMethod extends EffectMethodBase {
+ private _envMap;
+ private _dispersionR;
+ private _dispersionG;
+ private _dispersionB;
+ private _useDispersion;
+ private _refractionIndex;
+ private _alpha;
+ /**
+ * Creates a new EffectRefractionEnvMapMethod object. Example values for dispersion are: dispersionR: -0.03, dispersionG: -0.01, dispersionB: = .0015
+ *
+ * @param envMap The environment map containing the refracted scene.
+ * @param refractionIndex The refractive index of the material.
+ * @param dispersionR The amount of chromatic dispersion of the red channel. Defaults to 0 (none).
+ * @param dispersionG The amount of chromatic dispersion of the green channel. Defaults to 0 (none).
+ * @param dispersionB The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).
+ */
+ constructor(envMap: CubeTextureBase, refractionIndex?: number, dispersionR?: number, dispersionG?: number, dispersionB?: number);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * The cube environment map to use for the refraction.
+ */
+ envMap: CubeTextureBase;
+ /**
+ * The refractive index of the material.
+ */
+ refractionIndex: number;
+ /**
+ * The amount of chromatic dispersion of the red channel. Defaults to 0 (none).
+ */
+ dispersionR: number;
+ /**
+ * The amount of chromatic dispersion of the green channel. Defaults to 0 (none).
+ */
+ dispersionG: number;
+ /**
+ * The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).
+ */
+ dispersionB: number;
+ /**
+ * The amount of transparency of the object. Warning: the alpha applies to the refracted color, not the actual
+ * material. A value of 1 will make it appear fully transparent.
+ */
+ alpha: number;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = EffectRefractionEnvMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/NormalHeightMapMethod" {
+ import Texture2DBase = require("awayjs-core/lib/textures/Texture2DBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import NormalBasicMethod = require("awayjs-stagegl/lib/materials/methods/NormalBasicMethod");
+ import ShadingMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadingMethodBase");
+ /**
+ * NormalHeightMapMethod provides a normal map method that uses a height map to calculate the normals.
+ */
+ class NormalHeightMapMethod extends NormalBasicMethod {
+ private _worldXYRatio;
+ private _worldXZRatio;
+ /**
+ * Creates a new NormalHeightMapMethod method.
+ *
+ * @param heightMap The texture containing the height data. 0 means low, 1 means high.
+ * @param worldWidth The width of the 'world'. This is used to map uv coordinates' u component to scene dimensions.
+ * @param worldHeight The height of the 'world'. This is used to map the height map values to scene dimensions.
+ * @param worldDepth The depth of the 'world'. This is used to map uv coordinates' v component to scene dimensions.
+ */
+ constructor(heightMap: Texture2DBase, worldWidth: number, worldHeight: number, worldDepth: number);
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ tangentSpace: boolean;
+ /**
+ * @inheritDoc
+ */
+ copyFrom(method: ShadingMethodBase): void;
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ }
+ export = NormalHeightMapMethod;
+
+}
+declare module "awayjs-renderergl/lib/materials/methods/ShadowCascadeMethod" {
+ import Camera = require("awayjs-core/lib/entities/Camera");
+ import Stage = require("awayjs-stagegl/lib/core/base/Stage");
+ import RenderableBase = require("awayjs-stagegl/lib/core/pool/RenderableBase");
+ import MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+ import ShaderLightingObject = require("awayjs-stagegl/lib/materials/compilation/ShaderLightingObject");
+ import ShaderObjectBase = require("awayjs-stagegl/lib/materials/compilation/ShaderObjectBase");
+ import ShaderRegisterCache = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache");
+ import ShaderRegisterData = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterData");
+ import ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+ import ShadowMapMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMapMethodBase");
+ import ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+ /**
+ * ShadowCascadeMethod is a shadow map method to apply cascade shadow mapping on materials.
+ * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property.
+ *
+ * @see away.lights.CascadeShadowMapper
+ */
+ class ShadowCascadeMethod extends ShadowMapMethodBase {
+ private _baseMethod;
+ private _cascadeShadowMapper;
+ private _depthMapCoordVaryings;
+ private _cascadeProjections;
+ /**
+ * Creates a new ShadowCascadeMethod object.
+ *
+ * @param shadowMethodBase The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)
+ */
+ constructor(shadowMethodBase: ShadowMethodBase);
+ /**
+ * The shadow map sampling method used to sample individual cascades. These are typically those used in conjunction
+ * with a DirectionalShadowMapper.
+ *
+ * @see ShadowHardMethod
+ * @see ShadowSoftMethod
+ */
+ baseMethod: ShadowMethodBase;
+ /**
+ * @inheritDoc
+ */
+ iInitVO(shaderObject: ShaderLightingObject, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iInitConstants(shaderObject: ShaderObjectBase, methodVO: MethodVO): void;
+ /**
+ * @inheritDoc
+ */
+ iCleanCompilationData(): void;
+ /**
+ * @inheritDoc
+ */
+ iGetVertexCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * Creates the registers for the cascades' projection coordinates.
+ */
+ private initProjectionsRegs(registerCache);
+ /**
+ * @inheritDoc
+ */
+ iGetFragmentCode(shaderObject: ShaderObjectBase, methodVO: MethodVO, targetReg: ShaderRegisterElement, registerCache: ShaderRegisterCache, sharedRegisters: ShaderRegisterData): string;
+ /**
+ * @inheritDoc
+ */
+ iActivate(shaderObject: ShaderObjectBase, methodVO: MethodVO, stage: Stage): void;
+ /**
+ * @inheritDoc
+ */
+ iSetRenderState(shaderObject: ShaderObjectBase, methodVO: MethodVO, renderable: RenderableBase, stage: Stage, camera: Camera): void;
+ /**
+ * Called when the shadow mappers cascade configuration changes.
+ */
+ private onCascadeChange(event);
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ private onShaderInvalidated(event);
+ }
+ export = ShadowCascadeMethod;
+
+}
+declare module "awayjs-renderergl/lib/tools/commands/Merge" {
+ import DisplayObjectContainer = require("awayjs-core/lib/containers/DisplayObjectContainer");
+ import Mesh = require("awayjs-core/lib/entities/Mesh");
+ /**
+ * Class Merge merges two or more static meshes into one.Merge
+ */
+ class Merge {
+ private _objectSpace;
+ private _keepMaterial;
+ private _disposeSources;
+ private _geomVOs;
+ private _toDispose;
+ /**
+ * @param keepMaterial [optional] Determines if the merged object uses the recevier mesh material information or keeps its source material(s). Defaults to false.
+ * If false and receiver object has multiple materials, the last material found in receiver submeshes is applied to the merged submesh(es).
+ * @param disposeSources [optional] Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false.
+ * If true, only receiver geometry and resulting mesh are kept in memory.
+ * @param objectSpace [optional] Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false.
+ */
+ constructor(keepMaterial?: boolean, disposeSources?: boolean, objectSpace?: boolean);
+ /**
+ * Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false.
+ */
+ disposeSources: boolean;
+ /**
+ * Determines if the material source(s) used for the merging are disposed. Defaults to false.
+ */
+ keepMaterial: boolean;
+ /**
+ * Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false.
+ */
+ objectSpace: boolean;
+ /**
+ * Merges all the children of a container into a single Mesh. If no Mesh object is found, method returns the receiver without modification.
+ *
+ * @param receiver The Mesh to receive the merged contents of the container.
+ * @param objectContainer The DisplayObjectContainer holding the meshes to be mergd.
+ *
+ * @return The merged Mesh instance.
+ */
+ applyToContainer(receiver: Mesh, objectContainer: DisplayObjectContainer): void;
+ /**
+ * Merges all the meshes found in the Array<Mesh> into a single Mesh.
+ *
+ * @param receiver The Mesh to receive the merged contents of the meshes.
+ * @param meshes A series of Meshes to be merged with the reciever mesh.
+ */
+ applyToMeshes(receiver: Mesh, meshes: Mesh[]): void;
+ /**
+ * Merges 2 meshes into one. It is recommand to use apply when 2 meshes are to be merged. If more need to be merged, use either applyToMeshes or applyToContainer methods.
+ *
+ * @param receiver The Mesh to receive the merged contents of both meshes.
+ * @param mesh The Mesh to be merged with the receiver mesh
+ */
+ apply(receiver: Mesh, mesh: Mesh): void;
+ private reset();
+ private merge(destMesh, dispose);
+ private collect(mesh, dispose);
+ private getSubGeomData(material);
+ private parseContainer(receiver, object);
+ }
+ export = Merge;
+
+}
+declare module "awayjs-renderergl/lib/tools/data/ParticleGeometryTransform" {
+ import Matrix = require("awayjs-core/lib/core/geom/Matrix");
+ import Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+ /**
+ * ...
+ */
+ class ParticleGeometryTransform {
+ private _defaultVertexTransform;
+ private _defaultInvVertexTransform;
+ private _defaultUVTransform;
+ vertexTransform: Matrix3D;
+ UVTransform: Matrix;
+ invVertexTransform: Matrix3D;
+ }
+ export = ParticleGeometryTransform;
+
+}
+declare module "awayjs-renderergl/lib/tools/helpers/ParticleGeometryHelper" {
+ import Geometry = require("awayjs-core/lib/core/base/Geometry");
+ import ParticleGeometry = require("awayjs-renderergl/lib/core/base/ParticleGeometry");
+ import ParticleGeometryTransform = require("awayjs-renderergl/lib/tools/data/ParticleGeometryTransform");
+ /**
+ * ...
+ */
+ class ParticleGeometryHelper {
+ static MAX_VERTEX: number;
+ static generateGeometry(geometries: Geometry[], transforms?: ParticleGeometryTransform[]): ParticleGeometry;
+ }
+ export = ParticleGeometryHelper;
+
+}
\ No newline at end of file
diff --git a/build/awayjs-renderergl.js b/build/awayjs-renderergl.js
new file mode 100755
index 000000000..1a98aa6e1
--- /dev/null
+++ b/build/awayjs-renderergl.js
@@ -0,0 +1,17846 @@
+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;oduration
data in its static properties to determine how long a particle is visible for. Defaults to false.
+ * @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime
, duration
and delay
data in its static properties function. Defaults to false. Requires usesDuration
to be true.
+ * @param [optional] usesDelay Defines whether the animation set uses the delay
data in its static properties to determine how long a particle is hidden for. Defaults to false. Requires usesLooping
to be true.
+ */
+ function ParticleAnimationSet(usesDuration, usesLooping, usesDelay) {
+ if (usesDuration === void 0) { usesDuration = false; }
+ if (usesLooping === void 0) { usesLooping = false; }
+ if (usesDelay === void 0) { usesDelay = false; }
+ _super.call(this);
+ this._animationSubGeometries = new Object();
+ this._particleNodes = new Array();
+ this._localDynamicNodes = new Array();
+ this._localStaticNodes = new Array();
+ this._totalLenOfOneVertex = 0;
+ //automatically add a particle time node to the set
+ this.addAnimation(this._timeNode = new ParticleTimeNode(usesDuration, usesLooping, usesDelay));
+ }
+ Object.defineProperty(ParticleAnimationSet.prototype, "particleNodes", {
+ /**
+ * Returns a vector of the particle animation nodes contained within the set.
+ */
+ get: function () {
+ return this._particleNodes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimationSet.prototype.addAnimation = function (node) {
+ var i /*int*/;
+ var n = node;
+ n._iProcessAnimationSetting(this);
+ if (n.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ n._iDataOffset = this._totalLenOfOneVertex;
+ this._totalLenOfOneVertex += n.dataLength;
+ this._localStaticNodes.push(n);
+ }
+ else if (n.mode == ParticlePropertiesMode.LOCAL_DYNAMIC)
+ this._localDynamicNodes.push(n);
+ for (i = this._particleNodes.length - 1; i >= 0; i--) {
+ if (this._particleNodes[i].priority <= n.priority)
+ break;
+ }
+ this._particleNodes.splice(i + 1, 0, n);
+ _super.prototype.addAnimation.call(this, node);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimationSet.prototype.activate = function (shaderObject, stage) {
+ // this._iAnimationRegisterCache = pass.animationRegisterCache;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimationSet.prototype.deactivate = function (shaderObject, stage) {
+ // var context:IContextStageGL = ParticleAnimator
object.
+ *
+ * @param particleAnimationSet The animation data set containing the particle animations used by the animator.
+ */
+ function ParticleAnimator(particleAnimationSet) {
+ _super.call(this, particleAnimationSet);
+ this._animationParticleStates = new Array();
+ this._animatorParticleStates = new Array();
+ this._timeParticleStates = new Array();
+ this._totalLenOfOneVertex = 0;
+ this._animatorSubGeometries = new Object();
+ this._particleAnimationSet = particleAnimationSet;
+ var state;
+ var node;
+ for (var i = 0; i < this._particleAnimationSet.particleNodes.length; i++) {
+ node = this._particleAnimationSet.particleNodes[i];
+ state = this.getAnimationState(node);
+ if (node.mode == ParticlePropertiesMode.LOCAL_DYNAMIC) {
+ this._animatorParticleStates.push(state);
+ node._iDataOffset = this._totalLenOfOneVertex;
+ this._totalLenOfOneVertex += node.dataLength;
+ }
+ else {
+ this._animationParticleStates.push(state);
+ }
+ if (state.needUpdateTime)
+ this._timeParticleStates.push(state);
+ }
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype.clone = function () {
+ return new ParticleAnimator(this._particleAnimationSet);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype.setRenderState = function (shaderObject, renderable, stage, camera, vertexConstantOffset /*int*/, vertexStreamOffset /*int*/) {
+ var animationRegisterCache = this._particleAnimationSet._iAnimationRegisterCache;
+ var subMesh = renderable.subMesh;
+ var state;
+ var i;
+ if (!subMesh)
+ throw (new Error("Must be subMesh"));
+ //process animation sub geometries
+ var animationSubGeometry = this._particleAnimationSet.getAnimationSubGeometry(subMesh);
+ for (i = 0; i < this._animationParticleStates.length; i++)
+ this._animationParticleStates[i].setRenderState(stage, renderable, animationSubGeometry, animationRegisterCache, camera);
+ //process animator subgeometries
+ var animatorSubGeometry = this.getAnimatorSubGeometry(subMesh);
+ for (i = 0; i < this._animatorParticleStates.length; i++)
+ this._animatorParticleStates[i].setRenderState(stage, renderable, animatorSubGeometry, animationRegisterCache, camera);
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, animationRegisterCache.vertexConstantOffset, animationRegisterCache.vertexConstantData, animationRegisterCache.numVertexConstant);
+ if (animationRegisterCache.numFragmentConstant > 0)
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, animationRegisterCache.fragmentConstantOffset, animationRegisterCache.fragmentConstantData, animationRegisterCache.numFragmentConstant);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype.testGPUCompatibility = function (shaderObject) {
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype.start = function () {
+ _super.prototype.start.call(this);
+ for (var i = 0; i < this._timeParticleStates.length; i++)
+ this._timeParticleStates[i].offset(this._pAbsoluteTime);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype._pUpdateDeltaTime = function (dt) {
+ this._pAbsoluteTime += dt;
+ for (var i = 0; i < this._timeParticleStates.length; i++)
+ this._timeParticleStates[i].update(this._pAbsoluteTime);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAnimator.prototype.resetTime = function (offset) {
+ if (offset === void 0) { offset = 0; }
+ for (var i = 0; i < this._timeParticleStates.length; i++)
+ this._timeParticleStates[i].offset(this._pAbsoluteTime + offset);
+ this.update(this.time);
+ };
+ ParticleAnimator.prototype.dispose = function () {
+ for (var key in this._animatorSubGeometries)
+ this._animatorSubGeometries[key].dispose();
+ };
+ ParticleAnimator.prototype.getAnimatorSubGeometry = function (subMesh) {
+ if (!this._animatorParticleStates.length)
+ return;
+ var subGeometry = subMesh.subGeometry;
+ var animatorSubGeometry = this._animatorSubGeometries[subGeometry.id] = new AnimationSubGeometry();
+ //create the vertexData vector that will be used for local state data
+ animatorSubGeometry.createVertexData(subGeometry.numVertices, this._totalLenOfOneVertex);
+ //pass the particles data to the animator subGeometry
+ animatorSubGeometry.animationParticles = this._particleAnimationSet.getAnimationSubGeometry(subMesh).animationParticles;
+ };
+ return ParticleAnimator;
+})(AnimatorBase);
+module.exports = ParticleAnimator;
+
+
+},{"awayjs-renderergl/lib/animators/data/AnimationSubGeometry":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-stagegl/lib/animators/AnimatorBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLProgramType":undefined}],"awayjs-renderergl/lib/animators/SkeletonAnimationSet":[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 AnimationSetBase = require("awayjs-stagegl/lib/animators/AnimationSetBase");
+/**
+ * The animation data set used by skeleton-based animators, containing skeleton animation data.
+ *
+ * @see away.animators.SkeletonAnimator
+ */
+var SkeletonAnimationSet = (function (_super) {
+ __extends(SkeletonAnimationSet, _super);
+ /**
+ * Creates a new SkeletonAnimationSet
object.
+ *
+ * @param jointsPerVertex Sets the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the maximum allowed value is 4. Defaults to 4.
+ */
+ function SkeletonAnimationSet(jointsPerVertex) {
+ if (jointsPerVertex === void 0) { jointsPerVertex = 4; }
+ _super.call(this);
+ this._jointsPerVertex = jointsPerVertex;
+ }
+ Object.defineProperty(SkeletonAnimationSet.prototype, "jointsPerVertex", {
+ /**
+ * Returns the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the
+ * maximum allowed value is 4.
+ */
+ get: function () {
+ return this._jointsPerVertex;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimationSet.prototype.getAGALVertexCode = function (shaderObject) {
+ var len = shaderObject.animatableAttributes.length;
+ var indexOffset0 = shaderObject.numUsedVertexConstants;
+ var indexOffset1 = indexOffset0 + 1;
+ var indexOffset2 = indexOffset0 + 2;
+ var indexStream = "va" + shaderObject.numUsedStreams;
+ var weightStream = "va" + (shaderObject.numUsedStreams + 1);
+ var indices = [indexStream + ".x", indexStream + ".y", indexStream + ".z", indexStream + ".w"];
+ var weights = [weightStream + ".x", weightStream + ".y", weightStream + ".z", weightStream + ".w"];
+ var temp1 = this._pFindTempReg(shaderObject.animationTargetRegisters);
+ var temp2 = this._pFindTempReg(shaderObject.animationTargetRegisters, temp1);
+ var dot = "dp4";
+ var code = "";
+ for (var i = 0; i < len; ++i) {
+ var src = shaderObject.animatableAttributes[i];
+ for (var j = 0; j < this._jointsPerVertex; ++j) {
+ code += dot + " " + temp1 + ".x, " + src + ", vc[" + indices[j] + "+" + indexOffset0 + "]\n" + dot + " " + temp1 + ".y, " + src + ", vc[" + indices[j] + "+" + indexOffset1 + "]\n" + dot + " " + temp1 + ".z, " + src + ", vc[" + indices[j] + "+" + indexOffset2 + "]\n" + "mov " + temp1 + ".w, " + src + ".w\n" + "mul " + temp1 + ", " + temp1 + ", " + weights[j] + "\n"; // apply weight
+ // add or mov to target. Need to write to a temp reg first, because an output can be a target
+ if (j == 0)
+ code += "mov " + temp2 + ", " + temp1 + "\n";
+ else
+ code += "add " + temp2 + ", " + temp2 + ", " + temp1 + "\n";
+ }
+ // switch to dp3 once positions have been transformed, from now on, it should only be vectors instead of points
+ dot = "dp3";
+ code += "mov " + shaderObject.animationTargetRegisters[i] + ", " + temp2 + "\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimationSet.prototype.activate = function (shaderObject, stage) {
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimationSet.prototype.deactivate = function (shaderObject, stage) {
+ // var streamOffset:number /*uint*/ = pass.numUsedStreams;
+ // var context:IContextStageGL = SkeletonAnimator
object.
+ *
+ * @param skeletonAnimationSet The animation data set containing the skeleton animations used by the animator.
+ * @param skeleton The skeleton object used for calculating the resulting global matrices for transforming skinned mesh data.
+ * @param forceCPU Optional value that only allows the animator to perform calculation on the CPU. Defaults to false.
+ */
+ function SkeletonAnimator(animationSet, skeleton, forceCPU) {
+ var _this = this;
+ if (forceCPU === void 0) { forceCPU = false; }
+ _super.call(this, animationSet);
+ this._globalPose = new SkeletonPose();
+ this._morphedSubGeometry = new Object();
+ this._morphedSubGeometryDirty = new Object();
+ this._skeleton = skeleton;
+ this._forceCPU = forceCPU;
+ this._jointsPerVertex = animationSet.jointsPerVertex;
+ this._numJoints = this._skeleton.numJoints;
+ this._globalMatrices = new Array(this._numJoints * 12);
+ var j = 0;
+ for (var i = 0; i < this._numJoints; ++i) {
+ this._globalMatrices[j++] = 1;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 1;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 0;
+ this._globalMatrices[j++] = 1;
+ this._globalMatrices[j++] = 0;
+ }
+ this._onTransitionCompleteDelegate = function (event) { return _this.onTransitionComplete(event); };
+ this._onIndicesUpdateDelegate = function (event) { return _this.onIndicesUpdate(event); };
+ this._onVerticesUpdateDelegate = function (event) { return _this.onVerticesUpdate(event); };
+ }
+ Object.defineProperty(SkeletonAnimator.prototype, "globalMatrices", {
+ /**
+ * returns the calculated global matrices of the current skeleton pose.
+ *
+ * @see #globalPose
+ */
+ get: function () {
+ if (this._globalPropertiesDirty)
+ this.updateGlobalProperties();
+ return this._globalMatrices;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonAnimator.prototype, "globalPose", {
+ /**
+ * returns the current skeleton pose output from the animator.
+ *
+ * @see away.animators.data.SkeletonPose
+ */
+ get: function () {
+ if (this._globalPropertiesDirty)
+ this.updateGlobalProperties();
+ return this._globalPose;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonAnimator.prototype, "skeleton", {
+ /**
+ * Returns the skeleton object in use by the animator - this defines the number and heirarchy of joints used by the
+ * skinned geoemtry to which skeleon animator is applied.
+ */
+ get: function () {
+ return this._skeleton;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonAnimator.prototype, "forceCPU", {
+ /**
+ * Indicates whether the skeleton animator is disabled by default for GPU rendering, something that allows the animator to perform calculation on the GPU.
+ * Defaults to false.
+ */
+ get: function () {
+ return this._forceCPU;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonAnimator.prototype, "useCondensedIndices", {
+ /**
+ * Offers the option of enabling GPU accelerated animation on skeletons larger than 32 joints
+ * by condensing the number of joint index values required per mesh. Only applicable to
+ * skeleton animations that utilise more than one mesh object. Defaults to false.
+ */
+ get: function () {
+ return this._useCondensedIndices;
+ },
+ set: function (value) {
+ this._useCondensedIndices = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimator.prototype.clone = function () {
+ /* The cast to SkeletonAnimationSet should never fail, as _animationSet can only be set
+ through the constructor, which will only accept a SkeletonAnimationSet. */
+ return new SkeletonAnimator(this._pAnimationSet, this._skeleton, this._forceCPU);
+ };
+ /**
+ * Plays an animation state registered with the given name in the animation data set.
+ *
+ * @param name The data set name of the animation state to be played.
+ * @param transition An optional transition object that determines how the animator will transition from the currently active animation state.
+ * @param offset An option offset time (in milliseconds) that resets the state's internal clock to the absolute time of the animator plus the offset value. Required for non-looping animation states.
+ */
+ SkeletonAnimator.prototype.play = function (name, transition, offset) {
+ if (transition === void 0) { transition = null; }
+ if (offset === void 0) { offset = NaN; }
+ if (this._pActiveAnimationName == name)
+ return;
+ this._pActiveAnimationName = name;
+ if (!this._pAnimationSet.hasAnimation(name))
+ throw new Error("Animation root node " + name + " not found!");
+ if (transition && this._pActiveNode) {
+ //setup the transition
+ this._pActiveNode = transition.getAnimationNode(this, this._pActiveNode, this._pAnimationSet.getAnimation(name), this._pAbsoluteTime);
+ this._pActiveNode.addEventListener(AnimationStateEvent.TRANSITION_COMPLETE, this._onTransitionCompleteDelegate);
+ }
+ else
+ this._pActiveNode = this._pAnimationSet.getAnimation(name);
+ this._pActiveState = this.getAnimationState(this._pActiveNode);
+ if (this.updatePosition) {
+ //update straight away to reset position deltas
+ this._pActiveState.update(this._pAbsoluteTime);
+ this._pActiveState.positionDelta;
+ }
+ this._activeSkeletonState = this._pActiveState;
+ this.start();
+ //apply a time offset if specified
+ if (!isNaN(offset))
+ this.reset(name, offset);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimator.prototype.setRenderState = function (shaderObject, renderable, stage, camera, vertexConstantOffset /*int*/, vertexStreamOffset /*int*/) {
+ // do on request of globalProperties
+ if (this._globalPropertiesDirty)
+ this.updateGlobalProperties();
+ var subGeometry = renderable.subMesh.subGeometry;
+ subGeometry.useCondensedIndices = this._useCondensedIndices;
+ if (this._useCondensedIndices) {
+ // using a condensed data set
+ this.updateCondensedMatrices(subGeometry.condensedIndexLookUp, subGeometry.numCondensedJoints);
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, vertexConstantOffset, this._condensedMatrices, subGeometry.numCondensedJoints * 3);
+ }
+ else {
+ if (this._pAnimationSet.usesCPU) {
+ if (this._morphedSubGeometryDirty[subGeometry.id])
+ this.morphSubGeometry(renderable, subGeometry);
+ return;
+ }
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, vertexConstantOffset, this._globalMatrices, this._numJoints * 3);
+ }
+ stage.context.activateBuffer(vertexStreamOffset, renderable.getVertexData(TriangleSubGeometry.JOINT_INDEX_DATA), renderable.getVertexOffset(TriangleSubGeometry.JOINT_INDEX_DATA), renderable.JOINT_INDEX_FORMAT);
+ stage.context.activateBuffer(vertexStreamOffset + 1, renderable.getVertexData(TriangleSubGeometry.JOINT_WEIGHT_DATA), renderable.getVertexOffset(TriangleSubGeometry.JOINT_WEIGHT_DATA), renderable.JOINT_WEIGHT_FORMAT);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonAnimator.prototype.testGPUCompatibility = function (shaderObject) {
+ if (!this._useCondensedIndices && (this._forceCPU || this._jointsPerVertex > 4 || shaderObject.numUsedVertexConstants + this._numJoints * 3 > 128))
+ this._pAnimationSet.cancelGPUCompatibility();
+ };
+ /**
+ * Applies the calculated time delta to the active animation state node or state transition object.
+ */
+ SkeletonAnimator.prototype._pUpdateDeltaTime = function (dt) {
+ _super.prototype._pUpdateDeltaTime.call(this, dt);
+ //invalidate pose matrices
+ this._globalPropertiesDirty = true;
+ //trigger geometry invalidation if using CPU animation
+ if (this._pAnimationSet.usesCPU)
+ for (var key in this._morphedSubGeometryDirty)
+ this._morphedSubGeometryDirty[key] = true;
+ };
+ SkeletonAnimator.prototype.updateCondensedMatrices = function (condensedIndexLookUp /*uint*/, numJoints /*uint*/) {
+ var i = 0, j = 0;
+ var len /*uint*/;
+ var srcIndex /*uint*/;
+ this._condensedMatrices = new Array();
+ do {
+ srcIndex = condensedIndexLookUp[i] * 4;
+ len = srcIndex + 12;
+ while (srcIndex < len)
+ this._condensedMatrices[j++] = this._globalMatrices[srcIndex++];
+ } while (++i < numJoints);
+ };
+ SkeletonAnimator.prototype.updateGlobalProperties = function () {
+ this._globalPropertiesDirty = false;
+ //get global pose
+ this.localToGlobalPose(this._activeSkeletonState.getSkeletonPose(this._skeleton), this._globalPose, this._skeleton);
+ // convert pose to matrix
+ var mtxOffset = 0;
+ var globalPoses = this._globalPose.jointPoses;
+ var raw;
+ var ox, oy, oz, ow;
+ var xy2, xz2, xw2;
+ var yz2, yw2, zw2;
+ var n11, n12, n13;
+ var n21, n22, n23;
+ var n31, n32, n33;
+ var m11, m12, m13, m14;
+ var m21, m22, m23, m24;
+ var m31, m32, m33, m34;
+ var joints = this._skeleton.joints;
+ var pose;
+ var quat;
+ var vec;
+ var t;
+ for (var i = 0; i < this._numJoints; ++i) {
+ pose = globalPoses[i];
+ quat = pose.orientation;
+ vec = pose.translation;
+ ox = quat.x;
+ oy = quat.y;
+ oz = quat.z;
+ ow = quat.w;
+ xy2 = (t = 2.0 * ox) * oy;
+ xz2 = t * oz;
+ xw2 = t * ow;
+ yz2 = (t = 2.0 * oy) * oz;
+ yw2 = t * ow;
+ zw2 = 2.0 * oz * ow;
+ yz2 = 2.0 * oy * oz;
+ yw2 = 2.0 * oy * ow;
+ zw2 = 2.0 * oz * ow;
+ ox *= ox;
+ oy *= oy;
+ oz *= oz;
+ ow *= ow;
+ n11 = (t = ox - oy) - oz + ow;
+ n12 = xy2 - zw2;
+ n13 = xz2 + yw2;
+ n21 = xy2 + zw2;
+ n22 = -t - oz + ow;
+ n23 = yz2 - xw2;
+ n31 = xz2 - yw2;
+ n32 = yz2 + xw2;
+ n33 = -ox - oy + oz + ow;
+ // prepend inverse bind pose
+ raw = joints[i].inverseBindPose;
+ m11 = raw[0];
+ m12 = raw[4];
+ m13 = raw[8];
+ m14 = raw[12];
+ m21 = raw[1];
+ m22 = raw[5];
+ m23 = raw[9];
+ m24 = raw[13];
+ m31 = raw[2];
+ m32 = raw[6];
+ m33 = raw[10];
+ m34 = raw[14];
+ this._globalMatrices[mtxOffset] = n11 * m11 + n12 * m21 + n13 * m31;
+ this._globalMatrices[mtxOffset + 1] = n11 * m12 + n12 * m22 + n13 * m32;
+ this._globalMatrices[mtxOffset + 2] = n11 * m13 + n12 * m23 + n13 * m33;
+ this._globalMatrices[mtxOffset + 3] = n11 * m14 + n12 * m24 + n13 * m34 + vec.x;
+ this._globalMatrices[mtxOffset + 4] = n21 * m11 + n22 * m21 + n23 * m31;
+ this._globalMatrices[mtxOffset + 5] = n21 * m12 + n22 * m22 + n23 * m32;
+ this._globalMatrices[mtxOffset + 6] = n21 * m13 + n22 * m23 + n23 * m33;
+ this._globalMatrices[mtxOffset + 7] = n21 * m14 + n22 * m24 + n23 * m34 + vec.y;
+ this._globalMatrices[mtxOffset + 8] = n31 * m11 + n32 * m21 + n33 * m31;
+ this._globalMatrices[mtxOffset + 9] = n31 * m12 + n32 * m22 + n33 * m32;
+ this._globalMatrices[mtxOffset + 10] = n31 * m13 + n32 * m23 + n33 * m33;
+ this._globalMatrices[mtxOffset + 11] = n31 * m14 + n32 * m24 + n33 * m34 + vec.z;
+ mtxOffset = mtxOffset + 12;
+ }
+ };
+ SkeletonAnimator.prototype.getRenderableSubGeometry = function (renderable, sourceSubGeometry) {
+ this._morphedSubGeometryDirty[sourceSubGeometry.id] = true;
+ //early out for GPU animations
+ if (!this._pAnimationSet.usesCPU)
+ return sourceSubGeometry;
+ var targetSubGeometry;
+ if (!(targetSubGeometry = this._morphedSubGeometry[sourceSubGeometry.id])) {
+ //not yet stored
+ targetSubGeometry = this._morphedSubGeometry[sourceSubGeometry.id] = sourceSubGeometry.clone();
+ //turn off auto calculations on the morphed geometry
+ targetSubGeometry.autoDeriveNormals = false;
+ targetSubGeometry.autoDeriveTangents = false;
+ targetSubGeometry.autoDeriveUVs = false;
+ //add event listeners for any changes in UV values on the source geometry
+ sourceSubGeometry.addEventListener(SubGeometryEvent.INDICES_UPDATED, this._onIndicesUpdateDelegate);
+ sourceSubGeometry.addEventListener(SubGeometryEvent.VERTICES_UPDATED, this._onVerticesUpdateDelegate);
+ }
+ return targetSubGeometry;
+ };
+ /**
+ * If the animation can't be performed on GPU, transform vertices manually
+ * @param subGeom The subgeometry containing the weights and joint index data per vertex.
+ * @param pass The material pass for which we need to transform the vertices
+ */
+ SkeletonAnimator.prototype.morphSubGeometry = function (renderable, sourceSubGeometry) {
+ this._morphedSubGeometryDirty[sourceSubGeometry.id] = false;
+ var sourcePositions = sourceSubGeometry.positions;
+ var sourceNormals = sourceSubGeometry.vertexNormals;
+ var sourceTangents = sourceSubGeometry.vertexTangents;
+ var jointIndices = sourceSubGeometry.jointIndices;
+ var jointWeights = sourceSubGeometry.jointWeights;
+ var targetSubGeometry = this._morphedSubGeometry[sourceSubGeometry.id];
+ var targetPositions = targetSubGeometry.positions;
+ var targetNormals = targetSubGeometry.vertexNormals;
+ var targetTangents = targetSubGeometry.vertexTangents;
+ var index = 0;
+ var j = 0;
+ var k /*uint*/;
+ var vx, vy, vz;
+ var nx, ny, nz;
+ var tx, ty, tz;
+ var len = sourcePositions.length;
+ var weight;
+ var vertX, vertY, vertZ;
+ var normX, normY, normZ;
+ var tangX, tangY, tangZ;
+ var m11, m12, m13, m14;
+ var m21, m22, m23, m24;
+ var m31, m32, m33, m34;
+ while (index < len) {
+ vertX = sourcePositions[index];
+ vertY = sourcePositions[index + 1];
+ vertZ = sourcePositions[index + 2];
+ normX = sourceNormals[index];
+ normY = sourceNormals[index + 1];
+ normZ = sourceNormals[index + 2];
+ tangX = sourceTangents[index];
+ tangY = sourceTangents[index + 1];
+ tangZ = sourceTangents[index + 2];
+ vx = 0;
+ vy = 0;
+ vz = 0;
+ nx = 0;
+ ny = 0;
+ nz = 0;
+ tx = 0;
+ ty = 0;
+ tz = 0;
+ k = 0;
+ while (k < this._jointsPerVertex) {
+ weight = jointWeights[j];
+ if (weight > 0) {
+ // implicit /3*12 (/3 because indices are multiplied by 3 for gpu matrix access, *12 because it's the matrix size)
+ var mtxOffset = jointIndices[j++] << 2;
+ m11 = this._globalMatrices[mtxOffset];
+ m12 = this._globalMatrices[mtxOffset + 1];
+ m13 = this._globalMatrices[mtxOffset + 2];
+ m14 = this._globalMatrices[mtxOffset + 3];
+ m21 = this._globalMatrices[mtxOffset + 4];
+ m22 = this._globalMatrices[mtxOffset + 5];
+ m23 = this._globalMatrices[mtxOffset + 6];
+ m24 = this._globalMatrices[mtxOffset + 7];
+ m31 = this._globalMatrices[mtxOffset + 8];
+ m32 = this._globalMatrices[mtxOffset + 9];
+ m33 = this._globalMatrices[mtxOffset + 10];
+ m34 = this._globalMatrices[mtxOffset + 11];
+ vx += weight * (m11 * vertX + m12 * vertY + m13 * vertZ + m14);
+ vy += weight * (m21 * vertX + m22 * vertY + m23 * vertZ + m24);
+ vz += weight * (m31 * vertX + m32 * vertY + m33 * vertZ + m34);
+ nx += weight * (m11 * normX + m12 * normY + m13 * normZ);
+ ny += weight * (m21 * normX + m22 * normY + m23 * normZ);
+ nz += weight * (m31 * normX + m32 * normY + m33 * normZ);
+ tx += weight * (m11 * tangX + m12 * tangY + m13 * tangZ);
+ ty += weight * (m21 * tangX + m22 * tangY + m23 * tangZ);
+ tz += weight * (m31 * tangX + m32 * tangY + m33 * tangZ);
+ ++k;
+ }
+ else {
+ j += (this._jointsPerVertex - k);
+ k = this._jointsPerVertex;
+ }
+ }
+ targetPositions[index] = vx;
+ targetPositions[index + 1] = vy;
+ targetPositions[index + 2] = vz;
+ targetNormals[index] = nx;
+ targetNormals[index + 1] = ny;
+ targetNormals[index + 2] = nz;
+ targetTangents[index] = tx;
+ targetTangents[index + 1] = ty;
+ targetTangents[index + 2] = tz;
+ index += 3;
+ }
+ targetSubGeometry.updatePositions(targetPositions);
+ targetSubGeometry.updateVertexNormals(targetNormals);
+ targetSubGeometry.updateVertexTangents(targetTangents);
+ };
+ /**
+ * Converts a local hierarchical skeleton pose to a global pose
+ * @param targetPose The SkeletonPose object that will contain the global pose.
+ * @param skeleton The skeleton containing the joints, and as such, the hierarchical data to transform to global poses.
+ */
+ SkeletonAnimator.prototype.localToGlobalPose = function (sourcePose, targetPose, skeleton) {
+ var globalPoses = targetPose.jointPoses;
+ var globalJointPose;
+ var joints = skeleton.joints;
+ var len = sourcePose.numJointPoses;
+ var jointPoses = sourcePose.jointPoses;
+ var parentIndex /*int*/;
+ var joint;
+ var parentPose;
+ var pose;
+ var or;
+ var tr;
+ var t;
+ var q;
+ var x1, y1, z1, w1;
+ var x2, y2, z2, w2;
+ var x3, y3, z3;
+ // :s
+ if (globalPoses.length != len)
+ globalPoses.length = len;
+ for (var i = 0; i < len; ++i) {
+ globalJointPose = globalPoses[i];
+ if (globalJointPose == null)
+ globalJointPose = globalPoses[i] = new JointPose();
+ joint = joints[i];
+ parentIndex = joint.parentIndex;
+ pose = jointPoses[i];
+ q = globalJointPose.orientation;
+ t = globalJointPose.translation;
+ if (parentIndex < 0) {
+ tr = pose.translation;
+ or = pose.orientation;
+ q.x = or.x;
+ q.y = or.y;
+ q.z = or.z;
+ q.w = or.w;
+ t.x = tr.x;
+ t.y = tr.y;
+ t.z = tr.z;
+ }
+ else {
+ // append parent pose
+ parentPose = globalPoses[parentIndex];
+ // rotate point
+ or = parentPose.orientation;
+ tr = pose.translation;
+ x2 = or.x;
+ y2 = or.y;
+ z2 = or.z;
+ w2 = or.w;
+ x3 = tr.x;
+ y3 = tr.y;
+ z3 = tr.z;
+ w1 = -x2 * x3 - y2 * y3 - z2 * z3;
+ x1 = w2 * x3 + y2 * z3 - z2 * y3;
+ y1 = w2 * y3 - x2 * z3 + z2 * x3;
+ z1 = w2 * z3 + x2 * y3 - y2 * x3;
+ // append parent translation
+ tr = parentPose.translation;
+ t.x = -w1 * x2 + x1 * w2 - y1 * z2 + z1 * y2 + tr.x;
+ t.y = -w1 * y2 + x1 * z2 + y1 * w2 - z1 * x2 + tr.y;
+ t.z = -w1 * z2 - x1 * y2 + y1 * x2 + z1 * w2 + tr.z;
+ // append parent orientation
+ x1 = or.x;
+ y1 = or.y;
+ z1 = or.z;
+ w1 = or.w;
+ or = pose.orientation;
+ x2 = or.x;
+ y2 = or.y;
+ z2 = or.z;
+ w2 = or.w;
+ q.w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2;
+ q.x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2;
+ q.y = w1 * y2 - x1 * z2 + y1 * w2 + z1 * x2;
+ q.z = w1 * z2 + x1 * y2 - y1 * x2 + z1 * w2;
+ }
+ }
+ };
+ SkeletonAnimator.prototype.onTransitionComplete = function (event) {
+ if (event.type == AnimationStateEvent.TRANSITION_COMPLETE) {
+ event.animationNode.removeEventListener(AnimationStateEvent.TRANSITION_COMPLETE, this._onTransitionCompleteDelegate);
+ //if this is the current active state transition, revert control to the active node
+ if (this._pActiveState == event.animationState) {
+ this._pActiveNode = this._pAnimationSet.getAnimation(this._pActiveAnimationName);
+ this._pActiveState = this.getAnimationState(this._pActiveNode);
+ this._activeSkeletonState = this._pActiveState;
+ }
+ }
+ };
+ SkeletonAnimator.prototype.onIndicesUpdate = function (event) {
+ var subGeometry = event.target;
+ this._morphedSubGeometry[subGeometry.id].updateIndices(subGeometry.indices);
+ };
+ SkeletonAnimator.prototype.onVerticesUpdate = function (event) {
+ var subGeometry = event.target;
+ var morphGeometry = this._morphedSubGeometry[subGeometry.id];
+ switch (event.dataType) {
+ case TriangleSubGeometry.UV_DATA:
+ morphGeometry.updateUVs(subGeometry.uvs);
+ case TriangleSubGeometry.SECONDARY_UV_DATA:
+ morphGeometry.updateUVs(subGeometry.secondaryUVs);
+ }
+ };
+ return SkeletonAnimator;
+})(AnimatorBase);
+module.exports = SkeletonAnimator;
+
+
+},{"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/events/SubGeometryEvent":undefined,"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/events/AnimationStateEvent":undefined,"awayjs-stagegl/lib/animators/AnimatorBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLProgramType":undefined}],"awayjs-renderergl/lib/animators/VertexAnimationSet":[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 AnimationSetBase = require("awayjs-stagegl/lib/animators/AnimationSetBase");
+var VertexAnimationMode = require("awayjs-renderergl/lib/animators/data/VertexAnimationMode");
+/**
+ * The animation data set used by vertex-based animators, containing vertex animation state data.
+ *
+ * @see VertexAnimator
+ */
+var VertexAnimationSet = (function (_super) {
+ __extends(VertexAnimationSet, _super);
+ /**
+ * Returns whether or not normal data is used in last set GPU pass of the vertex shader.
+ */
+ // public get useNormals():boolean
+ // {
+ // return this._uploadNormals;
+ // }
+ /**
+ * Creates a new VertexAnimationSet
object.
+ *
+ * @param numPoses The number of poses made available at once to the GPU animation code.
+ * @param blendMode Optional value for setting the animation mode of the vertex animator object.
+ *
+ * @see away3d.animators.data.VertexAnimationMode
+ */
+ function VertexAnimationSet(numPoses, blendMode) {
+ if (numPoses === void 0) { numPoses = 2; }
+ if (blendMode === void 0) { blendMode = "absolute"; }
+ _super.call(this);
+ this._numPoses = numPoses;
+ this._blendMode = blendMode;
+ }
+ Object.defineProperty(VertexAnimationSet.prototype, "numPoses", {
+ /**
+ * Returns the number of poses made available at once to the GPU animation code.
+ */
+ get: function () {
+ return this._numPoses;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(VertexAnimationSet.prototype, "blendMode", {
+ /**
+ * Returns the active blend mode of the vertex animator object.
+ */
+ get: function () {
+ return this._blendMode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ VertexAnimationSet.prototype.getAGALVertexCode = function (shaderObject) {
+ if (this._blendMode == VertexAnimationMode.ABSOLUTE)
+ return this.getAbsoluteAGALCode(shaderObject);
+ else
+ return this.getAdditiveAGALCode(shaderObject);
+ };
+ /**
+ * @inheritDoc
+ */
+ VertexAnimationSet.prototype.activate = function (shaderObject, stage) {
+ // var uID:number = pass._iUniqueId;
+ // this._uploadNormals = VertexAnimator
object.
+ *
+ * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.
+ */
+ function VertexAnimator(vertexAnimationSet) {
+ _super.call(this, vertexAnimationSet);
+ this._poses = new Array();
+ this._weights = Array(1, 0, 0, 0);
+ this._vertexAnimationSet = vertexAnimationSet;
+ this._numPoses = vertexAnimationSet.numPoses;
+ this._blendMode = vertexAnimationSet.blendMode;
+ }
+ /**
+ * @inheritDoc
+ */
+ VertexAnimator.prototype.clone = function () {
+ return new VertexAnimator(this._vertexAnimationSet);
+ };
+ /**
+ * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame.
+ * @param sequenceName The name of the clip to be played.
+ */
+ VertexAnimator.prototype.play = function (name, transition, offset) {
+ if (transition === void 0) { transition = null; }
+ if (offset === void 0) { offset = NaN; }
+ if (this._pActiveAnimationName == name)
+ return;
+ this._pActiveAnimationName = name;
+ //TODO: implement transitions in vertex animator
+ if (!this._pAnimationSet.hasAnimation(name))
+ throw new Error("Animation root node " + name + " not found!");
+ this._pActiveNode = this._pAnimationSet.getAnimation(name);
+ this._pActiveState = this.getAnimationState(this._pActiveNode);
+ if (this.updatePosition) {
+ //update straight away to reset position deltas
+ this._pActiveState.update(this._pAbsoluteTime);
+ this._pActiveState.positionDelta;
+ }
+ this._activeVertexState = this._pActiveState;
+ this.start();
+ //apply a time offset if specified
+ if (!isNaN(offset))
+ this.reset(name, offset);
+ };
+ /**
+ * @inheritDoc
+ */
+ VertexAnimator.prototype._pUpdateDeltaTime = function (dt) {
+ _super.prototype._pUpdateDeltaTime.call(this, dt);
+ var geometryFlag = false;
+ if (this._poses[0] != this._activeVertexState.currentGeometry) {
+ this._poses[0] = this._activeVertexState.currentGeometry;
+ geometryFlag = true;
+ }
+ if (this._poses[1] != this._activeVertexState.nextGeometry) {
+ this._poses[1] = this._activeVertexState.nextGeometry;
+ geometryFlag = true;
+ }
+ this._weights[0] = 1 - (this._weights[1] = this._activeVertexState.blendWeight);
+ if (geometryFlag) {
+ //invalidate meshes
+ var mesh;
+ var len = this._pOwners.length;
+ for (var i = 0; i < len; i++) {
+ mesh = this._pOwners[i];
+ mesh._iInvalidateRenderableGeometries();
+ }
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ VertexAnimator.prototype.setRenderState = function (shaderObject, renderable, stage, camera, vertexConstantOffset /*int*/, vertexStreamOffset /*int*/) {
+ // todo: add code for when running on cpu
+ // if no poses defined, set temp data
+ if (!this._poses.length) {
+ this.setNullPose(shaderObject, renderable, stage, vertexConstantOffset, vertexStreamOffset);
+ return;
+ }
+ // this type of animation can only be SubMesh
+ var subMesh = renderable.subMesh;
+ var subGeom;
+ var i /*uint*/;
+ var len = this._numPoses;
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, vertexConstantOffset, this._weights, 1);
+ if (this._blendMode == VertexAnimationMode.ABSOLUTE)
+ i = 1;
+ else
+ i = 0;
+ for (; i < len; ++i) {
+ subGeom = this._poses[i].subGeometries[subMesh._iIndex] || subMesh.subGeometry;
+ stage.context.activateBuffer(vertexStreamOffset++, VertexDataPool.getItem(subGeom, renderable.getIndexData(), TriangleSubGeometry.POSITION_DATA), subGeom.getOffset(TriangleSubGeometry.POSITION_DATA), TriangleSubGeometry.POSITION_FORMAT);
+ if (shaderObject.normalDependencies > 0)
+ stage.context.activateBuffer(vertexStreamOffset++, VertexDataPool.getItem(subGeom, renderable.getIndexData(), TriangleSubGeometry.NORMAL_DATA), subGeom.getOffset(TriangleSubGeometry.NORMAL_DATA), TriangleSubGeometry.NORMAL_FORMAT);
+ }
+ };
+ VertexAnimator.prototype.setNullPose = function (shaderObject, renderable, stage, vertexConstantOffset /*int*/, vertexStreamOffset /*int*/) {
+ stage.context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, vertexConstantOffset, this._weights, 1);
+ if (this._blendMode == VertexAnimationMode.ABSOLUTE) {
+ var len = this._numPoses;
+ for (var i = 1; i < len; ++i) {
+ stage.context.activateBuffer(vertexStreamOffset++, renderable.getVertexData(TriangleSubGeometry.POSITION_DATA), renderable.getVertexOffset(TriangleSubGeometry.POSITION_DATA), TriangleSubGeometry.POSITION_FORMAT);
+ if (shaderObject.normalDependencies > 0)
+ stage.context.activateBuffer(vertexStreamOffset++, renderable.getVertexData(TriangleSubGeometry.NORMAL_DATA), renderable.getVertexOffset(TriangleSubGeometry.NORMAL_DATA), TriangleSubGeometry.NORMAL_FORMAT);
+ }
+ }
+ // todo: set temp data for additive?
+ };
+ /**
+ * Verifies if the animation will be used on cpu. Needs to be true for all passes for a material to be able to use it on gpu.
+ * Needs to be called if gpu code is potentially required.
+ */
+ VertexAnimator.prototype.testGPUCompatibility = function (shaderObject) {
+ };
+ VertexAnimator.prototype.getRenderableSubGeometry = function (renderable, sourceSubGeometry) {
+ if (this._blendMode == VertexAnimationMode.ABSOLUTE && this._poses.length)
+ return this._poses[0].subGeometries[renderable.subMesh._iIndex] || sourceSubGeometry;
+ //nothing to do here
+ return sourceSubGeometry;
+ };
+ return VertexAnimator;
+})(AnimatorBase);
+module.exports = VertexAnimator;
+
+
+},{"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-renderergl/lib/animators/data/VertexAnimationMode":undefined,"awayjs-stagegl/lib/animators/AnimatorBase":undefined,"awayjs-stagegl/lib/core/pool/VertexDataPool":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLProgramType":undefined}],"awayjs-renderergl/lib/animators/data/AnimationSubGeometry":[function(require,module,exports){
+/**
+ * ...
+ */
+var AnimationSubGeometry = (function () {
+ function AnimationSubGeometry() {
+ this._pVertexBuffer = new Array(8);
+ this._pBufferContext = new Array(8);
+ this._pBufferDirty = new Array(8);
+ this.numProcessedVertices = 0;
+ this.previousTime = Number.NEGATIVE_INFINITY;
+ this.animationParticles = new Array();
+ for (var i = 0; i < 8; i++)
+ this._pBufferDirty[i] = true;
+ this._iUniqueId = AnimationSubGeometry.SUBGEOM_ID_COUNT++;
+ }
+ AnimationSubGeometry.prototype.createVertexData = function (numVertices /*uint*/, totalLenOfOneVertex /*uint*/) {
+ this._numVertices = numVertices;
+ this._totalLenOfOneVertex = totalLenOfOneVertex;
+ this._pVertexData = new Array(numVertices * totalLenOfOneVertex);
+ };
+ AnimationSubGeometry.prototype.activateVertexBuffer = function (index /*int*/, bufferOffset /*int*/, stage, format) {
+ var contextIndex = stage.stageIndex;
+ var context = stage.context;
+ var buffer = this._pVertexBuffer[contextIndex];
+ if (!buffer || this._pBufferContext[contextIndex] != context) {
+ buffer = this._pVertexBuffer[contextIndex] = context.createVertexBuffer(this._numVertices, this._totalLenOfOneVertex);
+ this._pBufferContext[contextIndex] = context;
+ this._pBufferDirty[contextIndex] = true;
+ }
+ if (this._pBufferDirty[contextIndex]) {
+ buffer.uploadFromArray(this._pVertexData, 0, this._numVertices);
+ this._pBufferDirty[contextIndex] = false;
+ }
+ context.setVertexBufferAt(index, buffer, bufferOffset, format);
+ };
+ AnimationSubGeometry.prototype.dispose = function () {
+ while (this._pVertexBuffer.length) {
+ var vertexBuffer = this._pVertexBuffer.pop();
+ if (vertexBuffer)
+ vertexBuffer.dispose();
+ }
+ };
+ AnimationSubGeometry.prototype.invalidateBuffer = function () {
+ for (var i = 0; i < 8; i++)
+ this._pBufferDirty[i] = true;
+ };
+ Object.defineProperty(AnimationSubGeometry.prototype, "vertexData", {
+ get: function () {
+ return this._pVertexData;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationSubGeometry.prototype, "numVertices", {
+ get: function () {
+ return this._numVertices;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationSubGeometry.prototype, "totalLenOfOneVertex", {
+ get: function () {
+ return this._totalLenOfOneVertex;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ AnimationSubGeometry.SUBGEOM_ID_COUNT = 0;
+ return AnimationSubGeometry;
+})();
+module.exports = AnimationSubGeometry;
+
+
+},{}],"awayjs-renderergl/lib/animators/data/ColorSegmentPoint":[function(require,module,exports){
+var ColorSegmentPoint = (function () {
+ function ColorSegmentPoint(life, color) {
+ //0SkeletonJoint
object
+ */
+ function SkeletonJoint() {
+ /**
+ * The index of the parent joint in the skeleton's joints vector.
+ *
+ * @see away.animators.Skeleton#joints
+ */
+ this.parentIndex = -1;
+ }
+ return SkeletonJoint;
+})();
+module.exports = SkeletonJoint;
+
+
+},{}],"awayjs-renderergl/lib/animators/data/SkeletonPose":[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 JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+var NamedAssetBase = require("awayjs-core/lib/core/library/NamedAssetBase");
+/**
+ * A collection of pose objects, determining the pose for an entire skeleton.
+ * The jointPoses
vector object corresponds to a skeleton's joints
vector object, however, there is no
+ * reference to a skeleton's instance, since several skeletons can be influenced by the same pose (eg: animation
+ * clips are added to any animator with a valid skeleton)
+ *
+ * @see away.animators.Skeleton
+ * @see away.animators.JointPose
+ */
+var SkeletonPose = (function (_super) {
+ __extends(SkeletonPose, _super);
+ /**
+ * Creates a new SkeletonPose
object.
+ */
+ function SkeletonPose() {
+ _super.call(this);
+ this.jointPoses = new Array();
+ }
+ Object.defineProperty(SkeletonPose.prototype, "numJointPoses", {
+ /**
+ * The total number of joint poses in the skeleton pose.
+ */
+ get: function () {
+ return this.jointPoses.length;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonPose.prototype, "assetType", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return AssetType.SKELETON_POSE;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Returns the joint pose object with the given joint name, otherwise returns a null object.
+ *
+ * @param jointName The name of the joint object whose pose is to be found.
+ * @return The pose object with the given joint name.
+ */
+ SkeletonPose.prototype.jointPoseFromName = function (jointName) {
+ var jointPoseIndex = this.jointPoseIndexFromName(jointName);
+ if (jointPoseIndex != -1)
+ return this.jointPoses[jointPoseIndex];
+ else
+ return null;
+ };
+ /**
+ * Returns the pose index, given the joint name. -1 is returned if the joint name is not found in the pose.
+ *
+ * @param The name of the joint object whose pose is to be found.
+ * @return The index of the pose object in the jointPoses Array
+ *
+ * @see #jointPoses
+ */
+ SkeletonPose.prototype.jointPoseIndexFromName = function (jointName) {
+ // this is implemented as a linear search, rather than a possibly
+ // more optimal method (Dictionary lookup, for example) because:
+ // a) it is assumed that it will be called once for each joint
+ // b) it is assumed that it will be called only during load, and not during main loop
+ // c) maintaining a dictionary (for safety) would dictate an interface to access JointPoses,
+ // rather than direct array access. this would be sub-optimal.
+ var jointPoseIndex /*int*/;
+ var jointPose;
+ for (var i /*uint*/; i < this.jointPoses.length; i++) {
+ jointPose = this.jointPoses[i];
+ if (jointPose.name == jointName)
+ return jointPoseIndex;
+ jointPoseIndex++;
+ }
+ return -1;
+ };
+ /**
+ * Creates a copy of the SkeletonPose
object, with a dulpicate of its component joint poses.
+ *
+ * @return SkeletonPose
+ */
+ SkeletonPose.prototype.clone = function () {
+ var clone = new SkeletonPose();
+ var numJointPoses = this.jointPoses.length;
+ for (var i = 0; i < numJointPoses; i++) {
+ var cloneJointPose = new JointPose();
+ var thisJointPose = this.jointPoses[i];
+ cloneJointPose.name = thisJointPose.name;
+ cloneJointPose.copyFrom(thisJointPose);
+ clone.jointPoses[i] = cloneJointPose;
+ }
+ return clone;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonPose.prototype.dispose = function () {
+ this.jointPoses.length = 0;
+ };
+ return SkeletonPose;
+})(NamedAssetBase);
+module.exports = SkeletonPose;
+
+
+},{"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined,"awayjs-renderergl/lib/animators/data/JointPose":undefined}],"awayjs-renderergl/lib/animators/data/Skeleton":[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");
+/**
+ * A Skeleton object is a hierarchical grouping of joint objects that can be used for skeletal animation.
+ *
+ * @see away.animators.SkeletonJoint
+ */
+var Skeleton = (function (_super) {
+ __extends(Skeleton, _super);
+ /**
+ * Creates a new Skeleton
object
+ */
+ function Skeleton() {
+ _super.call(this);
+ // in the long run, it might be a better idea to not store Joint objects, but keep all data in Vectors, that we can upload easily?
+ this.joints = new Array();
+ }
+ Object.defineProperty(Skeleton.prototype, "numJoints", {
+ /**
+ * The total number of joints in the skeleton.
+ */
+ get: function () {
+ return this.joints.length;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Returns the joint object in the skeleton with the given name, otherwise returns a null object.
+ *
+ * @param jointName The name of the joint object to be found.
+ * @return The joint object with the given name.
+ *
+ * @see #joints
+ */
+ Skeleton.prototype.jointFromName = function (jointName) {
+ var jointIndex = this.jointIndexFromName(jointName);
+ if (jointIndex != -1)
+ return this.joints[jointIndex];
+ else
+ return null;
+ };
+ /**
+ * Returns the joint index, given the joint name. -1 is returned if the joint name is not found.
+ *
+ * @param jointName The name of the joint object to be found.
+ * @return The index of the joint object in the joints Array
+ *
+ * @see #joints
+ */
+ Skeleton.prototype.jointIndexFromName = function (jointName) {
+ // this is implemented as a linear search, rather than a possibly
+ // more optimal method (Dictionary lookup, for example) because:
+ // a) it is assumed that it will be called once for each joint
+ // b) it is assumed that it will be called only during load, and not during main loop
+ // c) maintaining a dictionary (for safety) would dictate an interface to access SkeletonJoints,
+ // rather than direct array access. this would be sub-optimal.
+ var jointIndex /*int*/;
+ var joint;
+ for (var i /*int*/; i < this.joints.length; i++) {
+ joint = this.joints[i];
+ if (joint.name == jointName)
+ return jointIndex;
+ jointIndex++;
+ }
+ return -1;
+ };
+ /**
+ * @inheritDoc
+ */
+ Skeleton.prototype.dispose = function () {
+ this.joints.length = 0;
+ };
+ Object.defineProperty(Skeleton.prototype, "assetType", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return AssetType.SKELETON;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return Skeleton;
+})(NamedAssetBase);
+module.exports = Skeleton;
+
+
+},{"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/library/NamedAssetBase":undefined}],"awayjs-renderergl/lib/animators/data/VertexAnimationMode":[function(require,module,exports){
+/**
+ * Options for setting the animation mode of a vertex animator object.
+ *
+ * @see away.animators.VertexAnimator
+ */
+var VertexAnimationMode = (function () {
+ function VertexAnimationMode() {
+ }
+ /**
+ * Animation mode that adds all outputs from active vertex animation state to form the current vertex animation pose.
+ */
+ VertexAnimationMode.ADDITIVE = "additive";
+ /**
+ * Animation mode that picks the output from a single vertex animation state to form the current vertex animation pose.
+ */
+ VertexAnimationMode.ABSOLUTE = "absolute";
+ return VertexAnimationMode;
+})();
+module.exports = VertexAnimationMode;
+
+
+},{}],"awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+/**
+ * Provides an abstract base class for nodes with time-based animation data in an animation blend tree.
+ */
+var AnimationClipNodeBase = (function (_super) {
+ __extends(AnimationClipNodeBase, _super);
+ /**
+ * Creates a new AnimationClipNodeBase
object.
+ */
+ function AnimationClipNodeBase() {
+ _super.call(this);
+ this._pLooping = true;
+ this._pTotalDuration = 0;
+ this._pStitchDirty = true;
+ this._pStitchFinalFrame = false;
+ this._pNumFrames = 0;
+ this._pDurations = new Array();
+ /*uint*/
+ this._pTotalDelta = new Vector3D();
+ this.fixedFrameRate = true;
+ }
+ Object.defineProperty(AnimationClipNodeBase.prototype, "looping", {
+ /**
+ * Determines whether the contents of the animation node have looping characteristics enabled.
+ */
+ get: function () {
+ return this._pLooping;
+ },
+ set: function (value) {
+ if (this._pLooping == value)
+ return;
+ this._pLooping = value;
+ this._pStitchDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipNodeBase.prototype, "stitchFinalFrame", {
+ /**
+ * Defines if looping content blends the final frame of animation data with the first (true) or works on the
+ * assumption that both first and last frames are identical (false). Defaults to false.
+ */
+ get: function () {
+ return this._pStitchFinalFrame;
+ },
+ set: function (value) {
+ if (this._pStitchFinalFrame == value)
+ return;
+ this._pStitchFinalFrame = value;
+ this._pStitchDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipNodeBase.prototype, "totalDuration", {
+ get: function () {
+ if (this._pStitchDirty)
+ this._pUpdateStitch();
+ return this._pTotalDuration;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipNodeBase.prototype, "totalDelta", {
+ get: function () {
+ if (this._pStitchDirty)
+ this._pUpdateStitch();
+ return this._pTotalDelta;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipNodeBase.prototype, "lastFrame", {
+ get: function () {
+ if (this._pStitchDirty)
+ this._pUpdateStitch();
+ return this._pLastFrame;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipNodeBase.prototype, "durations", {
+ /**
+ * Returns a vector of time values representing the duration (in milliseconds) of each animation frame in the clip.
+ */
+ get: function () {
+ return this._pDurations;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Updates the node's final frame stitch state.
+ *
+ * @see #stitchFinalFrame
+ */
+ AnimationClipNodeBase.prototype._pUpdateStitch = function () {
+ this._pStitchDirty = false;
+ this._pLastFrame = (this._pStitchFinalFrame) ? this._pNumFrames : this._pNumFrames - 1;
+ this._pTotalDuration = 0;
+ this._pTotalDelta.x = 0;
+ this._pTotalDelta.y = 0;
+ this._pTotalDelta.z = 0;
+ };
+ return AnimationClipNodeBase;
+})(AnimationNodeBase);
+module.exports = AnimationClipNodeBase;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleAccelerationNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleAccelerationState = require("awayjs-renderergl/lib/animators/states/ParticleAccelerationState");
+/**
+ * A particle animation node used to apply a constant acceleration vector to the motion of a particle.
+ */
+var ParticleAccelerationNode = (function (_super) {
+ __extends(ParticleAccelerationNode, _super);
+ /**
+ * Creates a new ParticleAccelerationNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.
+ */
+ function ParticleAccelerationNode(mode /*uint*/, acceleration) {
+ if (acceleration === void 0) { acceleration = null; }
+ _super.call(this, "ParticleAcceleration", mode, 3);
+ this._pStateClass = ParticleAccelerationState;
+ this._acceleration = acceleration || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleAccelerationNode.prototype.pGetAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var accelerationValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleAccelerationState.ACCELERATION_INDEX, accelerationValue.index);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var code = "mul " + temp + "," + animationRegisterCache.vertexTime + "," + accelerationValue + "\n";
+ if (animationRegisterCache.needVelocity) {
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ code += "mul " + temp2 + "," + temp + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + temp2 + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ }
+ animationRegisterCache.removeVertexTempUsage(temp);
+ code += "mul " + temp + "," + temp + "," + animationRegisterCache.vertexTime + "\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + temp + "," + animationRegisterCache.positionTarget + ".xyz\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAccelerationNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleAccelerationNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var tempAcceleration = param[ParticleAccelerationNode.ACCELERATION_VECTOR3D];
+ if (!tempAcceleration)
+ throw new Error("there is no " + ParticleAccelerationNode.ACCELERATION_VECTOR3D + " in param!");
+ this._pOneData[0] = tempAcceleration.x / 2;
+ this._pOneData[1] = tempAcceleration.y / 2;
+ this._pOneData[2] = tempAcceleration.z / 2;
+ };
+ /**
+ * Reference for acceleration node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the direction of acceleration on the particle.
+ */
+ ParticleAccelerationNode.ACCELERATION_VECTOR3D = "AccelerationVector3D";
+ return ParticleAccelerationNode;
+})(ParticleNodeBase);
+module.exports = ParticleAccelerationNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleAccelerationState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleBezierCurveNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleBezierCurveState = require("awayjs-renderergl/lib/animators/states/ParticleBezierCurveState");
+/**
+ * A particle animation node used to control the position of a particle over time along a bezier curve.
+ */
+var ParticleBezierCurveNode = (function (_super) {
+ __extends(ParticleBezierCurveNode, _super);
+ /**
+ * Creates a new ParticleBezierCurveNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] controlPoint Defines the default control point of the node, used when in global mode.
+ * @param [optional] endPoint Defines the default end point of the node, used when in global mode.
+ */
+ function ParticleBezierCurveNode(mode /*uint*/, controlPoint, endPoint) {
+ if (controlPoint === void 0) { controlPoint = null; }
+ if (endPoint === void 0) { endPoint = null; }
+ _super.call(this, "ParticleBezierCurve", mode, 6);
+ this._pStateClass = ParticleBezierCurveState;
+ this._iControlPoint = controlPoint || new Vector3D();
+ this._iEndPoint = endPoint || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleBezierCurveNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var controlValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_CONTROL_INDEX, controlValue.index);
+ var endValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_END_INDEX, endValue.index);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ var rev_time = new ShaderRegisterElement(temp.regName, temp.index, 0);
+ var time_2 = new ShaderRegisterElement(temp.regName, temp.index, 1);
+ var time_temp = new ShaderRegisterElement(temp.regName, temp.index, 2);
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ var distance = new ShaderRegisterElement(temp2.regName, temp2.index);
+ animationRegisterCache.removeVertexTempUsage(temp);
+ var code = "";
+ code += "sub " + rev_time + "," + animationRegisterCache.vertexOneConst + "," + animationRegisterCache.vertexLife + "\n";
+ code += "mul " + time_2 + "," + animationRegisterCache.vertexLife + "," + animationRegisterCache.vertexLife + "\n";
+ code += "mul " + time_temp + "," + animationRegisterCache.vertexLife + "," + rev_time + "\n";
+ code += "mul " + time_temp + "," + time_temp + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "mul " + distance + ".xyz," + time_temp + "," + controlValue + "\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ code += "mul " + distance + ".xyz," + time_2 + "," + endValue + "\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ if (animationRegisterCache.needVelocity) {
+ code += "mul " + time_2 + "," + animationRegisterCache.vertexLife + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "sub " + time_temp + "," + animationRegisterCache.vertexOneConst + "," + time_2 + "\n";
+ code += "mul " + time_temp + "," + animationRegisterCache.vertexTwoConst + "," + time_temp + "\n";
+ code += "mul " + distance + ".xyz," + controlValue + "," + time_temp + "\n";
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ code += "mul " + distance + ".xyz," + endValue + "," + time_2 + "\n";
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleBezierCurveNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleBezierCurveNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var bezierControl = param[ParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D];
+ if (!bezierControl)
+ throw new Error("there is no " + ParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D + " in param!");
+ var bezierEnd = param[ParticleBezierCurveNode.BEZIER_END_VECTOR3D];
+ if (!bezierEnd)
+ throw new Error("there is no " + ParticleBezierCurveNode.BEZIER_END_VECTOR3D + " in param!");
+ this._pOneData[0] = bezierControl.x;
+ this._pOneData[1] = bezierControl.y;
+ this._pOneData[2] = bezierControl.z;
+ this._pOneData[3] = bezierEnd.x;
+ this._pOneData[4] = bezierEnd.y;
+ this._pOneData[5] = bezierEnd.z;
+ };
+ /**
+ * Reference for bezier curve node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the control point position (0, 1, 2) of the curve.
+ */
+ ParticleBezierCurveNode.BEZIER_CONTROL_VECTOR3D = "BezierControlVector3D";
+ /**
+ * Reference for bezier curve node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the end point position (0, 1, 2) of the curve.
+ */
+ ParticleBezierCurveNode.BEZIER_END_VECTOR3D = "BezierEndVector3D";
+ return ParticleBezierCurveNode;
+})(ParticleNodeBase);
+module.exports = ParticleBezierCurveNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleBezierCurveState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleBillboardNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleBillboardState = require("awayjs-renderergl/lib/animators/states/ParticleBillboardState");
+/**
+ * A particle animation node that controls the rotation of a particle to always face the camera.
+ */
+var ParticleBillboardNode = (function (_super) {
+ __extends(ParticleBillboardNode, _super);
+ /**
+ * Creates a new ParticleBillboardNode
+ */
+ function ParticleBillboardNode(billboardAxis) {
+ if (billboardAxis === void 0) { billboardAxis = null; }
+ _super.call(this, "ParticleBillboard", ParticlePropertiesMode.GLOBAL, 0, 4);
+ this._pStateClass = ParticleBillboardState;
+ this._iBillboardAxis = billboardAxis;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleBillboardNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var rotationMatrixRegister = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleBillboardState.MATRIX_INDEX, rotationMatrixRegister.index);
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ var code = "m33 " + temp + ".xyz," + animationRegisterCache.scaleAndRotateTarget + "," + rotationMatrixRegister + "\n" + "mov " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp + "\n";
+ var shaderRegisterElement;
+ for (var i = 0; i < animationRegisterCache.rotationRegisters.length; i++) {
+ shaderRegisterElement = animationRegisterCache.rotationRegisters[i];
+ code += "m33 " + temp + ".xyz," + shaderRegisterElement + "," + rotationMatrixRegister + "\n" + "mov " + shaderRegisterElement + ".xyz," + shaderRegisterElement + "\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleBillboardNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleBillboardNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ particleAnimationSet.hasBillboard = true;
+ };
+ return ParticleBillboardNode;
+})(ParticleNodeBase);
+module.exports = ParticleBillboardNode;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleBillboardState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleColorNode":[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 ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+var ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleColorState = require("awayjs-renderergl/lib/animators/states/ParticleColorState");
+/**
+ * A particle animation node used to control the color variation of a particle over time.
+ */
+var ParticleColorNode = (function (_super) {
+ __extends(ParticleColorNode, _super);
+ /**
+ * Creates a new ParticleColorNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesMultiplier Defines whether the node uses multiplier data in the shader for its color transformations. Defaults to true.
+ * @param [optional] usesOffset Defines whether the node uses offset data in the shader for its color transformations. Defaults to true.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the animation independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.
+ * @param [optional] startColor Defines the default start color transform of the node, when in global mode.
+ * @param [optional] endColor Defines the default end color transform of the node, when in global mode.
+ * @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ function ParticleColorNode(mode /*uint*/, usesMultiplier, usesOffset, usesCycle, usesPhase, startColor, endColor, cycleDuration, cyclePhase) {
+ if (usesMultiplier === void 0) { usesMultiplier = true; }
+ if (usesOffset === void 0) { usesOffset = true; }
+ if (usesCycle === void 0) { usesCycle = false; }
+ if (usesPhase === void 0) { usesPhase = false; }
+ if (startColor === void 0) { startColor = null; }
+ if (endColor === void 0) { endColor = null; }
+ if (cycleDuration === void 0) { cycleDuration = 1; }
+ if (cyclePhase === void 0) { cyclePhase = 0; }
+ _super.call(this, "ParticleColor", mode, (usesMultiplier && usesOffset) ? 16 : 8, ParticleAnimationSet.COLOR_PRIORITY);
+ this._pStateClass = ParticleColorState;
+ this._iUsesMultiplier = usesMultiplier;
+ this._iUsesOffset = usesOffset;
+ this._iUsesCycle = usesCycle;
+ this._iUsesPhase = usesPhase;
+ this._iStartColor = startColor || new ColorTransform();
+ this._iEndColor = endColor || new ColorTransform();
+ this._iCycleDuration = cycleDuration;
+ this._iCyclePhase = cyclePhase;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleColorNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ if (animationRegisterCache.needFragmentAnimation) {
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ if (this._iUsesCycle) {
+ var cycleConst = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleColorState.CYCLE_INDEX, cycleConst.index);
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var sin = animationRegisterCache.getFreeVertexSingleTemp();
+ animationRegisterCache.removeVertexTempUsage(temp);
+ code += "mul " + sin + "," + animationRegisterCache.vertexTime + "," + cycleConst + ".x\n";
+ if (this._iUsesPhase)
+ code += "add " + sin + "," + sin + "," + cycleConst + ".y\n";
+ code += "sin " + sin + "," + sin + "\n";
+ }
+ if (this._iUsesMultiplier) {
+ var startMultiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ var deltaMultiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleColorState.START_MULTIPLIER_INDEX, startMultiplierValue.index);
+ animationRegisterCache.setRegisterIndex(this, ParticleColorState.DELTA_MULTIPLIER_INDEX, deltaMultiplierValue.index);
+ code += "mul " + temp + "," + deltaMultiplierValue + "," + (this._iUsesCycle ? sin : animationRegisterCache.vertexLife) + "\n";
+ code += "add " + temp + "," + temp + "," + startMultiplierValue + "\n";
+ code += "mul " + animationRegisterCache.colorMulTarget + "," + temp + "," + animationRegisterCache.colorMulTarget + "\n";
+ }
+ if (this._iUsesOffset) {
+ var startOffsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
+ var deltaOffsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleColorState.START_OFFSET_INDEX, startOffsetValue.index);
+ animationRegisterCache.setRegisterIndex(this, ParticleColorState.DELTA_OFFSET_INDEX, deltaOffsetValue.index);
+ code += "mul " + temp + "," + deltaOffsetValue + "," + (this._iUsesCycle ? sin : animationRegisterCache.vertexLife) + "\n";
+ code += "add " + temp + "," + temp + "," + startOffsetValue + "\n";
+ code += "add " + animationRegisterCache.colorAddTarget + "," + temp + "," + animationRegisterCache.colorAddTarget + "\n";
+ }
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleColorNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ if (this._iUsesMultiplier)
+ particleAnimationSet.hasColorMulNode = true;
+ if (this._iUsesOffset)
+ particleAnimationSet.hasColorAddNode = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleColorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var startColor = param[ParticleColorNode.COLOR_START_COLORTRANSFORM];
+ if (!startColor)
+ throw (new Error("there is no " + ParticleColorNode.COLOR_START_COLORTRANSFORM + " in param!"));
+ var endColor = param[ParticleColorNode.COLOR_END_COLORTRANSFORM];
+ if (!endColor)
+ throw (new Error("there is no " + ParticleColorNode.COLOR_END_COLORTRANSFORM + " in param!"));
+ var i = 0;
+ if (!this._iUsesCycle) {
+ //multiplier
+ if (this._iUsesMultiplier) {
+ this._pOneData[i++] = startColor.redMultiplier;
+ this._pOneData[i++] = startColor.greenMultiplier;
+ this._pOneData[i++] = startColor.blueMultiplier;
+ this._pOneData[i++] = startColor.alphaMultiplier;
+ this._pOneData[i++] = endColor.redMultiplier - startColor.redMultiplier;
+ this._pOneData[i++] = endColor.greenMultiplier - startColor.greenMultiplier;
+ this._pOneData[i++] = endColor.blueMultiplier - startColor.blueMultiplier;
+ this._pOneData[i++] = endColor.alphaMultiplier - startColor.alphaMultiplier;
+ }
+ //offset
+ if (this._iUsesOffset) {
+ this._pOneData[i++] = startColor.redOffset / 255;
+ this._pOneData[i++] = startColor.greenOffset / 255;
+ this._pOneData[i++] = startColor.blueOffset / 255;
+ this._pOneData[i++] = startColor.alphaOffset / 255;
+ this._pOneData[i++] = (endColor.redOffset - startColor.redOffset) / 255;
+ this._pOneData[i++] = (endColor.greenOffset - startColor.greenOffset) / 255;
+ this._pOneData[i++] = (endColor.blueOffset - startColor.blueOffset) / 255;
+ this._pOneData[i++] = (endColor.alphaOffset - startColor.alphaOffset) / 255;
+ }
+ }
+ else {
+ //multiplier
+ if (this._iUsesMultiplier) {
+ this._pOneData[i++] = (startColor.redMultiplier + endColor.redMultiplier) / 2;
+ this._pOneData[i++] = (startColor.greenMultiplier + endColor.greenMultiplier) / 2;
+ this._pOneData[i++] = (startColor.blueMultiplier + endColor.blueMultiplier) / 2;
+ this._pOneData[i++] = (startColor.alphaMultiplier + endColor.alphaMultiplier) / 2;
+ this._pOneData[i++] = (startColor.redMultiplier - endColor.redMultiplier) / 2;
+ this._pOneData[i++] = (startColor.greenMultiplier - endColor.greenMultiplier) / 2;
+ this._pOneData[i++] = (startColor.blueMultiplier - endColor.blueMultiplier) / 2;
+ this._pOneData[i++] = (startColor.alphaMultiplier - endColor.alphaMultiplier) / 2;
+ }
+ //offset
+ if (this._iUsesOffset) {
+ this._pOneData[i++] = (startColor.redOffset + endColor.redOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.greenOffset + endColor.greenOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.blueOffset + endColor.blueOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.alphaOffset + endColor.alphaOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.redOffset - endColor.redOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.greenOffset - endColor.greenOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.blueOffset - endColor.blueOffset) / (255 * 2);
+ this._pOneData[i++] = (startColor.alphaOffset - endColor.alphaOffset) / (255 * 2);
+ }
+ }
+ };
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the start color transform applied to the particle.
+ */
+ ParticleColorNode.COLOR_START_COLORTRANSFORM = "ColorStartColorTransform";
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the end color transform applied to the particle.
+ */
+ ParticleColorNode.COLOR_END_COLORTRANSFORM = "ColorEndColorTransform";
+ return ParticleColorNode;
+})(ParticleNodeBase);
+module.exports = ParticleColorNode;
+
+
+},{"awayjs-core/lib/core/geom/ColorTransform":undefined,"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleColorState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleFollowNode":[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 ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleFollowState = require("awayjs-renderergl/lib/animators/states/ParticleFollowState");
+/**
+ * A particle animation node used to create a follow behaviour on a particle system.
+ */
+var ParticleFollowNode = (function (_super) {
+ __extends(ParticleFollowNode, _super);
+ /**
+ * Creates a new ParticleFollowNode
+ *
+ * @param [optional] usesPosition Defines wehether the individual particle reacts to the position of the target.
+ * @param [optional] usesRotation Defines wehether the individual particle reacts to the rotation of the target.
+ * @param [optional] smooth Defines wehether the state calculate the interpolated value.
+ */
+ function ParticleFollowNode(usesPosition, usesRotation, smooth) {
+ if (usesPosition === void 0) { usesPosition = true; }
+ if (usesRotation === void 0) { usesRotation = true; }
+ if (smooth === void 0) { smooth = false; }
+ _super.call(this, "ParticleFollow", ParticlePropertiesMode.LOCAL_DYNAMIC, (usesPosition && usesRotation) ? 6 : 3, ParticleAnimationSet.POST_PRIORITY);
+ this._pStateClass = ParticleFollowState;
+ this._iUsesPosition = usesPosition;
+ this._iUsesRotation = usesRotation;
+ this._iSmooth = smooth;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleFollowNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ //TODO: use Quaternion to implement this function
+ var code = "";
+ if (this._iUsesRotation) {
+ var rotationAttribute = animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleFollowState.FOLLOW_ROTATION_INDEX, rotationAttribute.index);
+ var temp1 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp1, 1);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp2, 1);
+ var temp3 = animationRegisterCache.getFreeVertexVectorTemp();
+ var temp4;
+ if (animationRegisterCache.hasBillboard) {
+ animationRegisterCache.addVertexTempUsages(temp3, 1);
+ temp4 = animationRegisterCache.getFreeVertexVectorTemp();
+ }
+ animationRegisterCache.removeVertexTempUsage(temp1);
+ animationRegisterCache.removeVertexTempUsage(temp2);
+ if (animationRegisterCache.hasBillboard)
+ animationRegisterCache.removeVertexTempUsage(temp3);
+ var len = animationRegisterCache.rotationRegisters.length;
+ var i /*int*/;
+ //x axis
+ code += "mov " + temp1 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp1 + ".x," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "sin " + temp3 + ".y," + rotationAttribute + ".x\n";
+ code += "cos " + temp3 + ".z," + rotationAttribute + ".x\n";
+ code += "mov " + temp2 + ".x," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp2 + ".y," + temp3 + ".z\n";
+ code += "neg " + temp2 + ".z," + temp3 + ".y\n";
+ if (animationRegisterCache.hasBillboard)
+ code += "m33 " + temp4 + ".xyz," + animationRegisterCache.positionTarget + ".xyz," + temp1 + "\n";
+ else {
+ code += "m33 " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp1 + "\n";
+ for (i = 0; i < len; i++)
+ code += "m33 " + animationRegisterCache.rotationRegisters[i] + ".xyz," + animationRegisterCache.rotationRegisters[i] + "," + temp1 + "\n";
+ }
+ //y axis
+ code += "mov " + temp1 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "cos " + temp1 + ".x," + rotationAttribute + ".y\n";
+ code += "sin " + temp1 + ".z," + rotationAttribute + ".y\n";
+ code += "mov " + temp2 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp2 + ".y," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "neg " + temp3 + ".x," + temp1 + ".z\n";
+ code += "mov " + temp3 + ".z," + temp1 + ".x\n";
+ if (animationRegisterCache.hasBillboard)
+ code += "m33 " + temp4 + ".xyz," + temp4 + ".xyz," + temp1 + "\n";
+ else {
+ code += "m33 " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp1 + "\n";
+ for (i = 0; i < len; i++)
+ code += "m33 " + animationRegisterCache.rotationRegisters[i] + ".xyz," + animationRegisterCache.rotationRegisters[i] + "," + temp1 + "\n";
+ }
+ //z axis
+ code += "mov " + temp2 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "sin " + temp2 + ".x," + rotationAttribute + ".z\n";
+ code += "cos " + temp2 + ".y," + rotationAttribute + ".z\n";
+ code += "mov " + temp1 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp1 + ".x," + temp2 + ".y\n";
+ code += "neg " + temp1 + ".y," + temp2 + ".x\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp3 + ".z," + animationRegisterCache.vertexOneConst + "\n";
+ if (animationRegisterCache.hasBillboard) {
+ code += "m33 " + temp4 + ".xyz," + temp4 + ".xyz," + temp1 + "\n";
+ code += "sub " + temp4 + ".xyz," + temp4 + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp4 + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ }
+ else {
+ code += "m33 " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp1 + "\n";
+ for (i = 0; i < len; i++)
+ code += "m33 " + animationRegisterCache.rotationRegisters[i] + ".xyz," + animationRegisterCache.rotationRegisters[i] + "," + temp1 + "\n";
+ }
+ }
+ if (this._iUsesPosition) {
+ var positionAttribute = animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleFollowState.FOLLOW_POSITION_INDEX, positionAttribute.index);
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + positionAttribute + "," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleFollowNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ return ParticleFollowNode;
+})(ParticleNodeBase);
+module.exports = ParticleFollowNode;
+
+
+},{"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleFollowState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleInitialColorNode":[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 ColorTransform = require("awayjs-core/lib/core/geom/ColorTransform");
+var ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleInitialColorState = require("awayjs-renderergl/lib/animators/states/ParticleInitialColorState");
+/**
+ *
+ */
+var ParticleInitialColorNode = (function (_super) {
+ __extends(ParticleInitialColorNode, _super);
+ function ParticleInitialColorNode(mode /*uint*/, usesMultiplier, usesOffset, initialColor) {
+ if (usesMultiplier === void 0) { usesMultiplier = true; }
+ if (usesOffset === void 0) { usesOffset = false; }
+ if (initialColor === void 0) { initialColor = null; }
+ _super.call(this, "ParticleInitialColor", mode, (usesMultiplier && usesOffset) ? 8 : 4, ParticleAnimationSet.COLOR_PRIORITY);
+ this._pStateClass = ParticleInitialColorState;
+ this._iUsesMultiplier = usesMultiplier;
+ this._iUsesOffset = usesOffset;
+ this._iInitialColor = initialColor || new ColorTransform();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleInitialColorNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ if (animationRegisterCache.needFragmentAnimation) {
+ if (this._iUsesMultiplier) {
+ var multiplierValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleInitialColorState.MULTIPLIER_INDEX, multiplierValue.index);
+ code += "mul " + animationRegisterCache.colorMulTarget + "," + multiplierValue + "," + animationRegisterCache.colorMulTarget + "\n";
+ }
+ if (this._iUsesOffset) {
+ var offsetValue = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC) ? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleInitialColorState.OFFSET_INDEX, offsetValue.index);
+ code += "add " + animationRegisterCache.colorAddTarget + "," + offsetValue + "," + animationRegisterCache.colorAddTarget + "\n";
+ }
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleInitialColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ if (this._iUsesMultiplier)
+ particleAnimationSet.hasColorMulNode = true;
+ if (this._iUsesOffset)
+ particleAnimationSet.hasColorAddNode = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleInitialColorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var initialColor = param[ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM];
+ if (!initialColor)
+ throw (new Error("there is no " + ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM + " in param!"));
+ var i = 0;
+ //multiplier
+ if (this._iUsesMultiplier) {
+ this._pOneData[i++] = initialColor.redMultiplier;
+ this._pOneData[i++] = initialColor.greenMultiplier;
+ this._pOneData[i++] = initialColor.blueMultiplier;
+ this._pOneData[i++] = initialColor.alphaMultiplier;
+ }
+ //offset
+ if (this._iUsesOffset) {
+ this._pOneData[i++] = initialColor.redOffset / 255;
+ this._pOneData[i++] = initialColor.greenOffset / 255;
+ this._pOneData[i++] = initialColor.blueOffset / 255;
+ this._pOneData[i++] = initialColor.alphaOffset / 255;
+ }
+ };
+ /**
+ * Reference for color node properties on a single particle (when in local property mode).
+ * Expects a ColorTransform
object representing the color transform applied to the particle.
+ */
+ ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM = "ColorInitialColorTransform";
+ return ParticleInitialColorNode;
+})(ParticleNodeBase);
+module.exports = ParticleInitialColorNode;
+
+
+},{"awayjs-core/lib/core/geom/ColorTransform":undefined,"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleInitialColorState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+/**
+ * Provides an abstract base class for particle animation nodes.
+ */
+var ParticleNodeBase = (function (_super) {
+ __extends(ParticleNodeBase, _super);
+ /**
+ * Creates a new ParticleNodeBase
object.
+ *
+ * @param name Defines the generic name of the particle animation node.
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param dataLength Defines the length of the data used by the node when in LOCAL_STATIC
mode.
+ * @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.
+ */
+ function ParticleNodeBase(name, mode /*uint*/, dataLength /*uint*/, priority) {
+ if (priority === void 0) { priority = 1; }
+ _super.call(this);
+ this._pDataLength = 3;
+ name = name + ParticleNodeBase.MODES[mode];
+ this.name = name;
+ this._pMode = mode;
+ this._priority = priority;
+ this._pDataLength = dataLength;
+ this._pOneData = new Array(this._pDataLength);
+ }
+ Object.defineProperty(ParticleNodeBase.prototype, "mode", {
+ /**
+ * Returns the property mode of the particle animation node. Typically set in the node constructor
+ *
+ * @see away.animators.ParticlePropertiesMode
+ */
+ get: function () {
+ return this._pMode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleNodeBase.prototype, "priority", {
+ /**
+ * Returns the priority of the particle animation node, used to order the agal generated in a particle animation set. Set automatically on instantiation.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #getAGALVertexCode
+ */
+ get: function () {
+ return this._priority;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleNodeBase.prototype, "dataLength", {
+ /**
+ * Returns the length of the data used by the node when in LOCAL_STATIC
mode. Used to generate the local static data of the particle animation set.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #getAGALVertexCode
+ */
+ get: function () {
+ return this._pDataLength;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleNodeBase.prototype, "oneData", {
+ /**
+ * Returns the generated data vector of the node after one particle pass during the generation of all local static data of the particle animation set.
+ *
+ * @see away.animators.ParticleAnimationSet
+ * @see #generatePropertyOfOneParticle
+ */
+ get: function () {
+ return this._pOneData;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Returns the AGAL code of the particle animation node for use in the vertex shader.
+ */
+ ParticleNodeBase.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ return "";
+ };
+ /**
+ * Returns the AGAL code of the particle animation node for use in the fragment shader.
+ */
+ ParticleNodeBase.prototype.getAGALFragmentCode = function (shaderObject, animationRegisterCache) {
+ return "";
+ };
+ /**
+ * Returns the AGAL code of the particle animation node for use in the fragment shader when UV coordinates are required.
+ */
+ ParticleNodeBase.prototype.getAGALUVCode = function (shaderObject, animationRegisterCache) {
+ return "";
+ };
+ /**
+ * Called internally by the particle animation set when assigning the set of static properties originally defined by the initParticleFunc of the set.
+ *
+ * @see away.animators.ParticleAnimationSet#initParticleFunc
+ */
+ ParticleNodeBase.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ };
+ /**
+ * Called internally by the particle animation set when determining the requirements of the particle animation node AGAL.
+ */
+ ParticleNodeBase.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ };
+ //modes alias
+ ParticleNodeBase.GLOBAL = 'Global';
+ ParticleNodeBase.LOCAL_STATIC = 'LocalStatic';
+ ParticleNodeBase.LOCAL_DYNAMIC = 'LocalDynamic';
+ //modes list
+ ParticleNodeBase.MODES = {
+ 0: ParticleNodeBase.GLOBAL,
+ 1: ParticleNodeBase.LOCAL_STATIC,
+ 2: ParticleNodeBase.LOCAL_DYNAMIC
+ };
+ return ParticleNodeBase;
+})(AnimationNodeBase);
+module.exports = ParticleNodeBase;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleOrbitNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleOrbitState = require("awayjs-renderergl/lib/animators/states/ParticleOrbitState");
+/**
+ * A particle animation node used to control the position of a particle over time around a circular orbit.
+ */
+var ParticleOrbitNode = (function (_super) {
+ __extends(ParticleOrbitNode, _super);
+ /**
+ * Creates a new ParticleOrbitNode
object.
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesEulers Defines whether the node uses the eulers
property in the shader to calculate a rotation on the orbit. Defaults to true.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the orbit independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.
+ * @param [optional] radius Defines the radius of the orbit when in global mode. Defaults to 100.
+ * @param [optional] cycleDuration Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ * @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.
+ */
+ function ParticleOrbitNode(mode /*uint*/, usesEulers, usesCycle, usesPhase, radius, cycleDuration, cyclePhase, eulers) {
+ if (usesEulers === void 0) { usesEulers = true; }
+ if (usesCycle === void 0) { usesCycle = false; }
+ if (usesPhase === void 0) { usesPhase = false; }
+ if (radius === void 0) { radius = 100; }
+ if (cycleDuration === void 0) { cycleDuration = 1; }
+ if (cyclePhase === void 0) { cyclePhase = 0; }
+ if (eulers === void 0) { eulers = null; }
+ var len = 3;
+ if (usesPhase)
+ len++;
+ _super.call(this, "ParticleOrbit", mode, len);
+ this._pStateClass = ParticleOrbitState;
+ this._iUsesEulers = usesEulers;
+ this._iUsesCycle = usesCycle;
+ this._iUsesPhase = usesPhase;
+ this._iRadius = radius;
+ this._iCycleDuration = cycleDuration;
+ this._iCyclePhase = cyclePhase;
+ this._iEulers = eulers || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleOrbitNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var orbitRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleOrbitState.ORBIT_INDEX, orbitRegister.index);
+ var eulersMatrixRegister = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleOrbitState.EULERS_INDEX, eulersMatrixRegister.index);
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ var temp1 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp1, 1);
+ var distance = new ShaderRegisterElement(temp1.regName, temp1.index);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ var cos = new ShaderRegisterElement(temp2.regName, temp2.index, 0);
+ var sin = new ShaderRegisterElement(temp2.regName, temp2.index, 1);
+ var degree = new ShaderRegisterElement(temp2.regName, temp2.index, 2);
+ animationRegisterCache.removeVertexTempUsage(temp1);
+ var code = "";
+ if (this._iUsesCycle) {
+ code += "mul " + degree + "," + animationRegisterCache.vertexTime + "," + orbitRegister + ".y\n";
+ if (this._iUsesPhase)
+ code += "add " + degree + "," + degree + "," + orbitRegister + ".w\n";
+ }
+ else
+ code += "mul " + degree + "," + animationRegisterCache.vertexLife + "," + orbitRegister + ".y\n";
+ code += "cos " + cos + "," + degree + "\n";
+ code += "sin " + sin + "," + degree + "\n";
+ code += "mul " + distance + ".x," + cos + "," + orbitRegister + ".x\n";
+ code += "mul " + distance + ".y," + sin + "," + orbitRegister + ".x\n";
+ code += "mov " + distance + ".wz" + animationRegisterCache.vertexZeroConst + "\n";
+ if (this._iUsesEulers)
+ code += "m44 " + distance + "," + distance + "," + eulersMatrixRegister + "\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ if (animationRegisterCache.needVelocity) {
+ code += "neg " + distance + ".x," + sin + "\n";
+ code += "mov " + distance + ".y," + cos + "\n";
+ code += "mov " + distance + ".zw," + animationRegisterCache.vertexZeroConst + "\n";
+ if (this._iUsesEulers)
+ code += "m44 " + distance + "," + distance + "," + eulersMatrixRegister + "\n";
+ code += "mul " + distance + "," + distance + "," + orbitRegister + ".z\n";
+ code += "div " + distance + "," + distance + "," + orbitRegister + ".y\n";
+ if (!this._iUsesCycle)
+ code += "div " + distance + "," + distance + "," + animationRegisterCache.vertexLife + "\n";
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + animationRegisterCache.velocityTarget + ".xyz," + distance + ".xyz\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleOrbitNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleOrbitNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ //Vector3D.x is radius, Vector3D.y is cycle duration, Vector3D.z is phase
+ var orbit = param[ParticleOrbitNode.ORBIT_VECTOR3D];
+ if (!orbit)
+ throw new Error("there is no " + ParticleOrbitNode.ORBIT_VECTOR3D + " in param!");
+ this._pOneData[0] = orbit.x;
+ if (this._iUsesCycle && orbit.y <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._pOneData[1] = Math.PI * 2 / (!this._iUsesCycle ? 1 : orbit.y);
+ this._pOneData[2] = orbit.x * Math.PI * 2;
+ if (this._iUsesPhase)
+ this._pOneData[3] = orbit.z * Math.PI / 180;
+ };
+ /**
+ * Reference for orbit node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the radius (x), cycle speed (y) and cycle phase (z) of the motion on the particle.
+ */
+ ParticleOrbitNode.ORBIT_VECTOR3D = "OrbitVector3D";
+ return ParticleOrbitNode;
+})(ParticleNodeBase);
+module.exports = ParticleOrbitNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleOrbitState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleOscillatorNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleOscillatorState = require("awayjs-renderergl/lib/animators/states/ParticleOscillatorState");
+/**
+ * A particle animation node used to control the position of a particle over time using simple harmonic motion.
+ */
+var ParticleOscillatorNode = (function (_super) {
+ __extends(ParticleOscillatorNode, _super);
+ /**
+ * Creates a new ParticleOscillatorNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.
+ */
+ function ParticleOscillatorNode(mode /*uint*/, oscillator) {
+ if (oscillator === void 0) { oscillator = null; }
+ _super.call(this, "ParticleOscillator", mode, 4);
+ this._pStateClass = ParticleOscillatorState;
+ this._iOscillator = oscillator || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleOscillatorNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var oscillatorRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleOscillatorState.OSCILLATOR_INDEX, oscillatorRegister.index);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ var dgree = new ShaderRegisterElement(temp.regName, temp.index, 0);
+ var sin = new ShaderRegisterElement(temp.regName, temp.index, 1);
+ var cos = new ShaderRegisterElement(temp.regName, temp.index, 2);
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ var distance = new ShaderRegisterElement(temp2.regName, temp2.index);
+ animationRegisterCache.removeVertexTempUsage(temp);
+ var code = "";
+ code += "mul " + dgree + "," + animationRegisterCache.vertexTime + "," + oscillatorRegister + ".w\n";
+ code += "sin " + sin + "," + dgree + "\n";
+ code += "mul " + distance + ".xyz," + sin + "," + oscillatorRegister + ".xyz\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ if (animationRegisterCache.needVelocity) {
+ code += "cos " + cos + "," + dgree + "\n";
+ code += "mul " + distance + ".xyz," + cos + "," + oscillatorRegister + ".xyz\n";
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + distance + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleOscillatorNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleOscillatorNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ //(Vector3D.x,Vector3D.y,Vector3D.z) is oscillator axis, Vector3D.w is oscillator cycle duration
+ var drift = param[ParticleOscillatorNode.OSCILLATOR_VECTOR3D];
+ if (!drift)
+ throw (new Error("there is no " + ParticleOscillatorNode.OSCILLATOR_VECTOR3D + " in param!"));
+ this._pOneData[0] = drift.x;
+ this._pOneData[1] = drift.y;
+ this._pOneData[2] = drift.z;
+ if (drift.w <= 0)
+ throw (new Error("the cycle duration must greater than zero"));
+ this._pOneData[3] = Math.PI * 2 / drift.w;
+ };
+ /**
+ * Reference for ocsillator node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the axis (x,y,z) and cycle speed (w) of the motion on the particle.
+ */
+ ParticleOscillatorNode.OSCILLATOR_VECTOR3D = "OscillatorVector3D";
+ return ParticleOscillatorNode;
+})(ParticleNodeBase);
+module.exports = ParticleOscillatorNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleOscillatorState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticlePositionNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticlePositionState = require("awayjs-renderergl/lib/animators/states/ParticlePositionState");
+/**
+ * A particle animation node used to set the starting position of a particle.
+ */
+var ParticlePositionNode = (function (_super) {
+ __extends(ParticlePositionNode, _super);
+ /**
+ * Creates a new ParticlePositionNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.
+ */
+ function ParticlePositionNode(mode /*uint*/, position) {
+ if (position === void 0) { position = null; }
+ _super.call(this, "ParticlePosition", mode, 3);
+ this._pStateClass = ParticlePositionState;
+ this._iPosition = position || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticlePositionNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var positionAttribute = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticlePositionState.POSITION_INDEX, positionAttribute.index);
+ return "add " + animationRegisterCache.positionTarget + ".xyz," + positionAttribute + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticlePositionNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticlePositionNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var offset = param[ParticlePositionNode.POSITION_VECTOR3D];
+ if (!offset)
+ throw (new Error("there is no " + ParticlePositionNode.POSITION_VECTOR3D + " in param!"));
+ this._pOneData[0] = offset.x;
+ this._pOneData[1] = offset.y;
+ this._pOneData[2] = offset.z;
+ };
+ /**
+ * Reference for position node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing position of the particle.
+ */
+ ParticlePositionNode.POSITION_VECTOR3D = "PositionVector3D";
+ return ParticlePositionNode;
+})(ParticleNodeBase);
+module.exports = ParticlePositionNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticlePositionState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleRotateToHeadingNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleRotateToHeadingState = require("awayjs-renderergl/lib/animators/states/ParticleRotateToHeadingState");
+/**
+ * A particle animation node used to control the rotation of a particle to match its heading vector.
+ */
+var ParticleRotateToHeadingNode = (function (_super) {
+ __extends(ParticleRotateToHeadingNode, _super);
+ /**
+ * Creates a new ParticleBillboardNode
+ */
+ function ParticleRotateToHeadingNode() {
+ _super.call(this, "ParticleRotateToHeading", ParticlePropertiesMode.GLOBAL, 0, 3);
+ this._pStateClass = ParticleRotateToHeadingState;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToHeadingNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ var len = animationRegisterCache.rotationRegisters.length;
+ var i /*int*/;
+ if (animationRegisterCache.hasBillboard) {
+ var temp1 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp1, 1);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp2, 1);
+ var temp3 = animationRegisterCache.getFreeVertexVectorTemp();
+ var rotationMatrixRegister = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleRotateToHeadingState.MATRIX_INDEX, rotationMatrixRegister.index);
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.removeVertexTempUsage(temp1);
+ animationRegisterCache.removeVertexTempUsage(temp2);
+ //process the velocity
+ code += "m33 " + temp1 + ".xyz," + animationRegisterCache.velocityTarget + ".xyz," + rotationMatrixRegister + "\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp3 + ".xy," + temp1 + ".xy\n";
+ code += "nrm " + temp3 + ".xyz," + temp3 + ".xyz\n";
+ //temp3.x=cos,temp3.y=sin
+ //only process z axis
+ code += "mov " + temp2 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp2 + ".x," + temp3 + ".y\n";
+ code += "mov " + temp2 + ".y," + temp3 + ".x\n";
+ code += "mov " + temp1 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp1 + ".x," + temp3 + ".x\n";
+ code += "neg " + temp1 + ".y," + temp3 + ".y\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp3 + ".z," + animationRegisterCache.vertexOneConst + "\n";
+ code += "m33 " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp1 + "\n";
+ for (i = 0; i < len; i++)
+ code += "m33 " + animationRegisterCache.rotationRegisters[i] + ".xyz," + animationRegisterCache.rotationRegisters[i] + "," + temp1 + "\n";
+ }
+ else {
+ var nrmVel = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(nrmVel, 1);
+ var xAxis = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(xAxis, 1);
+ var R = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(R, 1);
+ var R_rev = animationRegisterCache.getFreeVertexVectorTemp();
+ var cos = new ShaderRegisterElement(R.regName, R.index, 3);
+ var sin = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);
+ var cos2 = new ShaderRegisterElement(nrmVel.regName, nrmVel.index, 3);
+ var tempSingle = sin;
+ animationRegisterCache.removeVertexTempUsage(nrmVel);
+ animationRegisterCache.removeVertexTempUsage(xAxis);
+ animationRegisterCache.removeVertexTempUsage(R);
+ code += "mov " + xAxis + ".x," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mov " + xAxis + ".yz," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "nrm " + nrmVel + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ code += "dp3 " + cos2 + "," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "crs " + nrmVel + ".xyz," + xAxis + ".xyz," + nrmVel + ".xyz\n";
+ code += "nrm " + nrmVel + ".xyz," + nrmVel + ".xyz\n";
+ //use R as temp to judge if nrm is (0,0,0).
+ //if nrm is (0,0,0) ,change it to (0,0,1).
+ code += "dp3 " + R + ".x," + nrmVel + ".xyz," + nrmVel + ".xyz\n";
+ code += "sge " + R + ".x," + animationRegisterCache.vertexZeroConst + "," + R + ".x\n";
+ code += "add " + nrmVel + ".z," + R + ".x," + nrmVel + ".z\n";
+ code += "add " + tempSingle + "," + cos2 + "," + animationRegisterCache.vertexOneConst + "\n";
+ code += "div " + tempSingle + "," + tempSingle + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "sqt " + cos + "," + tempSingle + "\n";
+ code += "sub " + tempSingle + "," + animationRegisterCache.vertexOneConst + "," + cos2 + "\n";
+ code += "div " + tempSingle + "," + tempSingle + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "sqt " + sin + "," + tempSingle + "\n";
+ code += "mul " + R + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ //use cos as R.w
+ code += "mul " + R_rev + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "neg " + R_rev + ".xyz," + R_rev + ".xyz\n";
+ //use cos as R_rev.w
+ //nrmVel and xAxis are used as temp register
+ code += "crs " + nrmVel + ".xyz," + R + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ //use cos as R.w
+ code += "mul " + xAxis + ".xyz," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ code += "add " + nrmVel + ".xyz," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "dp3 " + xAxis + ".w," + R + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ code += "neg " + nrmVel + ".w," + xAxis + ".w\n";
+ code += "crs " + R + ".xyz," + nrmVel + ".xyz," + R_rev + ".xyz\n";
+ //code += "mul " + xAxis + ".xyzw," + nrmVel + ".xyzw," +R_rev + ".w\n";
+ code += "mul " + xAxis + ".xyzw," + nrmVel + ".xyzw," + cos + "\n";
+ code += "add " + R + ".xyz," + R + ".xyz," + xAxis + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + nrmVel + ".w," + R_rev + ".xyz\n";
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + R + ".xyz," + xAxis + ".xyz\n";
+ for (i = 0; i < len; i++) {
+ //just repeat the calculate above
+ //because of the limited registers, no need to optimise
+ code += "mov " + xAxis + ".x," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mov " + xAxis + ".yz," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "nrm " + nrmVel + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ code += "dp3 " + cos2 + "," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "crs " + nrmVel + ".xyz," + xAxis + ".xyz," + nrmVel + ".xyz\n";
+ code += "nrm " + nrmVel + ".xyz," + nrmVel + ".xyz\n";
+ code += "dp3 " + R + ".x," + nrmVel + ".xyz," + nrmVel + ".xyz\n";
+ code += "sge " + R + ".x," + animationRegisterCache.vertexZeroConst + "," + R + ".x\n";
+ code += "add " + nrmVel + ".z," + R + ".x," + nrmVel + ".z\n";
+ code += "add " + tempSingle + "," + cos2 + "," + animationRegisterCache.vertexOneConst + "\n";
+ code += "div " + tempSingle + "," + tempSingle + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "sqt " + cos + "," + tempSingle + "\n";
+ code += "sub " + tempSingle + "," + animationRegisterCache.vertexOneConst + "," + cos2 + "\n";
+ code += "div " + tempSingle + "," + tempSingle + "," + animationRegisterCache.vertexTwoConst + "\n";
+ code += "sqt " + sin + "," + tempSingle + "\n";
+ code += "mul " + R + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "mul " + R_rev + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "neg " + R_rev + ".xyz," + R_rev + ".xyz\n";
+ code += "crs " + nrmVel + ".xyz," + R + ".xyz," + animationRegisterCache.rotationRegisters[i] + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + cos + "," + animationRegisterCache.rotationRegisters[i] + ".xyz\n";
+ code += "add " + nrmVel + ".xyz," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "dp3 " + xAxis + ".w," + R + ".xyz," + animationRegisterCache.rotationRegisters[i] + ".xyz\n";
+ code += "neg " + nrmVel + ".w," + xAxis + ".w\n";
+ code += "crs " + R + ".xyz," + nrmVel + ".xyz," + R_rev + ".xyz\n";
+ code += "mul " + xAxis + ".xyzw," + nrmVel + ".xyzw," + cos + "\n";
+ code += "add " + R + ".xyz," + R + ".xyz," + xAxis + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + nrmVel + ".w," + R_rev + ".xyz\n";
+ code += "add " + animationRegisterCache.rotationRegisters[i] + ".xyz," + R + ".xyz," + xAxis + ".xyz\n";
+ }
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToHeadingNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToHeadingNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ particleAnimationSet.needVelocity = true;
+ };
+ return ParticleRotateToHeadingNode;
+})(ParticleNodeBase);
+module.exports = ParticleRotateToHeadingNode;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleRotateToHeadingState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleRotateToPositionNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleRotateToPositionState = require("awayjs-renderergl/lib/animators/states/ParticleRotateToPositionState");
+/**
+ * A particle animation node used to control the rotation of a particle to face to a position
+ */
+var ParticleRotateToPositionNode = (function (_super) {
+ __extends(ParticleRotateToPositionNode, _super);
+ /**
+ * Creates a new ParticleRotateToPositionNode
+ */
+ function ParticleRotateToPositionNode(mode /*uint*/, position) {
+ if (position === void 0) { position = null; }
+ _super.call(this, "ParticleRotateToPosition", mode, 3, 3);
+ this._pStateClass = ParticleRotateToPositionState;
+ this._iPosition = position || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToPositionNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var positionAttribute = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleRotateToPositionState.POSITION_INDEX, positionAttribute.index);
+ var code = "";
+ var len = animationRegisterCache.rotationRegisters.length;
+ var i /*int*/;
+ if (animationRegisterCache.hasBillboard) {
+ var temp1 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp1, 1);
+ var temp2 = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp2, 1);
+ var temp3 = animationRegisterCache.getFreeVertexVectorTemp();
+ var rotationMatrixRegister = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleRotateToPositionState.MATRIX_INDEX, rotationMatrixRegister.index);
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.removeVertexTempUsage(temp1);
+ animationRegisterCache.removeVertexTempUsage(temp2);
+ //process the position
+ code += "sub " + temp1 + ".xyz," + positionAttribute + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ code += "m33 " + temp1 + ".xyz," + temp1 + ".xyz," + rotationMatrixRegister + "\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp3 + ".xy," + temp1 + ".xy\n";
+ code += "nrm " + temp3 + ".xyz," + temp3 + ".xyz\n";
+ //temp3.x=cos,temp3.y=sin
+ //only process z axis
+ code += "mov " + temp2 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp2 + ".x," + temp3 + ".y\n";
+ code += "mov " + temp2 + ".y," + temp3 + ".x\n";
+ code += "mov " + temp1 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp1 + ".x," + temp3 + ".x\n";
+ code += "neg " + temp1 + ".y," + temp3 + ".y\n";
+ code += "mov " + temp3 + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mov " + temp3 + ".z," + animationRegisterCache.vertexOneConst + "\n";
+ code += "m33 " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp1 + "\n";
+ for (i = 0; i < len; i++)
+ code += "m33 " + animationRegisterCache.rotationRegisters[i] + ".xyz," + animationRegisterCache.rotationRegisters[i] + "," + temp1 + "\n";
+ }
+ else {
+ var nrmDirection = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(nrmDirection, 1);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var cos = new ShaderRegisterElement(temp.regName, temp.index, 0);
+ var sin = new ShaderRegisterElement(temp.regName, temp.index, 1);
+ var o_temp = new ShaderRegisterElement(temp.regName, temp.index, 2);
+ var tempSingle = new ShaderRegisterElement(temp.regName, temp.index, 3);
+ var R = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(R, 1);
+ animationRegisterCache.removeVertexTempUsage(nrmDirection);
+ animationRegisterCache.removeVertexTempUsage(temp);
+ animationRegisterCache.removeVertexTempUsage(R);
+ code += "sub " + nrmDirection + ".xyz," + positionAttribute + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ code += "nrm " + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "mov " + sin + "," + nrmDirection + ".y\n";
+ code += "mul " + cos + "," + sin + "," + sin + "\n";
+ code += "sub " + cos + "," + animationRegisterCache.vertexOneConst + "," + cos + "\n";
+ code += "sqt " + cos + "," + cos + "\n";
+ code += "mul " + R + ".x," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".y\n";
+ code += "mul " + R + ".y," + sin + "," + animationRegisterCache.scaleAndRotateTarget + ".z\n";
+ code += "mul " + R + ".z," + sin + "," + animationRegisterCache.scaleAndRotateTarget + ".y\n";
+ code += "mul " + R + ".w," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".z\n";
+ code += "sub " + animationRegisterCache.scaleAndRotateTarget + ".y," + R + ".x," + R + ".y\n";
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".z," + R + ".z," + R + ".w\n";
+ code += "abs " + R + ".y," + nrmDirection + ".y\n";
+ code += "sge " + R + ".z," + R + ".y," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mul " + R + ".x," + R + ".y," + nrmDirection + ".y\n";
+ //judgu if nrmDirection=(0,1,0);
+ code += "mov " + nrmDirection + ".y," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "dp3 " + sin + "," + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "sge " + tempSingle + "," + animationRegisterCache.vertexZeroConst + "," + sin + "\n";
+ code += "mov " + nrmDirection + ".y," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "nrm " + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "sub " + sin + "," + animationRegisterCache.vertexOneConst + "," + tempSingle + "\n";
+ code += "mul " + sin + "," + sin + "," + nrmDirection + ".x\n";
+ code += "mov " + cos + "," + nrmDirection + ".z\n";
+ code += "neg " + cos + "," + cos + "\n";
+ code += "sub " + o_temp + "," + animationRegisterCache.vertexOneConst + "," + cos + "\n";
+ code += "mul " + o_temp + "," + R + ".x," + tempSingle + "\n";
+ code += "add " + cos + "," + cos + "," + o_temp + "\n";
+ code += "mul " + R + ".x," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".x\n";
+ code += "mul " + R + ".y," + sin + "," + animationRegisterCache.scaleAndRotateTarget + ".z\n";
+ code += "mul " + R + ".z," + sin + "," + animationRegisterCache.scaleAndRotateTarget + ".x\n";
+ code += "mul " + R + ".w," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".z\n";
+ code += "sub " + animationRegisterCache.scaleAndRotateTarget + ".x," + R + ".x," + R + ".y\n";
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".z," + R + ".z," + R + ".w\n";
+ for (i = 0; i < len; i++) {
+ //just repeat the calculate above
+ //because of the limited registers, no need to optimise
+ code += "sub " + nrmDirection + ".xyz," + positionAttribute + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
+ code += "nrm " + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "mov " + sin + "," + nrmDirection + ".y\n";
+ code += "mul " + cos + "," + sin + "," + sin + "\n";
+ code += "sub " + cos + "," + animationRegisterCache.vertexOneConst + "," + cos + "\n";
+ code += "sqt " + cos + "," + cos + "\n";
+ code += "mul " + R + ".x," + cos + "," + animationRegisterCache.rotationRegisters[i] + ".y\n";
+ code += "mul " + R + ".y," + sin + "," + animationRegisterCache.rotationRegisters[i] + ".z\n";
+ code += "mul " + R + ".z," + sin + "," + animationRegisterCache.rotationRegisters[i] + ".y\n";
+ code += "mul " + R + ".w," + cos + "," + animationRegisterCache.rotationRegisters[i] + ".z\n";
+ code += "sub " + animationRegisterCache.rotationRegisters[i] + ".y," + R + ".x," + R + ".y\n";
+ code += "add " + animationRegisterCache.rotationRegisters[i] + ".z," + R + ".z," + R + ".w\n";
+ code += "abs " + R + ".y," + nrmDirection + ".y\n";
+ code += "sge " + R + ".z," + R + ".y," + animationRegisterCache.vertexOneConst + "\n";
+ code += "mul " + R + ".x," + R + ".y," + nrmDirection + ".y\n";
+ code += "mov " + nrmDirection + ".y," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "dp3 " + sin + "," + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "sge " + tempSingle + "," + animationRegisterCache.vertexZeroConst + "," + sin + "\n";
+ code += "mov " + nrmDirection + ".y," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "nrm " + nrmDirection + ".xyz," + nrmDirection + ".xyz\n";
+ code += "sub " + sin + "," + animationRegisterCache.vertexOneConst + "," + tempSingle + "\n";
+ code += "mul " + sin + "," + sin + "," + nrmDirection + ".x\n";
+ code += "mov " + cos + "," + nrmDirection + ".z\n";
+ code += "neg " + cos + "," + cos + "\n";
+ code += "sub " + o_temp + "," + animationRegisterCache.vertexOneConst + "," + cos + "\n";
+ code += "mul " + o_temp + "," + R + ".x," + tempSingle + "\n";
+ code += "add " + cos + "," + cos + "," + o_temp + "\n";
+ code += "mul " + R + ".x," + cos + "," + animationRegisterCache.rotationRegisters[i] + ".x\n";
+ code += "mul " + R + ".y," + sin + "," + animationRegisterCache.rotationRegisters[i] + ".z\n";
+ code += "mul " + R + ".z," + sin + "," + animationRegisterCache.rotationRegisters[i] + ".x\n";
+ code += "mul " + R + ".w," + cos + "," + animationRegisterCache.rotationRegisters[i] + ".z\n";
+ code += "sub " + animationRegisterCache.rotationRegisters[i] + ".x," + R + ".x," + R + ".y\n";
+ code += "add " + animationRegisterCache.rotationRegisters[i] + ".z," + R + ".z," + R + ".w\n";
+ }
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToPositionNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotateToPositionNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var offset = param[ParticleRotateToPositionNode.POSITION_VECTOR3D];
+ if (!offset)
+ throw (new Error("there is no " + ParticleRotateToPositionNode.POSITION_VECTOR3D + " in param!"));
+ this._pOneData[0] = offset.x;
+ this._pOneData[1] = offset.y;
+ this._pOneData[2] = offset.z;
+ };
+ /**
+ * Reference for the position the particle will rotate to face for a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the position that the particle must face.
+ */
+ ParticleRotateToPositionNode.POSITION_VECTOR3D = "RotateToPositionVector3D";
+ return ParticleRotateToPositionNode;
+})(ParticleNodeBase);
+module.exports = ParticleRotateToPositionNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleRotateToPositionState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleRotationalVelocityNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleRotationalVelocityState = require("awayjs-renderergl/lib/animators/states/ParticleRotationalVelocityState");
+/**
+ * A particle animation node used to set the starting rotational velocity of a particle.
+ */
+var ParticleRotationalVelocityNode = (function (_super) {
+ __extends(ParticleRotationalVelocityNode, _super);
+ /**
+ * Creates a new ParticleRotationalVelocityNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ */
+ function ParticleRotationalVelocityNode(mode /*uint*/, rotationalVelocity) {
+ if (rotationalVelocity === void 0) { rotationalVelocity = null; }
+ _super.call(this, "ParticleRotationalVelocity", mode, 4);
+ this._pStateClass = ParticleRotationalVelocityState;
+ this._iRotationalVelocity = rotationalVelocity || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleRotationalVelocityNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var rotationRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX, rotationRegister.index);
+ var nrmVel = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(nrmVel, 1);
+ var xAxis = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(xAxis, 1);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(temp, 1);
+ var Rtemp = new ShaderRegisterElement(temp.regName, temp.index);
+ var R_rev = animationRegisterCache.getFreeVertexVectorTemp();
+ R_rev = new ShaderRegisterElement(R_rev.regName, R_rev.index);
+ var cos = new ShaderRegisterElement(Rtemp.regName, Rtemp.index, 3);
+ var sin = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);
+ animationRegisterCache.removeVertexTempUsage(nrmVel);
+ animationRegisterCache.removeVertexTempUsage(xAxis);
+ animationRegisterCache.removeVertexTempUsage(temp);
+ var code = "";
+ code += "mov " + nrmVel + ".xyz," + rotationRegister + ".xyz\n";
+ code += "mov " + nrmVel + ".w," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mul " + cos + "," + animationRegisterCache.vertexTime + "," + rotationRegister + ".w\n";
+ code += "sin " + sin + "," + cos + "\n";
+ code += "cos " + cos + "," + cos + "\n";
+ code += "mul " + Rtemp + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "mul " + R_rev + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "neg " + R_rev + ".xyz," + R_rev + ".xyz\n";
+ //nrmVel and xAxis are used as temp register
+ code += "crs " + nrmVel + ".xyz," + Rtemp + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + cos + "," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ code += "add " + nrmVel + ".xyz," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "dp3 " + xAxis + ".w," + Rtemp + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz\n";
+ code += "neg " + nrmVel + ".w," + xAxis + ".w\n";
+ code += "crs " + Rtemp + ".xyz," + nrmVel + ".xyz," + R_rev + ".xyz\n";
+ //use cos as R_rev.w
+ code += "mul " + xAxis + ".xyzw," + nrmVel + ".xyzw," + cos + "\n";
+ code += "add " + Rtemp + ".xyz," + Rtemp + ".xyz," + xAxis + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + nrmVel + ".w," + R_rev + ".xyz\n";
+ code += "add " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + Rtemp + ".xyz," + xAxis + ".xyz\n";
+ var len = animationRegisterCache.rotationRegisters.length;
+ for (var i = 0; i < len; i++) {
+ code += "mov " + nrmVel + ".xyz," + rotationRegister + ".xyz\n";
+ code += "mov " + nrmVel + ".w," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mul " + cos + "," + animationRegisterCache.vertexTime + "," + rotationRegister + ".w\n";
+ code += "sin " + sin + "," + cos + "\n";
+ code += "cos " + cos + "," + cos + "\n";
+ code += "mul " + Rtemp + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "mul " + R_rev + ".xyz," + sin + "," + nrmVel + ".xyz\n";
+ code += "neg " + R_rev + ".xyz," + R_rev + ".xyz\n";
+ code += "crs " + nrmVel + ".xyz," + Rtemp + ".xyz," + animationRegisterCache.rotationRegisters[i] + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + cos + "," + animationRegisterCache.rotationRegisters[i] + "\n";
+ code += "add " + nrmVel + ".xyz," + nrmVel + ".xyz," + xAxis + ".xyz\n";
+ code += "dp3 " + xAxis + ".w," + Rtemp + ".xyz," + animationRegisterCache.rotationRegisters[i] + "\n";
+ code += "neg " + nrmVel + ".w," + xAxis + ".w\n";
+ code += "crs " + Rtemp + ".xyz," + nrmVel + ".xyz," + R_rev + ".xyz\n";
+ code += "mul " + xAxis + ".xyzw," + nrmVel + ".xyzw," + cos + "\n";
+ code += "add " + Rtemp + ".xyz," + Rtemp + ".xyz," + xAxis + ".xyz\n";
+ code += "mul " + xAxis + ".xyz," + nrmVel + ".w," + R_rev + ".xyz\n";
+ code += "add " + animationRegisterCache.rotationRegisters[i] + "," + Rtemp + ".xyz," + xAxis + ".xyz\n";
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotationalVelocityNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotationalVelocityNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ //(Vector3d.x,Vector3d.y,Vector3d.z) is rotation axis,Vector3d.w is cycle duration
+ var rotate = param[ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D];
+ if (!rotate)
+ throw (new Error("there is no " + ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D + " in param!"));
+ if (rotate.length <= 0)
+ rotate.z = 1; //set the default direction
+ else
+ rotate.normalize();
+ this._pOneData[0] = rotate.x;
+ this._pOneData[1] = rotate.y;
+ this._pOneData[2] = rotate.z;
+ if (rotate.w <= 0)
+ throw (new Error("the cycle duration must greater than zero"));
+ // it's used as angle/2 in agal
+ this._pOneData[3] = Math.PI / rotate.w;
+ };
+ /**
+ * Reference for rotational velocity node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the rotational velocity around an axis of the particle.
+ */
+ ParticleRotationalVelocityNode.ROTATIONALVELOCITY_VECTOR3D = "RotationalVelocityVector3D";
+ return ParticleRotationalVelocityNode;
+})(ParticleNodeBase);
+module.exports = ParticleRotationalVelocityNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleRotationalVelocityState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleScaleNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleScaleState = require("awayjs-renderergl/lib/animators/states/ParticleScaleState");
+/**
+ * A particle animation node used to control the scale variation of a particle over time.
+ */
+var ParticleScaleNode = (function (_super) {
+ __extends(ParticleScaleNode, _super);
+ /**
+ * Creates a new ParticleScaleNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of animation independent of particle duration. Defaults to false.
+ * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the animation cycle. Defaults to false.
+ * @param [optional] minScale Defines the default min scale transform of the node, when in global mode. Defaults to 1.
+ * @param [optional] maxScale Defines the default max color transform of the node, when in global mode. Defaults to 1.
+ * @param [optional] cycleDuration Defines the default duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the default phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ function ParticleScaleNode(mode /*uint*/, usesCycle, usesPhase, minScale, maxScale, cycleDuration, cyclePhase) {
+ if (minScale === void 0) { minScale = 1; }
+ if (maxScale === void 0) { maxScale = 1; }
+ if (cycleDuration === void 0) { cycleDuration = 1; }
+ if (cyclePhase === void 0) { cyclePhase = 0; }
+ _super.call(this, "ParticleScale", mode, (usesCycle && usesPhase) ? 4 : ((usesCycle || usesPhase) ? 3 : 2), 3);
+ this._pStateClass = ParticleScaleState;
+ this._iUsesCycle = usesCycle;
+ this._iUsesPhase = usesPhase;
+ this._iMinScale = minScale;
+ this._iMaxScale = maxScale;
+ this._iCycleDuration = cycleDuration;
+ this._iCyclePhase = cyclePhase;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleScaleNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ var temp = animationRegisterCache.getFreeVertexSingleTemp();
+ var scaleRegister = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleScaleState.SCALE_INDEX, scaleRegister.index);
+ if (this._iUsesCycle) {
+ code += "mul " + temp + "," + animationRegisterCache.vertexTime + "," + scaleRegister + ".z\n";
+ if (this._iUsesPhase)
+ code += "add " + temp + "," + temp + "," + scaleRegister + ".w\n";
+ code += "sin " + temp + "," + temp + "\n";
+ }
+ code += "mul " + temp + "," + scaleRegister + ".y," + ((this._iUsesCycle) ? temp : animationRegisterCache.vertexLife) + "\n";
+ code += "add " + temp + "," + scaleRegister + ".x," + temp + "\n";
+ code += "mul " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp + "\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleScaleNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleScaleNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var scale = param[ParticleScaleNode.SCALE_VECTOR3D];
+ if (!scale)
+ throw (new Error("there is no " + ParticleScaleNode.SCALE_VECTOR3D + " in param!"));
+ if (this._iUsesCycle) {
+ this._pOneData[0] = (scale.x + scale.y) / 2;
+ this._pOneData[1] = Math.abs(scale.x - scale.y) / 2;
+ if (scale.z <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._pOneData[2] = Math.PI * 2 / scale.z;
+ if (this._iUsesPhase)
+ this._pOneData[3] = scale.w * Math.PI / 180;
+ }
+ else {
+ this._pOneData[0] = scale.x;
+ this._pOneData[1] = scale.y - scale.x;
+ }
+ };
+ /**
+ * Reference for scale node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
representing the min scale (x), max scale(y), optional cycle speed (z) and phase offset (w) applied to the particle.
+ */
+ ParticleScaleNode.SCALE_VECTOR3D = "ScaleVector3D";
+ return ParticleScaleNode;
+})(ParticleNodeBase);
+module.exports = ParticleScaleNode;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleScaleState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleSegmentedColorNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleSegmentedColorState = require("awayjs-renderergl/lib/animators/states/ParticleSegmentedColorState");
+/**
+ *
+ */
+var ParticleSegmentedColorNode = (function (_super) {
+ __extends(ParticleSegmentedColorNode, _super);
+ function ParticleSegmentedColorNode(usesMultiplier, usesOffset, numSegmentPoint /*int*/, startColor, endColor, segmentPoints) {
+ //because of the stage3d register limitation, it only support the global mode
+ _super.call(this, "ParticleSegmentedColor", ParticlePropertiesMode.GLOBAL, 0, ParticleAnimationSet.COLOR_PRIORITY);
+ this._pStateClass = ParticleSegmentedColorState;
+ if (numSegmentPoint > 4)
+ throw (new Error("the numSegmentPoint must be less or equal 4"));
+ this._iUsesMultiplier = usesMultiplier;
+ this._iUsesOffset = usesOffset;
+ this._iNumSegmentPoint = numSegmentPoint;
+ this._iStartColor = startColor;
+ this._iEndColor = endColor;
+ this._iSegmentPoints = segmentPoints;
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleSegmentedColorNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ if (this._iUsesMultiplier)
+ particleAnimationSet.hasColorMulNode = true;
+ if (this._iUsesOffset)
+ particleAnimationSet.hasColorAddNode = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleSegmentedColorNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ if (animationRegisterCache.needFragmentAnimation) {
+ var accMultiplierColor;
+ //var accOffsetColor:ShaderRegisterElement;
+ if (this._iUsesMultiplier) {
+ accMultiplierColor = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(accMultiplierColor, 1);
+ }
+ var tempColor = animationRegisterCache.getFreeVertexVectorTemp();
+ animationRegisterCache.addVertexTempUsages(tempColor, 1);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ var accTime = new ShaderRegisterElement(temp.regName, temp.index, 0);
+ var tempTime = new ShaderRegisterElement(temp.regName, temp.index, 1);
+ if (this._iUsesMultiplier)
+ animationRegisterCache.removeVertexTempUsage(accMultiplierColor);
+ animationRegisterCache.removeVertexTempUsage(tempColor);
+ //for saving all the life values (at most 4)
+ var lifeTimeRegister = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleSegmentedColorState.TIME_DATA_INDEX, lifeTimeRegister.index);
+ var i /*int*/;
+ var startMulValue;
+ var deltaMulValues;
+ if (this._iUsesMultiplier) {
+ startMulValue = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleSegmentedColorState.START_MULTIPLIER_INDEX, startMulValue.index);
+ deltaMulValues = new Array();
+ for (i = 0; i < this._iNumSegmentPoint + 1; i++)
+ deltaMulValues.push(animationRegisterCache.getFreeVertexConstant());
+ }
+ var startOffsetValue;
+ var deltaOffsetValues;
+ if (this._iUsesOffset) {
+ startOffsetValue = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleSegmentedColorState.START_OFFSET_INDEX, startOffsetValue.index);
+ deltaOffsetValues = new Array();
+ for (i = 0; i < this._iNumSegmentPoint + 1; i++)
+ deltaOffsetValues.push(animationRegisterCache.getFreeVertexConstant());
+ }
+ if (this._iUsesMultiplier)
+ code += "mov " + accMultiplierColor + "," + startMulValue + "\n";
+ if (this._iUsesOffset)
+ code += "add " + animationRegisterCache.colorAddTarget + "," + animationRegisterCache.colorAddTarget + "," + startOffsetValue + "\n";
+ for (i = 0; i < this._iNumSegmentPoint; i++) {
+ switch (i) {
+ case 0:
+ code += "min " + tempTime + "," + animationRegisterCache.vertexLife + "," + lifeTimeRegister + ".x\n";
+ break;
+ case 1:
+ code += "sub " + accTime + "," + animationRegisterCache.vertexLife + "," + lifeTimeRegister + ".x\n";
+ code += "max " + tempTime + "," + accTime + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "min " + tempTime + "," + tempTime + "," + lifeTimeRegister + ".y\n";
+ break;
+ case 2:
+ code += "sub " + accTime + "," + accTime + "," + lifeTimeRegister + ".y\n";
+ code += "max " + tempTime + "," + accTime + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "min " + tempTime + "," + tempTime + "," + lifeTimeRegister + ".z\n";
+ break;
+ case 3:
+ code += "sub " + accTime + "," + accTime + "," + lifeTimeRegister + ".z\n";
+ code += "max " + tempTime + "," + accTime + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "min " + tempTime + "," + tempTime + "," + lifeTimeRegister + ".w\n";
+ break;
+ }
+ if (this._iUsesMultiplier) {
+ code += "mul " + tempColor + "," + tempTime + "," + deltaMulValues[i] + "\n";
+ code += "add " + accMultiplierColor + "," + accMultiplierColor + "," + tempColor + "\n";
+ }
+ if (this._iUsesOffset) {
+ code += "mul " + tempColor + "," + tempTime + "," + deltaOffsetValues[i] + "\n";
+ code += "add " + animationRegisterCache.colorAddTarget + "," + animationRegisterCache.colorAddTarget + "," + tempColor + "\n";
+ }
+ }
+ //for the last segment:
+ if (this._iNumSegmentPoint == 0)
+ tempTime = animationRegisterCache.vertexLife;
+ else {
+ switch (this._iNumSegmentPoint) {
+ case 1:
+ code += "sub " + accTime + "," + animationRegisterCache.vertexLife + "," + lifeTimeRegister + ".x\n";
+ break;
+ case 2:
+ code += "sub " + accTime + "," + accTime + "," + lifeTimeRegister + ".y\n";
+ break;
+ case 3:
+ code += "sub " + accTime + "," + accTime + "," + lifeTimeRegister + ".z\n";
+ break;
+ case 4:
+ code += "sub " + accTime + "," + accTime + "," + lifeTimeRegister + ".w\n";
+ break;
+ }
+ code += "max " + tempTime + "," + accTime + "," + animationRegisterCache.vertexZeroConst + "\n";
+ }
+ if (this._iUsesMultiplier) {
+ code += "mul " + tempColor + "," + tempTime + "," + deltaMulValues[this._iNumSegmentPoint] + "\n";
+ code += "add " + accMultiplierColor + "," + accMultiplierColor + "," + tempColor + "\n";
+ code += "mul " + animationRegisterCache.colorMulTarget + "," + animationRegisterCache.colorMulTarget + "," + accMultiplierColor + "\n";
+ }
+ if (this._iUsesOffset) {
+ code += "mul " + tempColor + "," + tempTime + "," + deltaOffsetValues[this._iNumSegmentPoint] + "\n";
+ code += "add " + animationRegisterCache.colorAddTarget + "," + animationRegisterCache.colorAddTarget + "," + tempColor + "\n";
+ }
+ }
+ return code;
+ };
+ return ParticleSegmentedColorNode;
+})(ParticleNodeBase);
+module.exports = ParticleSegmentedColorNode;
+
+
+},{"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleSegmentedColorState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleSpriteSheetNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleSpriteSheetState = require("awayjs-renderergl/lib/animators/states/ParticleSpriteSheetState");
+/**
+ * A particle animation node used when a spritesheet texture is required to animate the particle.
+ * NB: to enable use of this node, the repeat
property on the material has to be set to true.
+ */
+var ParticleSpriteSheetNode = (function (_super) {
+ __extends(ParticleSpriteSheetNode, _super);
+ /**
+ * Creates a new ParticleSpriteSheetNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] numColumns Defines the number of columns in the spritesheet, when in global mode. Defaults to 1.
+ * @param [optional] numRows Defines the number of rows in the spritesheet, when in global mode. Defaults to 1.
+ * @param [optional] cycleDuration Defines the default cycle duration in seconds, when in global mode. Defaults to 1.
+ * @param [optional] cyclePhase Defines the default cycle phase, when in global mode. Defaults to 0.
+ * @param [optional] totalFrames Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows.
+ * @param [optional] looping Defines whether the spritesheet animation is set to loop indefinitely. Defaults to true.
+ */
+ function ParticleSpriteSheetNode(mode /*uint*/, usesCycle, usesPhase, numColumns, numRows, cycleDuration, cyclePhase, totalFrames) {
+ if (numColumns === void 0) { numColumns = 1; }
+ if (numRows === void 0) { numRows = 1; }
+ if (cycleDuration === void 0) { cycleDuration = 1; }
+ if (cyclePhase === void 0) { cyclePhase = 0; }
+ if (totalFrames === void 0) { totalFrames = Number.MAX_VALUE; }
+ _super.call(this, "ParticleSpriteSheet", mode, usesCycle ? (usesPhase ? 3 : 2) : 1, ParticleAnimationSet.POST_PRIORITY + 1);
+ this._pStateClass = ParticleSpriteSheetState;
+ this._iUsesCycle = usesCycle;
+ this._iUsesPhase = usesPhase;
+ this._iNumColumns = numColumns;
+ this._iNumRows = numRows;
+ this._iCyclePhase = cyclePhase;
+ this._iCycleDuration = cycleDuration;
+ this._iTotalFrames = Math.min(totalFrames, numColumns * numRows);
+ }
+ Object.defineProperty(ParticleSpriteSheetNode.prototype, "numColumns", {
+ /**
+ * Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. Read only.
+ */
+ get: function () {
+ return this._iNumColumns;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSpriteSheetNode.prototype, "numRows", {
+ /**
+ * Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. Read only.
+ */
+ get: function () {
+ return this._iNumRows;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSpriteSheetNode.prototype, "totalFrames", {
+ /**
+ * Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. Read only.
+ */
+ get: function () {
+ return this._iTotalFrames;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleSpriteSheetNode.prototype.getAGALUVCode = function (shaderObject, animationRegisterCache) {
+ //get 2 vc
+ var uvParamConst1 = animationRegisterCache.getFreeVertexConstant();
+ var uvParamConst2 = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_0, uvParamConst1.index);
+ animationRegisterCache.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_1, uvParamConst2.index);
+ var uTotal = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 0);
+ var uStep = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 1);
+ var vStep = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 2);
+ var uSpeed = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 0);
+ var cycle = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 1);
+ var phaseTime = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 2);
+ var temp = animationRegisterCache.getFreeVertexVectorTemp();
+ var time = new ShaderRegisterElement(temp.regName, temp.index, 0);
+ var vOffset = new ShaderRegisterElement(temp.regName, temp.index, 1);
+ temp = new ShaderRegisterElement(temp.regName, temp.index, 2);
+ var temp2 = new ShaderRegisterElement(temp.regName, temp.index, 3);
+ var u = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, 0);
+ var v = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, 1);
+ var code = "";
+ //scale uv
+ code += "mul " + u + "," + u + "," + uStep + "\n";
+ if (this._iNumRows > 1)
+ code += "mul " + v + "," + v + "," + vStep + "\n";
+ if (this._iUsesCycle) {
+ if (this._iUsesPhase)
+ code += "add " + time + "," + animationRegisterCache.vertexTime + "," + phaseTime + "\n";
+ else
+ code += "mov " + time + "," + animationRegisterCache.vertexTime + "\n";
+ code += "div " + time + "," + time + "," + cycle + "\n";
+ code += "frc " + time + "," + time + "\n";
+ code += "mul " + time + "," + time + "," + cycle + "\n";
+ code += "mul " + temp + "," + time + "," + uSpeed + "\n";
+ }
+ else
+ code += "mul " + temp.toString() + "," + animationRegisterCache.vertexLife + "," + uTotal + "\n";
+ if (this._iNumRows > 1) {
+ code += "frc " + temp2 + "," + temp + "\n";
+ code += "sub " + vOffset + "," + temp + "," + temp2 + "\n";
+ code += "mul " + vOffset + "," + vOffset + "," + vStep + "\n";
+ code += "add " + v + "," + v + "," + vOffset + "\n";
+ }
+ code += "div " + temp2 + "," + temp + "," + uStep + "\n";
+ code += "frc " + temp + "," + temp2 + "\n";
+ code += "sub " + temp2 + "," + temp2 + "," + temp + "\n";
+ code += "mul " + temp + "," + temp2 + "," + uStep + "\n";
+ if (this._iNumRows > 1)
+ code += "frc " + temp + "," + temp + "\n";
+ code += "add " + u + "," + u + "," + temp + "\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleSpriteSheetNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleSpriteSheetNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ particleAnimationSet.hasUVNode = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleSpriteSheetNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ if (this._iUsesCycle) {
+ var uvCycle = param[ParticleSpriteSheetNode.UV_VECTOR3D];
+ if (!uvCycle)
+ throw (new Error("there is no " + ParticleSpriteSheetNode.UV_VECTOR3D + " in param!"));
+ if (uvCycle.x <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ var uTotal = this._iTotalFrames / this._iNumColumns;
+ this._pOneData[0] = uTotal / uvCycle.x;
+ this._pOneData[1] = uvCycle.x;
+ if (this._iUsesPhase)
+ this._pOneData[2] = uvCycle.y;
+ }
+ };
+ /**
+ * Reference for spritesheet node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
representing the cycleDuration (x), optional phaseTime (y).
+ */
+ ParticleSpriteSheetNode.UV_VECTOR3D = "UVVector3D";
+ return ParticleSpriteSheetNode;
+})(ParticleNodeBase);
+module.exports = ParticleSpriteSheetNode;
+
+
+},{"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleSpriteSheetState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleTimeNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleTimeState = require("awayjs-renderergl/lib/animators/states/ParticleTimeState");
+/**
+ * A particle animation node used as the base node for timekeeping inside a particle. Automatically added to a particle animation set on instatiation.
+ */
+var ParticleTimeNode = (function (_super) {
+ __extends(ParticleTimeNode, _super);
+ /**
+ * Creates a new ParticleTimeNode
+ *
+ * @param [optional] usesDuration Defines whether the node uses the duration
data in the static properties to determine how long a particle is visible for. Defaults to false.
+ * @param [optional] usesDelay Defines whether the node uses the delay
data in the static properties to determine how long a particle is hidden for. Defaults to false. Requires usesDuration
to be true.
+ * @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime
, duration
and delay
data in the static properties function. Defaults to false. Requires usesLooping
to be true.
+ */
+ function ParticleTimeNode(usesDuration, usesLooping, usesDelay) {
+ if (usesDuration === void 0) { usesDuration = false; }
+ if (usesLooping === void 0) { usesLooping = false; }
+ if (usesDelay === void 0) { usesDelay = false; }
+ this._pStateClass = ParticleTimeState;
+ this._iUsesDuration = usesDuration;
+ this._iUsesLooping = usesLooping;
+ this._iUsesDelay = usesDelay;
+ _super.call(this, "ParticleTime", ParticlePropertiesMode.LOCAL_STATIC, 4, 0);
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleTimeNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var timeStreamRegister = animationRegisterCache.getFreeVertexAttribute(); //timeStreamRegister.x is start,timeStreamRegister.y is during time
+ animationRegisterCache.setRegisterIndex(this, ParticleTimeState.TIME_STREAM_INDEX, timeStreamRegister.index);
+ var timeConst = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleTimeState.TIME_CONSTANT_INDEX, timeConst.index);
+ var code = "";
+ code += "sub " + animationRegisterCache.vertexTime + "," + timeConst + "," + timeStreamRegister + ".x\n";
+ //if time=0,set the position to zero.
+ var temp = animationRegisterCache.getFreeVertexSingleTemp();
+ code += "sge " + temp + "," + animationRegisterCache.vertexTime + "," + animationRegisterCache.vertexZeroConst + "\n";
+ code += "mul " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + temp + "\n";
+ if (this._iUsesDuration) {
+ if (this._iUsesLooping) {
+ var div = animationRegisterCache.getFreeVertexSingleTemp();
+ if (this._iUsesDelay) {
+ code += "div " + div + "," + animationRegisterCache.vertexTime + "," + timeStreamRegister + ".z\n";
+ code += "frc " + div + "," + div + "\n";
+ code += "mul " + animationRegisterCache.vertexTime + "," + div + "," + timeStreamRegister + ".z\n";
+ code += "slt " + div + "," + animationRegisterCache.vertexTime + "," + timeStreamRegister + ".y\n";
+ code += "mul " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + div + "\n";
+ }
+ else {
+ code += "mul " + div + "," + animationRegisterCache.vertexTime + "," + timeStreamRegister + ".w\n";
+ code += "frc " + div + "," + div + "\n";
+ code += "mul " + animationRegisterCache.vertexTime + "," + div + "," + timeStreamRegister + ".y\n";
+ }
+ }
+ else {
+ var sge = animationRegisterCache.getFreeVertexSingleTemp();
+ code += "sge " + sge + "," + timeStreamRegister + ".y," + animationRegisterCache.vertexTime + "\n";
+ code += "mul " + animationRegisterCache.scaleAndRotateTarget + ".xyz," + animationRegisterCache.scaleAndRotateTarget + ".xyz," + sge + "\n";
+ }
+ }
+ code += "mul " + animationRegisterCache.vertexLife + "," + animationRegisterCache.vertexTime + "," + timeStreamRegister + ".w\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleTimeNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleTimeNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ this._pOneData[0] = param.startTime;
+ this._pOneData[1] = param.duration;
+ this._pOneData[2] = param.delay + param.duration;
+ this._pOneData[3] = 1 / param.duration;
+ };
+ return ParticleTimeNode;
+})(ParticleNodeBase);
+module.exports = ParticleTimeNode;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleTimeState":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleUVNode":[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 ShaderRegisterElement = require("awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement");
+var ParticleAnimationSet = require("awayjs-renderergl/lib/animators/ParticleAnimationSet");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleUVState = require("awayjs-renderergl/lib/animators/states/ParticleUVState");
+/**
+ * A particle animation node used to control the UV offset and scale of a particle over time.
+ */
+var ParticleUVNode = (function (_super) {
+ __extends(ParticleUVNode, _super);
+ /**
+ * Creates a new ParticleTimeNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] cycle Defines whether the time track is in loop mode. Defaults to false.
+ * @param [optional] scale Defines whether the time track is in loop mode. Defaults to false.
+ * @param [optional] axis Defines whether the time track is in loop mode. Defaults to false.
+ */
+ function ParticleUVNode(mode /*uint*/, cycle, scale, axis) {
+ if (cycle === void 0) { cycle = 1; }
+ if (scale === void 0) { scale = 1; }
+ if (axis === void 0) { axis = "x"; }
+ //because of the stage3d register limitation, it only support the global mode
+ _super.call(this, "ParticleUV", ParticlePropertiesMode.GLOBAL, 4, ParticleAnimationSet.POST_PRIORITY + 1);
+ this._pStateClass = ParticleUVState;
+ this._cycle = cycle;
+ this._scale = scale;
+ this._axis = axis;
+ this.updateUVData();
+ }
+ Object.defineProperty(ParticleUVNode.prototype, "cycle", {
+ /**
+ *
+ */
+ get: function () {
+ return this._cycle;
+ },
+ set: function (value) {
+ this._cycle = value;
+ this.updateUVData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleUVNode.prototype, "scale", {
+ /**
+ *
+ */
+ get: function () {
+ return this._scale;
+ },
+ set: function (value) {
+ this._scale = value;
+ this.updateUVData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleUVNode.prototype, "axis", {
+ /**
+ *
+ */
+ get: function () {
+ return this._axis;
+ },
+ set: function (value) {
+ this._axis = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleUVNode.prototype.getAGALUVCode = function (shaderObject, animationRegisterCache) {
+ var code = "";
+ var uvConst = animationRegisterCache.getFreeVertexConstant();
+ animationRegisterCache.setRegisterIndex(this, ParticleUVState.UV_INDEX, uvConst.index);
+ var axisIndex = this._axis == "x" ? 0 : (this._axis == "y" ? 1 : 2);
+ var target = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, axisIndex);
+ var sin = animationRegisterCache.getFreeVertexSingleTemp();
+ if (this._scale != 1)
+ code += "mul " + target + "," + target + "," + uvConst + ".y\n";
+ code += "mul " + sin + "," + animationRegisterCache.vertexTime + "," + uvConst + ".x\n";
+ code += "sin " + sin + "," + sin + "\n";
+ code += "add " + target + "," + target + "," + sin + "\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleUVNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ ParticleUVNode.prototype.updateUVData = function () {
+ this._iUvData = new Vector3D(Math.PI * 2 / this._cycle, this._scale, 0, 0);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleUVNode.prototype._iProcessAnimationSetting = function (particleAnimationSet) {
+ particleAnimationSet.hasUVNode = true;
+ };
+ /**
+ *
+ */
+ ParticleUVNode.U_AXIS = "x";
+ /**
+ *
+ */
+ ParticleUVNode.V_AXIS = "y";
+ return ParticleUVNode;
+})(ParticleNodeBase);
+module.exports = ParticleUVNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/ParticleAnimationSet":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleUVState":undefined,"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement":undefined}],"awayjs-renderergl/lib/animators/nodes/ParticleVelocityNode":[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 ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleNodeBase = require("awayjs-renderergl/lib/animators/nodes/ParticleNodeBase");
+var ParticleVelocityState = require("awayjs-renderergl/lib/animators/states/ParticleVelocityState");
+/**
+ * A particle animation node used to set the starting velocity of a particle.
+ */
+var ParticleVelocityNode = (function (_super) {
+ __extends(ParticleVelocityNode, _super);
+ /**
+ * Creates a new ParticleVelocityNode
+ *
+ * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
+ * @param [optional] velocity Defines the default velocity vector of the node, used when in global mode.
+ */
+ function ParticleVelocityNode(mode /*uint*/, velocity) {
+ if (velocity === void 0) { velocity = null; }
+ _super.call(this, "ParticleVelocity", mode, 3);
+ this._pStateClass = ParticleVelocityState;
+ this._iVelocity = velocity || new Vector3D();
+ }
+ /**
+ * @inheritDoc
+ */
+ ParticleVelocityNode.prototype.getAGALVertexCode = function (shaderObject, animationRegisterCache) {
+ var velocityValue = (this._pMode == ParticlePropertiesMode.GLOBAL) ? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
+ animationRegisterCache.setRegisterIndex(this, ParticleVelocityState.VELOCITY_INDEX, velocityValue.index);
+ var distance = animationRegisterCache.getFreeVertexVectorTemp();
+ var code = "";
+ code += "mul " + distance + "," + animationRegisterCache.vertexTime + "," + velocityValue + "\n";
+ code += "add " + animationRegisterCache.positionTarget + ".xyz," + distance + "," + animationRegisterCache.positionTarget + ".xyz\n";
+ if (animationRegisterCache.needVelocity)
+ code += "add " + animationRegisterCache.velocityTarget + ".xyz," + velocityValue + ".xyz," + animationRegisterCache.velocityTarget + ".xyz\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleVelocityNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleVelocityNode.prototype._iGeneratePropertyOfOneParticle = function (param) {
+ var _tempVelocity = param[ParticleVelocityNode.VELOCITY_VECTOR3D];
+ if (!_tempVelocity)
+ throw new Error("there is no " + ParticleVelocityNode.VELOCITY_VECTOR3D + " in param!");
+ this._pOneData[0] = _tempVelocity.x;
+ this._pOneData[1] = _tempVelocity.y;
+ this._pOneData[2] = _tempVelocity.z;
+ };
+ /**
+ * Reference for velocity node properties on a single particle (when in local property mode).
+ * Expects a Vector3D
object representing the direction of movement on the particle.
+ */
+ ParticleVelocityNode.VELOCITY_VECTOR3D = "VelocityVector3D";
+ return ParticleVelocityNode;
+})(ParticleNodeBase);
+module.exports = ParticleVelocityNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase":undefined,"awayjs-renderergl/lib/animators/states/ParticleVelocityState":undefined}],"awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+var SkeletonBinaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState");
+/**
+ * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+var SkeletonBinaryLERPNode = (function (_super) {
+ __extends(SkeletonBinaryLERPNode, _super);
+ /**
+ * Creates a new SkeletonBinaryLERPNode
object.
+ */
+ function SkeletonBinaryLERPNode() {
+ _super.call(this);
+ this._pStateClass = SkeletonBinaryLERPState;
+ }
+ /**
+ * @inheritDoc
+ */
+ SkeletonBinaryLERPNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ return SkeletonBinaryLERPNode;
+})(AnimationNodeBase);
+module.exports = SkeletonBinaryLERPNode;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined,"awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState":undefined}],"awayjs-renderergl/lib/animators/nodes/SkeletonClipNode":[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 AnimationClipNodeBase = require("awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase");
+var SkeletonClipState = require("awayjs-renderergl/lib/animators/states/SkeletonClipState");
+/**
+ * A skeleton animation node containing time-based animation data as individual skeleton poses.
+ */
+var SkeletonClipNode = (function (_super) {
+ __extends(SkeletonClipNode, _super);
+ /**
+ * Creates a new SkeletonClipNode
object.
+ */
+ function SkeletonClipNode() {
+ _super.call(this);
+ this._frames = new Array();
+ /**
+ * Determines whether to use SLERP equations (true) or LERP equations (false) in the calculation
+ * of the output skeleton pose. Defaults to false.
+ */
+ this.highQuality = false;
+ this._pStateClass = SkeletonClipState;
+ }
+ Object.defineProperty(SkeletonClipNode.prototype, "frames", {
+ /**
+ * Returns a vector of skeleton poses representing the pose of each animation frame in the clip.
+ */
+ get: function () {
+ return this._frames;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Adds a skeleton pose frame to the internal timeline of the animation node.
+ *
+ * @param skeletonPose The skeleton pose object to add to the timeline of the node.
+ * @param duration The specified duration of the frame in milliseconds.
+ */
+ SkeletonClipNode.prototype.addFrame = function (skeletonPose, duration /*number /*uint*/) {
+ this._frames.push(skeletonPose);
+ this._pDurations.push(duration);
+ this._pNumFrames = this._pDurations.length;
+ this._pStitchDirty = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonClipNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonClipNode.prototype._pUpdateStitch = function () {
+ _super.prototype._pUpdateStitch.call(this);
+ var i = this._pNumFrames - 1;
+ var p1, p2, delta;
+ while (i--) {
+ this._pTotalDuration += this._pDurations[i];
+ p1 = this._frames[i].jointPoses[0].translation;
+ p2 = this._frames[i + 1].jointPoses[0].translation;
+ delta = p2.subtract(p1);
+ this._pTotalDelta.x += delta.x;
+ this._pTotalDelta.y += delta.y;
+ this._pTotalDelta.z += delta.z;
+ }
+ if (this._pStitchFinalFrame || !this._pLooping) {
+ this._pTotalDuration += this._pDurations[this._pNumFrames - 1];
+ p1 = this._frames[0].jointPoses[0].translation;
+ p2 = this._frames[1].jointPoses[0].translation;
+ delta = p2.subtract(p1);
+ this._pTotalDelta.x += delta.x;
+ this._pTotalDelta.y += delta.y;
+ this._pTotalDelta.z += delta.z;
+ }
+ };
+ return SkeletonClipNode;
+})(AnimationClipNodeBase);
+module.exports = SkeletonClipNode;
+
+
+},{"awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase":undefined,"awayjs-renderergl/lib/animators/states/SkeletonClipState":undefined}],"awayjs-renderergl/lib/animators/nodes/SkeletonDifferenceNode":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+var SkeletonDifferenceState = require("awayjs-renderergl/lib/animators/states/SkeletonDifferenceState");
+/**
+ * A skeleton animation node that uses a difference input pose with a base input pose to blend a linearly interpolated output of a skeleton pose.
+ */
+var SkeletonDifferenceNode = (function (_super) {
+ __extends(SkeletonDifferenceNode, _super);
+ /**
+ * Creates a new SkeletonAdditiveNode
object.
+ */
+ function SkeletonDifferenceNode() {
+ _super.call(this);
+ this._pStateClass = SkeletonDifferenceState;
+ }
+ /**
+ * @inheritDoc
+ */
+ SkeletonDifferenceNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ return SkeletonDifferenceNode;
+})(AnimationNodeBase);
+module.exports = SkeletonDifferenceNode;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined,"awayjs-renderergl/lib/animators/states/SkeletonDifferenceState":undefined}],"awayjs-renderergl/lib/animators/nodes/SkeletonDirectionalNode":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+var SkeletonDirectionalState = require("awayjs-renderergl/lib/animators/states/SkeletonDirectionalState");
+/**
+ * A skeleton animation node that uses four directional input poses with an input direction to blend a linearly interpolated output of a skeleton pose.
+ */
+var SkeletonDirectionalNode = (function (_super) {
+ __extends(SkeletonDirectionalNode, _super);
+ function SkeletonDirectionalNode() {
+ _super.call(this);
+ this._pStateClass = SkeletonDirectionalState;
+ }
+ /**
+ * @inheritDoc
+ */
+ SkeletonDirectionalNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ return SkeletonDirectionalNode;
+})(AnimationNodeBase);
+module.exports = SkeletonDirectionalNode;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined,"awayjs-renderergl/lib/animators/states/SkeletonDirectionalState":undefined}],"awayjs-renderergl/lib/animators/nodes/SkeletonNaryLERPNode":[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 AnimationNodeBase = require("awayjs-core/lib/animators/nodes/AnimationNodeBase");
+var SkeletonNaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonNaryLERPState");
+/**
+ * A skeleton animation node that uses an n-dimensional array of animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+var SkeletonNaryLERPNode = (function (_super) {
+ __extends(SkeletonNaryLERPNode, _super);
+ /**
+ * Creates a new SkeletonNaryLERPNode
object.
+ */
+ function SkeletonNaryLERPNode() {
+ _super.call(this);
+ this._iInputs = new Array();
+ this._pStateClass = SkeletonNaryLERPState;
+ }
+ Object.defineProperty(SkeletonNaryLERPNode.prototype, "numInputs", {
+ get: function () {
+ return this._numInputs;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Returns an integer representing the input index of the given skeleton animation node.
+ *
+ * @param input The skeleton animation node for with the input index is requested.
+ */
+ SkeletonNaryLERPNode.prototype.getInputIndex = function (input) {
+ return this._iInputs.indexOf(input);
+ };
+ /**
+ * Returns the skeleton animation node object that resides at the given input index.
+ *
+ * @param index The input index for which the skeleton animation node is requested.
+ */
+ SkeletonNaryLERPNode.prototype.getInputAt = function (index /*uint*/) {
+ return this._iInputs[index];
+ };
+ /**
+ * Adds a new skeleton animation node input to the animation node.
+ */
+ SkeletonNaryLERPNode.prototype.addInput = function (input) {
+ this._iInputs[this._numInputs++] = input;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonNaryLERPNode.prototype.getAnimationState = function (animator) {
+ return animator.getAnimationState(this);
+ };
+ return SkeletonNaryLERPNode;
+})(AnimationNodeBase);
+module.exports = SkeletonNaryLERPNode;
+
+
+},{"awayjs-core/lib/animators/nodes/AnimationNodeBase":undefined,"awayjs-renderergl/lib/animators/states/SkeletonNaryLERPState":undefined}],"awayjs-renderergl/lib/animators/nodes/VertexClipNode":[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 AnimationClipNodeBase = require("awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase");
+var VertexClipState = require("awayjs-renderergl/lib/animators/states/VertexClipState");
+/**
+ * A vertex animation node containing time-based animation data as individual geometry obejcts.
+ */
+var VertexClipNode = (function (_super) {
+ __extends(VertexClipNode, _super);
+ /**
+ * Creates a new VertexClipNode
object.
+ */
+ function VertexClipNode() {
+ _super.call(this);
+ this._frames = new Array();
+ this._translations = new Array();
+ this._pStateClass = VertexClipState;
+ }
+ Object.defineProperty(VertexClipNode.prototype, "frames", {
+ /**
+ * Returns a vector of geometry frames representing the vertex values of each animation frame in the clip.
+ */
+ get: function () {
+ return this._frames;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Adds a geometry object to the internal timeline of the animation node.
+ *
+ * @param geometry The geometry object to add to the timeline of the node.
+ * @param duration The specified duration of the frame in milliseconds.
+ * @param translation The absolute translation of the frame, used in root delta calculations for mesh movement.
+ */
+ VertexClipNode.prototype.addFrame = function (geometry, duration /*uint*/, translation) {
+ if (translation === void 0) { translation = null; }
+ this._frames.push(geometry);
+ this._pDurations.push(duration);
+ this._translations.push(translation || new Vector3D());
+ this._pNumFrames = this._pDurations.length;
+ this._pStitchDirty = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ VertexClipNode.prototype._pUpdateStitch = function () {
+ _super.prototype._pUpdateStitch.call(this);
+ var i = this._pNumFrames - 1;
+ var p1, p2, delta;
+ while (i--) {
+ this._pTotalDuration += this._pDurations[i];
+ p1 = this._translations[i];
+ p2 = this._translations[i + 1];
+ delta = p2.subtract(p1);
+ this._pTotalDelta.x += delta.x;
+ this._pTotalDelta.y += delta.y;
+ this._pTotalDelta.z += delta.z;
+ }
+ if (this._pNumFrames > 1 && (this._pStitchFinalFrame || !this._pLooping)) {
+ this._pTotalDuration += this._pDurations[this._pNumFrames - 1];
+ p1 = this._translations[0];
+ p2 = this._translations[1];
+ delta = p2.subtract(p1);
+ this._pTotalDelta.x += delta.x;
+ this._pTotalDelta.y += delta.y;
+ this._pTotalDelta.z += delta.z;
+ }
+ };
+ return VertexClipNode;
+})(AnimationClipNodeBase);
+module.exports = VertexClipNode;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase":undefined,"awayjs-renderergl/lib/animators/states/VertexClipState":undefined}],"awayjs-renderergl/lib/animators/states/AnimationClipState":[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 AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+var AnimationStateEvent = require("awayjs-renderergl/lib/events/AnimationStateEvent");
+/**
+ *
+ */
+var AnimationClipState = (function (_super) {
+ __extends(AnimationClipState, _super);
+ function AnimationClipState(animator, animationClipNode) {
+ _super.call(this, animator, animationClipNode);
+ this._pFramesDirty = true;
+ this._animationClipNode = animationClipNode;
+ }
+ Object.defineProperty(AnimationClipState.prototype, "blendWeight", {
+ /**
+ * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position
+ * between the current frame (0) and next frame (1) of the animation.
+ *
+ * @see #currentFrame
+ * @see #nextFrame
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._pBlendWeight;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipState.prototype, "currentFrame", {
+ /**
+ * Returns the current frame of animation in the clip based on the internal playhead position.
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._pCurrentFrame;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationClipState.prototype, "nextFrame", {
+ /**
+ * Returns the next frame of animation in the clip based on the internal playhead position.
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._pNextFrame;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ AnimationClipState.prototype.update = function (time /*int*/) {
+ if (!this._animationClipNode.looping) {
+ if (time > this._pStartTime + this._animationClipNode.totalDuration)
+ time = this._pStartTime + this._animationClipNode.totalDuration;
+ else if (time < this._pStartTime)
+ time = this._pStartTime;
+ }
+ if (this._pTime == time - this._pStartTime)
+ return;
+ this._pUpdateTime(time);
+ };
+ /**
+ * @inheritDoc
+ */
+ AnimationClipState.prototype.phase = function (value) {
+ var time = value * this._animationClipNode.totalDuration + this._pStartTime;
+ if (this._pTime == time - this._pStartTime)
+ return;
+ this._pUpdateTime(time);
+ };
+ /**
+ * @inheritDoc
+ */
+ AnimationClipState.prototype._pUpdateTime = function (time /*int*/) {
+ this._pFramesDirty = true;
+ this._pTimeDir = (time - this._pStartTime > this._pTime) ? 1 : -1;
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * Updates the nodes internal playhead to determine the current and next animation frame, and the blendWeight between the two.
+ *
+ * @see #currentFrame
+ * @see #nextFrame
+ * @see #blendWeight
+ */
+ AnimationClipState.prototype._pUpdateFrames = function () {
+ this._pFramesDirty = false;
+ var looping = this._animationClipNode.looping;
+ var totalDuration = this._animationClipNode.totalDuration;
+ var lastFrame = this._animationClipNode.lastFrame;
+ var time = this._pTime;
+ //trace("time", time, totalDuration)
+ if (looping && (time >= totalDuration || time < 0)) {
+ time %= totalDuration;
+ if (time < 0)
+ time += totalDuration;
+ }
+ if (!looping && time >= totalDuration) {
+ this.notifyPlaybackComplete();
+ this._pCurrentFrame = lastFrame;
+ this._pNextFrame = lastFrame;
+ this._pBlendWeight = 0;
+ }
+ else if (!looping && time <= 0) {
+ this._pCurrentFrame = 0;
+ this._pNextFrame = 0;
+ this._pBlendWeight = 0;
+ }
+ else if (this._animationClipNode.fixedFrameRate) {
+ var t = time / totalDuration * lastFrame;
+ this._pCurrentFrame = Math.floor(t);
+ this._pBlendWeight = t - this._pCurrentFrame;
+ this._pNextFrame = this._pCurrentFrame + 1;
+ }
+ else {
+ this._pCurrentFrame = 0;
+ this._pNextFrame = 0;
+ var dur = 0, frameTime /*uint*/;
+ var durations = this._animationClipNode.durations;
+ do {
+ frameTime = dur;
+ dur += durations[this._pNextFrame];
+ this._pCurrentFrame = this._pNextFrame++;
+ } while (time > dur);
+ if (this._pCurrentFrame == lastFrame) {
+ this._pCurrentFrame = 0;
+ this._pNextFrame = 1;
+ }
+ this._pBlendWeight = (time - frameTime) / durations[this._pCurrentFrame];
+ }
+ };
+ AnimationClipState.prototype.notifyPlaybackComplete = function () {
+ if (this._animationStatePlaybackComplete == null)
+ this._animationStatePlaybackComplete = new AnimationStateEvent(AnimationStateEvent.PLAYBACK_COMPLETE, this._pAnimator, this, this._animationClipNode);
+ this._animationClipNode.dispatchEvent(this._animationStatePlaybackComplete);
+ };
+ return AnimationClipState;
+})(AnimationStateBase);
+module.exports = AnimationClipState;
+
+
+},{"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined,"awayjs-renderergl/lib/events/AnimationStateEvent":undefined}],"awayjs-renderergl/lib/animators/states/AnimationStateBase":[function(require,module,exports){
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+/**
+ *
+ */
+var AnimationStateBase = (function () {
+ function AnimationStateBase(animator, animationNode) {
+ this._pRootDelta = new Vector3D();
+ this._pPositionDeltaDirty = true;
+ this._pStartTime = 0;
+ this._pAnimator = animator;
+ this._pAnimationNode = animationNode;
+ }
+ Object.defineProperty(AnimationStateBase.prototype, "positionDelta", {
+ /**
+ * Returns a 3d vector representing the translation delta of the animating entity for the current timestep of animation
+ */
+ get: function () {
+ if (this._pPositionDeltaDirty) {
+ this._pUpdatePositionDelta();
+ }
+ return this._pRootDelta;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Resets the start time of the node to a new value.
+ *
+ * @param startTime The absolute start time (in milliseconds) of the node's starting time.
+ */
+ AnimationStateBase.prototype.offset = function (startTime) {
+ this._pStartTime = startTime;
+ this._pPositionDeltaDirty = true;
+ };
+ /**
+ * Updates the configuration of the node to its current state.
+ *
+ * @param time The absolute time (in milliseconds) of the animator's play head position.
+ *
+ * @see AnimatorBase#update()
+ */
+ AnimationStateBase.prototype.update = function (time) {
+ if (this._pTime == time - this._pStartTime) {
+ return;
+ }
+ this._pUpdateTime(time);
+ };
+ /**
+ * Sets the animation phase of the node.
+ *
+ * @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end.
+ */
+ AnimationStateBase.prototype.phase = function (value) {
+ };
+ /**
+ * Updates the node's internal playhead position.
+ *
+ * @param time The local time (in milliseconds) of the node's playhead position.
+ */
+ AnimationStateBase.prototype._pUpdateTime = function (time) {
+ this._pTime = time - this._pStartTime;
+ this._pPositionDeltaDirty = true;
+ };
+ /**
+ * Updates the node's root delta position
+ */
+ AnimationStateBase.prototype._pUpdatePositionDelta = function () {
+ };
+ return AnimationStateBase;
+})();
+module.exports = AnimationStateBase;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined}],"awayjs-renderergl/lib/animators/states/ISkeletonAnimationState":[function(require,module,exports){
+
+
+
+},{}],"awayjs-renderergl/lib/animators/states/IVertexAnimationState":[function(require,module,exports){
+
+
+
+},{}],"awayjs-renderergl/lib/animators/states/ParticleAccelerationState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleAccelerationState = (function (_super) {
+ __extends(ParticleAccelerationState, _super);
+ function ParticleAccelerationState(animator, particleAccelerationNode) {
+ _super.call(this, animator, particleAccelerationNode);
+ this._particleAccelerationNode = particleAccelerationNode;
+ this._acceleration = this._particleAccelerationNode._acceleration;
+ this.updateAccelerationData();
+ }
+ Object.defineProperty(ParticleAccelerationState.prototype, "acceleration", {
+ /**
+ * Defines the acceleration vector of the state, used when in global mode.
+ */
+ get: function () {
+ return this._acceleration;
+ },
+ set: function (value) {
+ this._acceleration.x = value.x;
+ this._acceleration.y = value.y;
+ this._acceleration.z = value.z;
+ this.updateAccelerationData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleAccelerationState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleAccelerationState.ACCELERATION_INDEX);
+ if (this._particleAccelerationNode.mode == ParticlePropertiesMode.LOCAL_STATIC)
+ animationSubGeometry.activateVertexBuffer(index, this._particleAccelerationNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ else
+ animationRegisterCache.setVertexConst(index, this._halfAcceleration.x, this._halfAcceleration.y, this._halfAcceleration.z);
+ };
+ ParticleAccelerationState.prototype.updateAccelerationData = function () {
+ if (this._particleAccelerationNode.mode == ParticlePropertiesMode.GLOBAL)
+ this._halfAcceleration = new Vector3D(this._acceleration.x / 2, this._acceleration.y / 2, this._acceleration.z / 2);
+ };
+ /** @private */
+ ParticleAccelerationState.ACCELERATION_INDEX = 0;
+ return ParticleAccelerationState;
+})(ParticleStateBase);
+module.exports = ParticleAccelerationState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleBezierCurveState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleBezierCurveState = (function (_super) {
+ __extends(ParticleBezierCurveState, _super);
+ function ParticleBezierCurveState(animator, particleBezierCurveNode) {
+ _super.call(this, animator, particleBezierCurveNode);
+ this._particleBezierCurveNode = particleBezierCurveNode;
+ this._controlPoint = this._particleBezierCurveNode._iControlPoint;
+ this._endPoint = this._particleBezierCurveNode._iEndPoint;
+ }
+ Object.defineProperty(ParticleBezierCurveState.prototype, "controlPoint", {
+ /**
+ * Defines the default control point of the node, used when in global mode.
+ */
+ get: function () {
+ return this._controlPoint;
+ },
+ set: function (value) {
+ this._controlPoint = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleBezierCurveState.prototype, "endPoint", {
+ /**
+ * Defines the default end point of the node, used when in global mode.
+ */
+ get: function () {
+ return this._endPoint;
+ },
+ set: function (value) {
+ this._endPoint = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleBezierCurveState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var controlIndex = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleBezierCurveState.BEZIER_CONTROL_INDEX);
+ var endIndex = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleBezierCurveState.BEZIER_END_INDEX);
+ if (this._particleBezierCurveNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ animationSubGeometry.activateVertexBuffer(controlIndex, this._particleBezierCurveNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ animationSubGeometry.activateVertexBuffer(endIndex, this._particleBezierCurveNode._iDataOffset + 3, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ else {
+ animationRegisterCache.setVertexConst(controlIndex, this._controlPoint.x, this._controlPoint.y, this._controlPoint.z);
+ animationRegisterCache.setVertexConst(endIndex, this._endPoint.x, this._endPoint.y, this._endPoint.z);
+ }
+ };
+ /** @private */
+ ParticleBezierCurveState.BEZIER_CONTROL_INDEX = 0;
+ /** @private */
+ ParticleBezierCurveState.BEZIER_END_INDEX = 1;
+ return ParticleBezierCurveState;
+})(ParticleStateBase);
+module.exports = ParticleBezierCurveState;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleBillboardState":[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 MathConsts = require("awayjs-core/lib/core/geom/MathConsts");
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var Orientation3D = require("awayjs-core/lib/core/geom/Orientation3D");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleBillboardState = (function (_super) {
+ __extends(ParticleBillboardState, _super);
+ /**
+ *
+ */
+ function ParticleBillboardState(animator, particleNode) {
+ _super.call(this, animator, particleNode);
+ this._matrix = new Matrix3D;
+ this._billboardAxis = particleNode._iBillboardAxis;
+ }
+ ParticleBillboardState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var comps;
+ if (this._billboardAxis) {
+ var pos = renderable.sourceEntity.sceneTransform.position;
+ var look = camera.sceneTransform.position.subtract(pos);
+ var right = look.crossProduct(this._billboardAxis);
+ right.normalize();
+ look = this.billboardAxis.crossProduct(right);
+ look.normalize();
+ //create a quick inverse projection matrix
+ this._matrix.copyFrom(renderable.sourceEntity.sceneTransform);
+ comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE);
+ this._matrix.copyColumnFrom(0, right);
+ this._matrix.copyColumnFrom(1, this.billboardAxis);
+ this._matrix.copyColumnFrom(2, look);
+ this._matrix.copyColumnFrom(3, pos);
+ this._matrix.appendRotation(-comps[1].w * MathConsts.RADIANS_TO_DEGREES, comps[1]);
+ }
+ else {
+ //create a quick inverse projection matrix
+ this._matrix.copyFrom(renderable.sourceEntity.sceneTransform);
+ this._matrix.append(camera.inverseSceneTransform);
+ //decompose using axis angle rotations
+ comps = this._matrix.decompose(Orientation3D.AXIS_ANGLE);
+ //recreate the matrix with just the rotation data
+ this._matrix.identity();
+ this._matrix.appendRotation(-comps[1].w * MathConsts.RADIANS_TO_DEGREES, comps[1]);
+ }
+ //set a new matrix transform constant
+ animationRegisterCache.setVertexConstFromMatrix(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleBillboardState.MATRIX_INDEX), this._matrix);
+ };
+ Object.defineProperty(ParticleBillboardState.prototype, "billboardAxis", {
+ /**
+ * Defines the billboard axis.
+ */
+ get: function () {
+ return this.billboardAxis;
+ },
+ set: function (value) {
+ this.billboardAxis = value ? value.clone() : null;
+ if (this.billboardAxis)
+ this.billboardAxis.normalize();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /** @private */
+ ParticleBillboardState.MATRIX_INDEX = 0;
+ return ParticleBillboardState;
+})(ParticleStateBase);
+module.exports = ParticleBillboardState;
+
+
+},{"awayjs-core/lib/core/geom/MathConsts":undefined,"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Orientation3D":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined}],"awayjs-renderergl/lib/animators/states/ParticleColorState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ * @author ...
+ */
+var ParticleColorState = (function (_super) {
+ __extends(ParticleColorState, _super);
+ function ParticleColorState(animator, particleColorNode) {
+ _super.call(this, animator, particleColorNode);
+ this._particleColorNode = particleColorNode;
+ this._usesMultiplier = this._particleColorNode._iUsesMultiplier;
+ this._usesOffset = this._particleColorNode._iUsesOffset;
+ this._usesCycle = this._particleColorNode._iUsesCycle;
+ this._usesPhase = this._particleColorNode._iUsesPhase;
+ this._startColor = this._particleColorNode._iStartColor;
+ this._endColor = this._particleColorNode._iEndColor;
+ this._cycleDuration = this._particleColorNode._iCycleDuration;
+ this._cyclePhase = this._particleColorNode._iCyclePhase;
+ this.updateColorData();
+ }
+ Object.defineProperty(ParticleColorState.prototype, "startColor", {
+ /**
+ * Defines the start color transform of the state, when in global mode.
+ */
+ get: function () {
+ return this._startColor;
+ },
+ set: function (value) {
+ this._startColor = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleColorState.prototype, "endColor", {
+ /**
+ * Defines the end color transform of the state, when in global mode.
+ */
+ get: function () {
+ return this._endColor;
+ },
+ set: function (value) {
+ this._endColor = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleColorState.prototype, "cycleDuration", {
+ /**
+ * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._cycleDuration;
+ },
+ set: function (value) {
+ this._cycleDuration = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleColorState.prototype, "cyclePhase", {
+ /**
+ * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ get: function () {
+ return this._cyclePhase;
+ },
+ set: function (value) {
+ this._cyclePhase = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleColorState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (animationRegisterCache.needFragmentAnimation) {
+ var dataOffset = this._particleColorNode._iDataOffset;
+ if (this._usesCycle)
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.CYCLE_INDEX), this._cycleData.x, this._cycleData.y, this._cycleData.z, this._cycleData.w);
+ if (this._usesMultiplier) {
+ if (this._particleColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ dataOffset += 4;
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ dataOffset += 4;
+ }
+ else {
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_MULTIPLIER_INDEX), this._startMultiplierData.x, this._startMultiplierData.y, this._startMultiplierData.z, this._startMultiplierData.w);
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_MULTIPLIER_INDEX), this._deltaMultiplierData.x, this._deltaMultiplierData.y, this._deltaMultiplierData.z, this._deltaMultiplierData.w);
+ }
+ }
+ if (this._usesOffset) {
+ if (this._particleColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ dataOffset += 4;
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ dataOffset += 4;
+ }
+ else {
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.START_OFFSET_INDEX), this._startOffsetData.x, this._startOffsetData.y, this._startOffsetData.z, this._startOffsetData.w);
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleColorState.DELTA_OFFSET_INDEX), this._deltaOffsetData.x, this._deltaOffsetData.y, this._deltaOffsetData.z, this._deltaOffsetData.w);
+ }
+ }
+ }
+ };
+ ParticleColorState.prototype.updateColorData = function () {
+ if (this._usesCycle) {
+ if (this._cycleDuration <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._cycleData = new Vector3D(Math.PI * 2 / this._cycleDuration, this._cyclePhase * Math.PI / 180, 0, 0);
+ }
+ if (this._particleColorNode.mode == ParticlePropertiesMode.GLOBAL) {
+ if (this._usesCycle) {
+ if (this._usesMultiplier) {
+ this._startMultiplierData = new Vector3D((this._startColor.redMultiplier + this._endColor.redMultiplier) / 2, (this._startColor.greenMultiplier + this._endColor.greenMultiplier) / 2, (this._startColor.blueMultiplier + this._endColor.blueMultiplier) / 2, (this._startColor.alphaMultiplier + this._endColor.alphaMultiplier) / 2);
+ this._deltaMultiplierData = new Vector3D((this._endColor.redMultiplier - this._startColor.redMultiplier) / 2, (this._endColor.greenMultiplier - this._startColor.greenMultiplier) / 2, (this._endColor.blueMultiplier - this._startColor.blueMultiplier) / 2, (this._endColor.alphaMultiplier - this._startColor.alphaMultiplier) / 2);
+ }
+ if (this._usesOffset) {
+ this._startOffsetData = new Vector3D((this._startColor.redOffset + this._endColor.redOffset) / (255 * 2), (this._startColor.greenOffset + this._endColor.greenOffset) / (255 * 2), (this._startColor.blueOffset + this._endColor.blueOffset) / (255 * 2), (this._startColor.alphaOffset + this._endColor.alphaOffset) / (255 * 2));
+ this._deltaOffsetData = new Vector3D((this._endColor.redOffset - this._startColor.redOffset) / (255 * 2), (this._endColor.greenOffset - this._startColor.greenOffset) / (255 * 2), (this._endColor.blueOffset - this._startColor.blueOffset) / (255 * 2), (this._endColor.alphaOffset - this._startColor.alphaOffset) / (255 * 2));
+ }
+ }
+ else {
+ if (this._usesMultiplier) {
+ this._startMultiplierData = new Vector3D(this._startColor.redMultiplier, this._startColor.greenMultiplier, this._startColor.blueMultiplier, this._startColor.alphaMultiplier);
+ this._deltaMultiplierData = new Vector3D((this._endColor.redMultiplier - this._startColor.redMultiplier), (this._endColor.greenMultiplier - this._startColor.greenMultiplier), (this._endColor.blueMultiplier - this._startColor.blueMultiplier), (this._endColor.alphaMultiplier - this._startColor.alphaMultiplier));
+ }
+ if (this._usesOffset) {
+ this._startOffsetData = new Vector3D(this._startColor.redOffset / 255, this._startColor.greenOffset / 255, this._startColor.blueOffset / 255, this._startColor.alphaOffset / 255);
+ this._deltaOffsetData = new Vector3D((this._endColor.redOffset - this._startColor.redOffset) / 255, (this._endColor.greenOffset - this._startColor.greenOffset) / 255, (this._endColor.blueOffset - this._startColor.blueOffset) / 255, (this._endColor.alphaOffset - this._startColor.alphaOffset) / 255);
+ }
+ }
+ }
+ };
+ /** @private */
+ ParticleColorState.START_MULTIPLIER_INDEX = 0;
+ /** @private */
+ ParticleColorState.DELTA_MULTIPLIER_INDEX = 1;
+ /** @private */
+ ParticleColorState.START_OFFSET_INDEX = 2;
+ /** @private */
+ ParticleColorState.DELTA_OFFSET_INDEX = 3;
+ /** @private */
+ ParticleColorState.CYCLE_INDEX = 4;
+ return ParticleColorState;
+})(ParticleStateBase);
+module.exports = ParticleColorState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleFollowState":[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 MathConsts = require("awayjs-core/lib/core/geom/MathConsts");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleFollowState = (function (_super) {
+ __extends(ParticleFollowState, _super);
+ function ParticleFollowState(animator, particleFollowNode) {
+ _super.call(this, animator, particleFollowNode, true);
+ this._targetPos = new Vector3D();
+ this._targetEuler = new Vector3D();
+ //temporary vector3D for calculation
+ this._temp = new Vector3D();
+ this._particleFollowNode = particleFollowNode;
+ this._smooth = particleFollowNode._iSmooth;
+ }
+ Object.defineProperty(ParticleFollowState.prototype, "followTarget", {
+ get: function () {
+ return this._followTarget;
+ },
+ set: function (value) {
+ this._followTarget = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleFollowState.prototype, "smooth", {
+ get: function () {
+ return this._smooth;
+ },
+ set: function (value) {
+ this._smooth = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleFollowState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (this._followTarget) {
+ if (this._particleFollowNode._iUsesPosition) {
+ this._targetPos.x = this._followTarget.transform.position.x / renderable.sourceEntity.scaleX;
+ this._targetPos.y = this._followTarget.transform.position.y / renderable.sourceEntity.scaleY;
+ this._targetPos.z = this._followTarget.transform.position.z / renderable.sourceEntity.scaleZ;
+ }
+ if (this._particleFollowNode._iUsesRotation) {
+ this._targetEuler.x = this._followTarget.rotationX;
+ this._targetEuler.y = this._followTarget.rotationY;
+ this._targetEuler.z = this._followTarget.rotationZ;
+ this._targetEuler.scaleBy(MathConsts.DEGREES_TO_RADIANS);
+ }
+ }
+ //initialization
+ if (!this._prePos)
+ this._prePos = this._targetPos.clone();
+ if (!this._preEuler)
+ this._preEuler = this._targetEuler.clone();
+ var currentTime = this._pTime / 1000;
+ var previousTime = animationSubGeometry.previousTime;
+ var deltaTime = currentTime - previousTime;
+ var needProcess = previousTime != currentTime;
+ if (this._particleFollowNode._iUsesPosition && this._particleFollowNode._iUsesRotation) {
+ if (needProcess)
+ this.processPositionAndRotation(currentTime, deltaTime, animationSubGeometry);
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_POSITION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_ROTATION_INDEX), this._particleFollowNode._iDataOffset + 3, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ else if (this._particleFollowNode._iUsesPosition) {
+ if (needProcess)
+ this.processPosition(currentTime, deltaTime, animationSubGeometry);
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_POSITION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ else if (this._particleFollowNode._iUsesRotation) {
+ if (needProcess)
+ this.precessRotation(currentTime, deltaTime, animationSubGeometry);
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleFollowState.FOLLOW_ROTATION_INDEX), this._particleFollowNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ this._prePos.copyFrom(this._targetPos);
+ this._targetEuler.copyFrom(this._targetEuler);
+ animationSubGeometry.previousTime = currentTime;
+ };
+ ParticleFollowState.prototype.processPosition = function (currentTime, deltaTime, animationSubGeometry) {
+ var data = animationSubGeometry.animationParticles;
+ var vertexData = animationSubGeometry.vertexData;
+ var changed = false;
+ var len = data.length;
+ var interpolatedPos;
+ var posVelocity;
+ if (this._smooth) {
+ posVelocity = this._prePos.subtract(this._targetPos);
+ posVelocity.scaleBy(1 / deltaTime);
+ }
+ else
+ interpolatedPos = this._targetPos;
+ for (var i = 0; i < len; i++) {
+ var k = (currentTime - data[i].startTime) / data[i].totalTime;
+ var t = (k - Math.floor(k)) * data[i].totalTime;
+ if (t - deltaTime <= 0) {
+ var inc = data[i].startVertexIndex * animationSubGeometry.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;
+ if (this._smooth) {
+ this._temp.copyFrom(posVelocity);
+ this._temp.scaleBy(t);
+ interpolatedPos = this._targetPos.add(this._temp);
+ }
+ if (vertexData[inc] != interpolatedPos.x || vertexData[inc + 1] != interpolatedPos.y || vertexData[inc + 2] != interpolatedPos.z) {
+ changed = true;
+ for (var j = 0; j < data[i].numVertices; j++) {
+ vertexData[inc++] = interpolatedPos.x;
+ vertexData[inc++] = interpolatedPos.y;
+ vertexData[inc++] = interpolatedPos.z;
+ }
+ }
+ }
+ }
+ if (changed)
+ animationSubGeometry.invalidateBuffer();
+ };
+ ParticleFollowState.prototype.precessRotation = function (currentTime, deltaTime, animationSubGeometry) {
+ var data = animationSubGeometry.animationParticles;
+ var vertexData = animationSubGeometry.vertexData;
+ var changed = false;
+ var len = data.length;
+ var interpolatedRotation;
+ var rotationVelocity;
+ if (this._smooth) {
+ rotationVelocity = this._preEuler.subtract(this._targetEuler);
+ rotationVelocity.scaleBy(1 / deltaTime);
+ }
+ else
+ interpolatedRotation = this._targetEuler;
+ for (var i = 0; i < len; i++) {
+ var k = (currentTime - data[i].startTime) / data[i].totalTime;
+ var t = (k - Math.floor(k)) * data[i].totalTime;
+ if (t - deltaTime <= 0) {
+ var inc = data[i].startVertexIndex * animationSubGeometry.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;
+ if (this._smooth) {
+ this._temp.copyFrom(rotationVelocity);
+ this._temp.scaleBy(t);
+ interpolatedRotation = this._targetEuler.add(this._temp);
+ }
+ if (vertexData[inc] != interpolatedRotation.x || vertexData[inc + 1] != interpolatedRotation.y || vertexData[inc + 2] != interpolatedRotation.z) {
+ changed = true;
+ for (var j = 0; j < data[i].numVertices; j++) {
+ vertexData[inc++] = interpolatedRotation.x;
+ vertexData[inc++] = interpolatedRotation.y;
+ vertexData[inc++] = interpolatedRotation.z;
+ }
+ }
+ }
+ }
+ if (changed)
+ animationSubGeometry.invalidateBuffer();
+ };
+ ParticleFollowState.prototype.processPositionAndRotation = function (currentTime, deltaTime, animationSubGeometry) {
+ var data = animationSubGeometry.animationParticles;
+ var vertexData = animationSubGeometry.vertexData;
+ var changed = false;
+ var len = data.length;
+ var interpolatedPos;
+ var interpolatedRotation;
+ var posVelocity;
+ var rotationVelocity;
+ if (this._smooth) {
+ posVelocity = this._prePos.subtract(this._targetPos);
+ posVelocity.scaleBy(1 / deltaTime);
+ rotationVelocity = this._preEuler.subtract(this._targetEuler);
+ rotationVelocity.scaleBy(1 / deltaTime);
+ }
+ else {
+ interpolatedPos = this._targetPos;
+ interpolatedRotation = this._targetEuler;
+ }
+ for (var i = 0; i < len; i++) {
+ var k = (currentTime - data[i].startTime) / data[i].totalTime;
+ var t = (k - Math.floor(k)) * data[i].totalTime;
+ if (t - deltaTime <= 0) {
+ var inc = data[i].startVertexIndex * animationSubGeometry.totalLenOfOneVertex + this._particleFollowNode._iDataOffset;
+ if (this._smooth) {
+ this._temp.copyFrom(posVelocity);
+ this._temp.scaleBy(t);
+ interpolatedPos = this._targetPos.add(this._temp);
+ this._temp.copyFrom(rotationVelocity);
+ this._temp.scaleBy(t);
+ interpolatedRotation = this._targetEuler.add(this._temp);
+ }
+ if (vertexData[inc] != interpolatedPos.x || vertexData[inc + 1] != interpolatedPos.y || vertexData[inc + 2] != interpolatedPos.z || vertexData[inc + 3] != interpolatedRotation.x || vertexData[inc + 4] != interpolatedRotation.y || vertexData[inc + 5] != interpolatedRotation.z) {
+ changed = true;
+ for (var j = 0; j < data[i].numVertices; j++) {
+ vertexData[inc++] = interpolatedPos.x;
+ vertexData[inc++] = interpolatedPos.y;
+ vertexData[inc++] = interpolatedPos.z;
+ vertexData[inc++] = interpolatedRotation.x;
+ vertexData[inc++] = interpolatedRotation.y;
+ vertexData[inc++] = interpolatedRotation.z;
+ }
+ }
+ }
+ }
+ if (changed)
+ animationSubGeometry.invalidateBuffer();
+ };
+ /** @private */
+ ParticleFollowState.FOLLOW_POSITION_INDEX = 0;
+ /** @private */
+ ParticleFollowState.FOLLOW_ROTATION_INDEX = 1;
+ return ParticleFollowState;
+})(ParticleStateBase);
+module.exports = ParticleFollowState;
+
+
+},{"awayjs-core/lib/core/geom/MathConsts":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleInitialColorState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+*
+*/
+var ParticleInitialColorState = (function (_super) {
+ __extends(ParticleInitialColorState, _super);
+ function ParticleInitialColorState(animator, particleInitialColorNode) {
+ _super.call(this, animator, particleInitialColorNode);
+ this._particleInitialColorNode = particleInitialColorNode;
+ this._usesMultiplier = particleInitialColorNode._iUsesMultiplier;
+ this._usesOffset = particleInitialColorNode._iUsesOffset;
+ this._initialColor = particleInitialColorNode._iInitialColor;
+ this.updateColorData();
+ }
+ Object.defineProperty(ParticleInitialColorState.prototype, "initialColor", {
+ /**
+ * Defines the initial color transform of the state, when in global mode.
+ */
+ get: function () {
+ return this._initialColor;
+ },
+ set: function (value) {
+ this._initialColor = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleInitialColorState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ // TODO: not used
+ renderable = renderable;
+ camera = camera;
+ if (animationRegisterCache.needFragmentAnimation) {
+ if (this._particleInitialColorNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ var dataOffset = this._particleInitialColorNode._iDataOffset;
+ if (this._usesMultiplier) {
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.MULTIPLIER_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ dataOffset += 4;
+ }
+ if (this._usesOffset)
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.OFFSET_INDEX), dataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ }
+ else {
+ if (this._usesMultiplier)
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.MULTIPLIER_INDEX), this._multiplierData.x, this._multiplierData.y, this._multiplierData.z, this._multiplierData.w);
+ if (this._usesOffset)
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleInitialColorState.OFFSET_INDEX), this._offsetData.x, this._offsetData.y, this._offsetData.z, this._offsetData.w);
+ }
+ }
+ };
+ ParticleInitialColorState.prototype.updateColorData = function () {
+ if (this._particleInitialColorNode.mode == ParticlePropertiesMode.GLOBAL) {
+ if (this._usesMultiplier)
+ this._multiplierData = new Vector3D(this._initialColor.redMultiplier, this._initialColor.greenMultiplier, this._initialColor.blueMultiplier, this._initialColor.alphaMultiplier);
+ if (this._usesOffset)
+ this._offsetData = new Vector3D(this._initialColor.redOffset / 255, this._initialColor.greenOffset / 255, this._initialColor.blueOffset / 255, this._initialColor.alphaOffset / 255);
+ }
+ };
+ /** @private */
+ ParticleInitialColorState.MULTIPLIER_INDEX = 0;
+ /** @private */
+ ParticleInitialColorState.OFFSET_INDEX = 1;
+ return ParticleInitialColorState;
+})(ParticleStateBase);
+module.exports = ParticleInitialColorState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleOrbitState":[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 Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleOrbitState = (function (_super) {
+ __extends(ParticleOrbitState, _super);
+ function ParticleOrbitState(animator, particleOrbitNode) {
+ _super.call(this, animator, particleOrbitNode);
+ this._particleOrbitNode = particleOrbitNode;
+ this._usesEulers = this._particleOrbitNode._iUsesEulers;
+ this._usesCycle = this._particleOrbitNode._iUsesCycle;
+ this._usesPhase = this._particleOrbitNode._iUsesPhase;
+ this._eulers = this._particleOrbitNode._iEulers;
+ this._radius = this._particleOrbitNode._iRadius;
+ this._cycleDuration = this._particleOrbitNode._iCycleDuration;
+ this._cyclePhase = this._particleOrbitNode._iCyclePhase;
+ this.updateOrbitData();
+ }
+ Object.defineProperty(ParticleOrbitState.prototype, "radius", {
+ /**
+ * Defines the radius of the orbit when in global mode. Defaults to 100.
+ */
+ get: function () {
+ return this._radius;
+ },
+ set: function (value) {
+ this._radius = value;
+ this.updateOrbitData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleOrbitState.prototype, "cycleDuration", {
+ /**
+ * Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._cycleDuration;
+ },
+ set: function (value) {
+ this._cycleDuration = value;
+ this.updateOrbitData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleOrbitState.prototype, "cyclePhase", {
+ /**
+ * Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ get: function () {
+ return this._cyclePhase;
+ },
+ set: function (value) {
+ this._cyclePhase = value;
+ this.updateOrbitData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleOrbitState.prototype, "eulers", {
+ /**
+ * Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.
+ */
+ get: function () {
+ return this._eulers;
+ },
+ set: function (value) {
+ this._eulers = value;
+ this.updateOrbitData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleOrbitState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleOrbitState.ORBIT_INDEX);
+ if (this._particleOrbitNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ if (this._usesPhase)
+ animationSubGeometry.activateVertexBuffer(index, this._particleOrbitNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleOrbitNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ else
+ animationRegisterCache.setVertexConst(index, this._orbitData.x, this._orbitData.y, this._orbitData.z, this._orbitData.w);
+ if (this._usesEulers)
+ animationRegisterCache.setVertexConstFromMatrix(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleOrbitState.EULERS_INDEX), this._eulersMatrix);
+ };
+ ParticleOrbitState.prototype.updateOrbitData = function () {
+ if (this._usesEulers) {
+ this._eulersMatrix = new Matrix3D();
+ this._eulersMatrix.appendRotation(this._eulers.x, Vector3D.X_AXIS);
+ this._eulersMatrix.appendRotation(this._eulers.y, Vector3D.Y_AXIS);
+ this._eulersMatrix.appendRotation(this._eulers.z, Vector3D.Z_AXIS);
+ }
+ if (this._particleOrbitNode.mode == ParticlePropertiesMode.GLOBAL) {
+ this._orbitData = new Vector3D(this._radius, 0, this._radius * Math.PI * 2, this._cyclePhase * Math.PI / 180);
+ if (this._usesCycle) {
+ if (this._cycleDuration <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._orbitData.y = Math.PI * 2 / this._cycleDuration;
+ }
+ else
+ this._orbitData.y = Math.PI * 2;
+ }
+ };
+ /** @private */
+ ParticleOrbitState.ORBIT_INDEX = 0;
+ /** @private */
+ ParticleOrbitState.EULERS_INDEX = 1;
+ return ParticleOrbitState;
+})(ParticleStateBase);
+module.exports = ParticleOrbitState;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleOscillatorState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleOscillatorState = (function (_super) {
+ __extends(ParticleOscillatorState, _super);
+ function ParticleOscillatorState(animator, particleOscillatorNode) {
+ _super.call(this, animator, particleOscillatorNode);
+ this._particleOscillatorNode = particleOscillatorNode;
+ this._oscillator = this._particleOscillatorNode._iOscillator;
+ this.updateOscillatorData();
+ }
+ Object.defineProperty(ParticleOscillatorState.prototype, "oscillator", {
+ /**
+ * Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the state, used when in global mode.
+ */
+ get: function () {
+ return this._oscillator;
+ },
+ set: function (value) {
+ this._oscillator = value;
+ this.updateOscillatorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ParticleOscillatorState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleOscillatorState.OSCILLATOR_INDEX);
+ if (this._particleOscillatorNode.mode == ParticlePropertiesMode.LOCAL_STATIC)
+ animationSubGeometry.activateVertexBuffer(index, this._particleOscillatorNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ else
+ animationRegisterCache.setVertexConst(index, this._oscillatorData.x, this._oscillatorData.y, this._oscillatorData.z, this._oscillatorData.w);
+ };
+ ParticleOscillatorState.prototype.updateOscillatorData = function () {
+ if (this._particleOscillatorNode.mode == ParticlePropertiesMode.GLOBAL) {
+ if (this._oscillator.w <= 0)
+ throw (new Error("the cycle duration must greater than zero"));
+ if (this._oscillatorData == null)
+ this._oscillatorData = new Vector3D();
+ this._oscillatorData.x = this._oscillator.x;
+ this._oscillatorData.y = this._oscillator.y;
+ this._oscillatorData.z = this._oscillator.z;
+ this._oscillatorData.w = Math.PI * 2 / this._oscillator.w;
+ }
+ };
+ /** @private */
+ ParticleOscillatorState.OSCILLATOR_INDEX = 0;
+ return ParticleOscillatorState;
+})(ParticleStateBase);
+module.exports = ParticleOscillatorState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticlePositionState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ * @author ...
+ */
+var ParticlePositionState = (function (_super) {
+ __extends(ParticlePositionState, _super);
+ function ParticlePositionState(animator, particlePositionNode) {
+ _super.call(this, animator, particlePositionNode);
+ this._particlePositionNode = particlePositionNode;
+ this._position = this._particlePositionNode._iPosition;
+ }
+ Object.defineProperty(ParticlePositionState.prototype, "position", {
+ /**
+ * Defines the position of the particle when in global mode. Defaults to 0,0,0.
+ */
+ get: function () {
+ return this._position;
+ },
+ set: function (value) {
+ this._position = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ *
+ */
+ ParticlePositionState.prototype.getPositions = function () {
+ return this._pDynamicProperties;
+ };
+ ParticlePositionState.prototype.setPositions = function (value) {
+ this._pDynamicProperties = value;
+ this._pDynamicPropertiesDirty = new Object();
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticlePositionState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (this._particlePositionNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationSubGeometry._iUniqueId])
+ this._pUpdateDynamicProperties(animationSubGeometry);
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticlePositionState.POSITION_INDEX);
+ if (this._particlePositionNode.mode == ParticlePropertiesMode.GLOBAL)
+ animationRegisterCache.setVertexConst(index, this._position.x, this._position.y, this._position.z);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particlePositionNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ };
+ /** @private */
+ ParticlePositionState.POSITION_INDEX = 0;
+ return ParticlePositionState;
+})(ParticleStateBase);
+module.exports = ParticlePositionState;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleRotateToHeadingState":[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 ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleRotateToHeadingState = (function (_super) {
+ __extends(ParticleRotateToHeadingState, _super);
+ function ParticleRotateToHeadingState(animator, particleNode) {
+ _super.call(this, animator, particleNode);
+ this._matrix = new Matrix3D();
+ }
+ ParticleRotateToHeadingState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (animationRegisterCache.hasBillboard) {
+ this._matrix.copyFrom(renderable.sourceEntity.sceneTransform);
+ this._matrix.append(camera.inverseSceneTransform);
+ animationRegisterCache.setVertexConstFromMatrix(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleRotateToHeadingState.MATRIX_INDEX), this._matrix);
+ }
+ };
+ /** @private */
+ ParticleRotateToHeadingState.MATRIX_INDEX = 0;
+ return ParticleRotateToHeadingState;
+})(ParticleStateBase);
+module.exports = ParticleRotateToHeadingState;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined}],"awayjs-renderergl/lib/animators/states/ParticleRotateToPositionState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleRotateToPositionState = (function (_super) {
+ __extends(ParticleRotateToPositionState, _super);
+ function ParticleRotateToPositionState(animator, particleRotateToPositionNode) {
+ _super.call(this, animator, particleRotateToPositionNode);
+ this._matrix = new Matrix3D();
+ this._particleRotateToPositionNode = particleRotateToPositionNode;
+ this._position = this._particleRotateToPositionNode._iPosition;
+ }
+ Object.defineProperty(ParticleRotateToPositionState.prototype, "position", {
+ /**
+ * Defines the position of the point the particle will rotate to face when in global mode. Defaults to 0,0,0.
+ */
+ get: function () {
+ return this._position;
+ },
+ set: function (value) {
+ this._position = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleRotateToPositionState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.POSITION_INDEX);
+ if (animationRegisterCache.hasBillboard) {
+ this._matrix.copyFrom(renderable.sourceEntity.sceneTransform);
+ this._matrix.append(camera.inverseSceneTransform);
+ animationRegisterCache.setVertexConstFromMatrix(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleRotateToPositionState.MATRIX_INDEX), this._matrix);
+ }
+ if (this._particleRotateToPositionNode.mode == ParticlePropertiesMode.GLOBAL) {
+ this._offset = renderable.sourceEntity.inverseSceneTransform.transformVector(this._position);
+ animationRegisterCache.setVertexConst(index, this._offset.x, this._offset.y, this._offset.z);
+ }
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleRotateToPositionNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ };
+ /** @private */
+ ParticleRotateToPositionState.MATRIX_INDEX = 0;
+ /** @private */
+ ParticleRotateToPositionState.POSITION_INDEX = 1;
+ return ParticleRotateToPositionState;
+})(ParticleStateBase);
+module.exports = ParticleRotateToPositionState;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleRotationalVelocityState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleRotationalVelocityState = (function (_super) {
+ __extends(ParticleRotationalVelocityState, _super);
+ function ParticleRotationalVelocityState(animator, particleRotationNode) {
+ _super.call(this, animator, particleRotationNode);
+ this._particleRotationalVelocityNode = particleRotationNode;
+ this._rotationalVelocity = this._particleRotationalVelocityNode._iRotationalVelocity;
+ this.updateRotationalVelocityData();
+ }
+ Object.defineProperty(ParticleRotationalVelocityState.prototype, "rotationalVelocity", {
+ /**
+ * Defines the default rotationalVelocity of the state, used when in global mode.
+ */
+ get: function () {
+ return this._rotationalVelocity;
+ },
+ set: function (value) {
+ this._rotationalVelocity = value;
+ this.updateRotationalVelocityData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ *
+ */
+ ParticleRotationalVelocityState.prototype.getRotationalVelocities = function () {
+ return this._pDynamicProperties;
+ };
+ ParticleRotationalVelocityState.prototype.setRotationalVelocities = function (value) {
+ this._pDynamicProperties = value;
+ this._pDynamicPropertiesDirty = new Object();
+ };
+ /**
+ * @inheritDoc
+ */
+ ParticleRotationalVelocityState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationSubGeometry._iUniqueId])
+ this._pUpdateDynamicProperties(animationSubGeometry);
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX);
+ if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.GLOBAL)
+ animationRegisterCache.setVertexConst(index, this._rotationalVelocityData.x, this._rotationalVelocityData.y, this._rotationalVelocityData.z, this._rotationalVelocityData.w);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleRotationalVelocityNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ };
+ ParticleRotationalVelocityState.prototype.updateRotationalVelocityData = function () {
+ if (this._particleRotationalVelocityNode.mode == ParticlePropertiesMode.GLOBAL) {
+ if (this._rotationalVelocity.w <= 0)
+ throw (new Error("the cycle duration must greater than zero"));
+ var rotation = this._rotationalVelocity.clone();
+ if (rotation.length <= 0)
+ rotation.z = 1; //set the default direction
+ else
+ rotation.normalize();
+ // w is used as angle/2 in agal
+ this._rotationalVelocityData = new Vector3D(rotation.x, rotation.y, rotation.z, Math.PI / rotation.w);
+ }
+ };
+ /** @private */
+ ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX = 0;
+ return ParticleRotationalVelocityState;
+})(ParticleStateBase);
+module.exports = ParticleRotationalVelocityState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleScaleState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleScaleState = (function (_super) {
+ __extends(ParticleScaleState, _super);
+ function ParticleScaleState(animator, particleScaleNode) {
+ _super.call(this, animator, particleScaleNode);
+ this._particleScaleNode = particleScaleNode;
+ this._usesCycle = this._particleScaleNode._iUsesCycle;
+ this._usesPhase = this._particleScaleNode._iUsesPhase;
+ this._minScale = this._particleScaleNode._iMinScale;
+ this._maxScale = this._particleScaleNode._iMaxScale;
+ this._cycleDuration = this._particleScaleNode._iCycleDuration;
+ this._cyclePhase = this._particleScaleNode._iCyclePhase;
+ this.updateScaleData();
+ }
+ Object.defineProperty(ParticleScaleState.prototype, "minScale", {
+ /**
+ * Defines the end scale of the state, when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._minScale;
+ },
+ set: function (value) {
+ this._minScale = value;
+ this.updateScaleData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleScaleState.prototype, "maxScale", {
+ /**
+ * Defines the end scale of the state, when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._maxScale;
+ },
+ set: function (value) {
+ this._maxScale = value;
+ this.updateScaleData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleScaleState.prototype, "cycleDuration", {
+ /**
+ * Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._cycleDuration;
+ },
+ set: function (value) {
+ this._cycleDuration = value;
+ this.updateScaleData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleScaleState.prototype, "cyclePhase", {
+ /**
+ * Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
+ */
+ get: function () {
+ return this._cyclePhase;
+ },
+ set: function (value) {
+ this._cyclePhase = value;
+ this.updateScaleData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleScaleState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleScaleState.SCALE_INDEX);
+ if (this._particleScaleNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ if (this._usesCycle) {
+ if (this._usesPhase)
+ animationSubGeometry.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ }
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleScaleNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_2);
+ }
+ else
+ animationRegisterCache.setVertexConst(index, this._scaleData.x, this._scaleData.y, this._scaleData.z, this._scaleData.w);
+ };
+ ParticleScaleState.prototype.updateScaleData = function () {
+ if (this._particleScaleNode.mode == ParticlePropertiesMode.GLOBAL) {
+ if (this._usesCycle) {
+ if (this._cycleDuration <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._scaleData = new Vector3D((this._minScale + this._maxScale) / 2, Math.abs(this._minScale - this._maxScale) / 2, Math.PI * 2 / this._cycleDuration, this._cyclePhase * Math.PI / 180);
+ }
+ else
+ this._scaleData = new Vector3D(this._minScale, this._maxScale - this._minScale, 0, 0);
+ }
+ };
+ /** @private */
+ ParticleScaleState.SCALE_INDEX = 0;
+ return ParticleScaleState;
+})(ParticleStateBase);
+module.exports = ParticleScaleState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleSegmentedColorState":[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 ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ *
+ */
+var ParticleSegmentedColorState = (function (_super) {
+ __extends(ParticleSegmentedColorState, _super);
+ function ParticleSegmentedColorState(animator, particleSegmentedColorNode) {
+ _super.call(this, animator, particleSegmentedColorNode);
+ this._usesMultiplier = particleSegmentedColorNode._iUsesMultiplier;
+ this._usesOffset = particleSegmentedColorNode._iUsesOffset;
+ this._startColor = particleSegmentedColorNode._iStartColor;
+ this._endColor = particleSegmentedColorNode._iEndColor;
+ this._segmentPoints = particleSegmentedColorNode._iSegmentPoints;
+ this._numSegmentPoint = particleSegmentedColorNode._iNumSegmentPoint;
+ this.updateColorData();
+ }
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "startColor", {
+ /**
+ * Defines the start color transform of the state, when in global mode.
+ */
+ get: function () {
+ return this._startColor;
+ },
+ set: function (value) {
+ this._startColor = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "endColor", {
+ /**
+ * Defines the end color transform of the state, when in global mode.
+ */
+ get: function () {
+ return this._endColor;
+ },
+ set: function (value) {
+ this._endColor = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "numSegmentPoint", {
+ /**
+ * Defines the number of segments.
+ */
+ get: function () {
+ return this._numSegmentPoint;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "segmentPoints", {
+ /**
+ * Defines the key points of color
+ */
+ get: function () {
+ return this._segmentPoints;
+ },
+ set: function (value) {
+ this._segmentPoints = value;
+ this.updateColorData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "usesMultiplier", {
+ get: function () {
+ return this._usesMultiplier;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSegmentedColorState.prototype, "usesOffset", {
+ get: function () {
+ return this._usesOffset;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleSegmentedColorState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (animationRegisterCache.needFragmentAnimation) {
+ if (this._numSegmentPoint > 0)
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.TIME_DATA_INDEX), this._timeLifeData[0], this._timeLifeData[1], this._timeLifeData[2], this._timeLifeData[3]);
+ if (this._usesMultiplier)
+ animationRegisterCache.setVertexConstFromArray(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.START_MULTIPLIER_INDEX), this._multiplierData);
+ if (this._usesOffset)
+ animationRegisterCache.setVertexConstFromArray(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleSegmentedColorState.START_OFFSET_INDEX), this._offsetData);
+ }
+ };
+ ParticleSegmentedColorState.prototype.updateColorData = function () {
+ this._timeLifeData = new Array();
+ this._multiplierData = new Array();
+ this._offsetData = new Array();
+ var i /*int*/;
+ for (i = 0; i < this._numSegmentPoint; i++) {
+ if (i == 0)
+ this._timeLifeData.push(this._segmentPoints[i].life);
+ else
+ this._timeLifeData.push(this._segmentPoints[i].life - this._segmentPoints[i - 1].life);
+ }
+ if (this._numSegmentPoint == 0)
+ this._timeLifeData.push(1);
+ else
+ this._timeLifeData.push(1 - this._segmentPoints[i - 1].life);
+ if (this._usesMultiplier) {
+ this._multiplierData.push(this._startColor.redMultiplier, this._startColor.greenMultiplier, this._startColor.blueMultiplier, this._startColor.alphaMultiplier);
+ for (i = 0; i < this._numSegmentPoint; i++) {
+ if (i == 0)
+ this._multiplierData.push((this._segmentPoints[i].color.redMultiplier - this._startColor.redMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.greenMultiplier - this._startColor.greenMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.blueMultiplier - this._startColor.blueMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.alphaMultiplier - this._startColor.alphaMultiplier) / this._timeLifeData[i]);
+ else
+ this._multiplierData.push((this._segmentPoints[i].color.redMultiplier - this._segmentPoints[i - 1].color.redMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.greenMultiplier - this._segmentPoints[i - 1].color.greenMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.blueMultiplier - this._segmentPoints[i - 1].color.blueMultiplier) / this._timeLifeData[i], (this._segmentPoints[i].color.alphaMultiplier - this._segmentPoints[i - 1].color.alphaMultiplier) / this._timeLifeData[i]);
+ }
+ if (this._numSegmentPoint == 0)
+ this._multiplierData.push(this._endColor.redMultiplier - this._startColor.redMultiplier, this._endColor.greenMultiplier - this._startColor.greenMultiplier, this._endColor.blueMultiplier - this._startColor.blueMultiplier, this._endColor.alphaMultiplier - this._startColor.alphaMultiplier);
+ else
+ this._multiplierData.push((this._endColor.redMultiplier - this._segmentPoints[i - 1].color.redMultiplier) / this._timeLifeData[i], (this._endColor.greenMultiplier - this._segmentPoints[i - 1].color.greenMultiplier) / this._timeLifeData[i], (this._endColor.blueMultiplier - this._segmentPoints[i - 1].color.blueMultiplier) / this._timeLifeData[i], (this._endColor.alphaMultiplier - this._segmentPoints[i - 1].color.alphaMultiplier) / this._timeLifeData[i]);
+ }
+ if (this._usesOffset) {
+ this._offsetData.push(this._startColor.redOffset / 255, this._startColor.greenOffset / 255, this._startColor.blueOffset / 255, this._startColor.alphaOffset / 255);
+ for (i = 0; i < this._numSegmentPoint; i++) {
+ if (i == 0)
+ this._offsetData.push((this._segmentPoints[i].color.redOffset - this._startColor.redOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.greenOffset - this._startColor.greenOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.blueOffset - this._startColor.blueOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.alphaOffset - this._startColor.alphaOffset) / this._timeLifeData[i] / 255);
+ else
+ this._offsetData.push((this._segmentPoints[i].color.redOffset - this._segmentPoints[i - 1].color.redOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.greenOffset - this._segmentPoints[i - 1].color.greenOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.blueOffset - this._segmentPoints[i - 1].color.blueOffset) / this._timeLifeData[i] / 255, (this._segmentPoints[i].color.alphaOffset - this._segmentPoints[i - 1].color.alphaOffset) / this._timeLifeData[i] / 255);
+ }
+ if (this._numSegmentPoint == 0)
+ this._offsetData.push((this._endColor.redOffset - this._startColor.redOffset) / 255, (this._endColor.greenOffset - this._startColor.greenOffset) / 255, (this._endColor.blueOffset - this._startColor.blueOffset) / 255, (this._endColor.alphaOffset - this._startColor.alphaOffset) / 255);
+ else
+ this._offsetData.push((this._endColor.redOffset - this._segmentPoints[i - 1].color.redOffset) / this._timeLifeData[i] / 255, (this._endColor.greenOffset - this._segmentPoints[i - 1].color.greenOffset) / this._timeLifeData[i] / 255, (this._endColor.blueOffset - this._segmentPoints[i - 1].color.blueOffset) / this._timeLifeData[i] / 255, (this._endColor.alphaOffset - this._segmentPoints[i - 1].color.alphaOffset) / this._timeLifeData[i] / 255);
+ }
+ //cut off the data
+ this._timeLifeData.length = 4;
+ };
+ /** @private */
+ ParticleSegmentedColorState.START_MULTIPLIER_INDEX = 0;
+ /** @private */
+ ParticleSegmentedColorState.START_OFFSET_INDEX = 1;
+ /** @private */
+ ParticleSegmentedColorState.TIME_DATA_INDEX = 2;
+ return ParticleSegmentedColorState;
+})(ParticleStateBase);
+module.exports = ParticleSegmentedColorState;
+
+
+},{"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined}],"awayjs-renderergl/lib/animators/states/ParticleSpriteSheetState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleSpriteSheetState = (function (_super) {
+ __extends(ParticleSpriteSheetState, _super);
+ function ParticleSpriteSheetState(animator, particleSpriteSheetNode) {
+ _super.call(this, animator, particleSpriteSheetNode);
+ this._particleSpriteSheetNode = particleSpriteSheetNode;
+ this._usesCycle = this._particleSpriteSheetNode._iUsesCycle;
+ this._usesPhase = this._particleSpriteSheetNode._iUsesCycle;
+ this._totalFrames = this._particleSpriteSheetNode._iTotalFrames;
+ this._numColumns = this._particleSpriteSheetNode._iNumColumns;
+ this._numRows = this._particleSpriteSheetNode._iNumRows;
+ this._cycleDuration = this._particleSpriteSheetNode._iCycleDuration;
+ this._cyclePhase = this._particleSpriteSheetNode._iCyclePhase;
+ this.updateSpriteSheetData();
+ }
+ Object.defineProperty(ParticleSpriteSheetState.prototype, "cyclePhase", {
+ /**
+ * Defines the cycle phase, when in global mode. Defaults to zero.
+ */
+ get: function () {
+ return this._cyclePhase;
+ },
+ set: function (value) {
+ this._cyclePhase = value;
+ this.updateSpriteSheetData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleSpriteSheetState.prototype, "cycleDuration", {
+ /**
+ * Defines the cycle duration in seconds, when in global mode. Defaults to 1.
+ */
+ get: function () {
+ return this._cycleDuration;
+ },
+ set: function (value) {
+ this._cycleDuration = value;
+ this.updateSpriteSheetData();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleSpriteSheetState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (animationRegisterCache.needUVAnimation) {
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleSpriteSheetState.UV_INDEX_0), this._spriteSheetData[0], this._spriteSheetData[1], this._spriteSheetData[2], this._spriteSheetData[3]);
+ if (this._usesCycle) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleSpriteSheetState.UV_INDEX_1);
+ if (this._particleSpriteSheetNode.mode == ParticlePropertiesMode.LOCAL_STATIC) {
+ if (this._usesPhase)
+ animationSubGeometry.activateVertexBuffer(index, this._particleSpriteSheetNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleSpriteSheetNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_2);
+ }
+ else
+ animationRegisterCache.setVertexConst(index, this._spriteSheetData[4], this._spriteSheetData[5]);
+ }
+ }
+ };
+ ParticleSpriteSheetState.prototype.updateSpriteSheetData = function () {
+ this._spriteSheetData = new Array(8);
+ var uTotal = this._totalFrames / this._numColumns;
+ this._spriteSheetData[0] = uTotal;
+ this._spriteSheetData[1] = 1 / this._numColumns;
+ this._spriteSheetData[2] = 1 / this._numRows;
+ if (this._usesCycle) {
+ if (this._cycleDuration <= 0)
+ throw (new Error("the cycle duration must be greater than zero"));
+ this._spriteSheetData[4] = uTotal / this._cycleDuration;
+ this._spriteSheetData[5] = this._cycleDuration;
+ if (this._usesPhase)
+ this._spriteSheetData[6] = this._cyclePhase;
+ }
+ };
+ /** @private */
+ ParticleSpriteSheetState.UV_INDEX_0 = 0;
+ /** @private */
+ ParticleSpriteSheetState.UV_INDEX_1 = 1;
+ return ParticleSpriteSheetState;
+})(ParticleStateBase);
+module.exports = ParticleSpriteSheetState;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleStateBase":[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 AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+/**
+ * ...
+ */
+var ParticleStateBase = (function (_super) {
+ __extends(ParticleStateBase, _super);
+ function ParticleStateBase(animator, particleNode, needUpdateTime) {
+ if (needUpdateTime === void 0) { needUpdateTime = false; }
+ _super.call(this, animator, particleNode);
+ this._pDynamicProperties = new Array();
+ this._pDynamicPropertiesDirty = new Object();
+ this._particleNode = particleNode;
+ this._pNeedUpdateTime = needUpdateTime;
+ }
+ Object.defineProperty(ParticleStateBase.prototype, "needUpdateTime", {
+ get: function () {
+ return this._pNeedUpdateTime;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ ParticleStateBase.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ };
+ ParticleStateBase.prototype._pUpdateDynamicProperties = function (animationSubGeometry) {
+ this._pDynamicPropertiesDirty[animationSubGeometry._iUniqueId] = true;
+ var animationParticles = animationSubGeometry.animationParticles;
+ var vertexData = animationSubGeometry.vertexData;
+ var totalLenOfOneVertex = animationSubGeometry.totalLenOfOneVertex;
+ var dataLength = this._particleNode.dataLength;
+ var dataOffset = this._particleNode._iDataOffset;
+ var vertexLength /*uint*/;
+ // var particleOffset:number /*uint*/;
+ var startingOffset /*uint*/;
+ var vertexOffset /*uint*/;
+ var data;
+ var animationParticle;
+ // var numParticles:number /*uint*/ = _positions.length/dataLength;
+ var numParticles = this._pDynamicProperties.length;
+ var i = 0;
+ var j = 0;
+ var k = 0;
+ while (i < numParticles) {
+ while (j < numParticles && (animationParticle = animationParticles[j]).index == i) {
+ data = this._pDynamicProperties[i];
+ vertexLength = animationParticle.numVertices * totalLenOfOneVertex;
+ startingOffset = animationParticle.startVertexIndex * totalLenOfOneVertex + dataOffset;
+ for (k = 0; k < vertexLength; k += totalLenOfOneVertex) {
+ vertexOffset = startingOffset + k;
+ for (k = 0; k < vertexLength; k += totalLenOfOneVertex) {
+ vertexOffset = startingOffset + k;
+ vertexData[vertexOffset++] = data.x;
+ vertexData[vertexOffset++] = data.y;
+ vertexData[vertexOffset++] = data.z;
+ if (dataLength == 4)
+ vertexData[vertexOffset++] = data.w;
+ }
+ }
+ j++;
+ }
+ i++;
+ }
+ animationSubGeometry.invalidateBuffer();
+ };
+ return ParticleStateBase;
+})(AnimationStateBase);
+module.exports = ParticleStateBase;
+
+
+},{"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined}],"awayjs-renderergl/lib/animators/states/ParticleTimeState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleTimeState = (function (_super) {
+ __extends(ParticleTimeState, _super);
+ function ParticleTimeState(animator, particleTimeNode) {
+ _super.call(this, animator, particleTimeNode, true);
+ this._particleTimeNode = particleTimeNode;
+ }
+ ParticleTimeState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ animationSubGeometry.activateVertexBuffer(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleTimeState.TIME_STREAM_INDEX), this._particleTimeNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_4);
+ var particleTime = this._pTime / 1000;
+ animationRegisterCache.setVertexConst(animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleTimeState.TIME_CONSTANT_INDEX), particleTime, particleTime, particleTime, particleTime);
+ };
+ /** @private */
+ ParticleTimeState.TIME_STREAM_INDEX = 0;
+ /** @private */
+ ParticleTimeState.TIME_CONSTANT_INDEX = 1;
+ return ParticleTimeState;
+})(ParticleStateBase);
+module.exports = ParticleTimeState;
+
+
+},{"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/ParticleUVState":[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 ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleUVState = (function (_super) {
+ __extends(ParticleUVState, _super);
+ function ParticleUVState(animator, particleUVNode) {
+ _super.call(this, animator, particleUVNode);
+ this._particleUVNode = particleUVNode;
+ }
+ ParticleUVState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (animationRegisterCache.needUVAnimation) {
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleUVState.UV_INDEX);
+ var data = this._particleUVNode._iUvData;
+ animationRegisterCache.setVertexConst(index, data.x, data.y);
+ }
+ };
+ /** @private */
+ ParticleUVState.UV_INDEX = 0;
+ return ParticleUVState;
+})(ParticleStateBase);
+module.exports = ParticleUVState;
+
+
+},{"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined}],"awayjs-renderergl/lib/animators/states/ParticleVelocityState":[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 ContextGLVertexBufferFormat = require("awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat");
+var ParticlePropertiesMode = require("awayjs-renderergl/lib/animators/data/ParticlePropertiesMode");
+var ParticleStateBase = require("awayjs-renderergl/lib/animators/states/ParticleStateBase");
+/**
+ * ...
+ */
+var ParticleVelocityState = (function (_super) {
+ __extends(ParticleVelocityState, _super);
+ function ParticleVelocityState(animator, particleVelocityNode) {
+ _super.call(this, animator, particleVelocityNode);
+ this._particleVelocityNode = particleVelocityNode;
+ this._velocity = this._particleVelocityNode._iVelocity;
+ }
+ Object.defineProperty(ParticleVelocityState.prototype, "velocity", {
+ /**
+ * Defines the default velocity vector of the state, used when in global mode.
+ */
+ get: function () {
+ return this._velocity;
+ },
+ set: function (value) {
+ this._velocity = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ *
+ */
+ ParticleVelocityState.prototype.getVelocities = function () {
+ return this._pDynamicProperties;
+ };
+ ParticleVelocityState.prototype.setVelocities = function (value) {
+ this._pDynamicProperties = value;
+ this._pDynamicPropertiesDirty = new Object();
+ };
+ ParticleVelocityState.prototype.setRenderState = function (stage, renderable, animationSubGeometry, animationRegisterCache, camera) {
+ if (this._particleVelocityNode.mode == ParticlePropertiesMode.LOCAL_DYNAMIC && !this._pDynamicPropertiesDirty[animationSubGeometry._iUniqueId])
+ this._pUpdateDynamicProperties(animationSubGeometry);
+ var index = animationRegisterCache.getRegisterIndex(this._pAnimationNode, ParticleVelocityState.VELOCITY_INDEX);
+ if (this._particleVelocityNode.mode == ParticlePropertiesMode.GLOBAL)
+ animationRegisterCache.setVertexConst(index, this._velocity.x, this._velocity.y, this._velocity.z);
+ else
+ animationSubGeometry.activateVertexBuffer(index, this._particleVelocityNode._iDataOffset, stage, ContextGLVertexBufferFormat.FLOAT_3);
+ };
+ /** @private */
+ ParticleVelocityState.VELOCITY_INDEX = 0;
+ return ParticleVelocityState;
+})(ParticleStateBase);
+module.exports = ParticleVelocityState;
+
+
+},{"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode":undefined,"awayjs-renderergl/lib/animators/states/ParticleStateBase":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLVertexBufferFormat":undefined}],"awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState":[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 JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+var AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+/**
+ *
+ */
+var SkeletonBinaryLERPState = (function (_super) {
+ __extends(SkeletonBinaryLERPState, _super);
+ function SkeletonBinaryLERPState(animator, skeletonAnimationNode) {
+ _super.call(this, animator, skeletonAnimationNode);
+ this._blendWeight = 0;
+ this._skeletonPose = new SkeletonPose();
+ this._skeletonPoseDirty = true;
+ this._skeletonAnimationNode = skeletonAnimationNode;
+ this._inputA = animator.getAnimationState(this._skeletonAnimationNode.inputA);
+ this._inputB = animator.getAnimationState(this._skeletonAnimationNode.inputB);
+ }
+ Object.defineProperty(SkeletonBinaryLERPState.prototype, "blendWeight", {
+ /**
+ * Defines a fractional value between 0 and 1 representing the blending ratio between inputA (0) and inputB (1),
+ * used to produce the skeleton pose output.
+ *
+ * @see inputA
+ * @see inputB
+ */
+ get: function () {
+ return this._blendWeight;
+ },
+ set: function (value) {
+ this._blendWeight = value;
+ this._pPositionDeltaDirty = true;
+ this._skeletonPoseDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SkeletonBinaryLERPState.prototype.phase = function (value) {
+ this._skeletonPoseDirty = true;
+ this._pPositionDeltaDirty = true;
+ this._inputA.phase(value);
+ this._inputB.phase(value);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonBinaryLERPState.prototype._pUpdateTime = function (time /*int*/) {
+ this._skeletonPoseDirty = true;
+ this._inputA.update(time);
+ this._inputB.update(time);
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ SkeletonBinaryLERPState.prototype.getSkeletonPose = function (skeleton) {
+ if (this._skeletonPoseDirty)
+ this.updateSkeletonPose(skeleton);
+ return this._skeletonPose;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonBinaryLERPState.prototype._pUpdatePositionDelta = function () {
+ this._pPositionDeltaDirty = false;
+ var deltA = this._inputA.positionDelta;
+ var deltB = this._inputB.positionDelta;
+ this._pRootDelta.x = deltA.x + this._blendWeight * (deltB.x - deltA.x);
+ this._pRootDelta.y = deltA.y + this._blendWeight * (deltB.y - deltA.y);
+ this._pRootDelta.z = deltA.z + this._blendWeight * (deltB.z - deltA.z);
+ };
+ /**
+ * Updates the output skeleton pose of the node based on the blendWeight value between input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ SkeletonBinaryLERPState.prototype.updateSkeletonPose = function (skeleton) {
+ this._skeletonPoseDirty = false;
+ var endPose;
+ var endPoses = this._skeletonPose.jointPoses;
+ var poses1 = this._inputA.getSkeletonPose(skeleton).jointPoses;
+ var poses2 = this._inputB.getSkeletonPose(skeleton).jointPoses;
+ var pose1, pose2;
+ var p1, p2;
+ var tr;
+ var numJoints = skeleton.numJoints;
+ // :s
+ if (endPoses.length != numJoints)
+ endPoses.length = numJoints;
+ for (var i = 0; i < numJoints; ++i) {
+ endPose = endPoses[i];
+ if (endPose == null)
+ endPose = endPoses[i] = new JointPose();
+ pose1 = poses1[i];
+ pose2 = poses2[i];
+ p1 = pose1.translation;
+ p2 = pose2.translation;
+ endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._blendWeight);
+ tr = endPose.translation;
+ tr.x = p1.x + this._blendWeight * (p2.x - p1.x);
+ tr.y = p1.y + this._blendWeight * (p2.y - p1.y);
+ tr.z = p1.z + this._blendWeight * (p2.z - p1.z);
+ }
+ };
+ return SkeletonBinaryLERPState;
+})(AnimationStateBase);
+module.exports = SkeletonBinaryLERPState;
+
+
+},{"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined}],"awayjs-renderergl/lib/animators/states/SkeletonClipState":[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 JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+var AnimationClipState = require("awayjs-renderergl/lib/animators/states/AnimationClipState");
+/**
+ *
+ */
+var SkeletonClipState = (function (_super) {
+ __extends(SkeletonClipState, _super);
+ function SkeletonClipState(animator, skeletonClipNode) {
+ _super.call(this, animator, skeletonClipNode);
+ this._rootPos = new Vector3D();
+ this._skeletonPose = new SkeletonPose();
+ this._skeletonPoseDirty = true;
+ this._skeletonClipNode = skeletonClipNode;
+ this._frames = this._skeletonClipNode.frames;
+ }
+ Object.defineProperty(SkeletonClipState.prototype, "currentPose", {
+ /**
+ * Returns the current skeleton pose frame of animation in the clip based on the internal playhead position.
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._currentPose;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SkeletonClipState.prototype, "nextPose", {
+ /**
+ * Returns the next skeleton pose frame of animation in the clip based on the internal playhead position.
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._nextPose;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ SkeletonClipState.prototype.getSkeletonPose = function (skeleton) {
+ if (this._skeletonPoseDirty)
+ this.updateSkeletonPose(skeleton);
+ return this._skeletonPose;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonClipState.prototype._pUpdateTime = function (time /*int*/) {
+ this._skeletonPoseDirty = true;
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonClipState.prototype._pUpdateFrames = function () {
+ _super.prototype._pUpdateFrames.call(this);
+ this._currentPose = this._frames[this._pCurrentFrame];
+ if (this._skeletonClipNode.looping && this._pNextFrame >= this._skeletonClipNode.lastFrame) {
+ this._nextPose = this._frames[0];
+ this._pAnimator.dispatchCycleEvent();
+ }
+ else
+ this._nextPose = this._frames[this._pNextFrame];
+ };
+ /**
+ * Updates the output skeleton pose of the node based on the internal playhead position.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ SkeletonClipState.prototype.updateSkeletonPose = function (skeleton) {
+ this._skeletonPoseDirty = false;
+ if (!this._skeletonClipNode.totalDuration)
+ return;
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ var currentPose = this._currentPose.jointPoses;
+ var nextPose = this._nextPose.jointPoses;
+ var numJoints = skeleton.numJoints;
+ var p1, p2;
+ var pose1, pose2;
+ var endPoses = this._skeletonPose.jointPoses;
+ var endPose;
+ var tr;
+ // :s
+ if (endPoses.length != numJoints)
+ endPoses.length = numJoints;
+ if ((numJoints != currentPose.length) || (numJoints != nextPose.length))
+ throw new Error("joint counts don't match!");
+ for (var i = 0; i < numJoints; ++i) {
+ endPose = endPoses[i];
+ if (endPose == null)
+ endPose = endPoses[i] = new JointPose();
+ pose1 = currentPose[i];
+ pose2 = nextPose[i];
+ p1 = pose1.translation;
+ p2 = pose2.translation;
+ if (this._skeletonClipNode.highQuality)
+ endPose.orientation.slerp(pose1.orientation, pose2.orientation, this._pBlendWeight);
+ else
+ endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._pBlendWeight);
+ if (i > 0) {
+ tr = endPose.translation;
+ tr.x = p1.x + this._pBlendWeight * (p2.x - p1.x);
+ tr.y = p1.y + this._pBlendWeight * (p2.y - p1.y);
+ tr.z = p1.z + this._pBlendWeight * (p2.z - p1.z);
+ }
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonClipState.prototype._pUpdatePositionDelta = function () {
+ this._pPositionDeltaDirty = false;
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ var p1, p2, p3;
+ var totalDelta = this._skeletonClipNode.totalDelta;
+ // jumping back, need to reset position
+ if ((this._pTimeDir > 0 && this._pNextFrame < this._pOldFrame) || (this._pTimeDir < 0 && this._pNextFrame > this._pOldFrame)) {
+ this._rootPos.x -= totalDelta.x * this._pTimeDir;
+ this._rootPos.y -= totalDelta.y * this._pTimeDir;
+ this._rootPos.z -= totalDelta.z * this._pTimeDir;
+ }
+ var dx = this._rootPos.x;
+ var dy = this._rootPos.y;
+ var dz = this._rootPos.z;
+ if (this._skeletonClipNode.stitchFinalFrame && this._pNextFrame == this._skeletonClipNode.lastFrame) {
+ p1 = this._frames[0].jointPoses[0].translation;
+ p2 = this._frames[1].jointPoses[0].translation;
+ p3 = this._currentPose.jointPoses[0].translation;
+ this._rootPos.x = p3.x + p1.x + this._pBlendWeight * (p2.x - p1.x);
+ this._rootPos.y = p3.y + p1.y + this._pBlendWeight * (p2.y - p1.y);
+ this._rootPos.z = p3.z + p1.z + this._pBlendWeight * (p2.z - p1.z);
+ }
+ else {
+ p1 = this._currentPose.jointPoses[0].translation;
+ p2 = this._frames[this._pNextFrame].jointPoses[0].translation; //cover the instances where we wrap the pose but still want the final frame translation values
+ this._rootPos.x = p1.x + this._pBlendWeight * (p2.x - p1.x);
+ this._rootPos.y = p1.y + this._pBlendWeight * (p2.y - p1.y);
+ this._rootPos.z = p1.z + this._pBlendWeight * (p2.z - p1.z);
+ }
+ this._pRootDelta.x = this._rootPos.x - dx;
+ this._pRootDelta.y = this._rootPos.y - dy;
+ this._pRootDelta.z = this._rootPos.z - dz;
+ this._pOldFrame = this._pNextFrame;
+ };
+ return SkeletonClipState;
+})(AnimationClipState);
+module.exports = SkeletonClipState;
+
+
+},{"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/animators/states/AnimationClipState":undefined}],"awayjs-renderergl/lib/animators/states/SkeletonDifferenceState":[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 Quaternion = require("awayjs-core/lib/core/geom/Quaternion");
+var JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+var AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+/**
+ *
+ */
+var SkeletonDifferenceState = (function (_super) {
+ __extends(SkeletonDifferenceState, _super);
+ function SkeletonDifferenceState(animator, skeletonAnimationNode) {
+ _super.call(this, animator, skeletonAnimationNode);
+ this._blendWeight = 0;
+ this._skeletonPose = new SkeletonPose();
+ this._skeletonPoseDirty = true;
+ this._skeletonAnimationNode = skeletonAnimationNode;
+ this._baseInput = animator.getAnimationState(this._skeletonAnimationNode.baseInput);
+ this._differenceInput = animator.getAnimationState(this._skeletonAnimationNode.differenceInput);
+ }
+ Object.defineProperty(SkeletonDifferenceState.prototype, "blendWeight", {
+ /**
+ * Defines a fractional value between 0 and 1 representing the blending ratio between the base input (0) and difference input (1),
+ * used to produce the skeleton pose output.
+ *
+ * @see #baseInput
+ * @see #differenceInput
+ */
+ get: function () {
+ return this._blendWeight;
+ },
+ set: function (value) {
+ this._blendWeight = value;
+ this._pPositionDeltaDirty = true;
+ this._skeletonPoseDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SkeletonDifferenceState.prototype.phase = function (value) {
+ this._skeletonPoseDirty = true;
+ this._pPositionDeltaDirty = true;
+ this._baseInput.phase(value);
+ this._baseInput.phase(value);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonDifferenceState.prototype._pUpdateTime = function (time /*int*/) {
+ this._skeletonPoseDirty = true;
+ this._baseInput.update(time);
+ this._differenceInput.update(time);
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ SkeletonDifferenceState.prototype.getSkeletonPose = function (skeleton) {
+ if (this._skeletonPoseDirty)
+ this.updateSkeletonPose(skeleton);
+ return this._skeletonPose;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonDifferenceState.prototype._pUpdatePositionDelta = function () {
+ this._pPositionDeltaDirty = false;
+ var deltA = this._baseInput.positionDelta;
+ var deltB = this._differenceInput.positionDelta;
+ this.positionDelta.x = deltA.x + this._blendWeight * deltB.x;
+ this.positionDelta.y = deltA.y + this._blendWeight * deltB.y;
+ this.positionDelta.z = deltA.z + this._blendWeight * deltB.z;
+ };
+ /**
+ * Updates the output skeleton pose of the node based on the blendWeight value between base input and difference input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ SkeletonDifferenceState.prototype.updateSkeletonPose = function (skeleton) {
+ this._skeletonPoseDirty = false;
+ var endPose;
+ var endPoses = this._skeletonPose.jointPoses;
+ var basePoses = this._baseInput.getSkeletonPose(skeleton).jointPoses;
+ var diffPoses = this._differenceInput.getSkeletonPose(skeleton).jointPoses;
+ var base, diff;
+ var basePos, diffPos;
+ var tr;
+ var numJoints = skeleton.numJoints;
+ // :s
+ if (endPoses.length != numJoints)
+ endPoses.length = numJoints;
+ for (var i = 0; i < numJoints; ++i) {
+ endPose = endPoses[i];
+ if (endPose == null)
+ endPose = endPoses[i] = new JointPose();
+ base = basePoses[i];
+ diff = diffPoses[i];
+ basePos = base.translation;
+ diffPos = diff.translation;
+ SkeletonDifferenceState._tempQuat.multiply(diff.orientation, base.orientation);
+ endPose.orientation.lerp(base.orientation, SkeletonDifferenceState._tempQuat, this._blendWeight);
+ tr = endPose.translation;
+ tr.x = basePos.x + this._blendWeight * diffPos.x;
+ tr.y = basePos.y + this._blendWeight * diffPos.y;
+ tr.z = basePos.z + this._blendWeight * diffPos.z;
+ }
+ };
+ SkeletonDifferenceState._tempQuat = new Quaternion();
+ return SkeletonDifferenceState;
+})(AnimationStateBase);
+module.exports = SkeletonDifferenceState;
+
+
+},{"awayjs-core/lib/core/geom/Quaternion":undefined,"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined}],"awayjs-renderergl/lib/animators/states/SkeletonDirectionalState":[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 JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+var AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+/**
+ *
+ */
+var SkeletonDirectionalState = (function (_super) {
+ __extends(SkeletonDirectionalState, _super);
+ function SkeletonDirectionalState(animator, skeletonAnimationNode) {
+ _super.call(this, animator, skeletonAnimationNode);
+ this._skeletonPose = new SkeletonPose();
+ this._skeletonPoseDirty = true;
+ this._blendWeight = 0;
+ this._direction = 0;
+ this._blendDirty = true;
+ this._skeletonAnimationNode = skeletonAnimationNode;
+ this._forward = animator.getAnimationState(this._skeletonAnimationNode.forward);
+ this._backward = animator.getAnimationState(this._skeletonAnimationNode.backward);
+ this._left = animator.getAnimationState(this._skeletonAnimationNode.left);
+ this._right = animator.getAnimationState(this._skeletonAnimationNode.right);
+ }
+ Object.defineProperty(SkeletonDirectionalState.prototype, "direction", {
+ get: function () {
+ return this._direction;
+ },
+ /**
+ * Defines the direction in degrees of the aniamtion between the forwards (0), right(90) backwards (180) and left(270) input nodes,
+ * used to produce the skeleton pose output.
+ */
+ set: function (value) {
+ if (this._direction == value)
+ return;
+ this._direction = value;
+ this._blendDirty = true;
+ this._skeletonPoseDirty = true;
+ this._pPositionDeltaDirty = true;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SkeletonDirectionalState.prototype.phase = function (value) {
+ if (this._blendDirty)
+ this.updateBlend();
+ this._skeletonPoseDirty = true;
+ this._pPositionDeltaDirty = true;
+ this._inputA.phase(value);
+ this._inputB.phase(value);
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonDirectionalState.prototype._pUdateTime = function (time /*int*/) {
+ if (this._blendDirty)
+ this.updateBlend();
+ this._skeletonPoseDirty = true;
+ this._inputA.update(time);
+ this._inputB.update(time);
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ SkeletonDirectionalState.prototype.getSkeletonPose = function (skeleton) {
+ if (this._skeletonPoseDirty)
+ this.updateSkeletonPose(skeleton);
+ return this._skeletonPose;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonDirectionalState.prototype._pUpdatePositionDelta = function () {
+ this._pPositionDeltaDirty = false;
+ if (this._blendDirty)
+ this.updateBlend();
+ var deltA = this._inputA.positionDelta;
+ var deltB = this._inputB.positionDelta;
+ this.positionDelta.x = deltA.x + this._blendWeight * (deltB.x - deltA.x);
+ this.positionDelta.y = deltA.y + this._blendWeight * (deltB.y - deltA.y);
+ this.positionDelta.z = deltA.z + this._blendWeight * (deltB.z - deltA.z);
+ };
+ /**
+ * Updates the output skeleton pose of the node based on the direction value between forward, backwards, left and right input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ SkeletonDirectionalState.prototype.updateSkeletonPose = function (skeleton) {
+ this._skeletonPoseDirty = false;
+ if (this._blendDirty)
+ this.updateBlend();
+ var endPose;
+ var endPoses = this._skeletonPose.jointPoses;
+ var poses1 = this._inputA.getSkeletonPose(skeleton).jointPoses;
+ var poses2 = this._inputB.getSkeletonPose(skeleton).jointPoses;
+ var pose1, pose2;
+ var p1, p2;
+ var tr;
+ var numJoints = skeleton.numJoints;
+ // :s
+ if (endPoses.length != numJoints)
+ endPoses.length = numJoints;
+ for (var i = 0; i < numJoints; ++i) {
+ endPose = endPoses[i];
+ if (endPose == null)
+ endPose = endPoses[i] = new JointPose();
+ pose1 = poses1[i];
+ pose2 = poses2[i];
+ p1 = pose1.translation;
+ p2 = pose2.translation;
+ endPose.orientation.lerp(pose1.orientation, pose2.orientation, this._blendWeight);
+ tr = endPose.translation;
+ tr.x = p1.x + this._blendWeight * (p2.x - p1.x);
+ tr.y = p1.y + this._blendWeight * (p2.y - p1.y);
+ tr.z = p1.z + this._blendWeight * (p2.z - p1.z);
+ }
+ };
+ /**
+ * Updates the blend value for the animation output based on the direction value between forward, backwards, left and right input nodes.
+ *
+ * @private
+ */
+ SkeletonDirectionalState.prototype.updateBlend = function () {
+ this._blendDirty = false;
+ if (this._direction < 0 || this._direction > 360) {
+ this._direction %= 360;
+ if (this._direction < 0)
+ this._direction += 360;
+ }
+ if (this._direction < 90) {
+ this._inputA = this._forward;
+ this._inputB = this._right;
+ this._blendWeight = this._direction / 90;
+ }
+ else if (this._direction < 180) {
+ this._inputA = this._right;
+ this._inputB = this._backward;
+ this._blendWeight = (this._direction - 90) / 90;
+ }
+ else if (this._direction < 270) {
+ this._inputA = this._backward;
+ this._inputB = this._left;
+ this._blendWeight = (this._direction - 180) / 90;
+ }
+ else {
+ this._inputA = this._left;
+ this._inputB = this._forward;
+ this._blendWeight = (this._direction - 270) / 90;
+ }
+ };
+ return SkeletonDirectionalState;
+})(AnimationStateBase);
+module.exports = SkeletonDirectionalState;
+
+
+},{"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined}],"awayjs-renderergl/lib/animators/states/SkeletonNaryLERPState":[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 JointPose = require("awayjs-renderergl/lib/animators/data/JointPose");
+var SkeletonPose = require("awayjs-renderergl/lib/animators/data/SkeletonPose");
+var AnimationStateBase = require("awayjs-renderergl/lib/animators/states/AnimationStateBase");
+/**
+ *
+ */
+var SkeletonNaryLERPState = (function (_super) {
+ __extends(SkeletonNaryLERPState, _super);
+ function SkeletonNaryLERPState(animator, skeletonAnimationNode) {
+ _super.call(this, animator, skeletonAnimationNode);
+ this._skeletonPose = new SkeletonPose();
+ this._skeletonPoseDirty = true;
+ this._blendWeights = new Array();
+ this._inputs = new Array();
+ this._skeletonAnimationNode = skeletonAnimationNode;
+ var i = this._skeletonAnimationNode.numInputs;
+ while (i--)
+ this._inputs[i] = animator.getAnimationState(this._skeletonAnimationNode._iInputs[i]);
+ }
+ /**
+ * @inheritDoc
+ */
+ SkeletonNaryLERPState.prototype.phase = function (value) {
+ this._skeletonPoseDirty = true;
+ this._pPositionDeltaDirty = true;
+ for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {
+ if (this._blendWeights[j])
+ this._inputs[j].update(value);
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonNaryLERPState.prototype._pUdateTime = function (time /*int*/) {
+ for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {
+ if (this._blendWeights[j])
+ this._inputs[j].update(time);
+ }
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ /**
+ * Returns the current skeleton pose of the animation in the clip based on the internal playhead position.
+ */
+ SkeletonNaryLERPState.prototype.getSkeletonPose = function (skeleton) {
+ if (this._skeletonPoseDirty)
+ this.updateSkeletonPose(skeleton);
+ return this._skeletonPose;
+ };
+ /**
+ * Returns the blend weight of the skeleton aniamtion node that resides at the given input index.
+ *
+ * @param index The input index for which the skeleton animation node blend weight is requested.
+ */
+ SkeletonNaryLERPState.prototype.getBlendWeightAt = function (index /*uint*/) {
+ return this._blendWeights[index];
+ };
+ /**
+ * Sets the blend weight of the skeleton aniamtion node that resides at the given input index.
+ *
+ * @param index The input index on which the skeleton animation node blend weight is to be set.
+ * @param blendWeight The blend weight value to use for the given skeleton animation node index.
+ */
+ SkeletonNaryLERPState.prototype.setBlendWeightAt = function (index /*uint*/, blendWeight) {
+ this._blendWeights[index] = blendWeight;
+ this._pPositionDeltaDirty = true;
+ this._skeletonPoseDirty = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ SkeletonNaryLERPState.prototype._pUpdatePositionDelta = function () {
+ this._pPositionDeltaDirty = false;
+ var delta;
+ var weight;
+ this.positionDelta.x = 0;
+ this.positionDelta.y = 0;
+ this.positionDelta.z = 0;
+ for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {
+ weight = this._blendWeights[j];
+ if (weight) {
+ delta = this._inputs[j].positionDelta;
+ this.positionDelta.x += weight * delta.x;
+ this.positionDelta.y += weight * delta.y;
+ this.positionDelta.z += weight * delta.z;
+ }
+ }
+ };
+ /**
+ * Updates the output skeleton pose of the node based on the blend weight values given to the input nodes.
+ *
+ * @param skeleton The skeleton used by the animator requesting the ouput pose.
+ */
+ SkeletonNaryLERPState.prototype.updateSkeletonPose = function (skeleton) {
+ this._skeletonPoseDirty = false;
+ var weight;
+ var endPoses = this._skeletonPose.jointPoses;
+ var poses;
+ var endPose, pose;
+ var endTr, tr;
+ var endQuat, q;
+ var firstPose;
+ var i /*uint*/;
+ var w0, x0, y0, z0;
+ var w1, x1, y1, z1;
+ var numJoints = skeleton.numJoints;
+ // :s
+ if (endPoses.length != numJoints)
+ endPoses.length = numJoints;
+ for (var j = 0; j < this._skeletonAnimationNode.numInputs; ++j) {
+ weight = this._blendWeights[j];
+ if (!weight)
+ continue;
+ poses = this._inputs[j].getSkeletonPose(skeleton).jointPoses;
+ if (!firstPose) {
+ firstPose = poses;
+ for (i = 0; i < numJoints; ++i) {
+ endPose = endPoses[i];
+ if (endPose == null)
+ endPose = endPoses[i] = new JointPose();
+ pose = poses[i];
+ q = pose.orientation;
+ tr = pose.translation;
+ endQuat = endPose.orientation;
+ endQuat.x = weight * q.x;
+ endQuat.y = weight * q.y;
+ endQuat.z = weight * q.z;
+ endQuat.w = weight * q.w;
+ endTr = endPose.translation;
+ endTr.x = weight * tr.x;
+ endTr.y = weight * tr.y;
+ endTr.z = weight * tr.z;
+ }
+ }
+ else {
+ for (i = 0; i < skeleton.numJoints; ++i) {
+ endPose = endPoses[i];
+ pose = poses[i];
+ q = firstPose[i].orientation;
+ x0 = q.x;
+ y0 = q.y;
+ z0 = q.z;
+ w0 = q.w;
+ q = pose.orientation;
+ tr = pose.translation;
+ x1 = q.x;
+ y1 = q.y;
+ z1 = q.z;
+ w1 = q.w;
+ // find shortest direction
+ if (x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1 < 0) {
+ x1 = -x1;
+ y1 = -y1;
+ z1 = -z1;
+ w1 = -w1;
+ }
+ endQuat = endPose.orientation;
+ endQuat.x += weight * x1;
+ endQuat.y += weight * y1;
+ endQuat.z += weight * z1;
+ endQuat.w += weight * w1;
+ endTr = endPose.translation;
+ endTr.x += weight * tr.x;
+ endTr.y += weight * tr.y;
+ endTr.z += weight * tr.z;
+ }
+ }
+ }
+ for (i = 0; i < skeleton.numJoints; ++i)
+ endPoses[i].orientation.normalize();
+ };
+ return SkeletonNaryLERPState;
+})(AnimationStateBase);
+module.exports = SkeletonNaryLERPState;
+
+
+},{"awayjs-renderergl/lib/animators/data/JointPose":undefined,"awayjs-renderergl/lib/animators/data/SkeletonPose":undefined,"awayjs-renderergl/lib/animators/states/AnimationStateBase":undefined}],"awayjs-renderergl/lib/animators/states/VertexClipState":[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 AnimationClipState = require("awayjs-renderergl/lib/animators/states/AnimationClipState");
+/**
+ *
+ */
+var VertexClipState = (function (_super) {
+ __extends(VertexClipState, _super);
+ function VertexClipState(animator, vertexClipNode) {
+ _super.call(this, animator, vertexClipNode);
+ this._vertexClipNode = vertexClipNode;
+ this._frames = this._vertexClipNode.frames;
+ }
+ Object.defineProperty(VertexClipState.prototype, "currentGeometry", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._currentGeometry;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(VertexClipState.prototype, "nextGeometry", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ if (this._pFramesDirty)
+ this._pUpdateFrames();
+ return this._nextGeometry;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ VertexClipState.prototype._pUpdateFrames = function () {
+ _super.prototype._pUpdateFrames.call(this);
+ this._currentGeometry = this._frames[this._pCurrentFrame];
+ if (this._vertexClipNode.looping && this._pNextFrame >= this._vertexClipNode.lastFrame) {
+ this._nextGeometry = this._frames[0];
+ this._pAnimator.dispatchCycleEvent();
+ }
+ else
+ this._nextGeometry = this._frames[this._pNextFrame];
+ };
+ /**
+ * @inheritDoc
+ */
+ VertexClipState.prototype._pUpdatePositionDelta = function () {
+ //TODO:implement positiondelta functionality for vertex animations
+ };
+ return VertexClipState;
+})(AnimationClipState);
+module.exports = VertexClipState;
+
+
+},{"awayjs-renderergl/lib/animators/states/AnimationClipState":undefined}],"awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode":[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 SkeletonBinaryLERPNode = require("awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode");
+var CrossfadeTransitionState = require("awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionState");
+/**
+ * A skeleton animation node that uses two animation node inputs to blend a lineraly interpolated output of a skeleton pose.
+ */
+var CrossfadeTransitionNode = (function (_super) {
+ __extends(CrossfadeTransitionNode, _super);
+ /**
+ * Creates a new CrossfadeTransitionNode
object.
+ */
+ function CrossfadeTransitionNode() {
+ _super.call(this);
+ this._pStateClass = CrossfadeTransitionState;
+ }
+ return CrossfadeTransitionNode;
+})(SkeletonBinaryLERPNode);
+module.exports = CrossfadeTransitionNode;
+
+
+},{"awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode":undefined,"awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionState":undefined}],"awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionState":[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 SkeletonBinaryLERPState = require("awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState");
+var AnimationStateEvent = require("awayjs-renderergl/lib/events/AnimationStateEvent");
+/**
+ *
+ */
+var CrossfadeTransitionState = (function (_super) {
+ __extends(CrossfadeTransitionState, _super);
+ function CrossfadeTransitionState(animator, skeletonAnimationNode) {
+ _super.call(this, animator, skeletonAnimationNode);
+ this._crossfadeTransitionNode = skeletonAnimationNode;
+ }
+ /**
+ * @inheritDoc
+ */
+ CrossfadeTransitionState.prototype._pUpdateTime = function (time /*int*/) {
+ this.blendWeight = Math.abs(time - this._crossfadeTransitionNode.startBlend) / (1000 * this._crossfadeTransitionNode.blendSpeed);
+ if (this.blendWeight >= 1) {
+ this.blendWeight = 1;
+ if (this._animationStateTransitionComplete == null)
+ this._animationStateTransitionComplete = new AnimationStateEvent(AnimationStateEvent.TRANSITION_COMPLETE, this._pAnimator, this, this._crossfadeTransitionNode);
+ this._crossfadeTransitionNode.dispatchEvent(this._animationStateTransitionComplete);
+ }
+ _super.prototype._pUpdateTime.call(this, time);
+ };
+ return CrossfadeTransitionState;
+})(SkeletonBinaryLERPState);
+module.exports = CrossfadeTransitionState;
+
+
+},{"awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState":undefined,"awayjs-renderergl/lib/events/AnimationStateEvent":undefined}],"awayjs-renderergl/lib/animators/transitions/CrossfadeTransition":[function(require,module,exports){
+var CrossfadeTransitionNode = require("awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode");
+/**
+ *
+ */
+var CrossfadeTransition = (function () {
+ function CrossfadeTransition(blendSpeed) {
+ this.blendSpeed = 0.5;
+ this.blendSpeed = blendSpeed;
+ }
+ CrossfadeTransition.prototype.getAnimationNode = function (animator, startNode, endNode, startBlend /*int*/) {
+ var crossFadeTransitionNode = new CrossfadeTransitionNode();
+ crossFadeTransitionNode.inputA = startNode;
+ crossFadeTransitionNode.inputB = endNode;
+ crossFadeTransitionNode.blendSpeed = this.blendSpeed;
+ crossFadeTransitionNode.startBlend = startBlend;
+ return crossFadeTransitionNode;
+ };
+ return CrossfadeTransition;
+})();
+module.exports = CrossfadeTransition;
+
+
+},{"awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode":undefined}],"awayjs-renderergl/lib/animators/transitions/IAnimationTransition":[function(require,module,exports){
+
+
+
+},{}],"awayjs-renderergl/lib/core/base/ParticleGeometry":[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 Geometry = require("awayjs-core/lib/core/base/Geometry");
+/**
+ * @class away.base.ParticleGeometry
+ */
+var ParticleGeometry = (function (_super) {
+ __extends(ParticleGeometry, _super);
+ function ParticleGeometry() {
+ _super.apply(this, arguments);
+ }
+ return ParticleGeometry;
+})(Geometry);
+module.exports = ParticleGeometry;
+
+
+},{"awayjs-core/lib/core/base/Geometry":undefined}],"awayjs-renderergl/lib/core/pick/JSPickingCollider":[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 TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var PickingColliderBase = require("awayjs-renderergl/lib/core/pick/PickingColliderBase");
+/**
+ * Pure JS picking collider for display objects. Used with the RaycastPicker
picking object.
+ *
+ * @see away.base.DisplayObject#pickingCollider
+ * @see away.pick.RaycastPicker
+ *
+ * @class away.pick.JSPickingCollider
+ */
+var JSPickingCollider = (function (_super) {
+ __extends(JSPickingCollider, _super);
+ /**
+ * Creates a new JSPickingCollider
object.
+ *
+ * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.
+ */
+ function JSPickingCollider(findClosestCollision) {
+ if (findClosestCollision === void 0) { findClosestCollision = false; }
+ _super.call(this);
+ this._findClosestCollision = findClosestCollision;
+ }
+ /**
+ * @inheritDoc
+ */
+ JSPickingCollider.prototype._pTestRenderableCollision = function (renderable, pickingCollisionVO, shortestCollisionDistance) {
+ var t;
+ var i0, i1, i2;
+ var rx, ry, rz;
+ var nx, ny, nz;
+ var cx, cy, cz;
+ var coeff, u, v, w;
+ var p0x, p0y, p0z;
+ var p1x, p1y, p1z;
+ var p2x, p2y, p2z;
+ var s0x, s0y, s0z;
+ var s1x, s1y, s1z;
+ var nl, nDotV, D, disToPlane;
+ var Q1Q2, Q1Q1, Q2Q2, RQ1, RQ2;
+ var indexData = renderable.getIndexData().data;
+ var collisionTriangleIndex = -1;
+ var bothSides = renderable.materialOwner.material.bothSides;
+ var positionData = renderable.getVertexData(TriangleSubGeometry.POSITION_DATA).data;
+ var positionStride = renderable.getVertexData(TriangleSubGeometry.POSITION_DATA).dataPerVertex;
+ var positionOffset = renderable.getVertexOffset(TriangleSubGeometry.POSITION_DATA);
+ var uvData = renderable.getVertexData(TriangleSubGeometry.UV_DATA).data;
+ var uvStride = renderable.getVertexData(TriangleSubGeometry.UV_DATA).dataPerVertex;
+ var uvOffset = renderable.getVertexOffset(TriangleSubGeometry.UV_DATA);
+ var numIndices = indexData.length;
+ for (var index = 0; index < numIndices; index += 3) {
+ // evaluate triangle indices
+ i0 = positionOffset + indexData[index] * positionStride;
+ i1 = positionOffset + indexData[(index + 1)] * positionStride;
+ i2 = positionOffset + indexData[(index + 2)] * positionStride;
+ // evaluate triangle positions
+ p0x = positionData[i0];
+ p0y = positionData[(i0 + 1)];
+ p0z = positionData[(i0 + 2)];
+ p1x = positionData[i1];
+ p1y = positionData[(i1 + 1)];
+ p1z = positionData[(i1 + 2)];
+ p2x = positionData[i2];
+ p2y = positionData[(i2 + 1)];
+ p2z = positionData[(i2 + 2)];
+ // evaluate sides and triangle normal
+ s0x = p1x - p0x; // s0 = p1 - p0
+ s0y = p1y - p0y;
+ s0z = p1z - p0z;
+ s1x = p2x - p0x; // s1 = p2 - p0
+ s1y = p2y - p0y;
+ s1z = p2z - p0z;
+ nx = s0y * s1z - s0z * s1y; // n = s0 x s1
+ ny = s0z * s1x - s0x * s1z;
+ nz = s0x * s1y - s0y * s1x;
+ nl = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz); // normalize n
+ nx *= nl;
+ ny *= nl;
+ nz *= nl;
+ // -- plane intersection test --
+ nDotV = nx * this.rayDirection.x + ny * +this.rayDirection.y + nz * this.rayDirection.z; // rayDirection . normal
+ if ((!bothSides && nDotV < 0.0) || (bothSides && nDotV != 0.0)) {
+ // find collision t
+ D = -(nx * p0x + ny * p0y + nz * p0z);
+ disToPlane = -(nx * this.rayPosition.x + ny * this.rayPosition.y + nz * this.rayPosition.z + D);
+ t = disToPlane / nDotV;
+ // find collision point
+ cx = this.rayPosition.x + t * this.rayDirection.x;
+ cy = this.rayPosition.y + t * this.rayDirection.y;
+ cz = this.rayPosition.z + t * this.rayDirection.z;
+ // collision point inside triangle? ( using barycentric coordinates )
+ Q1Q2 = s0x * s1x + s0y * s1y + s0z * s1z;
+ Q1Q1 = s0x * s0x + s0y * s0y + s0z * s0z;
+ Q2Q2 = s1x * s1x + s1y * s1y + s1z * s1z;
+ rx = cx - p0x;
+ ry = cy - p0y;
+ rz = cz - p0z;
+ RQ1 = rx * s0x + ry * s0y + rz * s0z;
+ RQ2 = rx * s1x + ry * s1y + rz * s1z;
+ coeff = 1 / (Q1Q1 * Q2Q2 - Q1Q2 * Q1Q2);
+ v = coeff * (Q2Q2 * RQ1 - Q1Q2 * RQ2);
+ w = coeff * (-Q1Q2 * RQ1 + Q1Q1 * RQ2);
+ if (v < 0)
+ continue;
+ if (w < 0)
+ continue;
+ u = 1 - v - w;
+ if (!(u < 0) && t > 0 && t < shortestCollisionDistance) {
+ shortestCollisionDistance = t;
+ collisionTriangleIndex = index / 3;
+ pickingCollisionVO.rayEntryDistance = t;
+ pickingCollisionVO.localPosition = new Vector3D(cx, cy, cz);
+ pickingCollisionVO.localNormal = new Vector3D(nx, ny, nz);
+ pickingCollisionVO.uv = this._pGetCollisionUV(indexData, uvData, index, v, w, u, uvOffset, uvStride);
+ pickingCollisionVO.index = index;
+ // pickingCollisionVO.subGeometryIndex = this.pGetMeshSubMeshIndex(renderable);
+ // if not looking for best hit, first found will do...
+ if (!this._findClosestCollision)
+ return true;
+ }
+ }
+ }
+ if (collisionTriangleIndex >= 0)
+ return true;
+ return false;
+ };
+ return JSPickingCollider;
+})(PickingColliderBase);
+module.exports = JSPickingCollider;
+
+
+},{"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/core/pick/PickingColliderBase":undefined}],"awayjs-renderergl/lib/core/pick/PickingColliderBase":[function(require,module,exports){
+var RenderablePool = require("awayjs-core/lib/core/pool/RenderablePool");
+var Point = require("awayjs-core/lib/core/geom/Point");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var AbstractMethodError = require("awayjs-core/lib/errors/AbstractMethodError");
+var BillboardRenderable = require("awayjs-stagegl/lib/core/pool/BillboardRenderable");
+var TriangleSubMeshRenderable = require("awayjs-stagegl/lib/core/pool/TriangleSubMeshRenderable");
+/**
+ * An abstract base class for all picking collider classes. It should not be instantiated directly.
+ *
+ * @class away.pick.PickingColliderBase
+ */
+var PickingColliderBase = (function () {
+ function PickingColliderBase() {
+ this._billboardRenderablePool = RenderablePool.getPool(BillboardRenderable);
+ this._subMeshRenderablePool = RenderablePool.getPool(TriangleSubMeshRenderable);
+ }
+ PickingColliderBase.prototype._pPetCollisionNormal = function (indexData /*uint*/, vertexData, triangleIndex) {
+ var normal = new Vector3D();
+ var i0 = indexData[triangleIndex] * 3;
+ var i1 = indexData[triangleIndex + 1] * 3;
+ var i2 = indexData[triangleIndex + 2] * 3;
+ var p0 = new Vector3D(vertexData[i0], vertexData[i0 + 1], vertexData[i0 + 2]);
+ var p1 = new Vector3D(vertexData[i1], vertexData[i1 + 1], vertexData[i1 + 2]);
+ var p2 = new Vector3D(vertexData[i2], vertexData[i2 + 1], vertexData[i2 + 2]);
+ var side0 = p1.subtract(p0);
+ var side1 = p2.subtract(p0);
+ normal = side0.crossProduct(side1);
+ normal.normalize();
+ return normal;
+ };
+ PickingColliderBase.prototype._pGetCollisionUV = function (indexData /*uint*/, uvData, triangleIndex, v, w, u, uvOffset, uvStride) {
+ var uv = new Point();
+ var uIndex = indexData[triangleIndex] * uvStride + uvOffset;
+ var uv0 = new Vector3D(uvData[uIndex], uvData[uIndex + 1]);
+ uIndex = indexData[triangleIndex + 1] * uvStride + uvOffset;
+ var uv1 = new Vector3D(uvData[uIndex], uvData[uIndex + 1]);
+ uIndex = indexData[triangleIndex + 2] * uvStride + uvOffset;
+ var uv2 = new Vector3D(uvData[uIndex], uvData[uIndex + 1]);
+ uv.x = u * uv0.x + v * uv1.x + w * uv2.x;
+ uv.y = u * uv0.y + v * uv1.y + w * uv2.y;
+ return uv;
+ };
+ /**
+ * @inheritDoc
+ */
+ PickingColliderBase.prototype._pTestRenderableCollision = function (renderable, pickingCollisionVO, shortestCollisionDistance) {
+ throw new AbstractMethodError();
+ };
+ /**
+ * @inheritDoc
+ */
+ PickingColliderBase.prototype.setLocalRay = function (localPosition, localDirection) {
+ this.rayPosition = localPosition;
+ this.rayDirection = localDirection;
+ };
+ /**
+ * Tests a Billboard
object for a collision with the picking ray.
+ *
+ * @param billboard The billboard 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
+ */
+ PickingColliderBase.prototype.testBillboardCollision = function (billboard, pickingCollisionVO, shortestCollisionDistance) {
+ this.setLocalRay(pickingCollisionVO.localRayPosition, pickingCollisionVO.localRayDirection);
+ pickingCollisionVO.materialOwner = null;
+ if (this._pTestRenderableCollision(this._billboardRenderablePool.getItem(billboard), pickingCollisionVO, shortestCollisionDistance)) {
+ shortestCollisionDistance = pickingCollisionVO.rayEntryDistance;
+ pickingCollisionVO.materialOwner = billboard;
+ return true;
+ }
+ return false;
+ };
+ /**
+ * Tests a Mesh
object for a collision with the picking ray.
+ *
+ * @param mesh The mesh 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
+ */
+ PickingColliderBase.prototype.testMeshCollision = function (mesh, pickingCollisionVO, shortestCollisionDistance, findClosest) {
+ this.setLocalRay(pickingCollisionVO.localRayPosition, pickingCollisionVO.localRayDirection);
+ pickingCollisionVO.materialOwner = null;
+ var subMesh;
+ var len = mesh.subMeshes.length;
+ for (var i = 0; i < len; ++i) {
+ subMesh = mesh.subMeshes[i];
+ if (this._pTestRenderableCollision(this._subMeshRenderablePool.getItem(subMesh), pickingCollisionVO, shortestCollisionDistance)) {
+ shortestCollisionDistance = pickingCollisionVO.rayEntryDistance;
+ pickingCollisionVO.materialOwner = subMesh;
+ if (!findClosest)
+ return true;
+ }
+ }
+ return pickingCollisionVO.materialOwner != null;
+ };
+ return PickingColliderBase;
+})();
+module.exports = PickingColliderBase;
+
+
+},{"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/core/pool/RenderablePool":undefined,"awayjs-core/lib/errors/AbstractMethodError":undefined,"awayjs-stagegl/lib/core/pool/BillboardRenderable":undefined,"awayjs-stagegl/lib/core/pool/TriangleSubMeshRenderable":undefined}],"awayjs-renderergl/lib/core/pick/ShaderPicker":[function(require,module,exports){
+var Debug = require("awayjs-core/lib/utils/Debug");
+var BitmapData = require("awayjs-core/lib/core/base/BitmapData");
+var TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var Matrix3DUtils = require("awayjs-core/lib/core/geom/Matrix3DUtils");
+var Point = require("awayjs-core/lib/core/geom/Point");
+var Rectangle = require("awayjs-core/lib/core/geom/Rectangle");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var AGALMiniAssembler = require("awayjs-stagegl/lib/aglsl/assembler/AGALMiniAssembler");
+var ContextGLBlendFactor = require("awayjs-stagegl/lib/core/stagegl/ContextGLBlendFactor");
+var ContextGLClearMask = require("awayjs-stagegl/lib/core/stagegl/ContextGLClearMask");
+var ContextGLCompareMode = require("awayjs-stagegl/lib/core/stagegl/ContextGLCompareMode");
+var ContextGLProgramType = require("awayjs-stagegl/lib/core/stagegl/ContextGLProgramType");
+var ContextGLTriangleFace = require("awayjs-stagegl/lib/core/stagegl/ContextGLTriangleFace");
+/**
+ * Picks a 3d object from a view or scene by performing a separate render pass on the scene around the area being picked using key color values,
+ * then reading back the color value of the pixel in the render representing the picking ray. Requires multiple passes and readbacks for retriving details
+ * on an entity that has its shaderPickingDetails property set to true.
+ *
+ * A read-back operation from any GPU is not a very efficient process, and the amount of processing used can vary significantly between different hardware.
+ *
+ * @see away.entities.Entity#shaderPickingDetails
+ *
+ * @class away.pick.ShaderPicker
+ */
+var ShaderPicker = (function () {
+ /**
+ * Creates a new ShaderPicker
object.
+ *
+ * @param shaderPickingDetails Determines whether the picker includes a second pass to calculate extra
+ * properties such as uv and normal coordinates.
+ */
+ function ShaderPicker(shaderPickingDetails) {
+ if (shaderPickingDetails === void 0) { shaderPickingDetails = false; }
+ this._onlyMouseEnabled = true;
+ this._interactives = new Array();
+ this._localHitPosition = new Vector3D();
+ this._hitUV = new Point();
+ this._localHitNormal = new Vector3D();
+ this._rayPos = new Vector3D();
+ this._rayDir = new Vector3D();
+ this._shaderPickingDetails = shaderPickingDetails;
+ this._id = new Array(4);
+ this._viewportData = new Array(4); // first 2 contain scale, last 2 translation
+ this._boundOffsetScale = new Array(8); // first 2 contain scale, last 2 translation
+ this._boundOffsetScale[3] = 0;
+ this._boundOffsetScale[7] = 1;
+ }
+ Object.defineProperty(ShaderPicker.prototype, "onlyMouseEnabled", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._onlyMouseEnabled;
+ },
+ set: function (value) {
+ this._onlyMouseEnabled = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShaderPicker.prototype.getViewCollision = function (x, y, view) {
+ var collector = view.iEntityCollector;
+ this._stage = view.renderer.stage;
+ if (!this._stage)
+ return null;
+ this._context = this._stage.context;
+ this._viewportData[0] = view.width;
+ this._viewportData[1] = view.height;
+ this._viewportData[2] = -(this._projX = 2 * x / view.width - 1);
+ this._viewportData[3] = this._projY = 2 * y / view.height - 1;
+ // _potentialFound will be set to true if any object is actually rendered
+ this._potentialFound = false;
+ //reset head values
+ this._blendedRenderableHead = null;
+ this._opaqueRenderableHead = null;
+ this.pDraw(collector, null);
+ // clear buffers
+ this._context.setVertexBufferAt(0, null);
+ if (!this._context || !this._potentialFound)
+ return null;
+ if (!this._bitmapData)
+ this._bitmapData = new BitmapData(1, 1, false, 0);
+ this._context.drawToBitmapData(this._bitmapData);
+ this._hitColor = this._bitmapData.getPixel(0, 0);
+ if (!this._hitColor) {
+ this._context.present();
+ return null;
+ }
+ this._hitRenderable = this._interactives[this._hitColor - 1];
+ this._hitEntity = this._hitRenderable.sourceEntity;
+ if (this._onlyMouseEnabled && !this._hitEntity._iIsMouseEnabled())
+ return null;
+ var _collisionVO = this._hitEntity._iPickingCollisionVO;
+ if (this._shaderPickingDetails) {
+ this.getHitDetails(view.camera);
+ _collisionVO.localPosition = this._localHitPosition;
+ _collisionVO.localNormal = this._localHitNormal;
+ _collisionVO.uv = this._hitUV;
+ _collisionVO.index = this._faceIndex;
+ }
+ else {
+ _collisionVO.localPosition = null;
+ _collisionVO.localNormal = null;
+ _collisionVO.uv = null;
+ _collisionVO.index = 0;
+ }
+ return _collisionVO;
+ };
+ //*/
+ /**
+ * @inheritDoc
+ */
+ ShaderPicker.prototype.getSceneCollision = function (position, direction, scene) {
+ return null;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShaderPicker.prototype.pDraw = function (entityCollector, target) {
+ var camera = entityCollector.camera;
+ this._context.clear(0, 0, 0, 1);
+ this._stage.scissorRect = ShaderPicker.MOUSE_SCISSOR_RECT;
+ this._interactives.length = this._interactiveId = 0;
+ if (!this._objectProgram)
+ this.initObjectProgram();
+ this._context.setBlendFactors(ContextGLBlendFactor.ONE, ContextGLBlendFactor.ZERO);
+ this._context.setDepthTest(true, ContextGLCompareMode.LESS);
+ this._context.setProgram(this._objectProgram);
+ this._context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, 4, this._viewportData, 1);
+ //this.drawRenderables(entityCollector.opaqueRenderableHead, camera);
+ //this.drawRenderables(entityCollector.blendedRenderableHead, camera);
+ //TODO: reimplement ShaderPicker inheriting from RendererBase
+ };
+ /**
+ * Draw a list of renderables.
+ * @param renderables The renderables to draw.
+ * @param camera The camera for which to render.
+ */
+ ShaderPicker.prototype.drawRenderables = function (renderable, camera) {
+ var matrix = Matrix3DUtils.CALCULATION_MATRIX;
+ var viewProjection = camera.viewProjection;
+ while (renderable) {
+ // it's possible that the renderable was already removed from the scene
+ if (!renderable.sourceEntity.scene || !renderable.sourceEntity._iIsMouseEnabled()) {
+ renderable = renderable.next;
+ continue;
+ }
+ this._potentialFound = true;
+ this._context.setCulling(renderable.materialOwner.material.bothSides ? ContextGLTriangleFace.NONE : ContextGLTriangleFace.BACK, camera.projection.coordinateSystem);
+ this._interactives[this._interactiveId++] = renderable;
+ // color code so that reading from bitmapdata will contain the correct value
+ this._id[1] = (this._interactiveId >> 8) / 255; // on green channel
+ this._id[2] = (this._interactiveId & 0xff) / 255; // on blue channel
+ matrix.copyFrom(renderable.sourceEntity.getRenderSceneTransform(camera));
+ matrix.append(viewProjection);
+ this._context.setProgramConstantsFromMatrix(ContextGLProgramType.VERTEX, 0, matrix, true);
+ this._context.setProgramConstantsFromArray(ContextGLProgramType.FRAGMENT, 0, this._id, 1);
+ this._context.activateBuffer(0, renderable.getVertexData(TriangleSubGeometry.POSITION_DATA), renderable.getVertexOffset(TriangleSubGeometry.POSITION_DATA), TriangleSubGeometry.POSITION_FORMAT);
+ this._context.drawTriangles(this._context.getIndexBuffer(renderable.getIndexData()), 0, renderable.numTriangles);
+ renderable = renderable.next;
+ }
+ };
+ ShaderPicker.prototype.updateRay = function (camera) {
+ this._rayPos = camera.scenePosition;
+ this._rayDir = camera.getRay(this._projX, this._projY, 1);
+ this._rayDir.normalize();
+ };
+ /**
+ * Creates the Program that color-codes objects.
+ */
+ ShaderPicker.prototype.initObjectProgram = function () {
+ var vertexCode;
+ var fragmentCode;
+ this._objectProgram = this._context.createProgram();
+ vertexCode = "m44 vt0, va0, vc0 \n" + "mul vt1.xy, vt0.w, vc4.zw \n" + "add vt0.xy, vt0.xy, vt1.xy \n" + "mul vt0.xy, vt0.xy, vc4.xy \n" + "mov op, vt0 \n";
+ fragmentCode = "mov oc, fc0"; // write identifier
+ Debug.throwPIR('ShaderPicker', 'initTriangleProgram', 'Dependency: initObjectProgram');
+ //_objectProgram.upload(new AGALMiniAssembler().assemble(ContextGLProgramType.VERTEX, vertexCode),new AGALMiniAssembler().assemble(ContextGLProgramType.FRAGMENT, fragmentCode));
+ };
+ /**
+ * Creates the Program that renders positions.
+ */
+ ShaderPicker.prototype.initTriangleProgram = function () {
+ var vertexCode;
+ var fragmentCode;
+ this._triangleProgram = this._context.createProgram();
+ // todo: add animation code
+ vertexCode = "add vt0, va0, vc5 \n" + "mul vt0, vt0, vc6 \n" + "mov v0, vt0 \n" + "m44 vt0, va0, vc0 \n" + "mul vt1.xy, vt0.w, vc4.zw \n" + "add vt0.xy, vt0.xy, vt1.xy \n" + "mul vt0.xy, vt0.xy, vc4.xy \n" + "mov op, vt0 \n";
+ fragmentCode = "mov oc, v0"; // write identifier
+ var vertexByteCode = (new AGALMiniAssembler().assemble("part vertex 1\n" + vertexCode + "endpart"))['vertex'].data;
+ var fragmentByteCode = (new AGALMiniAssembler().assemble("part fragment 1\n" + fragmentCode + "endpart"))['fragment'].data;
+ this._triangleProgram.upload(vertexByteCode, fragmentByteCode);
+ };
+ /**
+ * Gets more detailed information about the hir position, if required.
+ * @param camera The camera used to view the hit object.
+ */
+ ShaderPicker.prototype.getHitDetails = function (camera) {
+ this.getApproximatePosition(camera);
+ this.getPreciseDetails(camera);
+ };
+ /**
+ * Finds a first-guess approximate position about the hit position.
+ *
+ * @param camera The camera used to view the hit object.
+ */
+ ShaderPicker.prototype.getApproximatePosition = function (camera) {
+ var bounds = this._hitRenderable.sourceEntity.bounds.aabb;
+ var col;
+ var scX, scY, scZ;
+ var offsX, offsY, offsZ;
+ var localViewProjection = Matrix3DUtils.CALCULATION_MATRIX;
+ localViewProjection.copyFrom(this._hitRenderable.sourceEntity.getRenderSceneTransform(camera));
+ localViewProjection.append(camera.viewProjection);
+ if (!this._triangleProgram) {
+ this.initTriangleProgram();
+ }
+ this._boundOffsetScale[4] = 1 / (scX = bounds.width);
+ this._boundOffsetScale[5] = 1 / (scY = bounds.height);
+ this._boundOffsetScale[6] = 1 / (scZ = bounds.depth);
+ this._boundOffsetScale[0] = offsX = -bounds.x;
+ this._boundOffsetScale[1] = offsY = -bounds.y;
+ this._boundOffsetScale[2] = offsZ = -bounds.z;
+ this._context.setProgram(this._triangleProgram);
+ this._context.clear(0, 0, 0, 0, 1, 0, ContextGLClearMask.DEPTH);
+ this._context.setScissorRectangle(ShaderPicker.MOUSE_SCISSOR_RECT);
+ this._context.setProgramConstantsFromMatrix(ContextGLProgramType.VERTEX, 0, localViewProjection, true);
+ this._context.setProgramConstantsFromArray(ContextGLProgramType.VERTEX, 5, this._boundOffsetScale, 2);
+ this._context.activateBuffer(0, this._hitRenderable.getVertexData(TriangleSubGeometry.POSITION_DATA), this._hitRenderable.getVertexOffset(TriangleSubGeometry.POSITION_DATA), TriangleSubGeometry.POSITION_FORMAT);
+ this._context.drawTriangles(this._context.getIndexBuffer(this._hitRenderable.getIndexData()), 0, this._hitRenderable.numTriangles);
+ this._context.drawToBitmapData(this._bitmapData);
+ col = this._bitmapData.getPixel(0, 0);
+ this._localHitPosition.x = ((col >> 16) & 0xff) * scX / 255 - offsX;
+ this._localHitPosition.y = ((col >> 8) & 0xff) * scY / 255 - offsY;
+ this._localHitPosition.z = (col & 0xff) * scZ / 255 - offsZ;
+ };
+ /**
+ * Use the approximate position info to find the face under the mouse position from which we can derive the precise
+ * ray-face intersection point, then use barycentric coordinates to figure out the uv coordinates, etc.
+ * @param camera The camera used to view the hit object.
+ */
+ ShaderPicker.prototype.getPreciseDetails = function (camera) {
+ var len = indices.length;
+ var x1, y1, z1;
+ var x2, y2, z2;
+ var x3, y3, z3;
+ var i = 0, j = 1, k = 2;
+ var t1, t2, t3;
+ var v0x, v0y, v0z;
+ var v1x, v1y, v1z;
+ var v2x, v2y, v2z;
+ var ni1, ni2, ni3;
+ var n1, n2, n3, nLength;
+ var dot00, dot01, dot02, dot11, dot12;
+ var s, t, invDenom;
+ var x = this._localHitPosition.x, y = this._localHitPosition.y, z = this._localHitPosition.z;
+ var u, v;
+ var ui1, ui2, ui3;
+ var s0x, s0y, s0z;
+ var s1x, s1y, s1z;
+ var nl;
+ var indices = this._hitRenderable.getIndexData().data;
+ var positions = this._hitRenderable.getVertexData(TriangleSubGeometry.POSITION_DATA).data;
+ var positionStride = this._hitRenderable.getVertexData(TriangleSubGeometry.POSITION_DATA).dataPerVertex;
+ var positionOffset = this._hitRenderable.getVertexOffset(TriangleSubGeometry.POSITION_DATA);
+ var uvs = this._hitRenderable.getVertexData(TriangleSubGeometry.UV_DATA).data;
+ var uvStride = this._hitRenderable.getVertexData(TriangleSubGeometry.UV_DATA).dataPerVertex;
+ var uvOffset = this._hitRenderable.getVertexOffset(TriangleSubGeometry.UV_DATA);
+ var normals = this._hitRenderable.getVertexData(TriangleSubGeometry.NORMAL_DATA).data;
+ var normalStride = this._hitRenderable.getVertexData(TriangleSubGeometry.NORMAL_DATA).dataPerVertex;
+ var normalOffset = this._hitRenderable.getVertexOffset(TriangleSubGeometry.NORMAL_DATA);
+ this.updateRay(camera);
+ while (i < len) {
+ t1 = positionOffset + indices[i] * positionStride;
+ t2 = positionOffset + indices[j] * positionStride;
+ t3 = positionOffset + indices[k] * positionStride;
+ x1 = positions[t1];
+ y1 = positions[t1 + 1];
+ z1 = positions[t1 + 2];
+ x2 = positions[t2];
+ y2 = positions[t2 + 1];
+ z2 = positions[t2 + 2];
+ x3 = positions[t3];
+ y3 = positions[t3 + 1];
+ z3 = positions[t3 + 2];
+ // if within bounds
+ if (!((x < x1 && x < x2 && x < x3) || (y < y1 && y < y2 && y < y3) || (z < z1 && z < z2 && z < z3) || (x > x1 && x > x2 && x > x3) || (y > y1 && y > y2 && y > y3) || (z > z1 && z > z2 && z > z3))) {
+ // calculate barycentric coords for approximated position
+ v0x = x3 - x1;
+ v0y = y3 - y1;
+ v0z = z3 - z1;
+ v1x = x2 - x1;
+ v1y = y2 - y1;
+ v1z = z2 - z1;
+ v2x = x - x1;
+ v2y = y - y1;
+ v2z = z - z1;
+ dot00 = v0x * v0x + v0y * v0y + v0z * v0z;
+ dot01 = v0x * v1x + v0y * v1y + v0z * v1z;
+ dot02 = v0x * v2x + v0y * v2y + v0z * v2z;
+ dot11 = v1x * v1x + v1y * v1y + v1z * v1z;
+ dot12 = v1x * v2x + v1y * v2y + v1z * v2z;
+ invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
+ s = (dot11 * dot02 - dot01 * dot12) * invDenom;
+ t = (dot00 * dot12 - dot01 * dot02) * invDenom;
+ // if inside the current triangle, fetch details hit information
+ if (s >= 0 && t >= 0 && (s + t) <= 1) {
+ ni1 = normalOffset + indices[i] * normalStride;
+ ni2 = normalOffset + indices[j] * normalStride;
+ ni3 = normalOffset + indices[k] * normalStride;
+ n1 = indices[ni1] + indices[ni2] + indices[ni3];
+ n2 = indices[ni1 + 1] + indices[ni2 + 1] + indices[ni3 + 1];
+ n3 = indices[ni1 + 2] + indices[ni2 + 2] + indices[ni3 + 2];
+ nLength = Math.sqrt(n1 * n1 + n2 * n2 + n3 * n3);
+ n1 /= nLength;
+ n2 /= nLength;
+ n3 /= nLength;
+ // this is def the triangle, now calculate precise coords
+ this.getPrecisePosition(this._hitRenderable.sourceEntity.inverseSceneTransform, n1, n2, n3, x1, y1, z1);
+ v2x = this._localHitPosition.x - x1;
+ v2y = this._localHitPosition.y - y1;
+ v2z = this._localHitPosition.z - z1;
+ s0x = x2 - x1; // s0 = p1 - p0
+ s0y = y2 - y1;
+ s0z = z2 - z1;
+ s1x = x3 - x1; // s1 = p2 - p0
+ s1y = y3 - y1;
+ s1z = z3 - z1;
+ this._localHitNormal.x = s0y * s1z - s0z * s1y; // n = s0 x s1
+ this._localHitNormal.y = s0z * s1x - s0x * s1z;
+ this._localHitNormal.z = s0x * s1y - s0y * s1x;
+ nl = 1 / Math.sqrt(this._localHitNormal.x * this._localHitNormal.x + this._localHitNormal.y * this._localHitNormal.y + this._localHitNormal.z * this._localHitNormal.z); // normalize n
+ this._localHitNormal.x *= nl;
+ this._localHitNormal.y *= nl;
+ this._localHitNormal.z *= nl;
+ dot02 = v0x * v2x + v0y * v2y + v0z * v2z;
+ dot12 = v1x * v2x + v1y * v2y + v1z * v2z;
+ s = (dot11 * dot02 - dot01 * dot12) * invDenom;
+ t = (dot00 * dot12 - dot01 * dot02) * invDenom;
+ ui1 = uvOffset + indices[i] * uvStride;
+ ui2 = uvOffset + indices[j] * uvStride;
+ ui3 = uvOffset + indices[k] * uvStride;
+ u = uvs[ui1];
+ v = uvs[ui1 + 1];
+ this._hitUV.x = u + t * (uvs[ui2] - u) + s * (uvs[ui3] - u);
+ this._hitUV.y = v + t * (uvs[ui2 + 1] - v) + s * (uvs[ui3 + 1] - v);
+ this._faceIndex = i;
+ //TODO add back subGeometryIndex value
+ //this._subGeometryIndex = away.utils.GeometryUtils.getMeshSubGeometryIndex(subGeom);
+ return;
+ }
+ }
+ i += 3;
+ j += 3;
+ k += 3;
+ }
+ };
+ /**
+ * Finds the precise hit position by unprojecting the screen coordinate back unto the hit face's plane and
+ * calculating the intersection point.
+ * @param camera The camera used to render the object.
+ * @param invSceneTransform The inverse scene transformation of the hit object.
+ * @param nx The x-coordinate of the face's plane normal.
+ * @param ny The y-coordinate of the face plane normal.
+ * @param nz The z-coordinate of the face plane normal.
+ * @param px The x-coordinate of a point on the face's plane (ie a face vertex)
+ * @param py The y-coordinate of a point on the face's plane (ie a face vertex)
+ * @param pz The z-coordinate of a point on the face's plane (ie a face vertex)
+ */
+ ShaderPicker.prototype.getPrecisePosition = function (invSceneTransform, nx, ny, nz, px, py, pz) {
+ // calculate screen ray and find exact intersection position with triangle
+ var rx, ry, rz;
+ var ox, oy, oz;
+ var t;
+ var raw = Matrix3DUtils.RAW_DATA_CONTAINER;
+ var cx = this._rayPos.x, cy = this._rayPos.y, cz = this._rayPos.z;
+ // unprojected projection point, gives ray dir in cam space
+ ox = this._rayDir.x;
+ oy = this._rayDir.y;
+ oz = this._rayDir.z;
+ // transform ray dir and origin (cam pos) to object space
+ //invSceneTransform.copyRawDataTo( raw );
+ invSceneTransform.copyRawDataTo(raw);
+ rx = raw[0] * ox + raw[4] * oy + raw[8] * oz;
+ ry = raw[1] * ox + raw[5] * oy + raw[9] * oz;
+ rz = raw[2] * ox + raw[6] * oy + raw[10] * oz;
+ ox = raw[0] * cx + raw[4] * cy + raw[8] * cz + raw[12];
+ oy = raw[1] * cx + raw[5] * cy + raw[9] * cz + raw[13];
+ oz = raw[2] * cx + raw[6] * cy + raw[10] * cz + raw[14];
+ t = ((px - ox) * nx + (py - oy) * ny + (pz - oz) * nz) / (rx * nx + ry * ny + rz * nz);
+ this._localHitPosition.x = ox + rx * t;
+ this._localHitPosition.y = oy + ry * t;
+ this._localHitPosition.z = oz + rz * t;
+ };
+ ShaderPicker.prototype.dispose = function () {
+ this._bitmapData.dispose();
+ if (this._triangleProgram)
+ this._triangleProgram.dispose();
+ if (this._objectProgram)
+ this._objectProgram.dispose();
+ this._triangleProgram = null;
+ this._objectProgram = null;
+ this._bitmapData = null;
+ this._hitRenderable = null;
+ this._hitEntity = null;
+ };
+ ShaderPicker.MOUSE_SCISSOR_RECT = new Rectangle(0, 0, 1, 1);
+ return ShaderPicker;
+})();
+module.exports = ShaderPicker;
+
+
+},{"awayjs-core/lib/core/base/BitmapData":undefined,"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/core/geom/Rectangle":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/utils/Debug":undefined,"awayjs-stagegl/lib/aglsl/assembler/AGALMiniAssembler":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLBlendFactor":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLClearMask":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLCompareMode":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLProgramType":undefined,"awayjs-stagegl/lib/core/stagegl/ContextGLTriangleFace":undefined}],"awayjs-renderergl/lib/events/AnimationStateEvent":[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 an animation state's state.
+ */
+var AnimationStateEvent = (function (_super) {
+ __extends(AnimationStateEvent, _super);
+ /**
+ * Create a new AnimatonStateEvent
+ *
+ * @param type The event type.
+ * @param animator The animation state object that is the subject of this event.
+ * @param animationNode The animation node inside the animation state from which the event originated.
+ */
+ function AnimationStateEvent(type, animator, animationState, animationNode) {
+ _super.call(this, type);
+ this._animator = animator;
+ this._animationState = animationState;
+ this._animationNode = animationNode;
+ }
+ Object.defineProperty(AnimationStateEvent.prototype, "animator", {
+ /**
+ * The animator object that is the subject of this event.
+ */
+ get: function () {
+ return this._animator;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationStateEvent.prototype, "animationState", {
+ /**
+ * The animation state object that is the subject of this event.
+ */
+ get: function () {
+ return this._animationState;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(AnimationStateEvent.prototype, "animationNode", {
+ /**
+ * The animation node inside the animation state from which the event originated.
+ */
+ get: function () {
+ return this._animationNode;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Clones the event.
+ *
+ * @return An exact duplicate of the current object.
+ */
+ AnimationStateEvent.prototype.clone = function () {
+ return new AnimationStateEvent(this.type, this._animator, this._animationState, this._animationNode);
+ };
+ /**
+ * Dispatched when a non-looping clip node inside an animation state reaches the end of its timeline.
+ */
+ AnimationStateEvent.PLAYBACK_COMPLETE = "playbackComplete";
+ AnimationStateEvent.TRANSITION_COMPLETE = "transitionComplete";
+ return AnimationStateEvent;
+})(Event);
+module.exports = AnimationStateEvent;
+
+
+},{"awayjs-core/lib/events/Event":undefined}],"awayjs-renderergl/lib/materials/methods/AmbientEnvMapMethod":[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 AmbientBasicMethod = require("awayjs-stagegl/lib/materials/methods/AmbientBasicMethod");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * AmbientEnvMapMethod provides a diffuse shading method that uses a diffuse irradiance environment map to
+ * approximate global lighting rather than lights.
+ */
+var AmbientEnvMapMethod = (function (_super) {
+ __extends(AmbientEnvMapMethod, _super);
+ /**
+ * Creates a new AmbientEnvMapMethod
object.
+ *
+ * @param envMap The cube environment map to use for the ambient lighting.
+ */
+ function AmbientEnvMapMethod(envMap) {
+ _super.call(this);
+ this._cubeTexture = envMap;
+ }
+ /**
+ * @inheritDoc
+ */
+ AmbientEnvMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ _super.prototype.iInitVO.call(this, shaderObject, methodVO);
+ methodVO.needsNormals = true;
+ };
+ Object.defineProperty(AmbientEnvMapMethod.prototype, "envMap", {
+ /**
+ * The cube environment map to use for the diffuse lighting.
+ */
+ get: function () {
+ return this._cubeTexture;
+ },
+ set: function (value) {
+ this._cubeTexture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ AmbientEnvMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ stage.context.activateCubeTexture(methodVO.texturesIndex, this._cubeTexture);
+ };
+ /**
+ * @inheritDoc
+ */
+ AmbientEnvMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, regCache, sharedRegisters) {
+ var code = "";
+ var ambientInputRegister;
+ var cubeMapReg = regCache.getFreeTextureReg();
+ methodVO.texturesIndex = cubeMapReg.index;
+ code += ShaderCompilerHelper.getTexCubeSampleCode(targetReg, cubeMapReg, this._cubeTexture, shaderObject.useSmoothTextures, shaderObject.useMipmapping, sharedRegisters.normalFragment);
+ ambientInputRegister = regCache.getFreeFragmentConstant();
+ methodVO.fragmentConstantsIndex = ambientInputRegister.index;
+ code += "add " + targetReg + ".xyz, " + targetReg + ".xyz, " + ambientInputRegister + ".xyz\n";
+ return code;
+ };
+ return AmbientEnvMapMethod;
+})(AmbientBasicMethod);
+module.exports = AmbientEnvMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/AmbientBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseCelMethod":[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 DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+/**
+ * DiffuseCelMethod provides a shading method to add diffuse cel (cartoon) shading.
+ */
+var DiffuseCelMethod = (function (_super) {
+ __extends(DiffuseCelMethod, _super);
+ /**
+ * Creates a new DiffuseCelMethod object.
+ * @param levels The amount of shadow gradations.
+ * @param baseMethod An optional diffuse method on which the cartoon shading is based. If omitted, DiffuseBasicMethod is used.
+ */
+ function DiffuseCelMethod(levels, baseMethod) {
+ var _this = this;
+ if (levels === void 0) { levels = 3; }
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this, null, baseMethod);
+ this._smoothness = .1;
+ this.baseMethod._iModulateMethod = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) { return _this.clampDiffuse(shaderObject, methodVO, targetReg, registerCache, sharedRegisters); };
+ this._levels = levels;
+ }
+ /**
+ * @inheritDoc
+ */
+ DiffuseCelMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ data[index + 1] = 1;
+ data[index + 2] = 0;
+ };
+ Object.defineProperty(DiffuseCelMethod.prototype, "levels", {
+ /**
+ * The amount of shadow gradations.
+ */
+ get: function () {
+ return this._levels;
+ },
+ set: function (value /*uint*/) {
+ this._levels = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseCelMethod.prototype, "smoothness", {
+ /**
+ * The smoothness of the edge between 2 shading levels.
+ */
+ get: function () {
+ return this._smoothness;
+ },
+ set: function (value) {
+ this._smoothness = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseCelMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._dataReg = null;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCelMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ this._dataReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = this._dataReg.index * 4;
+ return _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCelMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ data[index] = this._levels;
+ data[index + 3] = this._smoothness;
+ };
+ /**
+ * Snaps the diffuse shading of the wrapped method to one of the levels.
+ * @param vo The MethodVO used to compile the current shader.
+ * @param t The register containing the diffuse strength in the "w" component.
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared register data for this shader.
+ * @return The AGAL fragment code for the method.
+ */
+ DiffuseCelMethod.prototype.clampDiffuse = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ return "mul " + targetReg + ".w, " + targetReg + ".w, " + this._dataReg + ".x\n" + "frc " + targetReg + ".z, " + targetReg + ".w\n" + "sub " + targetReg + ".y, " + targetReg + ".w, " + targetReg + ".z\n" + "mov " + targetReg + ".x, " + this._dataReg + ".x\n" + "sub " + targetReg + ".x, " + targetReg + ".x, " + this._dataReg + ".y\n" + "rcp " + targetReg + ".x," + targetReg + ".x\n" + "mul " + targetReg + ".w, " + targetReg + ".y, " + targetReg + ".x\n" + "sub " + targetReg + ".y, " + targetReg + ".w, " + targetReg + ".x\n" + "div " + targetReg + ".z, " + targetReg + ".z, " + this._dataReg + ".w\n" + "sat " + targetReg + ".z, " + targetReg + ".z\n" + "mul " + targetReg + ".w, " + targetReg + ".w, " + targetReg + ".z\n" + "sub " + targetReg + ".z, " + this._dataReg + ".y, " + targetReg + ".z\n" + "mul " + targetReg + ".y, " + targetReg + ".y, " + targetReg + ".z\n" + "add " + targetReg + ".w, " + targetReg + ".w, " + targetReg + ".y\n" + "sat " + targetReg + ".w, " + targetReg + ".w\n";
+ };
+ return DiffuseCelMethod;
+})(DiffuseCompositeMethod);
+module.exports = DiffuseCelMethod;
+
+
+},{"awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod":[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 ShadingMethodEvent = require("awayjs-stagegl/lib/events/ShadingMethodEvent");
+var DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+/**
+ * DiffuseCompositeMethod provides a base class for diffuse methods that wrap a diffuse method to alter the
+ * calculated diffuse reflection strength.
+ */
+var DiffuseCompositeMethod = (function (_super) {
+ __extends(DiffuseCompositeMethod, _super);
+ /**
+ * Creates a new DiffuseCompositeMethod
object.
+ *
+ * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.
+ * @param baseMethod The base diffuse method on which this method's shading is based.
+ */
+ function DiffuseCompositeMethod(modulateMethod, baseMethod) {
+ var _this = this;
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this);
+ this._onShaderInvalidatedDelegate = function (event) { return _this.onShaderInvalidated(event); };
+ this.pBaseMethod = baseMethod || new DiffuseBasicMethod();
+ this.pBaseMethod._iModulateMethod = modulateMethod;
+ this.pBaseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ }
+ Object.defineProperty(DiffuseCompositeMethod.prototype, "baseMethod", {
+ /**
+ * The base diffuse method on which this method's shading is based.
+ */
+ get: function () {
+ return this.pBaseMethod;
+ },
+ set: function (value) {
+ if (this.pBaseMethod == value)
+ return;
+ this.pBaseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this.pBaseMethod = value;
+ this.pBaseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ this.pBaseMethod.iInitVO(shaderObject, methodVO);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ this.pBaseMethod.iInitConstants(shaderObject, methodVO);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.dispose = function () {
+ this.pBaseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this.pBaseMethod.dispose();
+ };
+ Object.defineProperty(DiffuseCompositeMethod.prototype, "texture", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this.pBaseMethod.texture;
+ },
+ /**
+ * @inheritDoc
+ */
+ set: function (value) {
+ this.pBaseMethod.texture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseCompositeMethod.prototype, "diffuseColor", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this.pBaseMethod.diffuseColor;
+ },
+ /**
+ * @inheritDoc
+ */
+ set: function (value) {
+ this.pBaseMethod.diffuseColor = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseCompositeMethod.prototype, "ambientColor", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this.pBaseMethod.ambientColor;
+ },
+ /**
+ * @inheritDoc
+ */
+ set: function (value) {
+ this.pBaseMethod.ambientColor = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ return this.pBaseMethod.iGetFragmentPreLightingCode(shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ var code = this.pBaseMethod.iGetFragmentCodePerLight(shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters);
+ this._pTotalLightColorReg = this.pBaseMethod._pTotalLightColorReg;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iGetFragmentCodePerProbe = function (shaderObject, methodVO, cubeMapReg, weightRegister, registerCache, sharedRegisters) {
+ var code = this.pBaseMethod.iGetFragmentCodePerProbe(shaderObject, methodVO, cubeMapReg, weightRegister, registerCache, sharedRegisters);
+ this._pTotalLightColorReg = this.pBaseMethod._pTotalLightColorReg;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ this.pBaseMethod.iActivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iSetRenderState = function (shaderObject, methodVO, renderable, stage, camera) {
+ this.pBaseMethod.iSetRenderState(shaderObject, methodVO, renderable, stage, camera);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iDeactivate = function (shaderObject, methodVO, stage) {
+ this.pBaseMethod.iDeactivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iGetVertexCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ return this.pBaseMethod.iGetVertexCode(shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iGetFragmentPostLightingCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ return this.pBaseMethod.iGetFragmentPostLightingCode(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iReset = function () {
+ this.pBaseMethod.iReset();
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseCompositeMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this.pBaseMethod.iCleanCompilationData();
+ };
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ DiffuseCompositeMethod.prototype.onShaderInvalidated = function (event) {
+ this.iInvalidateShaderProgram();
+ };
+ return DiffuseCompositeMethod;
+})(DiffuseBasicMethod);
+module.exports = DiffuseCompositeMethod;
+
+
+},{"awayjs-stagegl/lib/events/ShadingMethodEvent":undefined,"awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseDepthMethod":[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 DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * DiffuseDepthMethod provides a debug method to visualise depth maps
+ */
+var DiffuseDepthMethod = (function (_super) {
+ __extends(DiffuseDepthMethod, _super);
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ */
+ function DiffuseDepthMethod() {
+ _super.call(this);
+ }
+ /**
+ * @inheritDoc
+ */
+ DiffuseDepthMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index] = 1.0;
+ data[index + 1] = 1 / 255.0;
+ data[index + 2] = 1 / 65025.0;
+ data[index + 3] = 1 / 16581375.0;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseDepthMethod.prototype.iGetFragmentPostLightingCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code = "";
+ var temp;
+ var decReg;
+ if (!this._pUseTexture)
+ throw new Error("DiffuseDepthMethod requires texture!");
+ // incorporate input from ambient
+ if (shaderObject.numLights > 0) {
+ if (sharedRegisters.shadowTarget)
+ code += "mul " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + sharedRegisters.shadowTarget + ".w\n";
+ code += "add " + targetReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + targetReg + ".xyz\n" + "sat " + targetReg + ".xyz, " + targetReg + ".xyz\n";
+ registerCache.removeFragmentTempUsage(this._pTotalLightColorReg);
+ }
+ temp = shaderObject.numLights > 0 ? registerCache.getFreeFragmentVectorTemp() : targetReg;
+ this._pDiffuseInputRegister = registerCache.getFreeTextureReg();
+ methodVO.texturesIndex = this._pDiffuseInputRegister.index;
+ decReg = registerCache.getFreeFragmentConstant();
+ methodVO.fragmentConstantsIndex = decReg.index * 4;
+ code += ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, this._pDiffuseInputRegister, this.texture, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping) + "dp4 " + temp + ".x, " + temp + ", " + decReg + "\n" + "mov " + temp + ".yz, " + temp + ".xx \n" + "mov " + temp + ".w, " + decReg + ".x\n" + "sub " + temp + ".xyz, " + decReg + ".xxx, " + temp + ".xyz\n";
+ if (shaderObject.numLights == 0)
+ return code;
+ code += "mul " + targetReg + ".xyz, " + temp + ".xyz, " + targetReg + ".xyz\n" + "mov " + targetReg + ".w, " + temp + ".w\n";
+ return code;
+ };
+ return DiffuseDepthMethod;
+})(DiffuseBasicMethod);
+module.exports = DiffuseDepthMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseGradientMethod":[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 DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * DiffuseGradientMethod is an alternative to DiffuseBasicMethod in which the shading can be modulated with a gradient
+ * to introduce color-tinted shading as opposed to the single-channel diffuse strength. This can be used as a crude
+ * approximation to subsurface scattering (for instance, the mid-range shading for skin can be tinted red to similate
+ * scattered light within the skin attributing to the final colour)
+ */
+var DiffuseGradientMethod = (function (_super) {
+ __extends(DiffuseGradientMethod, _super);
+ /**
+ * Creates a new DiffuseGradientMethod object.
+ * @param gradient A texture that contains the light colour based on the angle. This can be used to change
+ * the light colour due to subsurface scattering when the surface faces away from the light.
+ */
+ function DiffuseGradientMethod(gradient) {
+ _super.call(this);
+ this._gradient = gradient;
+ }
+ Object.defineProperty(DiffuseGradientMethod.prototype, "gradient", {
+ /**
+ * A texture that contains the light colour based on the angle. This can be used to change the light colour
+ * due to subsurface scattering when the surface faces away from the light.
+ */
+ get: function () {
+ return this._gradient;
+ },
+ set: function (value) {
+ if (value.hasMipmaps != this._gradient.hasMipmaps || value.format != this._gradient.format)
+ this.iInvalidateShaderProgram();
+ this._gradient = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseGradientMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._gradientTextureRegister = null;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseGradientMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ var code = _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ this._pIsFirstLight = true;
+ if (shaderObject.numLights > 0) {
+ this._gradientTextureRegister = registerCache.getFreeTextureReg();
+ methodVO.secondaryTexturesIndex = this._gradientTextureRegister.index;
+ }
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseGradientMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ var code = "";
+ var t;
+ // write in temporary if not first light, so we can add to total diffuse colour
+ if (this._pIsFirstLight)
+ t = this._pTotalLightColorReg;
+ else {
+ t = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(t, 1);
+ }
+ code += "dp3 " + t + ".w, " + lightDirReg + ".xyz, " + sharedRegisters.normalFragment + ".xyz\n" + "mul " + t + ".w, " + t + ".w, " + sharedRegisters.commons + ".x\n" + "add " + t + ".w, " + t + ".w, " + sharedRegisters.commons + ".x\n" + "mul " + t + ".xyz, " + t + ".w, " + lightDirReg + ".w\n";
+ if (this._iModulateMethod != null)
+ code += this._iModulateMethod(shaderObject, methodVO, t, registerCache, sharedRegisters);
+ code += ShaderCompilerHelper.getTex2DSampleCode(t, sharedRegisters, this._gradientTextureRegister, this._gradient, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, t, "clamp") + "mul " + t + ".xyz, " + t + ".xyz, " + lightColReg + ".xyz\n";
+ if (!this._pIsFirstLight) {
+ code += "add " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + t + ".xyz\n";
+ registerCache.removeFragmentTempUsage(t);
+ }
+ this._pIsFirstLight = false;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseGradientMethod.prototype.pApplyShadow = function (shaderObject, methodVO, regCache, sharedRegisters) {
+ var t = regCache.getFreeFragmentVectorTemp();
+ return "mov " + t + ", " + sharedRegisters.shadowTarget + ".wwww\n" + ShaderCompilerHelper.getTex2DSampleCode(t, sharedRegisters, this._gradientTextureRegister, this._gradient, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, t, "clamp") + "mul " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ", " + t + "\n";
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseGradientMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ stage.context.activateTexture(methodVO.secondaryTexturesIndex, this._gradient);
+ };
+ return DiffuseGradientMethod;
+})(DiffuseBasicMethod);
+module.exports = DiffuseGradientMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseLightMapMethod":[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 ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+var DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+/**
+ * DiffuseLightMapMethod provides a diffuse shading method that uses a light map to modulate the calculated diffuse
+ * lighting. It is different from EffectLightMapMethod in that the latter modulates the entire calculated pixel color, rather
+ * than only the diffuse lighting value.
+ */
+var DiffuseLightMapMethod = (function (_super) {
+ __extends(DiffuseLightMapMethod, _super);
+ /**
+ * Creates a new DiffuseLightMapMethod method.
+ *
+ * @param lightMap The texture containing the light map.
+ * @param blendMode The blend mode with which the light map should be applied to the lighting result.
+ * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.
+ * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.
+ */
+ function DiffuseLightMapMethod(lightMap, blendMode, useSecondaryUV, baseMethod) {
+ if (blendMode === void 0) { blendMode = "multiply"; }
+ if (useSecondaryUV === void 0) { useSecondaryUV = false; }
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this, null, baseMethod);
+ this._useSecondaryUV = useSecondaryUV;
+ this._lightMapTexture = lightMap;
+ this.blendMode = blendMode;
+ }
+ /**
+ * @inheritDoc
+ */
+ DiffuseLightMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsSecondaryUV = this._useSecondaryUV;
+ methodVO.needsUV = !this._useSecondaryUV;
+ };
+ Object.defineProperty(DiffuseLightMapMethod.prototype, "blendMode", {
+ /**
+ * The blend mode with which the light map should be applied to the lighting result.
+ *
+ * @see DiffuseLightMapMethod.ADD
+ * @see DiffuseLightMapMethod.MULTIPLY
+ */
+ get: function () {
+ return this._blendMode;
+ },
+ set: function (value) {
+ if (value != DiffuseLightMapMethod.ADD && value != DiffuseLightMapMethod.MULTIPLY)
+ throw new Error("Unknown blendmode!");
+ if (this._blendMode == value)
+ return;
+ this._blendMode = value;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseLightMapMethod.prototype, "lightMapTexture", {
+ /**
+ * The texture containing the light map data.
+ */
+ get: function () {
+ return this._lightMapTexture;
+ },
+ set: function (value) {
+ this._lightMapTexture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseLightMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ stage.context.activateTexture(methodVO.secondaryTexturesIndex, this._lightMapTexture);
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseLightMapMethod.prototype.iGetFragmentPostLightingCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code;
+ var lightMapReg = registerCache.getFreeTextureReg();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ methodVO.secondaryTexturesIndex = lightMapReg.index;
+ code = ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, lightMapReg, this._lightMapTexture, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, sharedRegisters.secondaryUVVarying);
+ switch (this._blendMode) {
+ case DiffuseLightMapMethod.MULTIPLY:
+ code += "mul " + this._pTotalLightColorReg + ", " + this._pTotalLightColorReg + ", " + temp + "\n";
+ break;
+ case DiffuseLightMapMethod.ADD:
+ code += "add " + this._pTotalLightColorReg + ", " + this._pTotalLightColorReg + ", " + temp + "\n";
+ break;
+ }
+ code += _super.prototype.iGetFragmentPostLightingCode.call(this, shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ return code;
+ };
+ /**
+ * Indicates the light map should be multiplied with the calculated shading result.
+ * This can be used to add pre-calculated shadows or occlusion.
+ */
+ DiffuseLightMapMethod.MULTIPLY = "multiply";
+ /**
+ * Indicates the light map should be added into the calculated shading result.
+ * This can be used to add pre-calculated lighting or global illumination.
+ */
+ DiffuseLightMapMethod.ADD = "add";
+ return DiffuseLightMapMethod;
+})(DiffuseCompositeMethod);
+module.exports = DiffuseLightMapMethod;
+
+
+},{"awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseSubSurfaceMethod":[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 DiffuseCompositeMethod = require("awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod");
+var SingleObjectDepthPass = require("awayjs-renderergl/lib/materials/passes/SingleObjectDepthPass");
+/**
+ * DiffuseSubSurfaceMethod provides a depth map-based diffuse shading method that mimics the scattering of
+ * light inside translucent surfaces. It allows light to shine through an object and to soften the diffuse shading.
+ * It can be used for candle wax, ice, skin, ...
+ */
+var DiffuseSubSurfaceMethod = (function (_super) {
+ __extends(DiffuseSubSurfaceMethod, _super);
+ /**
+ * Creates a new DiffuseSubSurfaceMethod
object.
+ *
+ * @param depthMapSize The size of the depth map used.
+ * @param depthMapOffset The amount by which the rendered object will be inflated, to prevent depth map rounding errors.
+ * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.
+ */
+ function DiffuseSubSurfaceMethod(depthMapSize, depthMapOffset, baseMethod) {
+ var _this = this;
+ if (depthMapSize === void 0) { depthMapSize = 512; }
+ if (depthMapOffset === void 0) { depthMapOffset = 15; }
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this, null, baseMethod);
+ this._translucency = 1;
+ this._scatterColor = 0xffffff;
+ this._scatterR = 1.0;
+ this._scatterG = 1.0;
+ this._scatterB = 1.0;
+ this.pBaseMethod._iModulateMethod = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) { return _this.scatterLight(shaderObject, methodVO, targetReg, registerCache, sharedRegisters); };
+ this._passes = new Array();
+ this._depthPass = new SingleObjectDepthPass();
+ this._depthPass.textureSize = depthMapSize;
+ this._depthPass.polyOffset = depthMapOffset;
+ this._passes.push(this._depthPass);
+ this._scattering = 0.2;
+ this._translucency = 1;
+ }
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ var data = shaderObject.vertexConstantData;
+ var index = methodVO.secondaryVertexConstantsIndex;
+ data[index] = .5;
+ data[index + 1] = -.5;
+ data[index + 2] = 0;
+ data[index + 3] = 1;
+ data = shaderObject.fragmentConstantData;
+ index = methodVO.secondaryFragmentConstantsIndex;
+ data[index + 3] = 1.0;
+ data[index + 4] = 1.0;
+ data[index + 5] = 1 / 255;
+ data[index + 6] = 1 / 65025;
+ data[index + 7] = 1 / 16581375;
+ data[index + 10] = .5;
+ data[index + 11] = -.1;
+ };
+ DiffuseSubSurfaceMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._lightProjVarying = null;
+ this._propReg = null;
+ this._lightColorReg = null;
+ this._colorReg = null;
+ this._decReg = null;
+ this._targetReg = null;
+ };
+ Object.defineProperty(DiffuseSubSurfaceMethod.prototype, "scattering", {
+ /**
+ * The amount by which the light scatters. It can be used to set the translucent surface's thickness. Use low
+ * values for skin.
+ */
+ get: function () {
+ return this._scattering;
+ },
+ set: function (value) {
+ this._scattering = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseSubSurfaceMethod.prototype, "translucency", {
+ /**
+ * The translucency of the object.
+ */
+ get: function () {
+ return this._translucency;
+ },
+ set: function (value) {
+ this._translucency = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DiffuseSubSurfaceMethod.prototype, "scatterColor", {
+ /**
+ * The colour of the "insides" of the object, ie: the colour the light becomes after leaving the object.
+ */
+ get: function () {
+ return this._scatterColor;
+ },
+ set: function (scatterColor /*uint*/) {
+ this._scatterColor = scatterColor;
+ this._scatterR = ((scatterColor >> 16) & 0xff) / 0xff;
+ this._scatterG = ((scatterColor >> 8) & 0xff) / 0xff;
+ this._scatterB = (scatterColor & 0xff) / 0xff;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iGetVertexCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ var code = _super.prototype.iGetVertexCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ var lightProjection;
+ var toTexRegister;
+ var temp = registerCache.getFreeVertexVectorTemp();
+ toTexRegister = registerCache.getFreeVertexConstant();
+ methodVO.secondaryVertexConstantsIndex = toTexRegister.index * 4;
+ this._lightProjVarying = registerCache.getFreeVarying();
+ lightProjection = registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ code += "m44 " + temp + ", vt0, " + lightProjection + "\n" + "div " + temp + ".xyz, " + temp + ".xyz, " + temp + ".w\n" + "mul " + temp + ".xy, " + temp + ".xy, " + toTexRegister + ".xy\n" + "add " + temp + ".xy, " + temp + ".xy, " + toTexRegister + ".xx\n" + "mov " + this._lightProjVarying + ".xyz, " + temp + ".xyz\n" + "mov " + this._lightProjVarying + ".w, va0.w\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ this._colorReg = registerCache.getFreeFragmentConstant();
+ this._decReg = registerCache.getFreeFragmentConstant();
+ this._propReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = this._colorReg.index * 4;
+ return _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ this._pIsFirstLight = true;
+ this._lightColorReg = lightColReg;
+ return _super.prototype.iGetFragmentCodePerLight.call(this, shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iGetFragmentPostLightingCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code = _super.prototype.iGetFragmentPostLightingCode.call(this, shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ code += "mul " + temp + ".xyz, " + this._lightColorReg + ".xyz, " + this._targetReg + ".w\n" + "mul " + temp + ".xyz, " + temp + ".xyz, " + this._colorReg + ".xyz\n" + "add " + targetReg + ".xyz, " + targetReg + ".xyz, " + temp + ".xyz\n";
+ if (this._targetReg != sharedRegisters.viewDirFragment)
+ registerCache.removeFragmentTempUsage(targetReg);
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = this._scatterR;
+ data[index + 1] = this._scatterG;
+ data[index + 2] = this._scatterB;
+ data[index + 8] = this._scattering;
+ data[index + 9] = this._translucency;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseSubSurfaceMethod.prototype.iSetRenderState = function (shaderObject, methodVO, renderable, stage, camera) {
+ stage.context.activateTexture(methodVO.secondaryTexturesIndex, this._depthPass._iGetDepthMap(renderable));
+ this._depthPass._iGetProjection(renderable).copyRawDataTo(shaderObject.vertexConstantData, methodVO.secondaryVertexConstantsIndex + 4, true);
+ };
+ /**
+ * Generates the code for this method
+ */
+ DiffuseSubSurfaceMethod.prototype.scatterLight = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ // only scatter first light
+ if (!this._pIsFirstLight)
+ return "";
+ this._pIsFirstLight = false;
+ var code = "";
+ var depthReg = registerCache.getFreeTextureReg();
+ if (sharedRegisters.viewDirFragment) {
+ this._targetReg = sharedRegisters.viewDirFragment;
+ }
+ else {
+ this._targetReg = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(this._targetReg, 1);
+ }
+ methodVO.secondaryTexturesIndex = depthReg.index;
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ code += "tex " + temp + ", " + this._lightProjVarying + ", " + depthReg + " <2d,nearest,clamp>\n" + "dp4 " + targetReg + ".z, " + temp + ", " + this._decReg + "\n";
+ // currentDistanceToLight - closestDistanceToLight
+ code += "sub " + targetReg + ".z, " + this._lightProjVarying + ".z, " + targetReg + ".z\n" + "sub " + targetReg + ".z, " + this._propReg + ".x, " + targetReg + ".z\n" + "mul " + targetReg + ".z, " + this._propReg + ".y, " + targetReg + ".z\n" + "sat " + targetReg + ".z, " + targetReg + ".z\n" + "neg " + targetReg + ".y, " + targetReg + ".x\n" + "mul " + targetReg + ".y, " + targetReg + ".y, " + this._propReg + ".z\n" + "add " + targetReg + ".y, " + targetReg + ".y, " + this._propReg + ".z\n" + "mul " + this._targetReg + ".w, " + targetReg + ".z, " + targetReg + ".y\n" + "sub " + targetReg + ".y, " + this._colorReg + ".w, " + this._targetReg + ".w\n" + "mul " + targetReg + ".w, " + targetReg + ".w, " + targetReg + ".y\n";
+ return code;
+ };
+ return DiffuseSubSurfaceMethod;
+})(DiffuseCompositeMethod);
+module.exports = DiffuseSubSurfaceMethod;
+
+
+},{"awayjs-renderergl/lib/materials/methods/DiffuseCompositeMethod":undefined,"awayjs-renderergl/lib/materials/passes/SingleObjectDepthPass":undefined}],"awayjs-renderergl/lib/materials/methods/DiffuseWrapMethod":[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 DiffuseBasicMethod = require("awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod");
+/**
+ * DiffuseWrapMethod is an alternative to DiffuseBasicMethod in which the light is allowed to be "wrapped around" the normally dark area, to some extent.
+ * It can be used as a crude approximation to Oren-Nayar or simple subsurface scattering.
+ */
+var DiffuseWrapMethod = (function (_super) {
+ __extends(DiffuseWrapMethod, _super);
+ /**
+ * Creates a new DiffuseWrapMethod object.
+ * @param wrapFactor A factor to indicate the amount by which the light is allowed to wrap
+ */
+ function DiffuseWrapMethod(wrapFactor) {
+ if (wrapFactor === void 0) { wrapFactor = .5; }
+ _super.call(this);
+ this.wrapFactor = wrapFactor;
+ }
+ /**
+ * @inheritDoc
+ */
+ DiffuseWrapMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._wrapDataRegister = null;
+ };
+ Object.defineProperty(DiffuseWrapMethod.prototype, "wrapFactor", {
+ /**
+ * A factor to indicate the amount by which the light is allowed to wrap.
+ */
+ get: function () {
+ return this._wrapFactor;
+ },
+ set: function (value) {
+ this._wrapFactor = value;
+ this._wrapFactor = 1 / (value + 1);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ DiffuseWrapMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ var code = _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ this._pIsFirstLight = true;
+ this._wrapDataRegister = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = this._wrapDataRegister.index * 4;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseWrapMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ var code = "";
+ var t;
+ // write in temporary if not first light, so we can add to total diffuse colour
+ if (this._pIsFirstLight) {
+ t = this._pTotalLightColorReg;
+ }
+ else {
+ t = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(t, 1);
+ }
+ code += "dp3 " + t + ".x, " + lightDirReg + ".xyz, " + sharedRegisters.normalFragment + ".xyz\n" + "add " + t + ".y, " + t + ".x, " + this._wrapDataRegister + ".x\n" + "mul " + t + ".y, " + t + ".y, " + this._wrapDataRegister + ".y\n" + "sat " + t + ".w, " + t + ".y\n" + "mul " + t + ".xz, " + t + ".w, " + lightDirReg + ".wz\n";
+ if (this._iModulateMethod != null)
+ code += this._iModulateMethod(shaderObject, methodVO, lightDirReg, registerCache, sharedRegisters);
+ code += "mul " + t + ", " + t + ".x, " + lightColReg + "\n";
+ if (!this._pIsFirstLight) {
+ code += "add " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + t + ".xyz\n";
+ registerCache.removeFragmentTempUsage(t);
+ }
+ this._pIsFirstLight = false;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ DiffuseWrapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = this._wrapFactor;
+ data[index + 1] = 1 / (this._wrapFactor + 1);
+ };
+ return DiffuseWrapMethod;
+})(DiffuseBasicMethod);
+module.exports = DiffuseWrapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod":undefined}],"awayjs-renderergl/lib/materials/methods/EffectAlphaMaskMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * EffectAlphaMaskMethod allows the use of an additional texture to specify the alpha value of the material. When used
+ * with the secondary uv set, it allows for a tiled main texture with independently varying alpha (useful for water
+ * etc).
+ */
+var EffectAlphaMaskMethod = (function (_super) {
+ __extends(EffectAlphaMaskMethod, _super);
+ /**
+ * Creates a new EffectAlphaMaskMethod object.
+ *
+ * @param texture The texture to use as the alpha mask.
+ * @param useSecondaryUV Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently.
+ */
+ function EffectAlphaMaskMethod(texture, useSecondaryUV) {
+ if (useSecondaryUV === void 0) { useSecondaryUV = false; }
+ _super.call(this);
+ this._texture = texture;
+ this._useSecondaryUV = useSecondaryUV;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectAlphaMaskMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsSecondaryUV = this._useSecondaryUV;
+ methodVO.needsUV = !this._useSecondaryUV;
+ };
+ Object.defineProperty(EffectAlphaMaskMethod.prototype, "useSecondaryUV", {
+ /**
+ * Indicated whether or not the secondary uv set for the mask. This allows mapping alpha independently, for
+ * instance to tile the main texture and normal map while providing untiled alpha, for example to define the
+ * transparency over a tiled water surface.
+ */
+ get: function () {
+ return this._useSecondaryUV;
+ },
+ set: function (value) {
+ if (this._useSecondaryUV == value)
+ return;
+ this._useSecondaryUV = value;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectAlphaMaskMethod.prototype, "texture", {
+ /**
+ * The texture to use as the alpha mask.
+ */
+ get: function () {
+ return this._texture;
+ },
+ set: function (value) {
+ this._texture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectAlphaMaskMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ stage.context.activateTexture(methodVO.texturesIndex, this._texture);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectAlphaMaskMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var textureReg = registerCache.getFreeTextureReg();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var uvReg = this._useSecondaryUV ? sharedRegisters.secondaryUVVarying : sharedRegisters.uvVarying;
+ methodVO.texturesIndex = textureReg.index;
+ return ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, textureReg, this._texture, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, uvReg) + "mul " + targetReg + ", " + targetReg + ", " + temp + ".x\n";
+ };
+ return EffectAlphaMaskMethod;
+})(EffectMethodBase);
+module.exports = EffectAlphaMaskMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/EffectColorMatrixMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+/**
+ * EffectColorMatrixMethod provides a shading method that changes the colour of a material analogous to a ColorMatrixFilter.
+ */
+var EffectColorMatrixMethod = (function (_super) {
+ __extends(EffectColorMatrixMethod, _super);
+ /**
+ * Creates a new EffectColorTransformMethod.
+ *
+ * @param matrix An array of 20 items for 4 x 5 color transform.
+ */
+ function EffectColorMatrixMethod(matrix) {
+ _super.call(this);
+ if (matrix.length != 20)
+ throw new Error("Matrix length must be 20!");
+ this._matrix = matrix;
+ }
+ Object.defineProperty(EffectColorMatrixMethod.prototype, "colorMatrix", {
+ /**
+ * The 4 x 5 matrix to transform the color of the material.
+ */
+ get: function () {
+ return this._matrix;
+ },
+ set: function (value) {
+ this._matrix = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectColorMatrixMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code = "";
+ var colorMultReg = registerCache.getFreeFragmentConstant();
+ registerCache.getFreeFragmentConstant();
+ registerCache.getFreeFragmentConstant();
+ registerCache.getFreeFragmentConstant();
+ var colorOffsetReg = registerCache.getFreeFragmentConstant();
+ methodVO.fragmentConstantsIndex = colorMultReg.index * 4;
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ code += "m44 " + temp + ", " + targetReg + ", " + colorMultReg + "\n" + "add " + targetReg + ", " + temp + ", " + colorOffsetReg + "\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectColorMatrixMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ var matrix = this._matrix;
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ // r
+ data[index] = matrix[0];
+ data[index + 1] = matrix[1];
+ data[index + 2] = matrix[2];
+ data[index + 3] = matrix[3];
+ // g
+ data[index + 4] = matrix[5];
+ data[index + 5] = matrix[6];
+ data[index + 6] = matrix[7];
+ data[index + 7] = matrix[8];
+ // b
+ data[index + 8] = matrix[10];
+ data[index + 9] = matrix[11];
+ data[index + 10] = matrix[12];
+ data[index + 11] = matrix[13];
+ // a
+ data[index + 12] = matrix[15];
+ data[index + 13] = matrix[16];
+ data[index + 14] = matrix[17];
+ data[index + 15] = matrix[18];
+ // rgba offset
+ data[index + 16] = matrix[4];
+ data[index + 17] = matrix[9];
+ data[index + 18] = matrix[14];
+ data[index + 19] = matrix[19];
+ };
+ return EffectColorMatrixMethod;
+})(EffectMethodBase);
+module.exports = EffectColorMatrixMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/EffectEnvMapMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * EffectEnvMapMethod provides a material method to perform reflection mapping using cube maps.
+ */
+var EffectEnvMapMethod = (function (_super) {
+ __extends(EffectEnvMapMethod, _super);
+ /**
+ * Creates an EffectEnvMapMethod object.
+ * @param envMap The environment map containing the reflected scene.
+ * @param alpha The reflectivity of the surface.
+ */
+ function EffectEnvMapMethod(envMap, alpha) {
+ if (alpha === void 0) { alpha = 1; }
+ _super.call(this);
+ this._cubeTexture = envMap;
+ this._alpha = alpha;
+ }
+ Object.defineProperty(EffectEnvMapMethod.prototype, "mask", {
+ /**
+ * An optional texture to modulate the reflectivity of the surface.
+ */
+ get: function () {
+ return this._mask;
+ },
+ set: function (value) {
+ if (value != this._mask || (value && this._mask && (value.hasMipmaps != this._mask.hasMipmaps || value.format != this._mask.format)))
+ this.iInvalidateShaderProgram();
+ this._mask = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectEnvMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsNormals = true;
+ methodVO.needsView = true;
+ methodVO.needsUV = this._mask != null;
+ };
+ Object.defineProperty(EffectEnvMapMethod.prototype, "envMap", {
+ /**
+ * The cubic environment map containing the reflected scene.
+ */
+ get: function () {
+ return this._cubeTexture;
+ },
+ set: function (value) {
+ this._cubeTexture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectEnvMapMethod.prototype.dispose = function () {
+ };
+ Object.defineProperty(EffectEnvMapMethod.prototype, "alpha", {
+ /**
+ * The reflectivity of the surface.
+ */
+ get: function () {
+ return this._alpha;
+ },
+ set: function (value) {
+ this._alpha = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectEnvMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ shaderObject.fragmentConstantData[methodVO.fragmentConstantsIndex] = this._alpha;
+ stage.context.activateCubeTexture(methodVO.texturesIndex, this._cubeTexture);
+ if (this._mask)
+ stage.context.activateTexture(methodVO.texturesIndex + 1, this._mask);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectEnvMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var dataRegister = registerCache.getFreeFragmentConstant();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var code = "";
+ var cubeMapReg = registerCache.getFreeTextureReg();
+ methodVO.texturesIndex = cubeMapReg.index;
+ methodVO.fragmentConstantsIndex = dataRegister.index * 4;
+ registerCache.addFragmentTempUsages(temp, 1);
+ var temp2 = registerCache.getFreeFragmentVectorTemp();
+ // r = I - 2(I.N)*N
+ code += "dp3 " + temp + ".w, " + sharedRegisters.viewDirFragment + ".xyz, " + sharedRegisters.normalFragment + ".xyz\n" + "add " + temp + ".w, " + temp + ".w, " + temp + ".w\n" + "mul " + temp + ".xyz, " + sharedRegisters.normalFragment + ".xyz, " + temp + ".w\n" + "sub " + temp + ".xyz, " + temp + ".xyz, " + sharedRegisters.viewDirFragment + ".xyz\n" + ShaderCompilerHelper.getTexCubeSampleCode(temp, cubeMapReg, this._cubeTexture, shaderObject.useSmoothTextures, shaderObject.useMipmapping, temp) + "sub " + temp2 + ".w, " + temp + ".w, fc0.x\n" + "kil " + temp2 + ".w\n" + "sub " + temp + ", " + temp + ", " + targetReg + "\n";
+ if (this._mask)
+ code += ShaderCompilerHelper.getTex2DSampleCode(temp2, sharedRegisters, registerCache.getFreeTextureReg(), this._mask, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping) + "mul " + temp + ", " + temp2 + ", " + temp + "\n";
+ code += "mul " + temp + ", " + temp + ", " + dataRegister + ".x\n" + "add " + targetReg + ", " + targetReg + ", " + temp + "\n";
+ registerCache.removeFragmentTempUsage(temp);
+ return code;
+ };
+ return EffectEnvMapMethod;
+})(EffectMethodBase);
+module.exports = EffectEnvMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/EffectFogMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+/**
+ * EffectFogMethod provides a method to add distance-based fog to a material.
+ */
+var EffectFogMethod = (function (_super) {
+ __extends(EffectFogMethod, _super);
+ /**
+ * Creates a new EffectFogMethod object.
+ * @param minDistance The distance from which the fog starts appearing.
+ * @param maxDistance The distance at which the fog is densest.
+ * @param fogColor The colour of the fog.
+ */
+ function EffectFogMethod(minDistance, maxDistance, fogColor) {
+ if (fogColor === void 0) { fogColor = 0x808080; }
+ _super.call(this);
+ this._minDistance = 0;
+ this._maxDistance = 1000;
+ this.minDistance = minDistance;
+ this.maxDistance = maxDistance;
+ this.fogColor = fogColor;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectFogMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsProjection = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectFogMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index + 3] = 1;
+ data[index + 6] = 0;
+ data[index + 7] = 0;
+ };
+ Object.defineProperty(EffectFogMethod.prototype, "minDistance", {
+ /**
+ * The distance from which the fog starts appearing.
+ */
+ get: function () {
+ return this._minDistance;
+ },
+ set: function (value) {
+ this._minDistance = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFogMethod.prototype, "maxDistance", {
+ /**
+ * The distance at which the fog is densest.
+ */
+ get: function () {
+ return this._maxDistance;
+ },
+ set: function (value) {
+ this._maxDistance = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFogMethod.prototype, "fogColor", {
+ /**
+ * The colour of the fog.
+ */
+ get: function () {
+ return this._fogColor;
+ },
+ set: function (value /*uint*/) {
+ this._fogColor = value;
+ this._fogR = ((value >> 16) & 0xff) / 0xff;
+ this._fogG = ((value >> 8) & 0xff) / 0xff;
+ this._fogB = (value & 0xff) / 0xff;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectFogMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index] = this._fogR;
+ data[index + 1] = this._fogG;
+ data[index + 2] = this._fogB;
+ data[index + 4] = this._minDistance;
+ data[index + 5] = 1 / (this._maxDistance - this._minDistance);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectFogMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var fogColor = registerCache.getFreeFragmentConstant();
+ var fogData = registerCache.getFreeFragmentConstant();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(temp, 1);
+ var temp2 = registerCache.getFreeFragmentVectorTemp();
+ var code = "";
+ methodVO.fragmentConstantsIndex = fogColor.index * 4;
+ code += "sub " + temp2 + ".w, " + sharedRegisters.projectionFragment + ".z, " + fogData + ".x\n" + "mul " + temp2 + ".w, " + temp2 + ".w, " + fogData + ".y\n" + "sat " + temp2 + ".w, " + temp2 + ".w\n" + "sub " + temp + ", " + fogColor + ", " + targetReg + "\n" + "mul " + temp + ", " + temp + ", " + temp2 + ".w\n" + "add " + targetReg + ", " + targetReg + ", " + temp + "\n"; // fogRatio*(fogColor- col) + col
+ registerCache.removeFragmentTempUsage(temp);
+ return code;
+ };
+ return EffectFogMethod;
+})(EffectMethodBase);
+module.exports = EffectFogMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/EffectFresnelEnvMapMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * EffectFresnelEnvMapMethod provides a method to add fresnel-based reflectivity to an object using cube maps, which gets
+ * stronger as the viewing angle becomes more grazing.
+ */
+var EffectFresnelEnvMapMethod = (function (_super) {
+ __extends(EffectFresnelEnvMapMethod, _super);
+ /**
+ * Creates a new EffectFresnelEnvMapMethod
object.
+ *
+ * @param envMap The environment map containing the reflected scene.
+ * @param alpha The reflectivity of the material.
+ */
+ function EffectFresnelEnvMapMethod(envMap, alpha) {
+ if (alpha === void 0) { alpha = 1; }
+ _super.call(this);
+ this._fresnelPower = 5;
+ this._normalReflectance = 0;
+ this._cubeTexture = envMap;
+ this._alpha = alpha;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectFresnelEnvMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsNormals = true;
+ methodVO.needsView = true;
+ methodVO.needsUV = this._mask != null;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectFresnelEnvMapMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ shaderObject.fragmentConstantData[methodVO.fragmentConstantsIndex + 3] = 1;
+ };
+ Object.defineProperty(EffectFresnelEnvMapMethod.prototype, "mask", {
+ /**
+ * An optional texture to modulate the reflectivity of the surface.
+ */
+ get: function () {
+ return this._mask;
+ },
+ set: function (value) {
+ if (Boolean(value) != Boolean(this._mask) || (value && this._mask && (value.hasMipmaps != this._mask.hasMipmaps || value.format != this._mask.format))) {
+ this.iInvalidateShaderProgram();
+ }
+ this._mask = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFresnelEnvMapMethod.prototype, "fresnelPower", {
+ /**
+ * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.
+ */
+ get: function () {
+ return this._fresnelPower;
+ },
+ set: function (value) {
+ this._fresnelPower = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFresnelEnvMapMethod.prototype, "envMap", {
+ /**
+ * The cubic environment map containing the reflected scene.
+ */
+ get: function () {
+ return this._cubeTexture;
+ },
+ set: function (value) {
+ this._cubeTexture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFresnelEnvMapMethod.prototype, "alpha", {
+ /**
+ * The reflectivity of the surface.
+ */
+ get: function () {
+ return this._alpha;
+ },
+ set: function (value) {
+ this._alpha = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectFresnelEnvMapMethod.prototype, "normalReflectance", {
+ /**
+ * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.
+ */
+ get: function () {
+ return this._normalReflectance;
+ },
+ set: function (value) {
+ this._normalReflectance = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectFresnelEnvMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index] = this._alpha;
+ data[index + 1] = this._normalReflectance;
+ data[index + 2] = this._fresnelPower;
+ stage.context.activateCubeTexture(methodVO.texturesIndex, this._cubeTexture);
+ if (this._mask)
+ stage.context.activateTexture(methodVO.texturesIndex + 1, this._mask);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectFresnelEnvMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var dataRegister = registerCache.getFreeFragmentConstant();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var code = "";
+ var cubeMapReg = registerCache.getFreeTextureReg();
+ var viewDirReg = sharedRegisters.viewDirFragment;
+ var normalReg = sharedRegisters.normalFragment;
+ methodVO.texturesIndex = cubeMapReg.index;
+ methodVO.fragmentConstantsIndex = dataRegister.index * 4;
+ registerCache.addFragmentTempUsages(temp, 1);
+ var temp2 = registerCache.getFreeFragmentVectorTemp();
+ // r = V - 2(V.N)*N
+ code += "dp3 " + temp + ".w, " + viewDirReg + ".xyz, " + normalReg + ".xyz\n" + "add " + temp + ".w, " + temp + ".w, " + temp + ".w\n" + "mul " + temp + ".xyz, " + normalReg + ".xyz, " + temp + ".w\n" + "sub " + temp + ".xyz, " + temp + ".xyz, " + viewDirReg + ".xyz\n" + ShaderCompilerHelper.getTexCubeSampleCode(temp, cubeMapReg, this._cubeTexture, shaderObject.useSmoothTextures, shaderObject.useMipmapping, temp) + "sub " + temp2 + ".w, " + temp + ".w, fc0.x\n" + "kil " + temp2 + ".w\n" + "sub " + temp + ", " + temp + ", " + targetReg + "\n";
+ // calculate fresnel term
+ code += "dp3 " + viewDirReg + ".w, " + viewDirReg + ".xyz, " + normalReg + ".xyz\n" + "sub " + viewDirReg + ".w, " + dataRegister + ".w, " + viewDirReg + ".w\n" + "pow " + viewDirReg + ".w, " + viewDirReg + ".w, " + dataRegister + ".z\n" + "sub " + normalReg + ".w, " + dataRegister + ".w, " + viewDirReg + ".w\n" + "mul " + normalReg + ".w, " + dataRegister + ".y, " + normalReg + ".w\n" + "add " + viewDirReg + ".w, " + viewDirReg + ".w, " + normalReg + ".w\n" + "mul " + viewDirReg + ".w, " + dataRegister + ".x, " + viewDirReg + ".w\n";
+ if (this._mask) {
+ var maskReg = registerCache.getFreeTextureReg();
+ code += ShaderCompilerHelper.getTex2DSampleCode(temp2, sharedRegisters, maskReg, this._mask, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping) + "mul " + viewDirReg + ".w, " + temp2 + ".x, " + viewDirReg + ".w\n";
+ }
+ // blend
+ code += "mul " + temp + ", " + temp + ", " + viewDirReg + ".w\n" + "add " + targetReg + ", " + targetReg + ", " + temp + "\n";
+ registerCache.removeFragmentTempUsage(temp);
+ return code;
+ };
+ return EffectFresnelEnvMapMethod;
+})(EffectMethodBase);
+module.exports = EffectFresnelEnvMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/EffectLightMapMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * EffectLightMapMethod provides a method that allows applying a light map texture to the calculated pixel colour.
+ * It is different from DiffuseLightMapMethod in that the latter only modulates the diffuse shading value rather
+ * than the whole pixel colour.
+ */
+var EffectLightMapMethod = (function (_super) {
+ __extends(EffectLightMapMethod, _super);
+ /**
+ * Creates a new EffectLightMapMethod object.
+ *
+ * @param texture The texture containing the light map.
+ * @param blendMode The blend mode with which the light map should be applied to the lighting result.
+ * @param useSecondaryUV Indicates whether the secondary UV set should be used to map the light map.
+ */
+ function EffectLightMapMethod(texture, blendMode, useSecondaryUV) {
+ if (blendMode === void 0) { blendMode = "multiply"; }
+ if (useSecondaryUV === void 0) { useSecondaryUV = false; }
+ _super.call(this);
+ this._useSecondaryUV = useSecondaryUV;
+ this._texture = texture;
+ this.blendMode = blendMode;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectLightMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsUV = !this._useSecondaryUV;
+ methodVO.needsSecondaryUV = this._useSecondaryUV;
+ };
+ Object.defineProperty(EffectLightMapMethod.prototype, "blendMode", {
+ /**
+ * The blend mode with which the light map should be applied to the lighting result.
+ *
+ * @see EffectLightMapMethod.ADD
+ * @see EffectLightMapMethod.MULTIPLY
+ */
+ get: function () {
+ return this._blendMode;
+ },
+ set: function (value) {
+ if (value != EffectLightMapMethod.ADD && value != EffectLightMapMethod.MULTIPLY)
+ throw new Error("Unknown blendmode!");
+ if (this._blendMode == value)
+ return;
+ this._blendMode = value;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectLightMapMethod.prototype, "texture", {
+ /**
+ * The texture containing the light map.
+ */
+ get: function () {
+ return this._texture;
+ },
+ set: function (value) {
+ if (value.hasMipmaps != this._texture.hasMipmaps || value.format != this._texture.format)
+ this.iInvalidateShaderProgram();
+ this._texture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectLightMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ stage.context.activateTexture(methodVO.texturesIndex, this._texture);
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectLightMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code;
+ var lightMapReg = registerCache.getFreeTextureReg();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ methodVO.texturesIndex = lightMapReg.index;
+ code = ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, lightMapReg, this._texture, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, this._useSecondaryUV ? sharedRegisters.secondaryUVVarying : sharedRegisters.uvVarying);
+ switch (this._blendMode) {
+ case EffectLightMapMethod.MULTIPLY:
+ code += "mul " + targetReg + ", " + targetReg + ", " + temp + "\n";
+ break;
+ case EffectLightMapMethod.ADD:
+ code += "add " + targetReg + ", " + targetReg + ", " + temp + "\n";
+ break;
+ }
+ return code;
+ };
+ /**
+ * Indicates the light map should be multiplied with the calculated shading result.
+ */
+ EffectLightMapMethod.MULTIPLY = "multiply";
+ /**
+ * Indicates the light map should be added into the calculated shading result.
+ */
+ EffectLightMapMethod.ADD = "add";
+ return EffectLightMapMethod;
+})(EffectMethodBase);
+module.exports = EffectLightMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/EffectRefractionEnvMapMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * EffectRefractionEnvMapMethod provides a method to add refracted transparency based on cube maps.
+ */
+var EffectRefractionEnvMapMethod = (function (_super) {
+ __extends(EffectRefractionEnvMapMethod, _super);
+ /**
+ * Creates a new EffectRefractionEnvMapMethod object. Example values for dispersion are: dispersionR: -0.03, dispersionG: -0.01, dispersionB: = .0015
+ *
+ * @param envMap The environment map containing the refracted scene.
+ * @param refractionIndex The refractive index of the material.
+ * @param dispersionR The amount of chromatic dispersion of the red channel. Defaults to 0 (none).
+ * @param dispersionG The amount of chromatic dispersion of the green channel. Defaults to 0 (none).
+ * @param dispersionB The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).
+ */
+ function EffectRefractionEnvMapMethod(envMap, refractionIndex, dispersionR, dispersionG, dispersionB) {
+ if (refractionIndex === void 0) { refractionIndex = .1; }
+ if (dispersionR === void 0) { dispersionR = 0; }
+ if (dispersionG === void 0) { dispersionG = 0; }
+ if (dispersionB === void 0) { dispersionB = 0; }
+ _super.call(this);
+ this._dispersionR = 0;
+ this._dispersionG = 0;
+ this._dispersionB = 0;
+ this._alpha = 1;
+ this._envMap = envMap;
+ this._dispersionR = dispersionR;
+ this._dispersionG = dispersionG;
+ this._dispersionB = dispersionB;
+ this._useDispersion = !(this._dispersionR == this._dispersionB && this._dispersionR == this._dispersionG);
+ this._refractionIndex = refractionIndex;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectRefractionEnvMapMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index + 4] = 1;
+ data[index + 5] = 0;
+ data[index + 7] = 1;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectRefractionEnvMapMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsNormals = true;
+ methodVO.needsView = true;
+ };
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "envMap", {
+ /**
+ * The cube environment map to use for the refraction.
+ */
+ get: function () {
+ return this._envMap;
+ },
+ set: function (value) {
+ this._envMap = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "refractionIndex", {
+ /**
+ * The refractive index of the material.
+ */
+ get: function () {
+ return this._refractionIndex;
+ },
+ set: function (value) {
+ this._refractionIndex = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "dispersionR", {
+ /**
+ * The amount of chromatic dispersion of the red channel. Defaults to 0 (none).
+ */
+ get: function () {
+ return this._dispersionR;
+ },
+ set: function (value) {
+ this._dispersionR = value;
+ var useDispersion = !(this._dispersionR == this._dispersionB && this._dispersionR == this._dispersionG);
+ if (this._useDispersion != useDispersion) {
+ this.iInvalidateShaderProgram();
+ this._useDispersion = useDispersion;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "dispersionG", {
+ /**
+ * The amount of chromatic dispersion of the green channel. Defaults to 0 (none).
+ */
+ get: function () {
+ return this._dispersionG;
+ },
+ set: function (value) {
+ this._dispersionG = value;
+ var useDispersion = !(this._dispersionR == this._dispersionB && this._dispersionR == this._dispersionG);
+ if (this._useDispersion != useDispersion) {
+ this.iInvalidateShaderProgram();
+ this._useDispersion = useDispersion;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "dispersionB", {
+ /**
+ * The amount of chromatic dispersion of the blue channel. Defaults to 0 (none).
+ */
+ get: function () {
+ return this._dispersionB;
+ },
+ set: function (value) {
+ this._dispersionB = value;
+ var useDispersion = !(this._dispersionR == this._dispersionB && this._dispersionR == this._dispersionG);
+ if (this._useDispersion != useDispersion) {
+ this.iInvalidateShaderProgram();
+ this._useDispersion = useDispersion;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRefractionEnvMapMethod.prototype, "alpha", {
+ /**
+ * The amount of transparency of the object. Warning: the alpha applies to the refracted color, not the actual
+ * material. A value of 1 will make it appear fully transparent.
+ */
+ get: function () {
+ return this._alpha;
+ },
+ set: function (value) {
+ this._alpha = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectRefractionEnvMapMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = this._dispersionR + this._refractionIndex;
+ if (this._useDispersion) {
+ data[index + 1] = this._dispersionG + this._refractionIndex;
+ data[index + 2] = this._dispersionB + this._refractionIndex;
+ }
+ data[index + 3] = this._alpha;
+ stage.context.activateCubeTexture(methodVO.texturesIndex, this._envMap);
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectRefractionEnvMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ // todo: data2.x could use common reg, so only 1 reg is used
+ var data = registerCache.getFreeFragmentConstant();
+ var data2 = registerCache.getFreeFragmentConstant();
+ var code = "";
+ var cubeMapReg = registerCache.getFreeTextureReg();
+ var refractionDir;
+ var refractionColor;
+ var temp;
+ methodVO.texturesIndex = cubeMapReg.index;
+ methodVO.fragmentConstantsIndex = data.index * 4;
+ refractionDir = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(refractionDir, 1);
+ refractionColor = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(refractionColor, 1);
+ temp = registerCache.getFreeFragmentVectorTemp();
+ var viewDirReg = sharedRegisters.viewDirFragment;
+ var normalReg = sharedRegisters.normalFragment;
+ code += "neg " + viewDirReg + ".xyz, " + viewDirReg + ".xyz\n";
+ code += "dp3 " + temp + ".x, " + viewDirReg + ".xyz, " + normalReg + ".xyz\n" + "mul " + temp + ".w, " + temp + ".x, " + temp + ".x\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".x, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".x, " + temp + ".w\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "sqt " + temp + ".y, " + temp + ".w\n" + "mul " + temp + ".x, " + data + ".x, " + temp + ".x\n" + "add " + temp + ".x, " + temp + ".x, " + temp + ".y\n" + "mul " + temp + ".xyz, " + temp + ".x, " + normalReg + ".xyz\n" + "mul " + refractionDir + ", " + data + ".x, " + viewDirReg + "\n" + "sub " + refractionDir + ".xyz, " + refractionDir + ".xyz, " + temp + ".xyz\n" + "nrm " + refractionDir + ".xyz, " + refractionDir + ".xyz\n";
+ code += ShaderCompilerHelper.getTexCubeSampleCode(refractionColor, cubeMapReg, this._envMap, shaderObject.useSmoothTextures, shaderObject.useMipmapping, refractionDir) + "sub " + refractionColor + ".w, " + refractionColor + ".w, fc0.x \n" + "kil " + refractionColor + ".w\n";
+ if (this._useDispersion) {
+ // GREEN
+ code += "dp3 " + temp + ".x, " + viewDirReg + ".xyz, " + normalReg + ".xyz\n" + "mul " + temp + ".w, " + temp + ".x, " + temp + ".x\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".y, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".y, " + temp + ".w\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "sqt " + temp + ".y, " + temp + ".w\n" + "mul " + temp + ".x, " + data + ".y, " + temp + ".x\n" + "add " + temp + ".x, " + temp + ".x, " + temp + ".y\n" + "mul " + temp + ".xyz, " + temp + ".x, " + normalReg + ".xyz\n" + "mul " + refractionDir + ", " + data + ".y, " + viewDirReg + "\n" + "sub " + refractionDir + ".xyz, " + refractionDir + ".xyz, " + temp + ".xyz\n" + "nrm " + refractionDir + ".xyz, " + refractionDir + ".xyz\n";
+ code += ShaderCompilerHelper.getTexCubeSampleCode(temp, cubeMapReg, this._envMap, shaderObject.useSmoothTextures, shaderObject.useMipmapping, refractionDir) + "mov " + refractionColor + ".y, " + temp + ".y\n";
+ // BLUE
+ code += "dp3 " + temp + ".x, " + viewDirReg + ".xyz, " + normalReg + ".xyz\n" + "mul " + temp + ".w, " + temp + ".x, " + temp + ".x\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".z, " + temp + ".w\n" + "mul " + temp + ".w, " + data + ".z, " + temp + ".w\n" + "sub " + temp + ".w, " + data2 + ".x, " + temp + ".w\n" + "sqt " + temp + ".y, " + temp + ".w\n" + "mul " + temp + ".x, " + data + ".z, " + temp + ".x\n" + "add " + temp + ".x, " + temp + ".x, " + temp + ".y\n" + "mul " + temp + ".xyz, " + temp + ".x, " + normalReg + ".xyz\n" + "mul " + refractionDir + ", " + data + ".z, " + viewDirReg + "\n" + "sub " + refractionDir + ".xyz, " + refractionDir + ".xyz, " + temp + ".xyz\n" + "nrm " + refractionDir + ".xyz, " + refractionDir + ".xyz\n";
+ code += ShaderCompilerHelper.getTexCubeSampleCode(temp, cubeMapReg, this._envMap, shaderObject.useSmoothTextures, shaderObject.useMipmapping, refractionDir) + "mov " + refractionColor + ".z, " + temp + ".z\n";
+ }
+ registerCache.removeFragmentTempUsage(refractionDir);
+ code += "sub " + refractionColor + ".xyz, " + refractionColor + ".xyz, " + targetReg + ".xyz\n" + "mul " + refractionColor + ".xyz, " + refractionColor + ".xyz, " + data + ".w\n" + "add " + targetReg + ".xyz, " + targetReg + ".xyz, " + refractionColor + ".xyz\n";
+ registerCache.removeFragmentTempUsage(refractionColor);
+ // restore
+ code += "neg " + viewDirReg + ".xyz, " + viewDirReg + ".xyz\n";
+ return code;
+ };
+ return EffectRefractionEnvMapMethod;
+})(EffectMethodBase);
+module.exports = EffectRefractionEnvMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/EffectRimLightMethod":[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 EffectMethodBase = require("awayjs-stagegl/lib/materials/methods/EffectMethodBase");
+/**
+ * EffectRimLightMethod provides a method to add rim lighting to a material. This adds a glow-like effect to edges of objects.
+ */
+var EffectRimLightMethod = (function (_super) {
+ __extends(EffectRimLightMethod, _super);
+ /**
+ * Creates a new EffectRimLightMethod
object.
+ *
+ * @param color The colour of the rim light.
+ * @param strength The strength of the rim light.
+ * @param power The power of the rim light. Higher values will result in a higher edge fall-off.
+ * @param blend The blend mode with which to add the light to the object.
+ */
+ function EffectRimLightMethod(color, strength, power, blend) {
+ if (color === void 0) { color = 0xffffff; }
+ if (strength === void 0) { strength = .4; }
+ if (power === void 0) { power = 2; }
+ if (blend === void 0) { blend = "mix"; }
+ _super.call(this);
+ this._blendMode = blend;
+ this._strength = strength;
+ this._power = power;
+ this.color = color;
+ }
+ /**
+ * @inheritDoc
+ */
+ EffectRimLightMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ shaderObject.fragmentConstantData[methodVO.fragmentConstantsIndex + 3] = 1;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectRimLightMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsNormals = true;
+ methodVO.needsView = true;
+ };
+ Object.defineProperty(EffectRimLightMethod.prototype, "blendMode", {
+ /**
+ * The blend mode with which to add the light to the object.
+ *
+ * EffectRimLightMethod.MULTIPLY multiplies the rim light with the material's colour.
+ * EffectRimLightMethod.ADD adds the rim light with the material's colour.
+ * EffectRimLightMethod.MIX provides normal alpha blending.
+ */
+ get: function () {
+ return this._blendMode;
+ },
+ set: function (value) {
+ if (this._blendMode == value)
+ return;
+ this._blendMode = value;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRimLightMethod.prototype, "color", {
+ /**
+ * The color of the rim light.
+ */
+ get: function () {
+ return this._color;
+ },
+ set: function (value /*uint*/) {
+ this._color = value;
+ this._colorR = ((value >> 16) & 0xff) / 0xff;
+ this._colorG = ((value >> 8) & 0xff) / 0xff;
+ this._colorB = (value & 0xff) / 0xff;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRimLightMethod.prototype, "strength", {
+ /**
+ * The strength of the rim light.
+ */
+ get: function () {
+ return this._strength;
+ },
+ set: function (value) {
+ this._strength = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(EffectRimLightMethod.prototype, "power", {
+ /**
+ * The power of the rim light. Higher values will result in a higher edge fall-off.
+ */
+ get: function () {
+ return this._power;
+ },
+ set: function (value) {
+ this._power = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ EffectRimLightMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = this._colorR;
+ data[index + 1] = this._colorG;
+ data[index + 2] = this._colorB;
+ data[index + 4] = this._strength;
+ data[index + 5] = this._power;
+ };
+ /**
+ * @inheritDoc
+ */
+ EffectRimLightMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var dataRegister = registerCache.getFreeFragmentConstant();
+ var dataRegister2 = registerCache.getFreeFragmentConstant();
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var code = "";
+ methodVO.fragmentConstantsIndex = dataRegister.index * 4;
+ code += "dp3 " + temp + ".x, " + sharedRegisters.viewDirFragment + ".xyz, " + sharedRegisters.normalFragment + ".xyz\n" + "sat " + temp + ".x, " + temp + ".x\n" + "sub " + temp + ".x, " + dataRegister + ".w, " + temp + ".x\n" + "pow " + temp + ".x, " + temp + ".x, " + dataRegister2 + ".y\n" + "mul " + temp + ".x, " + temp + ".x, " + dataRegister2 + ".x\n" + "sub " + temp + ".x, " + dataRegister + ".w, " + temp + ".x\n" + "mul " + targetReg + ".xyz, " + targetReg + ".xyz, " + temp + ".x\n" + "sub " + temp + ".w, " + dataRegister + ".w, " + temp + ".x\n";
+ if (this._blendMode == EffectRimLightMethod.ADD) {
+ code += "mul " + temp + ".xyz, " + temp + ".w, " + dataRegister + ".xyz\n" + "add " + targetReg + ".xyz, " + targetReg + ".xyz, " + temp + ".xyz\n";
+ }
+ else if (this._blendMode == EffectRimLightMethod.MULTIPLY) {
+ code += "mul " + temp + ".xyz, " + temp + ".w, " + dataRegister + ".xyz\n" + "mul " + targetReg + ".xyz, " + targetReg + ".xyz, " + temp + ".xyz\n";
+ }
+ else {
+ code += "sub " + temp + ".xyz, " + dataRegister + ".xyz, " + targetReg + ".xyz\n" + "mul " + temp + ".xyz, " + temp + ".xyz, " + temp + ".w\n" + "add " + targetReg + ".xyz, " + targetReg + ".xyz, " + temp + ".xyz\n";
+ }
+ return code;
+ };
+ EffectRimLightMethod.ADD = "add";
+ EffectRimLightMethod.MULTIPLY = "multiply";
+ EffectRimLightMethod.MIX = "mix";
+ return EffectRimLightMethod;
+})(EffectMethodBase);
+module.exports = EffectRimLightMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/EffectMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/NormalHeightMapMethod":[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 NormalBasicMethod = require("awayjs-stagegl/lib/materials/methods/NormalBasicMethod");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * NormalHeightMapMethod provides a normal map method that uses a height map to calculate the normals.
+ */
+var NormalHeightMapMethod = (function (_super) {
+ __extends(NormalHeightMapMethod, _super);
+ /**
+ * Creates a new NormalHeightMapMethod method.
+ *
+ * @param heightMap The texture containing the height data. 0 means low, 1 means high.
+ * @param worldWidth The width of the 'world'. This is used to map uv coordinates' u component to scene dimensions.
+ * @param worldHeight The height of the 'world'. This is used to map the height map values to scene dimensions.
+ * @param worldDepth The depth of the 'world'. This is used to map uv coordinates' v component to scene dimensions.
+ */
+ function NormalHeightMapMethod(heightMap, worldWidth, worldHeight, worldDepth) {
+ _super.call(this);
+ this.normalMap = heightMap;
+ this._worldXYRatio = worldWidth / worldHeight;
+ this._worldXZRatio = worldDepth / worldHeight;
+ }
+ /**
+ * @inheritDoc
+ */
+ NormalHeightMapMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = 1 / this.normalMap.width;
+ data[index + 1] = 1 / this.normalMap.height;
+ data[index + 2] = 0;
+ data[index + 3] = 1;
+ data[index + 4] = this._worldXYRatio;
+ data[index + 5] = this._worldXZRatio;
+ };
+ Object.defineProperty(NormalHeightMapMethod.prototype, "tangentSpace", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return false;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ NormalHeightMapMethod.prototype.copyFrom = function (method) {
+ _super.prototype.copyFrom.call(this, method);
+ this._worldXYRatio = method._worldXYRatio;
+ this._worldXZRatio = method._worldXZRatio;
+ };
+ /**
+ * @inheritDoc
+ */
+ NormalHeightMapMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var dataReg = registerCache.getFreeFragmentConstant();
+ var dataReg2 = registerCache.getFreeFragmentConstant();
+ this._pNormalTextureRegister = registerCache.getFreeTextureReg();
+ methodVO.texturesIndex = this._pNormalTextureRegister.index;
+ methodVO.fragmentConstantsIndex = dataReg.index * 4;
+ return ShaderCompilerHelper.getTex2DSampleCode(targetReg, sharedRegisters, this._pNormalTextureRegister, this.normalMap, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, sharedRegisters.uvVarying, "clamp") + "add " + temp + ", " + sharedRegisters.uvVarying + ", " + dataReg + ".xzzz\n" + ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, this._pNormalTextureRegister, this.normalMap, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, temp, "clamp") + "sub " + targetReg + ".x, " + targetReg + ".x, " + temp + ".x\n" + "add " + temp + ", " + sharedRegisters.uvVarying + ", " + dataReg + ".zyzz\n" + ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, this._pNormalTextureRegister, this.normalMap, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, temp, "clamp") + "sub " + targetReg + ".z, " + targetReg + ".z, " + temp + ".x\n" + "mov " + targetReg + ".y, " + dataReg + ".w\n" + "mul " + targetReg + ".xz, " + targetReg + ".xz, " + dataReg2 + ".xy\n" + "nrm " + targetReg + ".xyz, " + targetReg + ".xyz\n";
+ };
+ return NormalHeightMapMethod;
+})(NormalBasicMethod);
+module.exports = NormalHeightMapMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/NormalBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/NormalSimpleWaterMethod":[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 NormalBasicMethod = require("awayjs-stagegl/lib/materials/methods/NormalBasicMethod");
+var ShaderCompilerHelper = require("awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper");
+/**
+ * NormalSimpleWaterMethod provides a basic normal map method to create water ripples by translating two wave normal maps.
+ */
+var NormalSimpleWaterMethod = (function (_super) {
+ __extends(NormalSimpleWaterMethod, _super);
+ /**
+ * Creates a new NormalSimpleWaterMethod object.
+ * @param waveMap1 A normal map containing one layer of a wave structure.
+ * @param waveMap2 A normal map containing a second layer of a wave structure.
+ */
+ function NormalSimpleWaterMethod(waveMap1, waveMap2) {
+ _super.call(this);
+ this._useSecondNormalMap = false;
+ this._water1OffsetX = 0;
+ this._water1OffsetY = 0;
+ this._water2OffsetX = 0;
+ this._water2OffsetY = 0;
+ this.normalMap = waveMap1;
+ this.secondaryNormalMap = waveMap2;
+ }
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var index = methodVO.fragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = .5;
+ data[index + 1] = 0;
+ data[index + 2] = 0;
+ data[index + 3] = 1;
+ };
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ _super.prototype.iInitVO.call(this, shaderObject, methodVO);
+ this._useSecondNormalMap = this.normalMap != this.secondaryNormalMap;
+ };
+ Object.defineProperty(NormalSimpleWaterMethod.prototype, "water1OffsetX", {
+ /**
+ * The translation of the first wave layer along the X-axis.
+ */
+ get: function () {
+ return this._water1OffsetX;
+ },
+ set: function (value) {
+ this._water1OffsetX = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(NormalSimpleWaterMethod.prototype, "water1OffsetY", {
+ /**
+ * The translation of the first wave layer along the Y-axis.
+ */
+ get: function () {
+ return this._water1OffsetY;
+ },
+ set: function (value) {
+ this._water1OffsetY = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(NormalSimpleWaterMethod.prototype, "water2OffsetX", {
+ /**
+ * The translation of the second wave layer along the X-axis.
+ */
+ get: function () {
+ return this._water2OffsetX;
+ },
+ set: function (value) {
+ this._water2OffsetX = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(NormalSimpleWaterMethod.prototype, "water2OffsetY", {
+ /**
+ * The translation of the second wave layer along the Y-axis.
+ */
+ get: function () {
+ return this._water2OffsetY;
+ },
+ set: function (value) {
+ this._water2OffsetY = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(NormalSimpleWaterMethod.prototype, "secondaryNormalMap", {
+ /**
+ * A second normal map that will be combined with the first to create a wave-like animation pattern.
+ */
+ get: function () {
+ return this._texture2;
+ },
+ set: function (value) {
+ this._texture2 = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._normalTextureRegister2 = null;
+ };
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.dispose = function () {
+ _super.prototype.dispose.call(this);
+ this._texture2 = null;
+ };
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index + 4] = this._water1OffsetX;
+ data[index + 5] = this._water1OffsetY;
+ data[index + 6] = this._water2OffsetX;
+ data[index + 7] = this._water2OffsetY;
+ //if (this._useSecondNormalMap >= 0)
+ if (this._useSecondNormalMap)
+ stage.context.activateTexture(methodVO.texturesIndex + 1, this._texture2);
+ };
+ /**
+ * @inheritDoc
+ */
+ NormalSimpleWaterMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ var dataReg = registerCache.getFreeFragmentConstant();
+ var dataReg2 = registerCache.getFreeFragmentConstant();
+ this._pNormalTextureRegister = registerCache.getFreeTextureReg();
+ this._normalTextureRegister2 = this._useSecondNormalMap ? registerCache.getFreeTextureReg() : this._pNormalTextureRegister;
+ methodVO.texturesIndex = this._pNormalTextureRegister.index;
+ methodVO.fragmentConstantsIndex = dataReg.index * 4;
+ return "add " + temp + ", " + sharedRegisters.uvVarying + ", " + dataReg2 + ".xyxy\n" + ShaderCompilerHelper.getTex2DSampleCode(targetReg, sharedRegisters, this._pNormalTextureRegister, this.normalMap, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, temp) + "add " + temp + ", " + sharedRegisters.uvVarying + ", " + dataReg2 + ".zwzw\n" + ShaderCompilerHelper.getTex2DSampleCode(temp, sharedRegisters, this._normalTextureRegister2, this._texture2, shaderObject.useSmoothTextures, shaderObject.repeatTextures, shaderObject.useMipmapping, temp) + "add " + targetReg + ", " + targetReg + ", " + temp + " \n" + "mul " + targetReg + ", " + targetReg + ", " + dataReg + ".x \n" + "sub " + targetReg + ".xyz, " + targetReg + ".xyz, " + sharedRegisters.commons + ".xxx \n" + "nrm " + targetReg + ".xyz, " + targetReg + ".xyz \n";
+ };
+ return NormalSimpleWaterMethod;
+})(NormalBasicMethod);
+module.exports = NormalSimpleWaterMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/NormalBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper":undefined}],"awayjs-renderergl/lib/materials/methods/ShadowCascadeMethod":[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 DirectionalLight = require("awayjs-core/lib/entities/DirectionalLight");
+var Event = require("awayjs-core/lib/events/Event");
+var ShadingMethodEvent = require("awayjs-stagegl/lib/events/ShadingMethodEvent");
+var MethodVO = require("awayjs-stagegl/lib/materials/compilation/MethodVO");
+var ShadowMapMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMapMethodBase");
+/**
+ * ShadowCascadeMethod is a shadow map method to apply cascade shadow mapping on materials.
+ * Must be used with a DirectionalLight with a CascadeShadowMapper assigned to its shadowMapper property.
+ *
+ * @see away.lights.CascadeShadowMapper
+ */
+var ShadowCascadeMethod = (function (_super) {
+ __extends(ShadowCascadeMethod, _super);
+ /**
+ * Creates a new ShadowCascadeMethod object.
+ *
+ * @param shadowMethodBase The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)
+ */
+ function ShadowCascadeMethod(shadowMethodBase) {
+ var _this = this;
+ _super.call(this, shadowMethodBase.castingLight);
+ this._baseMethod = shadowMethodBase;
+ if (!(this._pCastingLight instanceof DirectionalLight))
+ throw new Error("ShadowCascadeMethod is only compatible with DirectionalLight");
+ this._cascadeShadowMapper = this._pCastingLight.shadowMapper;
+ if (!this._cascadeShadowMapper)
+ throw new Error("ShadowCascadeMethod requires a light that has a CascadeShadowMapper instance assigned to shadowMapper.");
+ this._cascadeShadowMapper.addEventListener(Event.CHANGE, function (event) { return _this.onCascadeChange(event); });
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, function (event) { return _this.onShaderInvalidated(event); });
+ }
+ Object.defineProperty(ShadowCascadeMethod.prototype, "baseMethod", {
+ /**
+ * The shadow map sampling method used to sample individual cascades. These are typically those used in conjunction
+ * with a DirectionalShadowMapper.
+ *
+ * @see ShadowHardMethod
+ * @see ShadowSoftMethod
+ */
+ get: function () {
+ return this._baseMethod;
+ },
+ set: function (value) {
+ var _this = this;
+ if (this._baseMethod == value)
+ return;
+ this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, function (event) { return _this.onShaderInvalidated(event); });
+ this._baseMethod = value;
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, function (event) { return _this.onShaderInvalidated(event); });
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ var tempVO = new MethodVO(this._baseMethod);
+ this._baseMethod.iInitVO(shaderObject, tempVO);
+ methodVO.needsGlobalVertexPos = true;
+ methodVO.needsProjection = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var fragmentData = shaderObject.fragmentConstantData;
+ var vertexData = shaderObject.vertexConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ fragmentData[index] = 1.0;
+ fragmentData[index + 1] = 1 / 255.0;
+ fragmentData[index + 2] = 1 / 65025.0;
+ fragmentData[index + 3] = 1 / 16581375.0;
+ fragmentData[index + 6] = .5;
+ fragmentData[index + 7] = -.5;
+ index = methodVO.vertexConstantsIndex;
+ vertexData[index] = .5;
+ vertexData[index + 1] = -.5;
+ vertexData[index + 2] = 0;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._cascadeProjections = null;
+ this._depthMapCoordVaryings = null;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iGetVertexCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ var code = "";
+ var dataReg = registerCache.getFreeVertexConstant();
+ this.initProjectionsRegs(registerCache);
+ methodVO.vertexConstantsIndex = dataReg.index * 4;
+ var temp = registerCache.getFreeVertexVectorTemp();
+ for (var i = 0; i < this._cascadeShadowMapper.numCascades; ++i) {
+ code += "m44 " + temp + ", " + sharedRegisters.globalPositionVertex + ", " + this._cascadeProjections[i] + "\n" + "add " + this._depthMapCoordVaryings[i] + ", " + temp + ", " + dataReg + ".zzwz\n";
+ }
+ return code;
+ };
+ /**
+ * Creates the registers for the cascades' projection coordinates.
+ */
+ ShadowCascadeMethod.prototype.initProjectionsRegs = function (registerCache) {
+ this._cascadeProjections = new Array(this._cascadeShadowMapper.numCascades);
+ this._depthMapCoordVaryings = new Array(this._cascadeShadowMapper.numCascades);
+ for (var i = 0; i < this._cascadeShadowMapper.numCascades; ++i) {
+ this._depthMapCoordVaryings[i] = registerCache.getFreeVarying();
+ this._cascadeProjections[i] = registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ registerCache.getFreeVertexConstant();
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var numCascades = this._cascadeShadowMapper.numCascades;
+ var depthMapRegister = registerCache.getFreeTextureReg();
+ var decReg = registerCache.getFreeFragmentConstant();
+ var dataReg = registerCache.getFreeFragmentConstant();
+ var planeDistanceReg = registerCache.getFreeFragmentConstant();
+ var planeDistances = Array(planeDistanceReg + ".x", planeDistanceReg + ".y", planeDistanceReg + ".z", planeDistanceReg + ".w");
+ var code;
+ methodVO.fragmentConstantsIndex = decReg.index * 4;
+ methodVO.texturesIndex = depthMapRegister.index;
+ var inQuad = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(inQuad, 1);
+ var uvCoord = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(uvCoord, 1);
+ // assume lowest partition is selected, will be overwritten later otherwise
+ code = "mov " + uvCoord + ", " + this._depthMapCoordVaryings[numCascades - 1] + "\n";
+ for (var i = numCascades - 2; i >= 0; --i) {
+ var uvProjection = this._depthMapCoordVaryings[i];
+ // calculate if in texturemap (result == 0 or 1, only 1 for a single partition)
+ code += "slt " + inQuad + ".z, " + sharedRegisters.projectionFragment + ".z, " + planeDistances[i] + "\n"; // z = x > minX, w = y > minY
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ // linearly interpolate between old and new uv coords using predicate value == conditional toggle to new value if predicate == 1 (true)
+ code += "sub " + temp + ", " + uvProjection + ", " + uvCoord + "\n" + "mul " + temp + ", " + temp + ", " + inQuad + ".z\n" + "add " + uvCoord + ", " + uvCoord + ", " + temp + "\n";
+ }
+ registerCache.removeFragmentTempUsage(inQuad);
+ code += "div " + uvCoord + ", " + uvCoord + ", " + uvCoord + ".w\n" + "mul " + uvCoord + ".xy, " + uvCoord + ".xy, " + dataReg + ".zw\n" + "add " + uvCoord + ".xy, " + uvCoord + ".xy, " + dataReg + ".zz\n";
+ code += this._baseMethod._iGetCascadeFragmentCode(shaderObject, methodVO, decReg, depthMapRegister, uvCoord, targetReg, registerCache, sharedRegisters) + "add " + targetReg + ".w, " + targetReg + ".w, " + dataReg + ".y\n";
+ registerCache.removeFragmentTempUsage(uvCoord);
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ stage.context.activateTexture(methodVO.texturesIndex, this._pCastingLight.shadowMapper.depthMap);
+ var vertexData = shaderObject.vertexConstantData;
+ var vertexIndex = methodVO.vertexConstantsIndex;
+ shaderObject.vertexConstantData[methodVO.vertexConstantsIndex + 3] = -1 / (this._cascadeShadowMapper.depth * this._pEpsilon);
+ var numCascades = this._cascadeShadowMapper.numCascades;
+ vertexIndex += 4;
+ for (var k = 0; k < numCascades; ++k) {
+ this._cascadeShadowMapper.getDepthProjections(k).copyRawDataTo(vertexData, vertexIndex, true);
+ vertexIndex += 16;
+ }
+ var fragmentData = shaderObject.fragmentConstantData;
+ var fragmentIndex = methodVO.fragmentConstantsIndex;
+ fragmentData[fragmentIndex + 5] = 1 - this._pAlpha;
+ var nearPlaneDistances = this._cascadeShadowMapper._iNearPlaneDistances;
+ fragmentIndex += 8;
+ for (var i = 0; i < numCascades; ++i)
+ fragmentData[fragmentIndex + i] = nearPlaneDistances[i];
+ this._baseMethod.iActivateForCascade(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowCascadeMethod.prototype.iSetRenderState = function (shaderObject, methodVO, renderable, stage, camera) {
+ };
+ /**
+ * Called when the shadow mappers cascade configuration changes.
+ */
+ ShadowCascadeMethod.prototype.onCascadeChange = function (event) {
+ this.iInvalidateShaderProgram();
+ };
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ ShadowCascadeMethod.prototype.onShaderInvalidated = function (event) {
+ this.iInvalidateShaderProgram();
+ };
+ return ShadowCascadeMethod;
+})(ShadowMapMethodBase);
+module.exports = ShadowCascadeMethod;
+
+
+},{"awayjs-core/lib/entities/DirectionalLight":undefined,"awayjs-core/lib/events/Event":undefined,"awayjs-stagegl/lib/events/ShadingMethodEvent":undefined,"awayjs-stagegl/lib/materials/compilation/MethodVO":undefined,"awayjs-stagegl/lib/materials/methods/ShadowMapMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/ShadowDitheredMethod":[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 BitmapTexture = require("awayjs-core/lib/textures/BitmapTexture");
+var ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+/**
+ * ShadowDitheredMethod provides a soft shadowing technique by randomly distributing sample points differently for each fragment.
+ */
+var ShadowDitheredMethod = (function (_super) {
+ __extends(ShadowDitheredMethod, _super);
+ /**
+ * Creates a new ShadowDitheredMethod object.
+ * @param castingLight The light casting the shadows
+ * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 24.
+ */
+ function ShadowDitheredMethod(castingLight, numSamples, range) {
+ if (numSamples === void 0) { numSamples = 4; }
+ if (range === void 0) { range = 1; }
+ _super.call(this, castingLight);
+ this._depthMapSize = this._pCastingLight.shadowMapper.depthMapSize;
+ this.numSamples = numSamples;
+ this.range = range;
+ ++ShadowDitheredMethod._grainUsages;
+ if (!ShadowDitheredMethod._grainTexture)
+ this.initGrainTexture();
+ }
+ Object.defineProperty(ShadowDitheredMethod.prototype, "numSamples", {
+ /**
+ * The amount of samples to take for dithering. Minimum 1, maximum 24. The actual maximum may depend on the
+ * complexity of the shader.
+ */
+ get: function () {
+ return this._numSamples;
+ },
+ set: function (value /*int*/) {
+ this._numSamples = value;
+ if (this._numSamples < 1)
+ this._numSamples = 1;
+ else if (this._numSamples > 24)
+ this._numSamples = 24;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ _super.prototype.iInitVO.call(this, shaderObject, methodVO);
+ methodVO.needsProjection = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ var fragmentData = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ fragmentData[index + 8] = 1 / this._numSamples;
+ };
+ Object.defineProperty(ShadowDitheredMethod.prototype, "range", {
+ /**
+ * The range in the shadow map in which to distribute the samples.
+ */
+ get: function () {
+ return this._range * 2;
+ },
+ set: function (value) {
+ this._range = value / 2;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Creates a texture containing the dithering noise texture.
+ */
+ ShadowDitheredMethod.prototype.initGrainTexture = function () {
+ ShadowDitheredMethod._grainBitmapData = new BitmapData(64, 64, false);
+ var vec = new Array();
+ var len = 4096;
+ var step = 1 / (this._depthMapSize * this._range);
+ var r, g;
+ for (var i = 0; i < len; ++i) {
+ r = 2 * (Math.random() - .5);
+ g = 2 * (Math.random() - .5);
+ if (r < 0)
+ r -= step;
+ else
+ r += step;
+ if (g < 0)
+ g -= step;
+ else
+ g += step;
+ if (r > 1)
+ r = 1;
+ else if (r < -1)
+ r = -1;
+ if (g > 1)
+ g = 1;
+ else if (g < -1)
+ g = -1;
+ vec[i] = (Math.floor((r * .5 + .5) * 0xff) << 16) | (Math.floor((g * .5 + .5) * 0xff) << 8);
+ }
+ ShadowDitheredMethod._grainBitmapData.setVector(ShadowDitheredMethod._grainBitmapData.rect, vec);
+ ShadowDitheredMethod._grainTexture = new BitmapTexture(ShadowDitheredMethod._grainBitmapData);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype.dispose = function () {
+ if (--ShadowDitheredMethod._grainUsages == 0) {
+ ShadowDitheredMethod._grainTexture.dispose();
+ ShadowDitheredMethod._grainBitmapData.dispose();
+ ShadowDitheredMethod._grainTexture = null;
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ data[index + 9] = (stage.width - 1) / 63;
+ data[index + 10] = (stage.height - 1) / 63;
+ data[index + 11] = 2 * this._range / this._depthMapSize;
+ stage.context.activateTexture(methodVO.texturesIndex + 1, ShadowDitheredMethod._grainTexture);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype._pGetPlanarFragmentCode = function (methodVO, targetReg, regCache, sharedRegisters) {
+ var depthMapRegister = regCache.getFreeTextureReg();
+ var decReg = regCache.getFreeFragmentConstant();
+ var dataReg = regCache.getFreeFragmentConstant();
+ var customDataReg = regCache.getFreeFragmentConstant();
+ methodVO.fragmentConstantsIndex = decReg.index * 4;
+ methodVO.texturesIndex = depthMapRegister.index;
+ return this.getSampleCode(customDataReg, depthMapRegister, decReg, targetReg, regCache, sharedRegisters);
+ };
+ /**
+ * Get the actual shader code for shadow mapping
+ * @param regCache The register cache managing the registers.
+ * @param depthMapRegister The texture register containing the depth map.
+ * @param decReg The register containing the depth map decoding data.
+ * @param targetReg The target register to add the shadow coverage.
+ */
+ ShadowDitheredMethod.prototype.getSampleCode = function (customDataReg, depthMapRegister, decReg, targetReg, regCache, sharedRegisters) {
+ var code = "";
+ var grainRegister = regCache.getFreeTextureReg();
+ var uvReg = regCache.getFreeFragmentVectorTemp();
+ var numSamples = this._numSamples;
+ regCache.addFragmentTempUsages(uvReg, 1);
+ var temp = regCache.getFreeFragmentVectorTemp();
+ var projectionReg = sharedRegisters.projectionFragment;
+ code += "div " + uvReg + ", " + projectionReg + ", " + projectionReg + ".w\n" + "mul " + uvReg + ".xy, " + uvReg + ".xy, " + customDataReg + ".yz\n";
+ while (numSamples > 0) {
+ if (numSamples == this._numSamples)
+ code += "tex " + uvReg + ", " + uvReg + ", " + grainRegister + " <2d,nearest,repeat,mipnone>\n";
+ else
+ code += "tex " + uvReg + ", " + uvReg + ".zwxy, " + grainRegister + " <2d,nearest,repeat,mipnone>\n";
+ // keep grain in uvReg.zw
+ code += "sub " + uvReg + ".zw, " + uvReg + ".xy, fc0.xx\n" + "mul " + uvReg + ".zw, " + uvReg + ".zw, " + customDataReg + ".w\n"; // (tex unpack scale and tex scale in one)
+ if (numSamples == this._numSamples) {
+ // first sample
+ code += "add " + uvReg + ".xy, " + uvReg + ".zw, " + this._pDepthMapCoordReg + ".xy\n" + "tex " + temp + ", " + uvReg + ", " + depthMapRegister + " <2d,nearest,clamp,mipnone>\n" + "dp4 " + temp + ".z, " + temp + ", " + decReg + "\n" + "slt " + targetReg + ".w, " + this._pDepthMapCoordReg + ".z, " + temp + ".z\n"; // 0 if in shadow
+ }
+ else {
+ code += this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ }
+ if (numSamples > 4)
+ code += "add " + uvReg + ".xy, " + uvReg + ".xy, " + uvReg + ".zw\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ if (numSamples > 1)
+ code += "sub " + uvReg + ".xy, " + this._pDepthMapCoordReg + ".xy, " + uvReg + ".zw\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ if (numSamples > 5)
+ code += "sub " + uvReg + ".xy, " + uvReg + ".xy, " + uvReg + ".zw\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ if (numSamples > 2) {
+ code += "neg " + uvReg + ".w, " + uvReg + ".w\n"; // will be rotated 90 degrees when being accessed as wz
+ code += "add " + uvReg + ".xy, " + uvReg + ".wz, " + this._pDepthMapCoordReg + ".xy\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ }
+ if (numSamples > 6)
+ code += "add " + uvReg + ".xy, " + uvReg + ".xy, " + uvReg + ".wz\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ if (numSamples > 3)
+ code += "sub " + uvReg + ".xy, " + this._pDepthMapCoordReg + ".xy, " + uvReg + ".wz\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ if (numSamples > 7)
+ code += "sub " + uvReg + ".xy, " + uvReg + ".xy, " + uvReg + ".wz\n" + this.addSample(uvReg, depthMapRegister, decReg, targetReg, regCache);
+ numSamples -= 8;
+ }
+ regCache.removeFragmentTempUsage(uvReg);
+ code += "mul " + targetReg + ".w, " + targetReg + ".w, " + customDataReg + ".x\n"; // average
+ return code;
+ };
+ /**
+ * Adds the code for another tap to the shader code.
+ * @param uvReg The uv register for the tap.
+ * @param depthMapRegister The texture register containing the depth map.
+ * @param decReg The register containing the depth map decoding data.
+ * @param targetReg The target register to add the tap comparison result.
+ * @param regCache The register cache managing the registers.
+ * @return
+ */
+ ShadowDitheredMethod.prototype.addSample = function (uvReg, depthMapRegister, decReg, targetReg, regCache) {
+ var temp = regCache.getFreeFragmentVectorTemp();
+ return "tex " + temp + ", " + uvReg + ", " + depthMapRegister + " <2d,nearest,clamp,mipnone>\n" + "dp4 " + temp + ".z, " + temp + ", " + decReg + "\n" + "slt " + temp + ".z, " + this._pDepthMapCoordReg + ".z, " + temp + ".z\n" + "add " + targetReg + ".w, " + targetReg + ".w, " + temp + ".z\n";
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype.iActivateForCascade = function (shaderObject, methodVO, stage) {
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ data[index] = 1 / this._numSamples;
+ data[index + 1] = (stage.width - 1) / 63;
+ data[index + 2] = (stage.height - 1) / 63;
+ data[index + 3] = 2 * this._range / this._depthMapSize;
+ stage.context.activateTexture(methodVO.texturesIndex + 1, ShadowDitheredMethod._grainTexture);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowDitheredMethod.prototype._iGetCascadeFragmentCode = function (shaderObject, methodVO, decodeRegister, depthTexture, depthProjection, targetRegister, registerCache, sharedRegisters) {
+ this._pDepthMapCoordReg = depthProjection;
+ var dataReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = dataReg.index * 4;
+ return this.getSampleCode(dataReg, depthTexture, decodeRegister, targetRegister, registerCache, sharedRegisters);
+ };
+ return ShadowDitheredMethod;
+})(ShadowMethodBase);
+module.exports = ShadowDitheredMethod;
+
+
+},{"awayjs-core/lib/core/base/BitmapData":undefined,"awayjs-core/lib/textures/BitmapTexture":undefined,"awayjs-stagegl/lib/materials/methods/ShadowMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/ShadowFilteredMethod":[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 ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+/**
+ * ShadowFilteredMethod provides a softened shadowing technique by bilinearly interpolating shadow comparison
+ * results of neighbouring pixels.
+ */
+var ShadowFilteredMethod = (function (_super) {
+ __extends(ShadowFilteredMethod, _super);
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ *
+ * @param castingLight The light casting the shadow
+ */
+ function ShadowFilteredMethod(castingLight) {
+ _super.call(this, castingLight);
+ }
+ /**
+ * @inheritDoc
+ */
+ ShadowFilteredMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ var fragmentData = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex;
+ fragmentData[index + 8] = .5;
+ var size = this.castingLight.shadowMapper.depthMapSize;
+ fragmentData[index + 9] = size;
+ fragmentData[index + 10] = 1 / size;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowFilteredMethod.prototype._pGetPlanarFragmentCode = function (methodVO, targetReg, regCache, sharedRegisters) {
+ var depthMapRegister = regCache.getFreeTextureReg();
+ var decReg = regCache.getFreeFragmentConstant();
+ var dataReg = regCache.getFreeFragmentConstant();
+ // TODO: not used
+ dataReg = dataReg;
+ var customDataReg = regCache.getFreeFragmentConstant();
+ var depthCol = regCache.getFreeFragmentVectorTemp();
+ var uvReg;
+ var code = "";
+ methodVO.fragmentConstantsIndex = decReg.index * 4;
+ regCache.addFragmentTempUsages(depthCol, 1);
+ uvReg = regCache.getFreeFragmentVectorTemp();
+ regCache.addFragmentTempUsages(uvReg, 1);
+ code += "mov " + uvReg + ", " + this._pDepthMapCoordReg + "\n" + "tex " + depthCol + ", " + this._pDepthMapCoordReg + ", " + depthMapRegister + " <2d, nearest, clamp>\n" + "dp4 " + depthCol + ".z, " + depthCol + ", " + decReg + "\n" + "slt " + uvReg + ".z, " + this._pDepthMapCoordReg + ".z, " + depthCol + ".z\n" + "add " + uvReg + ".x, " + this._pDepthMapCoordReg + ".x, " + customDataReg + ".z\n" + "tex " + depthCol + ", " + uvReg + ", " + depthMapRegister + " <2d, nearest, clamp>\n" + "dp4 " + depthCol + ".z, " + depthCol + ", " + decReg + "\n" + "slt " + uvReg + ".w, " + this._pDepthMapCoordReg + ".z, " + depthCol + ".z\n" + "mul " + depthCol + ".x, " + this._pDepthMapCoordReg + ".x, " + customDataReg + ".y\n" + "frc " + depthCol + ".x, " + depthCol + ".x\n" + "sub " + uvReg + ".w, " + uvReg + ".w, " + uvReg + ".z\n" + "mul " + uvReg + ".w, " + uvReg + ".w, " + depthCol + ".x\n" + "add " + targetReg + ".w, " + uvReg + ".z, " + uvReg + ".w\n" + "mov " + uvReg + ".x, " + this._pDepthMapCoordReg + ".x\n" + "add " + uvReg + ".y, " + this._pDepthMapCoordReg + ".y, " + customDataReg + ".z\n" + "tex " + depthCol + ", " + uvReg + ", " + depthMapRegister + " <2d, nearest, clamp>\n" + "dp4 " + depthCol + ".z, " + depthCol + ", " + decReg + "\n" + "slt " + uvReg + ".z, " + this._pDepthMapCoordReg + ".z, " + depthCol + ".z\n" + "add " + uvReg + ".x, " + this._pDepthMapCoordReg + ".x, " + customDataReg + ".z\n" + "tex " + depthCol + ", " + uvReg + ", " + depthMapRegister + " <2d, nearest, clamp>\n" + "dp4 " + depthCol + ".z, " + depthCol + ", " + decReg + "\n" + "slt " + uvReg + ".w, " + this._pDepthMapCoordReg + ".z, " + depthCol + ".z\n" + "mul " + depthCol + ".x, " + this._pDepthMapCoordReg + ".x, " + customDataReg + ".y\n" + "frc " + depthCol + ".x, " + depthCol + ".x\n" + "sub " + uvReg + ".w, " + uvReg + ".w, " + uvReg + ".z\n" + "mul " + uvReg + ".w, " + uvReg + ".w, " + depthCol + ".x\n" + "add " + uvReg + ".w, " + uvReg + ".z, " + uvReg + ".w\n" + "mul " + depthCol + ".x, " + this._pDepthMapCoordReg + ".y, " + customDataReg + ".y\n" + "frc " + depthCol + ".x, " + depthCol + ".x\n" + "sub " + uvReg + ".w, " + uvReg + ".w, " + targetReg + ".w\n" + "mul " + uvReg + ".w, " + uvReg + ".w, " + depthCol + ".x\n" + "add " + targetReg + ".w, " + targetReg + ".w, " + uvReg + ".w\n";
+ regCache.removeFragmentTempUsage(depthCol);
+ regCache.removeFragmentTempUsage(uvReg);
+ methodVO.texturesIndex = depthMapRegister.index;
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowFilteredMethod.prototype.iActivateForCascade = function (shaderObject, methodVO, stage) {
+ var size = this.castingLight.shadowMapper.depthMapSize;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = size;
+ data[index + 1] = 1 / size;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowFilteredMethod.prototype._iGetCascadeFragmentCode = function (shaderObject, methodVO, decodeRegister, depthTexture, depthProjection, targetRegister, registerCache, sharedRegisters) {
+ var code;
+ var dataReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = dataReg.index * 4;
+ var temp = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(temp, 1);
+ var predicate = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(predicate, 1);
+ code = "tex " + temp + ", " + depthProjection + ", " + depthTexture + " <2d, nearest, clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decodeRegister + "\n" + "slt " + predicate + ".x, " + depthProjection + ".z, " + temp + ".z\n" + "add " + depthProjection + ".x, " + depthProjection + ".x, " + dataReg + ".y\n" + "tex " + temp + ", " + depthProjection + ", " + depthTexture + " <2d, nearest, clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decodeRegister + "\n" + "slt " + predicate + ".z, " + depthProjection + ".z, " + temp + ".z\n" + "add " + depthProjection + ".y, " + depthProjection + ".y, " + dataReg + ".y\n" + "tex " + temp + ", " + depthProjection + ", " + depthTexture + " <2d, nearest, clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decodeRegister + "\n" + "slt " + predicate + ".w, " + depthProjection + ".z, " + temp + ".z\n" + "sub " + depthProjection + ".x, " + depthProjection + ".x, " + dataReg + ".y\n" + "tex " + temp + ", " + depthProjection + ", " + depthTexture + " <2d, nearest, clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decodeRegister + "\n" + "slt " + predicate + ".y, " + depthProjection + ".z, " + temp + ".z\n" + "mul " + temp + ".xy, " + depthProjection + ".xy, " + dataReg + ".x\n" + "frc " + temp + ".xy, " + temp + ".xy\n" + "sub " + depthProjection + ", " + predicate + ".xyzw, " + predicate + ".zwxy\n" + "mul " + depthProjection + ", " + depthProjection + ", " + temp + ".x\n" + "add " + predicate + ".xy, " + predicate + ".xy, " + depthProjection + ".zw\n" + "sub " + predicate + ".y, " + predicate + ".y, " + predicate + ".x\n" + "mul " + predicate + ".y, " + predicate + ".y, " + temp + ".y\n" + "add " + targetRegister + ".w, " + predicate + ".x, " + predicate + ".y\n";
+ registerCache.removeFragmentTempUsage(temp);
+ registerCache.removeFragmentTempUsage(predicate);
+ return code;
+ };
+ return ShadowFilteredMethod;
+})(ShadowMethodBase);
+module.exports = ShadowFilteredMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/ShadowMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/ShadowNearMethod":[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 ShadingMethodEvent = require("awayjs-stagegl/lib/events/ShadingMethodEvent");
+var ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+// TODO: shadow mappers references in materials should be an interface so that this class should NOT extend ShadowMapMethodBase just for some delegation work
+/**
+ * ShadowNearMethod provides a shadow map method that restricts the shadowed area near the camera to optimize
+ * shadow map usage. This method needs to be used in conjunction with a NearDirectionalShadowMapper.
+ *
+ * @see away.lights.NearDirectionalShadowMapper
+ */
+var ShadowNearMethod = (function (_super) {
+ __extends(ShadowNearMethod, _super);
+ /**
+ * Creates a new ShadowNearMethod object.
+ * @param baseMethod The shadow map sampling method used to sample individual cascades (fe: ShadowHardMethod, ShadowSoftMethod)
+ * @param fadeRatio The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.
+ */
+ function ShadowNearMethod(baseMethod, fadeRatio) {
+ var _this = this;
+ if (fadeRatio === void 0) { fadeRatio = .1; }
+ _super.call(this, baseMethod.castingLight);
+ this._onShaderInvalidatedDelegate = function (event) { return _this.onShaderInvalidated(event); };
+ this._baseMethod = baseMethod;
+ this._fadeRatio = fadeRatio;
+ this._nearShadowMapper = this._pCastingLight.shadowMapper;
+ if (!this._nearShadowMapper)
+ throw new Error("ShadowNearMethod requires a light that has a NearDirectionalShadowMapper instance assigned to shadowMapper.");
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ }
+ Object.defineProperty(ShadowNearMethod.prototype, "baseMethod", {
+ /**
+ * The base shadow map method on which this method's shading is based.
+ */
+ get: function () {
+ return this._baseMethod;
+ },
+ set: function (value) {
+ if (this._baseMethod == value)
+ return;
+ this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this._baseMethod = value;
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ this._baseMethod.iInitConstants(shaderObject, methodVO);
+ var fragmentData = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ fragmentData[index + 2] = 0;
+ fragmentData[index + 3] = 1;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ this._baseMethod.iInitVO(shaderObject, methodVO);
+ methodVO.needsProjection = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.dispose = function () {
+ this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ };
+ Object.defineProperty(ShadowNearMethod.prototype, "alpha", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.alpha;
+ },
+ set: function (value) {
+ this._baseMethod.alpha = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ShadowNearMethod.prototype, "epsilon", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.epsilon;
+ },
+ set: function (value) {
+ this._baseMethod.epsilon = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ShadowNearMethod.prototype, "fadeRatio", {
+ /**
+ * The amount of shadow fading to the outer shadow area. A value of 1 would mean the shadows start fading from the camera's near plane.
+ */
+ get: function () {
+ return this._fadeRatio;
+ },
+ set: function (value) {
+ this._fadeRatio = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iGetFragmentCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code = this._baseMethod.iGetFragmentCode(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ var dataReg = registerCache.getFreeFragmentConstant();
+ var temp = registerCache.getFreeFragmentSingleTemp();
+ methodVO.secondaryFragmentConstantsIndex = dataReg.index * 4;
+ code += "abs " + temp + ", " + sharedRegisters.projectionFragment + ".w\n" + "sub " + temp + ", " + temp + ", " + dataReg + ".x\n" + "mul " + temp + ", " + temp + ", " + dataReg + ".y\n" + "sat " + temp + ", " + temp + "\n" + "sub " + temp + ", " + dataReg + ".w," + temp + "\n" + "sub " + targetReg + ".w, " + dataReg + ".w," + targetReg + ".w\n" + "mul " + targetReg + ".w, " + targetReg + ".w, " + temp + "\n" + "sub " + targetReg + ".w, " + dataReg + ".w," + targetReg + ".w\n";
+ return code;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ this._baseMethod.iActivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iDeactivate = function (shaderObject, methodVO, stage) {
+ this._baseMethod.iDeactivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iSetRenderState = function (shaderObject, methodVO, renderable, stage, camera) {
+ // todo: move this to activate (needs camera)
+ var near = camera.projection.near;
+ var d = camera.projection.far - near;
+ var maxDistance = this._nearShadowMapper.coverageRatio;
+ var minDistance = maxDistance * (1 - this._fadeRatio);
+ maxDistance = near + maxDistance * d;
+ minDistance = near + minDistance * d;
+ var fragmentData = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ fragmentData[index] = minDistance;
+ fragmentData[index + 1] = 1 / (maxDistance - minDistance);
+ this._baseMethod.iSetRenderState(shaderObject, methodVO, renderable, stage, camera);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iGetVertexCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetVertexCode(shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iReset = function () {
+ this._baseMethod.iReset();
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowNearMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._baseMethod.iCleanCompilationData();
+ };
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ ShadowNearMethod.prototype.onShaderInvalidated = function (event) {
+ this.iInvalidateShaderProgram();
+ };
+ return ShadowNearMethod;
+})(ShadowMethodBase);
+module.exports = ShadowNearMethod;
+
+
+},{"awayjs-stagegl/lib/events/ShadingMethodEvent":undefined,"awayjs-stagegl/lib/materials/methods/ShadowMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/ShadowSoftMethod":[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 PoissonLookup = require("awayjs-core/lib/core/geom/PoissonLookup");
+var ShadowMethodBase = require("awayjs-stagegl/lib/materials/methods/ShadowMethodBase");
+/**
+ * ShadowSoftMethod provides a soft shadowing technique by randomly distributing sample points.
+ */
+var ShadowSoftMethod = (function (_super) {
+ __extends(ShadowSoftMethod, _super);
+ /**
+ * Creates a new DiffuseBasicMethod object.
+ *
+ * @param castingLight The light casting the shadows
+ * @param numSamples The amount of samples to take for dithering. Minimum 1, maximum 32.
+ */
+ function ShadowSoftMethod(castingLight, numSamples, range) {
+ if (numSamples === void 0) { numSamples = 5; }
+ if (range === void 0) { range = 1; }
+ _super.call(this, castingLight);
+ this._range = 1;
+ this.numSamples = numSamples;
+ this.range = range;
+ }
+ Object.defineProperty(ShadowSoftMethod.prototype, "numSamples", {
+ /**
+ * The amount of samples to take for dithering. Minimum 1, maximum 32. The actual maximum may depend on the
+ * complexity of the shader.
+ */
+ get: function () {
+ return this._numSamples;
+ },
+ set: function (value /*int*/) {
+ this._numSamples = value;
+ if (this._numSamples < 1)
+ this._numSamples = 1;
+ else if (this._numSamples > 32)
+ this._numSamples = 32;
+ this._offsets = PoissonLookup.getDistribution(this._numSamples);
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ShadowSoftMethod.prototype, "range", {
+ /**
+ * The range in the shadow map in which to distribute the samples.
+ */
+ get: function () {
+ return this._range;
+ },
+ set: function (value) {
+ this._range = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ ShadowSoftMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ _super.prototype.iInitConstants.call(this, shaderObject, methodVO);
+ shaderObject.fragmentConstantData[methodVO.fragmentConstantsIndex + 8] = 1 / this._numSamples;
+ shaderObject.fragmentConstantData[methodVO.fragmentConstantsIndex + 9] = 0;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowSoftMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var texRange = .5 * this._range / this._pCastingLight.shadowMapper.depthMapSize;
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.fragmentConstantsIndex + 10;
+ var len = this._numSamples << 1;
+ for (var i = 0; i < len; ++i)
+ data[index + i] = this._offsets[i] * texRange;
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowSoftMethod.prototype._pGetPlanarFragmentCode = function (methodVO, targetReg, regCache, sharedRegisters) {
+ // todo: move some things to super
+ var depthMapRegister = regCache.getFreeTextureReg();
+ var decReg = regCache.getFreeFragmentConstant();
+ var dataReg = regCache.getFreeFragmentConstant();
+ var customDataReg = regCache.getFreeFragmentConstant();
+ methodVO.fragmentConstantsIndex = decReg.index * 4;
+ methodVO.texturesIndex = depthMapRegister.index;
+ return this.getSampleCode(regCache, depthMapRegister, decReg, targetReg, customDataReg);
+ };
+ /**
+ * Adds the code for another tap to the shader code.
+ * @param uv The uv register for the tap.
+ * @param texture The texture register containing the depth map.
+ * @param decode The register containing the depth map decoding data.
+ * @param target The target register to add the tap comparison result.
+ * @param regCache The register cache managing the registers.
+ * @return
+ */
+ ShadowSoftMethod.prototype.addSample = function (uv, texture, decode, target, regCache) {
+ var temp = regCache.getFreeFragmentVectorTemp();
+ return "tex " + temp + ", " + uv + ", " + texture + " <2d,nearest,clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decode + "\n" + "slt " + uv + ".w, " + this._pDepthMapCoordReg + ".z, " + temp + ".z\n" + "add " + target + ".w, " + target + ".w, " + uv + ".w\n";
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowSoftMethod.prototype.iActivateForCascade = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var texRange = this._range / this._pCastingLight.shadowMapper.depthMapSize;
+ var data = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ var len = this._numSamples << 1;
+ data[index] = 1 / this._numSamples;
+ data[index + 1] = 0;
+ index += 2;
+ for (var i = 0; i < len; ++i)
+ data[index + i] = this._offsets[i] * texRange;
+ if (len % 4 == 0) {
+ data[index + len] = 0;
+ data[index + len + 1] = 0;
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ ShadowSoftMethod.prototype._iGetCascadeFragmentCode = function (shaderObject, methodVO, decodeRegister, depthTexture, depthProjection, targetRegister, registerCache, sharedRegisters) {
+ this._pDepthMapCoordReg = depthProjection;
+ var dataReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = dataReg.index * 4;
+ return this.getSampleCode(registerCache, depthTexture, decodeRegister, targetRegister, dataReg);
+ };
+ /**
+ * Get the actual shader code for shadow mapping
+ * @param regCache The register cache managing the registers.
+ * @param depthTexture The texture register containing the depth map.
+ * @param decodeRegister The register containing the depth map decoding data.
+ * @param targetReg The target register to add the shadow coverage.
+ * @param dataReg The register containing additional data.
+ */
+ ShadowSoftMethod.prototype.getSampleCode = function (regCache, depthTexture, decodeRegister, targetRegister, dataReg) {
+ var uvReg;
+ var code;
+ var offsets = new Array(dataReg + ".zw");
+ uvReg = regCache.getFreeFragmentVectorTemp();
+ regCache.addFragmentTempUsages(uvReg, 1);
+ var temp = regCache.getFreeFragmentVectorTemp();
+ var numRegs = this._numSamples >> 1;
+ for (var i = 0; i < numRegs; ++i) {
+ var reg = regCache.getFreeFragmentConstant();
+ offsets.push(reg + ".xy");
+ offsets.push(reg + ".zw");
+ }
+ for (i = 0; i < this._numSamples; ++i) {
+ if (i == 0) {
+ code = "add " + uvReg + ", " + this._pDepthMapCoordReg + ", " + dataReg + ".zwyy\n" + "tex " + temp + ", " + uvReg + ", " + depthTexture + " <2d,nearest,clamp>\n" + "dp4 " + temp + ".z, " + temp + ", " + decodeRegister + "\n" + "slt " + targetRegister + ".w, " + this._pDepthMapCoordReg + ".z, " + temp + ".z\n"; // 0 if in shadow;
+ }
+ else {
+ code += "add " + uvReg + ".xy, " + this._pDepthMapCoordReg + ".xy, " + offsets[i] + "\n" + this.addSample(uvReg, depthTexture, decodeRegister, targetRegister, regCache);
+ }
+ }
+ regCache.removeFragmentTempUsage(uvReg);
+ code += "mul " + targetRegister + ".w, " + targetRegister + ".w, " + dataReg + ".x\n"; // average
+ return code;
+ };
+ return ShadowSoftMethod;
+})(ShadowMethodBase);
+module.exports = ShadowSoftMethod;
+
+
+},{"awayjs-core/lib/core/geom/PoissonLookup":undefined,"awayjs-stagegl/lib/materials/methods/ShadowMethodBase":undefined}],"awayjs-renderergl/lib/materials/methods/SpecularAnisotropicMethod":[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 SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+/**
+ * SpecularAnisotropicMethod provides a specular method resulting in anisotropic highlights. These are typical for
+ * surfaces with microfacet details such as tiny grooves. In particular, this uses the Heidrich-Seidel distrubution.
+ * The tangent vectors are used as the surface groove directions.
+ */
+var SpecularAnisotropicMethod = (function (_super) {
+ __extends(SpecularAnisotropicMethod, _super);
+ /**
+ * Creates a new SpecularAnisotropicMethod object.
+ */
+ function SpecularAnisotropicMethod() {
+ _super.call(this);
+ }
+ /**
+ * @inheritDoc
+ */
+ SpecularAnisotropicMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ methodVO.needsTangents = true;
+ methodVO.needsView = true;
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularAnisotropicMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ var code = "";
+ var t;
+ if (this._pIsFirstLight)
+ t = this._pTotalLightColorReg;
+ else {
+ t = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(t, 1);
+ }
+ // (sin(l,t) * sin(v,t) - cos(l,t)*cos(v,t)) ^ k
+ code += "nrm " + t + ".xyz, " + sharedRegisters.tangentVarying + ".xyz\n" + "dp3 " + t + ".w, " + t + ".xyz, " + lightDirReg + ".xyz\n" + "dp3 " + t + ".z, " + t + ".xyz, " + sharedRegisters.viewDirFragment + ".xyz\n";
+ // (sin(t.w) * sin(t.z) - cos(t.w)*cos(t.z)) ^ k
+ code += "sin " + t + ".x, " + t + ".w\n" + "sin " + t + ".y, " + t + ".z\n" + "mul " + t + ".x, " + t + ".x, " + t + ".y\n" + "cos " + t + ".z, " + t + ".z\n" + "cos " + t + ".w, " + t + ".w\n" + "mul " + t + ".w, " + t + ".w, " + t + ".z\n" + "sub " + t + ".w, " + t + ".x, " + t + ".w\n";
+ if (this._pUseTexture) {
+ // apply gloss modulation from texture
+ code += "mul " + this._pSpecularTexData + ".w, " + this._pSpecularTexData + ".y, " + this._pSpecularDataRegister + ".w\n" + "pow " + t + ".w, " + t + ".w, " + this._pSpecularTexData + ".w\n";
+ }
+ else
+ code += "pow " + t + ".w, " + t + ".w, " + this._pSpecularDataRegister + ".w\n";
+ // attenuate
+ code += "mul " + t + ".w, " + t + ".w, " + lightDirReg + ".w\n";
+ if (this._iModulateMethod != null)
+ code += this._iModulateMethod(shaderObject, methodVO, t, registerCache, sharedRegisters);
+ code += "mul " + t + ".xyz, " + lightColReg + ".xyz, " + t + ".w\n";
+ if (!this._pIsFirstLight) {
+ code += "add " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + t + ".xyz\n";
+ registerCache.removeFragmentTempUsage(t);
+ }
+ this._pIsFirstLight = false;
+ return code;
+ };
+ return SpecularAnisotropicMethod;
+})(SpecularBasicMethod);
+module.exports = SpecularAnisotropicMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/SpecularBasicMethod":undefined}],"awayjs-renderergl/lib/materials/methods/SpecularCelMethod":[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 SpecularCompositeMethod = require("awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod");
+/**
+ * SpecularCelMethod provides a shading method to add specular cel (cartoon) shading.
+ */
+var SpecularCelMethod = (function (_super) {
+ __extends(SpecularCelMethod, _super);
+ /**
+ * Creates a new SpecularCelMethod object.
+ * @param specularCutOff The threshold at which the specular highlight should be shown.
+ * @param baseMethod An optional specular method on which the cartoon shading is based. If ommitted, SpecularBasicMethod is used.
+ */
+ function SpecularCelMethod(specularCutOff, baseMethod) {
+ var _this = this;
+ if (specularCutOff === void 0) { specularCutOff = .5; }
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this, null, baseMethod);
+ this._smoothness = .1;
+ this._specularCutOff = .1;
+ this.baseMethod._iModulateMethod = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) { return _this.clampSpecular(shaderObject, methodVO, targetReg, registerCache, sharedRegisters); };
+ this._specularCutOff = specularCutOff;
+ }
+ Object.defineProperty(SpecularCelMethod.prototype, "smoothness", {
+ /**
+ * The smoothness of the highlight edge.
+ */
+ get: function () {
+ return this._smoothness;
+ },
+ set: function (value) {
+ this._smoothness = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SpecularCelMethod.prototype, "specularCutOff", {
+ /**
+ * The threshold at which the specular highlight should be shown.
+ */
+ get: function () {
+ return this._specularCutOff;
+ },
+ set: function (value) {
+ this._specularCutOff = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SpecularCelMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ var data = shaderObject.fragmentConstantData;
+ data[index] = this._smoothness;
+ data[index + 1] = this._specularCutOff;
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCelMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._dataReg = null;
+ };
+ /**
+ * Snaps the specular shading strength of the wrapped method to zero or one, depending on whether or not it exceeds the specularCutOff
+ * @param vo The MethodVO used to compile the current shader.
+ * @param t The register containing the specular strength in the "w" component, and either the half-vector or the reflection vector in "xyz".
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared register data for this shader.
+ * @return The AGAL fragment code for the method.
+ */
+ SpecularCelMethod.prototype.clampSpecular = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ return "sub " + targetReg + ".y, " + targetReg + ".w, " + this._dataReg + ".y\n" + "div " + targetReg + ".y, " + targetReg + ".y, " + this._dataReg + ".x\n" + "sat " + targetReg + ".y, " + targetReg + ".y\n" + "sge " + targetReg + ".w, " + targetReg + ".w, " + this._dataReg + ".y\n" + "mul " + targetReg + ".w, " + targetReg + ".w, " + targetReg + ".y\n";
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCelMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ this._dataReg = registerCache.getFreeFragmentConstant();
+ methodVO.secondaryFragmentConstantsIndex = this._dataReg.index * 4;
+ return _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ return SpecularCelMethod;
+})(SpecularCompositeMethod);
+module.exports = SpecularCelMethod;
+
+
+},{"awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod":undefined}],"awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod":[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 ShadingMethodEvent = require("awayjs-stagegl/lib/events/ShadingMethodEvent");
+var SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+/**
+ * SpecularCompositeMethod provides a base class for specular methods that wrap a specular method to alter the
+ * calculated specular reflection strength.
+ */
+var SpecularCompositeMethod = (function (_super) {
+ __extends(SpecularCompositeMethod, _super);
+ /**
+ * Creates a new SpecularCompositeMethod
object.
+ *
+ * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature modSpecular(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the specular strength and t.xyz will contain the half-vector or the reflection vector.
+ * @param baseMethod The base specular method on which this method's shading is based.
+ */
+ function SpecularCompositeMethod(modulateMethod, baseMethod) {
+ var _this = this;
+ if (baseMethod === void 0) { baseMethod = null; }
+ _super.call(this);
+ this._onShaderInvalidatedDelegate = function (event) { return _this.onShaderInvalidated(event); };
+ this._baseMethod = baseMethod || new SpecularBasicMethod();
+ this._baseMethod._iModulateMethod = modulateMethod;
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ }
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iInitVO = function (shaderObject, methodVO) {
+ this._baseMethod.iInitVO(shaderObject, methodVO);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ this._baseMethod.iInitConstants(shaderObject, methodVO);
+ };
+ Object.defineProperty(SpecularCompositeMethod.prototype, "baseMethod", {
+ /**
+ * The base specular method on which this method's shading is based.
+ */
+ get: function () {
+ return this._baseMethod;
+ },
+ set: function (value) {
+ if (this._baseMethod == value)
+ return;
+ this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this._baseMethod = value;
+ this._baseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SpecularCompositeMethod.prototype, "gloss", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.gloss;
+ },
+ set: function (value) {
+ this._baseMethod.gloss = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SpecularCompositeMethod.prototype, "specular", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.specular;
+ },
+ set: function (value) {
+ this._baseMethod.specular = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SpecularCompositeMethod.prototype, "passes", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.passes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.dispose = function () {
+ this._baseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);
+ this._baseMethod.dispose();
+ };
+ Object.defineProperty(SpecularCompositeMethod.prototype, "texture", {
+ /**
+ * @inheritDoc
+ */
+ get: function () {
+ return this._baseMethod.texture;
+ },
+ set: function (value) {
+ this._baseMethod.texture = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ this._baseMethod.iActivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iSetRenderState = function (shaderObject, methodVO, renderable, stage, camera) {
+ this._baseMethod.iSetRenderState(shaderObject, methodVO, renderable, stage, camera);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iDeactivate = function (shaderObject, methodVO, stage) {
+ this._baseMethod.iDeactivate(shaderObject, methodVO, stage);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iGetVertexCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetVertexCode(shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetFragmentPreLightingCode(shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetFragmentCodePerLight(shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ * @return
+ */
+ SpecularCompositeMethod.prototype.iGetFragmentCodePerProbe = function (shaderObject, methodVO, cubeMapReg, weightRegister, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetFragmentCodePerProbe(shaderObject, methodVO, cubeMapReg, weightRegister, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iGetFragmentPostLightingCode = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ return this._baseMethod.iGetFragmentPostLightingCode(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iReset = function () {
+ this._baseMethod.iReset();
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularCompositeMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._baseMethod.iCleanCompilationData();
+ };
+ /**
+ * Called when the base method's shader code is invalidated.
+ */
+ SpecularCompositeMethod.prototype.onShaderInvalidated = function (event) {
+ this.iInvalidateShaderProgram();
+ };
+ return SpecularCompositeMethod;
+})(SpecularBasicMethod);
+module.exports = SpecularCompositeMethod;
+
+
+},{"awayjs-stagegl/lib/events/ShadingMethodEvent":undefined,"awayjs-stagegl/lib/materials/methods/SpecularBasicMethod":undefined}],"awayjs-renderergl/lib/materials/methods/SpecularFresnelMethod":[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 SpecularCompositeMethod = require("awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod");
+/**
+ * SpecularFresnelMethod provides a specular shading method that causes stronger highlights on grazing view angles.
+ */
+var SpecularFresnelMethod = (function (_super) {
+ __extends(SpecularFresnelMethod, _super);
+ /**
+ * Creates a new SpecularFresnelMethod object.
+ * @param basedOnSurface Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.
+ * @param baseMethod The specular method to which the fresnel equation. Defaults to SpecularBasicMethod.
+ */
+ function SpecularFresnelMethod(basedOnSurface, baseMethod) {
+ var _this = this;
+ if (basedOnSurface === void 0) { basedOnSurface = true; }
+ if (baseMethod === void 0) { baseMethod = null; }
+ // may want to offer diff speculars
+ _super.call(this, null, baseMethod);
+ this._fresnelPower = 5;
+ this._normalReflectance = .028; // default value for skin
+ this.baseMethod._iModulateMethod = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) { return _this.modulateSpecular(shaderObject, methodVO, targetReg, registerCache, sharedRegisters); };
+ this._incidentLight = !basedOnSurface;
+ }
+ /**
+ * @inheritDoc
+ */
+ SpecularFresnelMethod.prototype.iInitConstants = function (shaderObject, methodVO) {
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ shaderObject.fragmentConstantData[index + 2] = 1;
+ shaderObject.fragmentConstantData[index + 3] = 0;
+ };
+ Object.defineProperty(SpecularFresnelMethod.prototype, "basedOnSurface", {
+ /**
+ * Defines whether the fresnel effect should be based on the view angle on the surface (if true), or on the angle between the light and the view.
+ */
+ get: function () {
+ return !this._incidentLight;
+ },
+ set: function (value) {
+ if (this._incidentLight != value)
+ return;
+ this._incidentLight = !value;
+ this.iInvalidateShaderProgram();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(SpecularFresnelMethod.prototype, "fresnelPower", {
+ /**
+ * The power used in the Fresnel equation. Higher values make the fresnel effect more pronounced. Defaults to 5.
+ */
+ get: function () {
+ return this._fresnelPower;
+ },
+ set: function (value) {
+ this._fresnelPower = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SpecularFresnelMethod.prototype.iCleanCompilationData = function () {
+ _super.prototype.iCleanCompilationData.call(this);
+ this._dataReg = null;
+ };
+ Object.defineProperty(SpecularFresnelMethod.prototype, "normalReflectance", {
+ /**
+ * The minimum amount of reflectance, ie the reflectance when the view direction is normal to the surface or light direction.
+ */
+ get: function () {
+ return this._normalReflectance;
+ },
+ set: function (value) {
+ this._normalReflectance = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * @inheritDoc
+ */
+ SpecularFresnelMethod.prototype.iActivate = function (shaderObject, methodVO, stage) {
+ _super.prototype.iActivate.call(this, shaderObject, methodVO, stage);
+ var fragmentData = shaderObject.fragmentConstantData;
+ var index = methodVO.secondaryFragmentConstantsIndex;
+ fragmentData[index] = this._normalReflectance;
+ fragmentData[index + 1] = this._fresnelPower;
+ };
+ /**
+ * @inheritDoc
+ */
+ SpecularFresnelMethod.prototype.iGetFragmentPreLightingCode = function (shaderObject, methodVO, registerCache, sharedRegisters) {
+ this._dataReg = registerCache.getFreeFragmentConstant();
+ console.log('SpecularFresnelMethod', 'iGetFragmentPreLightingCode', this._dataReg);
+ methodVO.secondaryFragmentConstantsIndex = this._dataReg.index * 4;
+ return _super.prototype.iGetFragmentPreLightingCode.call(this, shaderObject, methodVO, registerCache, sharedRegisters);
+ };
+ /**
+ * Applies the fresnel effect to the specular strength.
+ *
+ * @param vo The MethodVO object containing the method data for the currently compiled material pass.
+ * @param target The register containing the specular strength in the "w" component, and the half-vector/reflection vector in "xyz".
+ * @param regCache The register cache used for the shader compilation.
+ * @param sharedRegisters The shared registers created by the compiler.
+ * @return The AGAL fragment code for the method.
+ */
+ SpecularFresnelMethod.prototype.modulateSpecular = function (shaderObject, methodVO, targetReg, registerCache, sharedRegisters) {
+ var code;
+ code = "dp3 " + targetReg + ".y, " + sharedRegisters.viewDirFragment + ".xyz, " + (this._incidentLight ? targetReg : sharedRegisters.normalFragment) + ".xyz\n" + "sub " + targetReg + ".y, " + this._dataReg + ".z, " + targetReg + ".y\n" + "pow " + targetReg + ".x, " + targetReg + ".y, " + this._dataReg + ".y\n" + "sub " + targetReg + ".y, " + this._dataReg + ".z, " + targetReg + ".y\n" + "mul " + targetReg + ".y, " + this._dataReg + ".x, " + targetReg + ".y\n" + "add " + targetReg + ".y, " + targetReg + ".x, " + targetReg + ".y\n" + "mul " + targetReg + ".w, " + targetReg + ".w, " + targetReg + ".y\n";
+ console.log('SpecularFresnelMethod', 'modulateSpecular', code);
+ return code;
+ };
+ return SpecularFresnelMethod;
+})(SpecularCompositeMethod);
+module.exports = SpecularFresnelMethod;
+
+
+},{"awayjs-renderergl/lib/materials/methods/SpecularCompositeMethod":undefined}],"awayjs-renderergl/lib/materials/methods/SpecularPhongMethod":[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 SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+/**
+ * SpecularPhongMethod provides a specular method that provides Phong highlights.
+ */
+var SpecularPhongMethod = (function (_super) {
+ __extends(SpecularPhongMethod, _super);
+ /**
+ * Creates a new SpecularPhongMethod object.
+ */
+ function SpecularPhongMethod() {
+ _super.call(this);
+ }
+ /**
+ * @inheritDoc
+ */
+ SpecularPhongMethod.prototype.iGetFragmentCodePerLight = function (shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters) {
+ var code = "";
+ var t;
+ if (this._pIsFirstLight) {
+ t = this._pTotalLightColorReg;
+ }
+ else {
+ t = registerCache.getFreeFragmentVectorTemp();
+ registerCache.addFragmentTempUsages(t, 1);
+ }
+ var viewDirReg = sharedRegisters.viewDirFragment;
+ var normalReg = sharedRegisters.normalFragment;
+ // phong model
+ code += "dp3 " + t + ".w, " + lightDirReg + ", " + normalReg + "\n" + "add " + t + ".w, " + t + ".w, " + t + ".w\n" + "mul " + t + ".xyz, " + normalReg + ", " + t + ".w\n" + "sub " + t + ".xyz, " + t + ", " + lightDirReg + "\n" + "add " + t + ".w, " + t + ".w, " + sharedRegisters.commons + ".w\n" + "sat " + t + ".w, " + t + ".w\n" + "mul " + t + ".xyz, " + t + ", " + t + ".w\n" + "dp3 " + t + ".w, " + t + ", " + viewDirReg + "\n" + "sat " + t + ".w, " + t + ".w\n";
+ if (this._pUseTexture) {
+ // apply gloss modulation from texture
+ code += "mul " + this._pSpecularTexData + ".w, " + this._pSpecularTexData + ".y, " + this._pSpecularDataRegister + ".w\n" + "pow " + t + ".w, " + t + ".w, " + this._pSpecularTexData + ".w\n";
+ }
+ else
+ code += "pow " + t + ".w, " + t + ".w, " + this._pSpecularDataRegister + ".w\n";
+ // attenuate
+ if (shaderObject.usesLightFallOff)
+ code += "mul " + t + ".w, " + t + ".w, " + lightDirReg + ".w\n";
+ if (this._iModulateMethod != null)
+ code += this._iModulateMethod(shaderObject, methodVO, t, registerCache, sharedRegisters);
+ code += "mul " + t + ".xyz, " + lightColReg + ".xyz, " + t + ".w\n";
+ if (!this._pIsFirstLight) {
+ code += "add " + this._pTotalLightColorReg + ".xyz, " + this._pTotalLightColorReg + ".xyz, " + t + ".xyz\n";
+ registerCache.removeFragmentTempUsage(t);
+ }
+ this._pIsFirstLight = false;
+ return code;
+ };
+ return SpecularPhongMethod;
+})(SpecularBasicMethod);
+module.exports = SpecularPhongMethod;
+
+
+},{"awayjs-stagegl/lib/materials/methods/SpecularBasicMethod":undefined}],"awayjs-renderergl/lib/materials/passes/SingleObjectDepthPass":[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 TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var Matrix3D = require("awayjs-core/lib/core/geom/Matrix3D");
+var RenderTexture = require("awayjs-core/lib/textures/RenderTexture");
+var ContextGLProgramType = require("awayjs-stagegl/lib/core/stagegl/ContextGLProgramType");
+var MaterialPassBase = require("awayjs-stagegl/lib/materials/passes/MaterialPassBase");
+/**
+ * The SingleObjectDepthPass provides a material pass that renders a single object to a depth map from the point
+ * of view from a light.
+ */
+var SingleObjectDepthPass = (function (_super) {
+ __extends(SingleObjectDepthPass, _super);
+ /**
+ * Creates a new SingleObjectDepthPass object.
+ */
+ function SingleObjectDepthPass() {
+ _super.call(this);
+ this._textureSize = 512;
+ this._polyOffset = Array(15, 0, 0, 0);
+ this._projectionTexturesInvalid = true;
+ //this._pNumUsedStreams = 2;
+ //this._pNumUsedVertexConstants = 7;
+ //this._enc = ArrayMax3DSParser
object.
+ *
+ * @param useSmoothingGroups Determines whether the parser looks for smoothing groups in the 3ds file or assumes uniform smoothing. Defaults to true.
+ */
+ function Max3DSParser(useSmoothingGroups) {
+ if (useSmoothingGroups === void 0) { useSmoothingGroups = true; }
+ _super.call(this, URLLoaderDataFormat.ARRAY_BUFFER);
+ this._useSmoothingGroups = useSmoothingGroups;
+ }
+ /**
+ * 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.
+ */
+ Max3DSParser.supportsType = function (extension) {
+ extension = extension.toLowerCase();
+ return extension == "3ds";
+ };
+ /**
+ * 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.
+ */
+ Max3DSParser.supportsData = function (data) {
+ var ba;
+ ba = ParserUtils.toByteArray(data);
+ if (ba) {
+ ba.position = 0;
+ if (ba.readShort() == 0x4d4d)
+ return true;
+ }
+ return false;
+ };
+ /**
+ * @inheritDoc
+ */
+ Max3DSParser.prototype._iResolveDependency = function (resourceDependency) {
+ if (resourceDependency.assets.length == 1) {
+ var asset;
+ asset = resourceDependency.assets[0];
+ if (asset.assetType == AssetType.TEXTURE) {
+ var tex;
+ tex = this._textures[resourceDependency.id];
+ tex.texture = asset;
+ }
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ Max3DSParser.prototype._iResolveDependencyFailure = function (resourceDependency) {
+ // TODO: Implement
+ };
+ /**
+ * @inheritDoc
+ */
+ Max3DSParser.prototype._pProceedParsing = function () {
+ if (!this._byteData) {
+ this._byteData = this._pGetByteData();
+ this._byteData.position = 0;
+ //----------------------------------------------------------------------------
+ // LITTLE_ENDIAN - Default for ArrayBuffer / Not implemented in ByteArray
+ //----------------------------------------------------------------------------
+ //this._byteData.endian = Endian.LITTLE_ENDIAN;// Should be default
+ //----------------------------------------------------------------------------
+ this._textures = {};
+ this._materials = {};
+ this._unfinalized_objects = {};
+ }
+ while (this._pHasTime()) {
+ // If we are currently working on an object, and the most recent chunk was
+ // the last one in that object, finalize the current object.
+ if (this._cur_mat && this._byteData.position >= this._cur_mat_end)
+ this.finalizeCurrentMaterial();
+ else if (this._cur_obj && this._byteData.position >= this._cur_obj_end) {
+ // Can't finalize at this point, because we have to wait until the full
+ // animation section has been parsed for any potential pivot definitions
+ this._unfinalized_objects[this._cur_obj.name] = this._cur_obj;
+ this._cur_obj_end = Number.MAX_VALUE;
+ this._cur_obj = null;
+ }
+ if (this._byteData.getBytesAvailable() > 0) {
+ var cid /*uint*/;
+ var len /*uint*/;
+ var end /*uint*/;
+ cid = this._byteData.readUnsignedShort();
+ len = this._byteData.readUnsignedInt();
+ end = this._byteData.position + (len - 6);
+ switch (cid) {
+ case 0x4D4D:
+ case 0x3D3D:
+ case 0xB000:
+ continue;
+ break;
+ case 0xAFFF:
+ this._cur_mat_end = end;
+ this._cur_mat = this.parseMaterial();
+ break;
+ case 0x4000:
+ this._cur_obj_end = end;
+ this._cur_obj = new ObjectVO();
+ this._cur_obj.name = this.readNulTermstring();
+ this._cur_obj.materials = new Array();
+ this._cur_obj.materialFaces = {};
+ break;
+ case 0x4100:
+ this._cur_obj.type = AssetType.MESH;
+ break;
+ case 0x4110:
+ this.parseVertexList();
+ break;
+ case 0x4120:
+ this.parseFaceList();
+ break;
+ case 0x4140:
+ this.parseUVList();
+ break;
+ case 0x4130:
+ this.parseFaceMaterialList();
+ break;
+ case 0x4160:
+ this._cur_obj.transform = this.readTransform();
+ break;
+ case 0xB002:
+ this.parseObjectAnimation(end);
+ break;
+ case 0x4150:
+ this.parseSmoothingGroups();
+ break;
+ default:
+ // Skip this (unknown) chunk
+ this._byteData.position += (len - 6);
+ break;
+ }
+ // Pause parsing if there were any dependencies found during this
+ // iteration (i.e. if there are any dependencies that need to be
+ // retrieved at this time.)
+ if (this.dependencies.length) {
+ this._pPauseAndRetrieveDependencies();
+ break;
+ }
+ }
+ }
+ // More parsing is required if the entire byte array has not yet
+ // been read, or if there is a currently non-finalized object in
+ // the pipeline.
+ if (this._byteData.getBytesAvailable() || this._cur_obj || this._cur_mat) {
+ return ParserBase.MORE_TO_PARSE;
+ }
+ else {
+ var name;
+ for (name in this._unfinalized_objects) {
+ var obj;
+ obj = this.constructObject(this._unfinalized_objects[name]);
+ if (obj) {
+ //add to the content property
+ this._pContent.addChild(obj);
+ this._pFinalizeAsset(obj, name);
+ }
+ }
+ return ParserBase.PARSING_DONE;
+ }
+ };
+ Max3DSParser.prototype._pStartParsing = function (frameLimit) {
+ _super.prototype._pStartParsing.call(this, frameLimit);
+ //create a content object for Loaders
+ this._pContent = new DisplayObjectContainer();
+ };
+ Max3DSParser.prototype.parseMaterial = function () {
+ var mat;
+ mat = new MaterialVO();
+ while (this._byteData.position < this._cur_mat_end) {
+ var cid /*uint*/;
+ var len /*uint*/;
+ var end /*uint*/;
+ cid = this._byteData.readUnsignedShort();
+ len = this._byteData.readUnsignedInt();
+ end = this._byteData.position + (len - 6);
+ switch (cid) {
+ case 0xA000:
+ mat.name = this.readNulTermstring();
+ break;
+ case 0xA010:
+ mat.ambientColor = this.readColor();
+ break;
+ case 0xA020:
+ mat.diffuseColor = this.readColor();
+ break;
+ case 0xA030:
+ mat.specularColor = this.readColor();
+ break;
+ case 0xA081:
+ mat.twoSided = true;
+ break;
+ case 0xA200:
+ mat.colorMap = this.parseTexture(end);
+ break;
+ case 0xA204:
+ mat.specularMap = this.parseTexture(end);
+ break;
+ default:
+ this._byteData.position = end;
+ break;
+ }
+ }
+ return mat;
+ };
+ Max3DSParser.prototype.parseTexture = function (end /*uint*/) {
+ var tex;
+ tex = new TextureVO();
+ while (this._byteData.position < end) {
+ var cid /*uint*/;
+ var len /*uint*/;
+ cid = this._byteData.readUnsignedShort();
+ len = this._byteData.readUnsignedInt();
+ switch (cid) {
+ case 0xA300:
+ tex.url = this.readNulTermstring();
+ break;
+ default:
+ // Skip this unknown texture sub-chunk
+ this._byteData.position += (len - 6);
+ break;
+ }
+ }
+ this._textures[tex.url] = tex;
+ this._pAddDependency(tex.url, new URLRequest(tex.url));
+ return tex;
+ };
+ Max3DSParser.prototype.parseVertexList = function () {
+ var i /*uint*/;
+ var len /*uint*/;
+ var count /*uint*/;
+ count = this._byteData.readUnsignedShort();
+ this._cur_obj.verts = new Array(count * 3);
+ i = 0;
+ len = this._cur_obj.verts.length;
+ while (i < len) {
+ var x, y, z;
+ x = this._byteData.readFloat();
+ y = this._byteData.readFloat();
+ z = this._byteData.readFloat();
+ this._cur_obj.verts[i++] = x;
+ this._cur_obj.verts[i++] = z;
+ this._cur_obj.verts[i++] = y;
+ }
+ };
+ Max3DSParser.prototype.parseFaceList = function () {
+ var i /*uint*/;
+ var len /*uint*/;
+ var count /*uint*/;
+ count = this._byteData.readUnsignedShort();
+ this._cur_obj.indices = new Array(count * 3);
+ i = 0;
+ len = this._cur_obj.indices.length;
+ while (i < len) {
+ var i0 /*uint*/, i1 /*uint*/, i2 /*uint*/;
+ i0 = this._byteData.readUnsignedShort();
+ i1 = this._byteData.readUnsignedShort();
+ i2 = this._byteData.readUnsignedShort();
+ this._cur_obj.indices[i++] = i0;
+ this._cur_obj.indices[i++] = i2;
+ this._cur_obj.indices[i++] = i1;
+ // Skip "face info", irrelevant in Away3D
+ this._byteData.position += 2;
+ }
+ this._cur_obj.smoothingGroups = new Array(count);
+ };
+ Max3DSParser.prototype.parseSmoothingGroups = function () {
+ var len = this._cur_obj.indices.length / 3;
+ var i = 0;
+ while (i < len) {
+ this._cur_obj.smoothingGroups[i] = this._byteData.readUnsignedInt();
+ i++;
+ }
+ };
+ Max3DSParser.prototype.parseUVList = function () {
+ var i /*uint*/;
+ var len /*uint*/;
+ var count /*uint*/;
+ count = this._byteData.readUnsignedShort();
+ this._cur_obj.uvs = new Array(count * 2);
+ i = 0;
+ len = this._cur_obj.uvs.length;
+ while (i < len) {
+ this._cur_obj.uvs[i++] = this._byteData.readFloat();
+ this._cur_obj.uvs[i++] = 1.0 - this._byteData.readFloat();
+ }
+ };
+ Max3DSParser.prototype.parseFaceMaterialList = function () {
+ var mat;
+ var count /*uint*/;
+ var i /*uint*/;
+ var faces /*uint*/;
+ mat = this.readNulTermstring();
+ count = this._byteData.readUnsignedShort();
+ faces = new Array(count);
+ i = 0;
+ while (i < faces.length)
+ faces[i++] = this._byteData.readUnsignedShort();
+ this._cur_obj.materials.push(mat);
+ this._cur_obj.materialFaces[mat] = faces;
+ };
+ Max3DSParser.prototype.parseObjectAnimation = function (end) {
+ var vo;
+ var obj;
+ var pivot;
+ var name;
+ var hier /*uint*/;
+ // Pivot defaults to origin
+ pivot = new Vector3D;
+ while (this._byteData.position < end) {
+ var cid /*uint*/;
+ var len /*uint*/;
+ cid = this._byteData.readUnsignedShort();
+ len = this._byteData.readUnsignedInt();
+ switch (cid) {
+ case 0xb010:
+ name = this.readNulTermstring();
+ this._byteData.position += 4;
+ hier = this._byteData.readShort();
+ break;
+ case 0xb013:
+ pivot.x = this._byteData.readFloat();
+ pivot.z = this._byteData.readFloat();
+ pivot.y = this._byteData.readFloat();
+ break;
+ default:
+ this._byteData.position += (len - 6);
+ break;
+ }
+ }
+ // If name is "$$$DUMMY" this is an empty object (e.g. a container)
+ // and will be ignored in this version of the parser
+ // TODO: Implement containers in 3DS parser.
+ if (name != '$$$DUMMY' && this._unfinalized_objects.hasOwnProperty(name)) {
+ vo = this._unfinalized_objects[name];
+ obj = this.constructObject(vo, pivot);
+ if (obj) {
+ //add to the content property
+ this._pContent.addChild(obj);
+ this._pFinalizeAsset(obj, vo.name);
+ }
+ delete this._unfinalized_objects[name];
+ }
+ };
+ Max3DSParser.prototype.constructObject = function (obj, pivot) {
+ if (pivot === void 0) { pivot = null; }
+ if (obj.type == AssetType.MESH) {
+ var i /*uint*/;
+ var sub;
+ var geom;
+ var mat;
+ var mesh;
+ var mtx;
+ var vertices;
+ var faces;
+ if (obj.materials.length > 1)
+ console.log("The Away3D 3DS parser does not support multiple materials per mesh at this point.");
+ // Ignore empty objects
+ if (!obj.indices || obj.indices.length == 0)
+ return null;
+ vertices = new Array(obj.verts.length / 3);
+ faces = new Array(obj.indices.length / 3);
+ this.prepareData(vertices, faces, obj);
+ if (this._useSmoothingGroups)
+ this.applySmoothGroups(vertices, faces);
+ obj.verts = new Array(vertices.length * 3);
+ for (i = 0; i < vertices.length; i++) {
+ obj.verts[i * 3] = vertices[i].x;
+ obj.verts[i * 3 + 1] = vertices[i].y;
+ obj.verts[i * 3 + 2] = vertices[i].z;
+ }
+ obj.indices = new Array(faces.length * 3);
+ for (i = 0; i < faces.length; i++) {
+ obj.indices[i * 3] = faces[i].a;
+ obj.indices[i * 3 + 1] = faces[i].b;
+ obj.indices[i * 3 + 2] = faces[i].c;
+ }
+ if (obj.uvs) {
+ // If the object had UVs to start with, use UVs generated by
+ // smoothing group splitting algorithm. Otherwise those UVs
+ // will be nonsense and should be skipped.
+ obj.uvs = new Array(vertices.length * 2);
+ for (i = 0; i < vertices.length; i++) {
+ obj.uvs[i * 2] = vertices[i].u;
+ obj.uvs[i * 2 + 1] = vertices[i].v;
+ }
+ }
+ geom = new Geometry();
+ // Construct sub-geometries (potentially splitting buffers)
+ // and add them to geometry.
+ sub = new TriangleSubGeometry(true);
+ sub.updateIndices(obj.indices);
+ sub.updatePositions(obj.verts);
+ sub.updateUVs(obj.uvs);
+ geom.addSubGeometry(sub);
+ if (obj.materials.length > 0) {
+ var mname;
+ mname = obj.materials[0];
+ mat = this._materials[mname].material;
+ }
+ // Apply pivot translation to geometry if a pivot was
+ // found while parsing the keyframe chunk earlier.
+ if (pivot) {
+ if (obj.transform) {
+ // If a transform was found while parsing the
+ // object chunk, use it to find the local pivot vector
+ var dat = obj.transform.concat();
+ dat[12] = 0;
+ dat[13] = 0;
+ dat[14] = 0;
+ mtx = new Matrix3D(dat);
+ pivot = mtx.transformVector(pivot);
+ }
+ pivot.scaleBy(-1);
+ mtx = new Matrix3D();
+ mtx.appendTranslation(pivot.x, pivot.y, pivot.z);
+ geom.applyTransformation(mtx);
+ }
+ // Apply transformation to geometry if a transformation
+ // was found while parsing the object chunk earlier.
+ if (obj.transform) {
+ mtx = new Matrix3D(obj.transform);
+ mtx.invert();
+ geom.applyTransformation(mtx);
+ }
+ // Final transform applied to geometry. Finalize the geometry,
+ // which will no longer be modified after this point.
+ this._pFinalizeAsset(geom, obj.name.concat('_geom'));
+ // Build mesh and return it
+ mesh = new Mesh(geom, mat);
+ mesh.transform.matrix3D = new Matrix3D(obj.transform);
+ return mesh;
+ }
+ // If reached, unknown
+ return null;
+ };
+ Max3DSParser.prototype.prepareData = function (vertices, faces, obj) {
+ // convert raw ObjectVO's data to structured VertexVO and FaceVO
+ var i /*int*/;
+ var j /*int*/;
+ var k /*int*/;
+ var len = obj.verts.length;
+ for (i = 0, j = 0, k = 0; i < len;) {
+ var v = new VertexVO;
+ v.x = obj.verts[i++];
+ v.y = obj.verts[i++];
+ v.z = obj.verts[i++];
+ if (obj.uvs) {
+ v.u = obj.uvs[j++];
+ v.v = obj.uvs[j++];
+ }
+ vertices[k++] = v;
+ }
+ len = obj.indices.length;
+ for (i = 0, k = 0; i < len;) {
+ var f = new FaceVO();
+ f.a = obj.indices[i++];
+ f.b = obj.indices[i++];
+ f.c = obj.indices[i++];
+ f.smoothGroup = obj.smoothingGroups[k] || 0;
+ faces[k++] = f;
+ }
+ };
+ Max3DSParser.prototype.applySmoothGroups = function (vertices, faces) {
+ // clone vertices according to following rule:
+ // clone if vertex's in faces from groups 1+2 and 3
+ // don't clone if vertex's in faces from groups 1+2, 3 and 1+3
+ var i /*int*/;
+ var j /*int*/;
+ var k /*int*/;
+ var l /*int*/;
+ var len /*int*/;
+ var numVerts = vertices.length;
+ var numFaces = faces.length;
+ // extract groups data for vertices
+ var vGroups = new Array(numVerts) /*uint*/;
+ for (i = 0; i < numVerts; i++)
+ vGroups[i] = new Array();
+ for (i = 0; i < numFaces; i++) {
+ var face = faces[i];
+ for (j = 0; j < 3; j++) {
+ var groups = vGroups[(j == 0) ? face.a : ((j == 1) ? face.b : face.c)];
+ var group = face.smoothGroup;
+ for (k = groups.length - 1; k >= 0; k--) {
+ if ((group & groups[k]) > 0) {
+ group |= groups[k];
+ groups.splice(k, 1);
+ k = groups.length - 1;
+ }
+ }
+ groups.push(group);
+ }
+ }
+ // clone vertices
+ var vClones = new Array(numVerts) /*uint*/;
+ for (i = 0; i < numVerts; i++) {
+ if ((len = vGroups[i].length) < 1)
+ continue;
+ var clones = new Array(len) /*uint*/;
+ vClones[i] = clones;
+ clones[0] = i;
+ var v0 = vertices[i];
+ for (j = 1; j < len; j++) {
+ var v1 = new VertexVO;
+ v1.x = v0.x;
+ v1.y = v0.y;
+ v1.z = v0.z;
+ v1.u = v0.u;
+ v1.v = v0.v;
+ clones[j] = vertices.length;
+ vertices.push(v1);
+ }
+ }
+ numVerts = vertices.length;
+ for (i = 0; i < numFaces; i++) {
+ face = faces[i];
+ group = face.smoothGroup;
+ for (j = 0; j < 3; j++) {
+ k = (j == 0) ? face.a : ((j == 1) ? face.b : face.c);
+ groups = vGroups[k];
+ len = groups.length;
+ clones = vClones[k];
+ for (l = 0; l < len; l++) {
+ if (((group == 0) && (groups[l] == 0)) || ((group & groups[l]) > 0)) {
+ var index = clones[l];
+ if (group == 0) {
+ // vertex is unique if no smoothGroup found
+ groups.splice(l, 1);
+ clones.splice(l, 1);
+ }
+ if (j == 0)
+ face.a = index;
+ else if (j == 1)
+ face.b = index;
+ else
+ face.c = index;
+ l = len;
+ }
+ }
+ }
+ }
+ };
+ Max3DSParser.prototype.finalizeCurrentMaterial = function () {
+ var mat;
+ if (this._cur_mat.colorMap)
+ mat = new TriangleMethodMaterial(this._cur_mat.colorMap.texture || DefaultMaterialManager.getDefaultTexture());
+ else
+ mat = new TriangleMethodMaterial(this._cur_mat.ambientColor);
+ mat.diffuseColor = this._cur_mat.diffuseColor;
+ mat.specularColor = this._cur_mat.specularColor;
+ if (this.materialMode >= 2)
+ mat.materialMode = TriangleMaterialMode.MULTI_PASS;
+ mat.bothSides = this._cur_mat.twoSided;
+ this._pFinalizeAsset(mat, this._cur_mat.name);
+ this._materials[this._cur_mat.name] = this._cur_mat;
+ this._cur_mat.material = mat;
+ this._cur_mat = null;
+ };
+ Max3DSParser.prototype.readNulTermstring = function () {
+ var chr /*int*/;
+ var str = "";
+ while ((chr = this._byteData.readUnsignedByte()) > 0)
+ str += String.fromCharCode(chr);
+ return str;
+ };
+ Max3DSParser.prototype.readTransform = function () {
+ var data;
+ data = new Array(16);
+ // X axis
+ data[0] = this._byteData.readFloat(); // X
+ data[2] = this._byteData.readFloat(); // Z
+ data[1] = this._byteData.readFloat(); // Y
+ data[3] = 0;
+ // Z axis
+ data[8] = this._byteData.readFloat(); // X
+ data[10] = this._byteData.readFloat(); // Z
+ data[9] = this._byteData.readFloat(); // Y
+ data[11] = 0;
+ // Y Axis
+ data[4] = this._byteData.readFloat(); // X
+ data[6] = this._byteData.readFloat(); // Z
+ data[5] = this._byteData.readFloat(); // Y
+ data[7] = 0;
+ // Translation
+ data[12] = this._byteData.readFloat(); // X
+ data[14] = this._byteData.readFloat(); // Z
+ data[13] = this._byteData.readFloat(); // Y
+ data[15] = 1;
+ return data;
+ };
+ Max3DSParser.prototype.readColor = function () {
+ var cid /*int*/;
+ var len /*int*/;
+ var r /*int*/, g /*int*/, b /*int*/;
+ cid = this._byteData.readUnsignedShort();
+ len = this._byteData.readUnsignedInt();
+ switch (cid) {
+ case 0x0010:
+ r = this._byteData.readFloat() * 255;
+ g = this._byteData.readFloat() * 255;
+ b = this._byteData.readFloat() * 255;
+ break;
+ case 0x0011:
+ r = this._byteData.readUnsignedByte();
+ g = this._byteData.readUnsignedByte();
+ b = this._byteData.readUnsignedByte();
+ break;
+ default:
+ this._byteData.position += (len - 6);
+ break;
+ }
+ return (r << 16) | (g << 8) | b;
+ };
+ return Max3DSParser;
+})(ParserBase);
+module.exports = Max3DSParser;
+
+
+},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/base/Geometry":undefined,"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/geom/Matrix3D":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/net/URLLoaderDataFormat":undefined,"awayjs-core/lib/core/net/URLRequest":undefined,"awayjs-core/lib/entities/Mesh":undefined,"awayjs-core/lib/parsers/ParserBase":undefined,"awayjs-core/lib/parsers/ParserUtils":undefined,"awayjs-renderergl/lib/parsers/data/FaceVO":undefined,"awayjs-renderergl/lib/parsers/data/MaterialVO":undefined,"awayjs-renderergl/lib/parsers/data/ObjectVO":undefined,"awayjs-renderergl/lib/parsers/data/TextureVO":undefined,"awayjs-renderergl/lib/parsers/data/VertexVO":undefined,"awayjs-stagegl/lib/materials/TriangleMaterialMode":undefined,"awayjs-stagegl/lib/materials/TriangleMethodMaterial":undefined,"awayjs-stagegl/lib/materials/utils/DefaultMaterialManager":undefined}],"awayjs-renderergl/lib/parsers/OBJParser":[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 TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var Geometry = require("awayjs-core/lib/core/base/Geometry");
+var AssetType = require("awayjs-core/lib/core/library/AssetType");
+var URLLoaderDataFormat = require("awayjs-core/lib/core/net/URLLoaderDataFormat");
+var URLRequest = require("awayjs-core/lib/core/net/URLRequest");
+var Mesh = require("awayjs-core/lib/entities/Mesh");
+var ParserBase = require("awayjs-core/lib/parsers/ParserBase");
+var ParserUtils = require("awayjs-core/lib/parsers/ParserUtils");
+var DefaultMaterialManager = require("awayjs-stagegl/lib/materials/utils/DefaultMaterialManager");
+var SpecularBasicMethod = require("awayjs-stagegl/lib/materials/methods/SpecularBasicMethod");
+var TriangleMethodMaterial = require("awayjs-stagegl/lib/materials/TriangleMethodMaterial");
+var TriangleMaterialMode = require("awayjs-stagegl/lib/materials/TriangleMaterialMode");
+/**
+ * OBJParser provides a parser for the OBJ data type.
+ */
+var OBJParser = (function (_super) {
+ __extends(OBJParser, _super);
+ /**
+ * Creates a new OBJParser 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 OBJParser(scale) {
+ if (scale === void 0) { scale = 1; }
+ _super.call(this, URLLoaderDataFormat.TEXT);
+ this._mtlLibLoaded = true;
+ this._activeMaterialID = "";
+ this._scale = scale;
+ }
+ Object.defineProperty(OBJParser.prototype, "scale", {
+ /**
+ * Scaling factor applied directly to vertices data
+ * @param value The scaling factor.
+ */
+ set: function (value) {
+ this._scale = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * 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.
+ */
+ OBJParser.supportsType = function (extension) {
+ extension = extension.toLowerCase();
+ return extension == "obj";
+ };
+ /**
+ * 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.
+ */
+ OBJParser.supportsData = function (data) {
+ var content = ParserUtils.toString(data);
+ var hasV = false;
+ var hasF = false;
+ if (content) {
+ hasV = content.indexOf("\nv ") != -1;
+ hasF = content.indexOf("\nf ") != -1;
+ }
+ return hasV && hasF;
+ };
+ /**
+ * @inheritDoc
+ */
+ OBJParser.prototype._iResolveDependency = function (resourceDependency) {
+ if (resourceDependency.id == 'mtl') {
+ var str = ParserUtils.toString(resourceDependency.data);
+ this.parseMtl(str);
+ }
+ else {
+ var asset;
+ if (resourceDependency.assets.length != 1) {
+ return;
+ }
+ asset = resourceDependency.assets[0];
+ if (asset.assetType == AssetType.TEXTURE) {
+ var lm = new LoadedMaterial();
+ lm.materialID = resourceDependency.id;
+ lm.texture = asset;
+ this._materialLoaded.push(lm);
+ if (this._meshes.length > 0) {
+ this.applyMaterial(lm);
+ }
+ }
+ }
+ };
+ /**
+ * @inheritDoc
+ */
+ OBJParser.prototype._iResolveDependencyFailure = function (resourceDependency) {
+ if (resourceDependency.id == "mtl") {
+ this._mtlLib = false;
+ this._mtlLibLoaded = false;
+ }
+ else {
+ var lm = new LoadedMaterial();
+ lm.materialID = resourceDependency.id;
+ this._materialLoaded.push(lm);
+ }
+ if (this._meshes.length > 0)
+ this.applyMaterial(lm);
+ };
+ /**
+ * @inheritDoc
+ */
+ OBJParser.prototype._pProceedParsing = function () {
+ var line;
+ var creturn = String.fromCharCode(10);
+ var trunk;
+ if (!this._startedParsing) {
+ this._textData = this._pGetTextData();
+ // Merge linebreaks that are immediately preceeded by
+ // the "escape" backward slash into single lines.
+ this._textData = this._textData.replace(/\\[\r\n]+\s*/gm, ' ');
+ }
+ if (this._textData.indexOf(creturn) == -1)
+ creturn = String.fromCharCode(13);
+ if (!this._startedParsing) {
+ this._startedParsing = true;
+ this._vertices = new Array();
+ this._vertexNormals = new Array();
+ this._materialIDs = new Array();
+ this._materialLoaded = new Array();
+ this._meshes = new Array();
+ this._uvs = new Array();
+ this._stringLength = this._textData.length;
+ this._charIndex = this._textData.indexOf(creturn, 0);
+ this._oldIndex = 0;
+ this._objects = new Array();
+ this._objectIndex = 0;
+ }
+ while (this._charIndex < this._stringLength && this._pHasTime()) {
+ this._charIndex = this._textData.indexOf(creturn, this._oldIndex);
+ if (this._charIndex == -1)
+ this._charIndex = this._stringLength;
+ line = this._textData.substring(this._oldIndex, this._charIndex);
+ line = line.split('\r').join("");
+ line = line.replace(" ", " ");
+ trunk = line.split(" ");
+ this._oldIndex = this._charIndex + 1;
+ this.parseLine(trunk);
+ // If whatever was parsed on this line resulted in the
+ // parsing being paused to retrieve dependencies, break
+ // here and do not continue parsing until un-paused.
+ if (this.parsingPaused) {
+ return ParserBase.MORE_TO_PARSE;
+ }
+ }
+ if (this._charIndex >= this._stringLength) {
+ if (this._mtlLib && !this._mtlLibLoaded) {
+ return ParserBase.MORE_TO_PARSE;
+ }
+ this.translate();
+ this.applyMaterials();
+ return ParserBase.PARSING_DONE;
+ }
+ return ParserBase.MORE_TO_PARSE;
+ };
+ OBJParser.prototype._pStartParsing = function (frameLimit) {
+ _super.prototype._pStartParsing.call(this, frameLimit);
+ //create a content object for Loaders
+ this._pContent = new DisplayObjectContainer();
+ };
+ /**
+ * Parses a single line in the OBJ file.
+ */
+ OBJParser.prototype.parseLine = function (trunk) {
+ switch (trunk[0]) {
+ case "mtllib":
+ this._mtlLib = true;
+ this._mtlLibLoaded = false;
+ this.loadMtl(trunk[1]);
+ break;
+ case "g":
+ this.createGroup(trunk);
+ break;
+ case "o":
+ this.createObject(trunk);
+ break;
+ case "usemtl":
+ if (this._mtlLib) {
+ if (!trunk[1])
+ trunk[1] = "def000";
+ this._materialIDs.push(trunk[1]);
+ this._activeMaterialID = trunk[1];
+ if (this._currentGroup)
+ this._currentGroup.materialID = this._activeMaterialID;
+ }
+ break;
+ case "v":
+ this.parseVertex(trunk);
+ break;
+ case "vt":
+ this.parseUV(trunk);
+ break;
+ case "vn":
+ this.parseVertexNormal(trunk);
+ break;
+ case "f":
+ this.parseFace(trunk);
+ }
+ };
+ /**
+ * Converts the parsed data into an Away3D scenegraph structure
+ */
+ OBJParser.prototype.translate = function () {
+ for (var objIndex = 0; objIndex < this._objects.length; ++objIndex) {
+ var groups = this._objects[objIndex].groups;
+ var numGroups = groups.length;
+ var materialGroups;
+ var numMaterialGroups;
+ var geometry;
+ var mesh;
+ var m;
+ var sm;
+ var bmMaterial;
+ for (var g = 0; g < numGroups; ++g) {
+ geometry = new Geometry();
+ materialGroups = groups[g].materialGroups;
+ numMaterialGroups = materialGroups.length;
+ for (m = 0; m < numMaterialGroups; ++m)
+ this.translateMaterialGroup(materialGroups[m], geometry);
+ if (geometry.subGeometries.length == 0)
+ continue;
+ // Finalize and force type-based name
+ this._pFinalizeAsset(geometry); //, "");
+ bmMaterial = new TriangleMethodMaterial(DefaultMaterialManager.getDefaultTexture());
+ //check for multipass
+ if (this.materialMode >= 2)
+ bmMaterial.materialMode = TriangleMaterialMode.MULTI_PASS;
+ mesh = new Mesh(geometry, bmMaterial);
+ if (this._objects[objIndex].name) {
+ // this is a full independent object ('o' tag in OBJ file)
+ mesh.name = this._objects[objIndex].name;
+ }
+ else if (groups[g].name) {
+ // this is a group so the sub groups contain the actual mesh object names ('g' tag in OBJ file)
+ mesh.name = groups[g].name;
+ }
+ else {
+ // No name stored. Use empty string which will force it
+ // to be overridden by finalizeAsset() to type default.
+ mesh.name = "";
+ }
+ this._meshes.push(mesh);
+ if (groups[g].materialID != "")
+ bmMaterial.name = groups[g].materialID + "~" + mesh.name;
+ else
+ bmMaterial.name = this._lastMtlID + "~" + mesh.name;
+ if (mesh.subMeshes.length > 1) {
+ for (sm = 1; sm < mesh.subMeshes.length; ++sm)
+ mesh.subMeshes[sm].material = bmMaterial;
+ }
+ //add to the content property
+ this._pContent.addChild(mesh);
+ this._pFinalizeAsset(mesh);
+ }
+ }
+ };
+ /**
+ * Translates an obj's material group to a subgeometry.
+ * @param materialGroup The material group data to convert.
+ * @param geometry The Geometry to contain the converted SubGeometry.
+ */
+ OBJParser.prototype.translateMaterialGroup = function (materialGroup, geometry) {
+ var faces = materialGroup.faces;
+ var face;
+ var numFaces = faces.length;
+ var numVerts;
+ var sub;
+ var vertices = new Array();
+ var uvs = new Array();
+ var normals = new Array();
+ var indices = new Array();
+ this._realIndices = [];
+ this._vertexIndex = 0;
+ var j;
+ for (var i = 0; i < numFaces; ++i) {
+ face = faces[i];
+ numVerts = face.indexIds.length - 1;
+ for (j = 1; j < numVerts; ++j) {
+ this.translateVertexData(face, j, vertices, uvs, indices, normals);
+ this.translateVertexData(face, 0, vertices, uvs, indices, normals);
+ this.translateVertexData(face, j + 1, vertices, uvs, indices, normals);
+ }
+ }
+ if (vertices.length > 0) {
+ sub = new TriangleSubGeometry(true);
+ sub.autoDeriveNormals = normals.length ? false : true;
+ sub.updateIndices(indices);
+ sub.updatePositions(vertices);
+ sub.updateVertexNormals(normals);
+ sub.updateUVs(uvs);
+ geometry.addSubGeometry(sub);
+ }
+ };
+ OBJParser.prototype.translateVertexData = function (face, vertexIndex, vertices, uvs, indices /*uint*/, normals) {
+ var index;
+ var vertex;
+ var vertexNormal;
+ var uv;
+ if (!this._realIndices[face.indexIds[vertexIndex]]) {
+ index = this._vertexIndex;
+ this._realIndices[face.indexIds[vertexIndex]] = ++this._vertexIndex;
+ vertex = this._vertices[face.vertexIndices[vertexIndex] - 1];
+ vertices.push(vertex.x * this._scale, vertex.y * this._scale, vertex.z * this._scale);
+ if (face.normalIndices.length > 0) {
+ vertexNormal = this._vertexNormals[face.normalIndices[vertexIndex] - 1];
+ normals.push(vertexNormal.x, vertexNormal.y, vertexNormal.z);
+ }
+ if (face.uvIndices.length > 0) {
+ try {
+ uv = this._uvs[face.uvIndices[vertexIndex] - 1];
+ uvs.push(uv.u, uv.v);
+ }
+ catch (e) {
+ switch (vertexIndex) {
+ case 0:
+ uvs.push(0, 1);
+ break;
+ case 1:
+ uvs.push(.5, 0);
+ break;
+ case 2:
+ uvs.push(1, 1);
+ }
+ }
+ }
+ }
+ else {
+ index = this._realIndices[face.indexIds[vertexIndex]] - 1;
+ }
+ indices.push(index);
+ };
+ /**
+ * Creates a new object group.
+ * @param trunk The data block containing the object tag and its parameters
+ */
+ OBJParser.prototype.createObject = function (trunk) {
+ this._currentGroup = null;
+ this._currentMaterialGroup = null;
+ this._objects.push(this._currentObject = new ObjectGroup());
+ if (trunk)
+ this._currentObject.name = trunk[1];
+ };
+ /**
+ * Creates a new group.
+ * @param trunk The data block containing the group tag and its parameters
+ */
+ OBJParser.prototype.createGroup = function (trunk) {
+ if (!this._currentObject)
+ this.createObject(null);
+ this._currentGroup = new Group();
+ this._currentGroup.materialID = this._activeMaterialID;
+ if (trunk)
+ this._currentGroup.name = trunk[1];
+ this._currentObject.groups.push(this._currentGroup);
+ this.createMaterialGroup(null);
+ };
+ /**
+ * Creates a new material group.
+ * @param trunk The data block containing the material tag and its parameters
+ */
+ OBJParser.prototype.createMaterialGroup = function (trunk) {
+ this._currentMaterialGroup = new MaterialGroup();
+ if (trunk)
+ this._currentMaterialGroup.url = trunk[1];
+ this._currentGroup.materialGroups.push(this._currentMaterialGroup);
+ };
+ /**
+ * Reads the next vertex coordinates.
+ * @param trunk The data block containing the vertex tag and its parameters
+ */
+ OBJParser.prototype.parseVertex = function (trunk) {
+ //for the very rare cases of other delimiters/charcodes seen in some obj files
+ var v1, v2, v3;
+ if (trunk.length > 4) {
+ var nTrunk = [];
+ var val;
+ for (var i = 1; i < trunk.length; ++i) {
+ val = parseFloat(trunk[i]);
+ if (!isNaN(val))
+ nTrunk.push(val);
+ }
+ v1 = nTrunk[0];
+ v2 = nTrunk[1];
+ v3 = -nTrunk[2];
+ this._vertices.push(new Vertex(v1, v2, v3));
+ }
+ else {
+ v1 = parseFloat(trunk[1]);
+ v2 = parseFloat(trunk[2]);
+ v3 = -parseFloat(trunk[3]);
+ this._vertices.push(new Vertex(v1, v2, v3));
+ }
+ };
+ /**
+ * Reads the next uv coordinates.
+ * @param trunk The data block containing the uv tag and its parameters
+ */
+ OBJParser.prototype.parseUV = function (trunk) {
+ if (trunk.length > 3) {
+ var nTrunk = [];
+ var val;
+ for (var i = 1; i < trunk.length; ++i) {
+ val = parseFloat(trunk[i]);
+ if (!isNaN(val))
+ nTrunk.push(val);
+ }
+ this._uvs.push(new UV(nTrunk[0], 1 - nTrunk[1]));
+ }
+ else {
+ this._uvs.push(new UV(parseFloat(trunk[1]), 1 - parseFloat(trunk[2])));
+ }
+ };
+ /**
+ * Reads the next vertex normal coordinates.
+ * @param trunk The data block containing the vertex normal tag and its parameters
+ */
+ OBJParser.prototype.parseVertexNormal = function (trunk) {
+ if (trunk.length > 4) {
+ var nTrunk = [];
+ var val;
+ for (var i = 1; i < trunk.length; ++i) {
+ val = parseFloat(trunk[i]);
+ if (!isNaN(val))
+ nTrunk.push(val);
+ }
+ this._vertexNormals.push(new Vertex(nTrunk[0], nTrunk[1], -nTrunk[2]));
+ }
+ else {
+ this._vertexNormals.push(new Vertex(parseFloat(trunk[1]), parseFloat(trunk[2]), -parseFloat(trunk[3])));
+ }
+ };
+ /**
+ * Reads the next face's indices.
+ * @param trunk The data block containing the face tag and its parameters
+ */
+ OBJParser.prototype.parseFace = function (trunk) {
+ var len = trunk.length;
+ var face = new FaceData();
+ if (!this._currentGroup) {
+ this.createGroup(null);
+ }
+ var indices;
+ for (var i = 1; i < len; ++i) {
+ if (trunk[i] == "") {
+ continue;
+ }
+ indices = trunk[i].split("/");
+ face.vertexIndices.push(this.parseIndex(parseInt(indices[0]), this._vertices.length));
+ if (indices[1] && String(indices[1]).length > 0)
+ face.uvIndices.push(this.parseIndex(parseInt(indices[1]), this._uvs.length));
+ if (indices[2] && String(indices[2]).length > 0)
+ face.normalIndices.push(this.parseIndex(parseInt(indices[2]), this._vertexNormals.length));
+ face.indexIds.push(trunk[i]);
+ }
+ this._currentMaterialGroup.faces.push(face);
+ };
+ /**
+ * This is a hack around negative face coords
+ */
+ OBJParser.prototype.parseIndex = function (index, length) {
+ if (index < 0)
+ return index + length + 1;
+ else
+ return index;
+ };
+ OBJParser.prototype.parseMtl = function (data) {
+ var materialDefinitions = data.split('newmtl');
+ var lines;
+ var trunk;
+ var j;
+ var basicSpecularMethod;
+ var useSpecular;
+ var useColor;
+ var diffuseColor;
+ var color;
+ var specularColor;
+ var specular;
+ var alpha;
+ var mapkd;
+ for (var i = 0; i < materialDefinitions.length; ++i) {
+ lines = (materialDefinitions[i].split('\r')).join("").split('\n');
+ //lines = (materialDefinitions[i].split('\r') as Array).join("").split('\n');
+ if (lines.length == 1)
+ lines = materialDefinitions[i].split(String.fromCharCode(13));
+ diffuseColor = color = specularColor = 0xFFFFFF;
+ specular = 0;
+ useSpecular = false;
+ useColor = false;
+ alpha = 1;
+ mapkd = "";
+ for (j = 0; j < lines.length; ++j) {
+ lines[j] = lines[j].replace(/\s+$/, "");
+ if (lines[j].substring(0, 1) != "#" && (j == 0 || lines[j] != "")) {
+ trunk = lines[j].split(" ");
+ if (String(trunk[0]).charCodeAt(0) == 9 || String(trunk[0]).charCodeAt(0) == 32)
+ trunk[0] = trunk[0].substring(1, trunk[0].length);
+ if (j == 0) {
+ this._lastMtlID = trunk.join("");
+ this._lastMtlID = (this._lastMtlID == "") ? "def000" : this._lastMtlID;
+ }
+ else {
+ switch (trunk[0]) {
+ case "Ka":
+ if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3])))
+ color = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;
+ break;
+ case "Ks":
+ if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3]))) {
+ specularColor = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;
+ useSpecular = true;
+ }
+ break;
+ case "Ns":
+ if (trunk[1] && !isNaN(Number(trunk[1])))
+ specular = Number(trunk[1]) * 0.001;
+ if (specular == 0)
+ useSpecular = false;
+ break;
+ case "Kd":
+ if (trunk[1] && !isNaN(Number(trunk[1])) && trunk[2] && !isNaN(Number(trunk[2])) && trunk[3] && !isNaN(Number(trunk[3]))) {
+ diffuseColor = trunk[1] * 255 << 16 | trunk[2] * 255 << 8 | trunk[3] * 255;
+ useColor = true;
+ }
+ break;
+ case "tr":
+ case "d":
+ if (trunk[1] && !isNaN(Number(trunk[1])))
+ alpha = Number(trunk[1]);
+ break;
+ case "map_Kd":
+ mapkd = this.parseMapKdString(trunk);
+ mapkd = mapkd.replace(/\\/g, "/");
+ }
+ }
+ }
+ }
+ if (mapkd != "") {
+ if (useSpecular) {
+ basicSpecularMethod = new SpecularBasicMethod();
+ basicSpecularMethod.specularColor = specularColor;
+ basicSpecularMethod.specular = specular;
+ var specularData = new SpecularData();
+ specularData.alpha = alpha;
+ specularData.basicSpecularMethod = basicSpecularMethod;
+ specularData.materialID = this._lastMtlID;
+ if (!this._materialSpecularData)
+ this._materialSpecularData = new Array();
+ this._materialSpecularData.push(specularData);
+ }
+ this._pAddDependency(this._lastMtlID, new URLRequest(mapkd));
+ }
+ else if (useColor && !isNaN(color)) {
+ var lm = new LoadedMaterial();
+ lm.materialID = this._lastMtlID;
+ if (alpha == 0)
+ console.log("Warning: an alpha value of 0 was found in mtl color tag (Tr or d) ref:" + this._lastMtlID + ", mesh(es) using it will be invisible!");
+ var cm;
+ if (this.materialMode < 2) {
+ cm = new TriangleMethodMaterial(color);
+ var colorMat = cm;
+ colorMat.alpha = alpha;
+ colorMat.diffuseColor = diffuseColor;
+ colorMat.repeat = true;
+ if (useSpecular) {
+ colorMat.specularColor = specularColor;
+ colorMat.specular = specular;
+ }
+ }
+ else {
+ cm = new TriangleMethodMaterial(color);
+ cm.materialMode = TriangleMaterialMode.MULTI_PASS;
+ var colorMultiMat = cm;
+ colorMultiMat.diffuseColor = diffuseColor;
+ colorMultiMat.repeat = true;
+ if (useSpecular) {
+ colorMultiMat.specularColor = specularColor;
+ colorMultiMat.specular = specular;
+ }
+ }
+ lm.cm = cm;
+ this._materialLoaded.push(lm);
+ if (this._meshes.length > 0)
+ this.applyMaterial(lm);
+ }
+ }
+ this._mtlLibLoaded = true;
+ };
+ OBJParser.prototype.parseMapKdString = function (trunk) {
+ var url = "";
+ var i;
+ var breakflag;
+ for (i = 1; i < trunk.length;) {
+ switch (trunk[i]) {
+ case "-blendu":
+ case "-blendv":
+ case "-cc":
+ case "-clamp":
+ case "-texres":
+ i += 2; //Skip ahead 1 attribute
+ break;
+ case "-mm":
+ i += 3; //Skip ahead 2 attributes
+ break;
+ case "-o":
+ case "-s":
+ case "-t":
+ i += 4; //Skip ahead 3 attributes
+ continue;
+ default:
+ breakflag = true;
+ break;
+ }
+ if (breakflag)
+ break;
+ }
+ for (i; i < trunk.length; i++) {
+ url += trunk[i];
+ url += " ";
+ }
+ //Remove the extraneous space and/or newline from the right side
+ url = url.replace(/\s+$/, "");
+ return url;
+ };
+ OBJParser.prototype.loadMtl = function (mtlurl) {
+ // Add raw-data dependency to queue and load dependencies now,
+ // which will pause the parsing in the meantime.
+ this._pAddDependency('mtl', new URLRequest(mtlurl), true);
+ this._pPauseAndRetrieveDependencies(); //
+ };
+ OBJParser.prototype.applyMaterial = function (lm) {
+ var decomposeID;
+ var mesh;
+ var tm;
+ var j;
+ var specularData;
+ for (var i = 0; i < this._meshes.length; ++i) {
+ mesh = this._meshes[i];
+ decomposeID = mesh.material.name.split("~");
+ if (decomposeID[0] == lm.materialID) {
+ if (lm.cm) {
+ if (mesh.material)
+ mesh.material = null;
+ mesh.material = lm.cm;
+ }
+ else if (lm.texture) {
+ if (this.materialMode < 2) {
+ tm = mesh.material;
+ tm.texture = lm.texture;
+ tm.color = lm.color;
+ tm.alpha = lm.alpha;
+ tm.repeat = true;
+ if (lm.specularMethod) {
+ // By setting the specularMethod property to null before assigning
+ // the actual method instance, we avoid having the properties of
+ // the new method being overridden with the settings from the old
+ // one, which is default behavior of the setter.
+ tm.specularMethod = null;
+ tm.specularMethod = lm.specularMethod;
+ }
+ else if (this._materialSpecularData) {
+ for (j = 0; j < this._materialSpecularData.length; ++j) {
+ specularData = this._materialSpecularData[j];
+ if (specularData.materialID == lm.materialID) {
+ tm.specularMethod = null; // Prevent property overwrite (see above)
+ tm.specularMethod = specularData.basicSpecularMethod;
+ tm.color = specularData.color;
+ tm.alpha = specularData.alpha;
+ break;
+ }
+ }
+ }
+ }
+ else {
+ tm = mesh.material;
+ tm.materialMode = TriangleMaterialMode.MULTI_PASS;
+ tm.texture = lm.texture;
+ tm.color = lm.color;
+ tm.repeat = true;
+ if (lm.specularMethod) {
+ // By setting the specularMethod property to null before assigning
+ // the actual method instance, we avoid having the properties of
+ // the new method being overridden with the settings from the old
+ // one, which is default behavior of the setter.
+ tm.specularMethod = null;
+ tm.specularMethod = lm.specularMethod;
+ }
+ else if (this._materialSpecularData) {
+ for (j = 0; j < this._materialSpecularData.length; ++j) {
+ specularData = this._materialSpecularData[j];
+ if (specularData.materialID == lm.materialID) {
+ tm.specularMethod = null; // Prevent property overwrite (see above)
+ tm.specularMethod = specularData.basicSpecularMethod;
+ tm.color = specularData.color;
+ break;
+ }
+ }
+ }
+ }
+ }
+ mesh.material.name = decomposeID[1] ? decomposeID[1] : decomposeID[0];
+ this._meshes.splice(i, 1);
+ --i;
+ }
+ }
+ if (lm.cm || tm)
+ this._pFinalizeAsset(lm.cm || tm);
+ };
+ OBJParser.prototype.applyMaterials = function () {
+ if (this._materialLoaded.length == 0)
+ return;
+ for (var i = 0; i < this._materialLoaded.length; ++i)
+ this.applyMaterial(this._materialLoaded[i]);
+ };
+ return OBJParser;
+})(ParserBase);
+var ObjectGroup = (function () {
+ function ObjectGroup() {
+ this.groups = new Array();
+ }
+ return ObjectGroup;
+})();
+var Group = (function () {
+ function Group() {
+ this.materialGroups = new Array();
+ }
+ return Group;
+})();
+var MaterialGroup = (function () {
+ function MaterialGroup() {
+ this.faces = new Array();
+ }
+ return MaterialGroup;
+})();
+var SpecularData = (function () {
+ function SpecularData() {
+ this.color = 0xFFFFFF;
+ this.alpha = 1;
+ }
+ return SpecularData;
+})();
+var LoadedMaterial = (function () {
+ function LoadedMaterial() {
+ this.color = 0xFFFFFF;
+ this.alpha = 1;
+ }
+ return LoadedMaterial;
+})();
+var FaceData = (function () {
+ function FaceData() {
+ this.vertexIndices = new Array();
+ this.uvIndices = new Array();
+ this.normalIndices = new Array();
+ this.indexIds = new Array(); // used for real index lookups
+ }
+ return FaceData;
+})();
+/**
+* Texture coordinates value object.
+*/
+var UV = (function () {
+ /**
+ * Creates a new UV
object.
+ *
+ * @param u [optional] The horizontal coordinate of the texture value. Defaults to 0.
+ * @param v [optional] The vertical coordinate of the texture value. Defaults to 0.
+ */
+ function UV(u, v) {
+ if (u === void 0) { u = 0; }
+ if (v === void 0) { v = 0; }
+ this._u = u;
+ this._v = v;
+ }
+ Object.defineProperty(UV.prototype, "v", {
+ /**
+ * Defines the vertical coordinate of the texture value.
+ */
+ get: function () {
+ return this._v;
+ },
+ set: function (value) {
+ this._v = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(UV.prototype, "u", {
+ /**
+ * Defines the horizontal coordinate of the texture value.
+ */
+ get: function () {
+ return this._u;
+ },
+ set: function (value) {
+ this._u = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * returns a new UV value Object
+ */
+ UV.prototype.clone = function () {
+ return new UV(this._u, this._v);
+ };
+ /**
+ * returns the value object as a string for trace/debug purpose
+ */
+ UV.prototype.toString = function () {
+ return this._u + "," + this._v;
+ };
+ return UV;
+})();
+var Vertex = (function () {
+ /**
+ * Creates a new Vertex
value object.
+ *
+ * @param x [optional] The x value. Defaults to 0.
+ * @param y [optional] The y value. Defaults to 0.
+ * @param z [optional] The z value. Defaults to 0.
+ * @param index [optional] The index value. Defaults is NaN.
+ */
+ function Vertex(x, y, z, index) {
+ if (x === void 0) { x = 0; }
+ if (y === void 0) { y = 0; }
+ if (z === void 0) { z = 0; }
+ if (index === void 0) { index = 0; }
+ this._x = x;
+ this._y = y;
+ this._z = z;
+ this._index = index;
+ }
+ Object.defineProperty(Vertex.prototype, "index", {
+ get: function () {
+ return this._index;
+ },
+ /**
+ * To define/store the index of value object
+ * @param ind The index
+ */
+ set: function (ind) {
+ this._index = ind;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Vertex.prototype, "x", {
+ /**
+ * To define/store the x value of the value object
+ * @param value The x value
+ */
+ get: function () {
+ return this._x;
+ },
+ set: function (value) {
+ this._x = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Vertex.prototype, "y", {
+ /**
+ * To define/store the y value of the value object
+ * @param value The y value
+ */
+ get: function () {
+ return this._y;
+ },
+ set: function (value) {
+ this._y = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Vertex.prototype, "z", {
+ /**
+ * To define/store the z value of the value object
+ * @param value The z value
+ */
+ get: function () {
+ return this._z;
+ },
+ set: function (value) {
+ this._z = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * returns a new Vertex value Object
+ */
+ Vertex.prototype.clone = function () {
+ return new Vertex(this._x, this._y, this._z);
+ };
+ return Vertex;
+})();
+module.exports = OBJParser;
+
+
+},{"awayjs-core/lib/containers/DisplayObjectContainer":undefined,"awayjs-core/lib/core/base/Geometry":undefined,"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/library/AssetType":undefined,"awayjs-core/lib/core/net/URLLoaderDataFormat":undefined,"awayjs-core/lib/core/net/URLRequest":undefined,"awayjs-core/lib/entities/Mesh":undefined,"awayjs-core/lib/parsers/ParserBase":undefined,"awayjs-core/lib/parsers/ParserUtils":undefined,"awayjs-stagegl/lib/materials/TriangleMaterialMode":undefined,"awayjs-stagegl/lib/materials/TriangleMethodMaterial":undefined,"awayjs-stagegl/lib/materials/methods/SpecularBasicMethod":undefined,"awayjs-stagegl/lib/materials/utils/DefaultMaterialManager":undefined}],"awayjs-renderergl/lib/parsers/Parsers":[function(require,module,exports){
+var AssetLoader = require("awayjs-core/lib/core/library/AssetLoader");
+var AWDParser = require("awayjs-renderergl/lib/parsers/AWDParser");
+var Max3DSParser = require("awayjs-renderergl/lib/parsers/Max3DSParser");
+var MD2Parser = require("awayjs-renderergl/lib/parsers/MD2Parser");
+var OBJParser = require("awayjs-renderergl/lib/parsers/OBJParser");
+/**
+ *
+ */
+var Parsers = (function () {
+ function Parsers() {
+ }
+ /**
+ * Short-hand function to enable all bundled parsers for auto-detection. In practice,
+ * this is the same as invoking enableParsers(Parsers.ALL_BUNDLED) on any of the
+ * loader classes SingleFileLoader, AssetLoader, AssetLibrary or Loader3D.
+ *
+ * See notes about file size in the documentation for the ALL_BUNDLED constant.
+ *
+ * @see away.parsers.Parsers.ALL_BUNDLED
+ */
+ Parsers.enableAllBundled = function () {
+ AssetLoader.enableParsers(Parsers.ALL_BUNDLED);
+ };
+ /**
+ * A list of all parsers that come bundled with Away3D. Use this to quickly
+ * enable support for all bundled parsers to the file format auto-detection
+ * feature, using any of the enableParsers() methods on loaders, e.g.:
+ *
+ * AssetLibrary.enableParsers(Parsers.ALL_BUNDLED);
+ *
+ * Beware however that this requires all parser classes to be included in the
+ * SWF file, which will add 50-100 kb to the file. When only a limited set of
+ * file formats are used, SWF file size can be saved by adding the parsers
+ * individually using AssetLibrary.enableParser()
+ *
+ * A third way is to specify a parser for each loaded file, thereby bypassing
+ * the auto-detection mechanisms altogether, while at the same time allowing
+ * any properties that are unique to that parser to be set for that load.
+ *
+ * The bundled parsers are:
+ *
+ * Merge
+ */
+var Merge = (function () {
+ /**
+ * @param keepMaterial [optional] Determines if the merged object uses the recevier mesh material information or keeps its source material(s). Defaults to false.
+ * If false and receiver object has multiple materials, the last material found in receiver submeshes is applied to the merged submesh(es).
+ * @param disposeSources [optional] Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false.
+ * If true, only receiver geometry and resulting mesh are kept in memory.
+ * @param objectSpace [optional] Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false.
+ */
+ function Merge(keepMaterial, disposeSources, objectSpace) {
+ if (keepMaterial === void 0) { keepMaterial = false; }
+ if (disposeSources === void 0) { disposeSources = false; }
+ if (objectSpace === void 0) { objectSpace = false; }
+ this._keepMaterial = keepMaterial;
+ this._disposeSources = disposeSources;
+ this._objectSpace = objectSpace;
+ }
+ Object.defineProperty(Merge.prototype, "disposeSources", {
+ get: function () {
+ return this._disposeSources;
+ },
+ /**
+ * Determines if the mesh and geometry source(s) used for the merging are disposed. Defaults to false.
+ */
+ set: function (b) {
+ this._disposeSources = b;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Merge.prototype, "keepMaterial", {
+ get: function () {
+ return this._keepMaterial;
+ },
+ /**
+ * Determines if the material source(s) used for the merging are disposed. Defaults to false.
+ */
+ set: function (b) {
+ this._keepMaterial = b;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(Merge.prototype, "objectSpace", {
+ get: function () {
+ return this._objectSpace;
+ },
+ /**
+ * Determines if source mesh(es) is/are merged using objectSpace or worldspace. Defaults to false.
+ */
+ set: function (b) {
+ this._objectSpace = b;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ /**
+ * Merges all the children of a container into a single Mesh. If no Mesh object is found, method returns the receiver without modification.
+ *
+ * @param receiver The Mesh to receive the merged contents of the container.
+ * @param objectContainer The DisplayObjectContainer holding the meshes to be mergd.
+ *
+ * @return The merged Mesh instance.
+ */
+ Merge.prototype.applyToContainer = function (receiver, objectContainer) {
+ this.reset();
+ //collect container meshes
+ this.parseContainer(receiver, objectContainer);
+ //collect receiver
+ this.collect(receiver, false);
+ //merge to receiver
+ this.merge(receiver, this._disposeSources);
+ };
+ /**
+ * Merges all the meshes found in the Array<Mesh> into a single Mesh.
+ *
+ * @param receiver The Mesh to receive the merged contents of the meshes.
+ * @param meshes A series of Meshes to be merged with the reciever mesh.
+ */
+ Merge.prototype.applyToMeshes = function (receiver, meshes) {
+ this.reset();
+ if (!meshes.length)
+ return;
+ for (var i = 0; i < meshes.length; i++)
+ if (meshes[i] != receiver)
+ this.collect(meshes[i], this._disposeSources);
+ //collect receiver
+ this.collect(receiver, false);
+ //merge to receiver
+ this.merge(receiver, this._disposeSources);
+ };
+ /**
+ * Merges 2 meshes into one. It is recommand to use apply when 2 meshes are to be merged. If more need to be merged, use either applyToMeshes or applyToContainer methods.
+ *
+ * @param receiver The Mesh to receive the merged contents of both meshes.
+ * @param mesh The Mesh to be merged with the receiver mesh
+ */
+ Merge.prototype.apply = function (receiver, mesh) {
+ this.reset();
+ //collect mesh
+ this.collect(mesh, this._disposeSources);
+ //collect receiver
+ this.collect(receiver, false);
+ //merge to receiver
+ this.merge(receiver, this._disposeSources);
+ };
+ Merge.prototype.reset = function () {
+ this._toDispose = new Array();
+ this._geomVOs = new Array();
+ };
+ Merge.prototype.merge = function (destMesh, dispose) {
+ var i /*uint*/;
+ var subIdx /*uint*/;
+ var oldGeom;
+ var destGeom;
+ var useSubMaterials;
+ oldGeom = destMesh.geometry;
+ destGeom = destMesh.geometry = new Geometry();
+ subIdx = destMesh.subMeshes.length;
+ // Only apply materials directly to sub-meshes if necessary,
+ // i.e. if there is more than one material available.
+ useSubMaterials = (this._geomVOs.length > 1);
+ for (i = 0; i < this._geomVOs.length; i++) {
+ var s /*uint*/;
+ var data;
+ var sub = new TriangleSubGeometry(true);
+ sub.autoDeriveNormals = false;
+ sub.autoDeriveTangents = false;
+ data = this._geomVOs[i];
+ sub.updateIndices(data.indices);
+ sub.updatePositions(data.vertices);
+ sub.updateVertexNormals(data.normals);
+ sub.updateVertexTangents(data.tangents);
+ sub.updateUVs(data.uvs);
+ destGeom.addSubGeometry(sub);
+ if (this._keepMaterial && useSubMaterials)
+ destMesh.subMeshes[subIdx].material = data.material;
+ }
+ if (this._keepMaterial && !useSubMaterials && this._geomVOs.length)
+ destMesh.material = this._geomVOs[0].material;
+ if (dispose) {
+ var m;
+ var len = this._toDispose.length;
+ for (var i; i < len; i++) {
+ m = this._toDispose[i];
+ m.geometry.dispose();
+ m.dispose();
+ }
+ //dispose of the original receiver geometry
+ oldGeom.dispose();
+ }
+ this._toDispose = null;
+ };
+ Merge.prototype.collect = function (mesh, dispose) {
+ if (mesh.geometry) {
+ var subIdx /*uint*/;
+ var subGeometries = mesh.geometry.subGeometries;
+ var calc /*uint*/;
+ for (subIdx = 0; subIdx < subGeometries.length; subIdx++) {
+ var i /*uint*/;
+ var len /*uint*/;
+ var iIdx /*uint*/, vIdx /*uint*/, nIdx /*uint*/, tIdx /*uint*/, uIdx /*uint*/;
+ var indexOffset /*uint*/;
+ var subGeom;
+ var vo;
+ var vertices;
+ var normals;
+ var tangents;
+ var pd, nd, td, ud;
+ subGeom = subGeometries[subIdx];
+ pd = subGeom.positions;
+ nd = subGeom.vertexNormals;
+ td = subGeom.vertexTangents;
+ ud = subGeom.uvs;
+ // Get (or create) a VO for this material
+ vo = this.getSubGeomData(mesh.subMeshes[subIdx].material || mesh.material);
+ // Vertices and normals are copied to temporary vectors, to be transformed
+ // before concatenated onto those of the data. This is unnecessary if no
+ // transformation will be performed, i.e. for object space merging.
+ vertices = (this._objectSpace) ? vo.vertices : new Array();
+ normals = (this._objectSpace) ? vo.normals : new Array();
+ tangents = (this._objectSpace) ? vo.tangents : new Array();
+ // Copy over vertex attributes
+ vIdx = vertices.length;
+ nIdx = normals.length;
+ tIdx = tangents.length;
+ uIdx = vo.uvs.length;
+ len = subGeom.numVertices;
+ for (i = 0; i < len; i++) {
+ calc = i * 3;
+ // Position
+ vertices[vIdx++] = pd[calc];
+ vertices[vIdx++] = pd[calc + 1];
+ vertices[vIdx++] = pd[calc + 2];
+ // Normal
+ normals[nIdx++] = nd[calc];
+ normals[nIdx++] = nd[calc + 1];
+ normals[nIdx++] = nd[calc + 2];
+ // Tangent
+ tangents[tIdx++] = td[calc];
+ tangents[tIdx++] = td[calc + 1];
+ tangents[tIdx++] = td[calc + 2];
+ // UV
+ vo.uvs[uIdx++] = ud[i * 2];
+ vo.uvs[uIdx++] = ud[i * 2 + 1];
+ }
+ // Copy over triangle indices
+ indexOffset = (!this._objectSpace) ? vo.vertices.length / 3 : 0;
+ iIdx = vo.indices.length;
+ len = subGeom.numTriangles;
+ for (i = 0; i < len; i++) {
+ calc = i * 3;
+ vo.indices[iIdx++] = subGeom.indices[calc] + indexOffset;
+ vo.indices[iIdx++] = subGeom.indices[calc + 1] + indexOffset;
+ vo.indices[iIdx++] = subGeom.indices[calc + 2] + indexOffset;
+ }
+ if (!this._objectSpace) {
+ mesh.sceneTransform.transformVectors(vertices, vertices);
+ Matrix3DUtils.deltaTransformVectors(mesh.sceneTransform, normals, normals);
+ Matrix3DUtils.deltaTransformVectors(mesh.sceneTransform, tangents, tangents);
+ // Copy vertex data from temporary (transformed) vectors
+ vIdx = vo.vertices.length;
+ nIdx = vo.normals.length;
+ tIdx = vo.tangents.length;
+ len = vertices.length;
+ for (i = 0; i < len; i++) {
+ vo.vertices[vIdx++] = vertices[i];
+ vo.normals[nIdx++] = normals[i];
+ vo.tangents[tIdx++] = tangents[i];
+ }
+ }
+ }
+ if (dispose)
+ this._toDispose.push(mesh);
+ }
+ };
+ Merge.prototype.getSubGeomData = function (material) {
+ var data;
+ if (this._keepMaterial) {
+ var i /*uint*/;
+ var len /*uint*/;
+ len = this._geomVOs.length;
+ for (i = 0; i < len; i++) {
+ if (this._geomVOs[i].material == material) {
+ data = this._geomVOs[i];
+ break;
+ }
+ }
+ }
+ else if (this._geomVOs.length) {
+ // If materials are not to be kept, all data can be
+ // put into a single VO, so return that one.
+ data = this._geomVOs[0];
+ }
+ // No data (for this material) found, create new.
+ if (!data) {
+ data = new GeometryVO();
+ data.vertices = new Array();
+ data.normals = new Array();
+ data.tangents = new Array();
+ data.uvs = new Array();
+ data.indices = new Array();
+ data.material = material;
+ this._geomVOs.push(data);
+ }
+ return data;
+ };
+ Merge.prototype.parseContainer = function (receiver, object) {
+ var child;
+ var i /*uint*/;
+ if (object instanceof Mesh && object != receiver)
+ this.collect(object, this._disposeSources);
+ for (i = 0; i < object.numChildren; ++i) {
+ child = object.getChildAt(i);
+ this.parseContainer(receiver, child);
+ }
+ };
+ return Merge;
+})();
+var GeometryVO = (function () {
+ function GeometryVO() {
+ }
+ return GeometryVO;
+})();
+module.exports = Merge;
+
+
+},{"awayjs-core/lib/core/base/Geometry":undefined,"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/geom/Matrix3DUtils":undefined,"awayjs-core/lib/entities/Mesh":undefined}],"awayjs-renderergl/lib/tools/data/ParticleGeometryTransform":[function(require,module,exports){
+/**
+ * ...
+ */
+var ParticleGeometryTransform = (function () {
+ function ParticleGeometryTransform() {
+ }
+ Object.defineProperty(ParticleGeometryTransform.prototype, "vertexTransform", {
+ get: function () {
+ return this._defaultVertexTransform;
+ },
+ set: function (value) {
+ this._defaultVertexTransform = value;
+ this._defaultInvVertexTransform = value.clone();
+ this._defaultInvVertexTransform.invert();
+ this._defaultInvVertexTransform.transpose();
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleGeometryTransform.prototype, "UVTransform", {
+ get: function () {
+ return this._defaultUVTransform;
+ },
+ set: function (value) {
+ this._defaultUVTransform = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(ParticleGeometryTransform.prototype, "invVertexTransform", {
+ get: function () {
+ return this._defaultInvVertexTransform;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ return ParticleGeometryTransform;
+})();
+module.exports = ParticleGeometryTransform;
+
+
+},{}],"awayjs-renderergl/lib/tools/helpers/ParticleGeometryHelper":[function(require,module,exports){
+var TriangleSubGeometry = require("awayjs-core/lib/core/base/TriangleSubGeometry");
+var Point = require("awayjs-core/lib/core/geom/Point");
+var Vector3D = require("awayjs-core/lib/core/geom/Vector3D");
+var ParticleData = require("awayjs-renderergl/lib/animators/data/ParticleData");
+var ParticleGeometry = require("awayjs-renderergl/lib/core/base/ParticleGeometry");
+/**
+ * ...
+ */
+var ParticleGeometryHelper = (function () {
+ function ParticleGeometryHelper() {
+ }
+ ParticleGeometryHelper.generateGeometry = function (geometries, transforms) {
+ if (transforms === void 0) { transforms = null; }
+ var indicesVector = new Array() /*uint*/;
+ var positionsVector = new Array();
+ var normalsVector = new Array();
+ var tangentsVector = new Array();
+ var uvsVector = new Array();
+ var vertexCounters = new Array() /*uint*/;
+ var particles = new Array();
+ var subGeometries = new Array();
+ var numParticles = geometries.length;
+ var sourceSubGeometries;
+ var sourceSubGeometry;
+ var numSubGeometries /*uint*/;
+ var indices /*uint*/;
+ var positions;
+ var normals;
+ var tangents;
+ var uvs;
+ var vertexCounter /*uint*/;
+ var subGeometry;
+ var i /*int*/;
+ var j /*int*/;
+ var sub2SubMap = new Array() /*int*/;
+ var tempVertex = new Vector3D;
+ var tempNormal = new Vector3D;
+ var tempTangents = new Vector3D;
+ var tempUV = new Point;
+ for (i = 0; i < numParticles; i++) {
+ sourceSubGeometries = geometries[i].subGeometries;
+ numSubGeometries = sourceSubGeometries.length;
+ for (var srcIndex = 0; srcIndex < numSubGeometries; srcIndex++) {
+ //create a different particle subgeometry group for each source subgeometry in a particle.
+ if (sub2SubMap.length <= srcIndex) {
+ sub2SubMap.push(subGeometries.length);
+ indicesVector.push(new Array());
+ positionsVector.push(new Array());
+ normalsVector.push(new Array());
+ tangentsVector.push(new Array());
+ uvsVector.push(new Array());
+ subGeometries.push(new TriangleSubGeometry(true));
+ vertexCounters.push(0);
+ }
+ sourceSubGeometry = sourceSubGeometries[srcIndex];
+ //add a new particle subgeometry if this source subgeometry will take us over the maxvertex limit
+ if (sourceSubGeometry.numVertices + vertexCounters[sub2SubMap[srcIndex]] > ParticleGeometryHelper.MAX_VERTEX) {
+ //update submap and add new subgeom vectors
+ sub2SubMap[srcIndex] = subGeometries.length;
+ indicesVector.push(new Array());
+ positionsVector.push(new Array());
+ normalsVector.push(new Array());
+ tangentsVector.push(new Array());
+ uvsVector.push(new Array());
+ subGeometries.push(new TriangleSubGeometry(true));
+ vertexCounters.push(0);
+ }
+ j = sub2SubMap[srcIndex];
+ //select the correct vector
+ indices = indicesVector[j];
+ positions = positionsVector[j];
+ normals = normalsVector[j];
+ tangents = tangentsVector[j];
+ uvs = uvsVector[j];
+ vertexCounter = vertexCounters[j];
+ subGeometry = subGeometries[j];
+ var particleData = new ParticleData();
+ particleData.numVertices = sourceSubGeometry.numVertices;
+ particleData.startVertexIndex = vertexCounter;
+ particleData.particleIndex = i;
+ particleData.subGeometry = subGeometry;
+ particles.push(particleData);
+ vertexCounters[j] += sourceSubGeometry.numVertices;
+ var k /*int*/;
+ var tempLen /*int*/;
+ var compact = sourceSubGeometry;
+ var product /*uint*/;
+ var sourcePositions;
+ var sourceNormals;
+ var sourceTangents;
+ var sourceUVs;
+ if (compact) {
+ tempLen = compact.numVertices;
+ compact.numTriangles;
+ sourcePositions = compact.positions;
+ sourceNormals = compact.vertexNormals;
+ sourceTangents = compact.vertexTangents;
+ sourceUVs = compact.uvs;
+ if (transforms) {
+ var particleGeometryTransform = transforms[i];
+ var vertexTransform = particleGeometryTransform.vertexTransform;
+ var invVertexTransform = particleGeometryTransform.invVertexTransform;
+ var UVTransform = particleGeometryTransform.UVTransform;
+ for (k = 0; k < tempLen; k++) {
+ /*
+ * 0 - 2: vertex position X, Y, Z
+ * 3 - 5: normal X, Y, Z
+ * 6 - 8: tangent X, Y, Z
+ * 9 - 10: U V
+ * 11 - 12: Secondary U V*/
+ product = k * 3;
+ tempVertex.x = sourcePositions[product];
+ tempVertex.y = sourcePositions[product + 1];
+ tempVertex.z = sourcePositions[product + 2];
+ tempNormal.x = sourceNormals[product];
+ tempNormal.y = sourceNormals[product + 1];
+ tempNormal.z = sourceNormals[product + 2];
+ tempTangents.x = sourceTangents[product];
+ tempTangents.y = sourceTangents[product + 1];
+ tempTangents.z = sourceTangents[product + 2];
+ tempUV.x = sourceUVs[k * 2];
+ tempUV.y = sourceUVs[k * 2 + 1];
+ if (vertexTransform) {
+ tempVertex = vertexTransform.transformVector(tempVertex);
+ tempNormal = invVertexTransform.deltaTransformVector(tempNormal);
+ tempTangents = invVertexTransform.deltaTransformVector(tempNormal);
+ }
+ if (UVTransform)
+ tempUV = UVTransform.transformPoint(tempUV);
+ //this is faster than that only push one data
+ sourcePositions.push(tempVertex.x, tempVertex.y, tempVertex.z);
+ sourceNormals.push(tempNormal.x, tempNormal.y, tempNormal.z);
+ sourceTangents.push(tempTangents.x, tempTangents.y, tempTangents.z);
+ sourceUVs.push(tempUV.x, tempUV.y);
+ }
+ }
+ else {
+ for (k = 0; k < tempLen; k++) {
+ product = k * 3;
+ //this is faster than that only push one data
+ positions.push(sourcePositions[product], sourcePositions[product + 1], sourcePositions[product + 2]);
+ normals.push(sourceNormals[product], sourceNormals[product + 1], sourceNormals[product + 2]);
+ tangents.push(sourceTangents[product], sourceTangents[product + 1], sourceTangents[product + 2]);
+ uvs.push(sourceUVs[k * 2], sourceUVs[k * 2 + 1]);
+ }
+ }
+ }
+ else {
+ }
+ var sourceIndices = sourceSubGeometry.indices;
+ tempLen = sourceSubGeometry.numTriangles;
+ for (k = 0; k < tempLen; k++) {
+ product = k * 3;
+ indices.push(sourceIndices[product] + vertexCounter, sourceIndices[product + 1] + vertexCounter, sourceIndices[product + 2] + vertexCounter);
+ }
+ }
+ }
+ var particleGeometry = new ParticleGeometry();
+ particleGeometry.particles = particles;
+ particleGeometry.numParticles = numParticles;
+ numParticles = subGeometries.length;
+ for (i = 0; i < numParticles; i++) {
+ subGeometry = subGeometries[i];
+ subGeometry.autoDeriveNormals = false;
+ subGeometry.autoDeriveTangents = false;
+ subGeometry.updateIndices(indicesVector[i]);
+ subGeometry.updatePositions(positionsVector[i]);
+ subGeometry.updateVertexNormals(normalsVector[i]);
+ subGeometry.updateVertexTangents(tangentsVector[i]);
+ subGeometry.updateUVs(uvsVector[i]);
+ particleGeometry.addSubGeometry(subGeometry);
+ }
+ return particleGeometry;
+ };
+ ParticleGeometryHelper.MAX_VERTEX = 65535;
+ return ParticleGeometryHelper;
+})();
+module.exports = ParticleGeometryHelper;
+
+
+},{"awayjs-core/lib/core/base/TriangleSubGeometry":undefined,"awayjs-core/lib/core/geom/Point":undefined,"awayjs-core/lib/core/geom/Vector3D":undefined,"awayjs-renderergl/lib/animators/data/ParticleData":undefined,"awayjs-renderergl/lib/core/base/ParticleGeometry":undefined}],"awayjs-renderergl/lib/utils/PerspectiveMatrix3D":[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 PerspectiveMatrix3D = (function (_super) {
+ __extends(PerspectiveMatrix3D, _super);
+ function PerspectiveMatrix3D(v) {
+ if (v === void 0) { v = null; }
+ _super.call(this, v);
+ }
+ PerspectiveMatrix3D.prototype.perspectiveFieldOfViewLH = function (fieldOfViewY, aspectRatio, zNear, zFar) {
+ var yScale = 1 / Math.tan(fieldOfViewY / 2);
+ var xScale = yScale / aspectRatio;
+ this.copyRawDataFrom([xScale, 0.0, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 0.0, zFar / (zFar - zNear), 1.0, 0.0, 0.0, (zNear * zFar) / (zNear - zFar), 0.0]);
+ };
+ return PerspectiveMatrix3D;
+})(Matrix3D);
+module.exports = PerspectiveMatrix3D;
+
+
+},{"awayjs-core/lib/core/geom/Matrix3D":undefined}]},{},[])
+
+
+//# sourceMappingURL=awayjs-renderergl.js.map
\ No newline at end of file
diff --git a/build/awayjs-renderergl.js.map b/build/awayjs-renderergl.js.map
new file mode 100644
index 000000000..a765c2e56
--- /dev/null
+++ b/build/awayjs-renderergl.js.map
@@ -0,0 +1,279 @@
+{
+ "version": 3,
+ "sources": [
+ "node_modules/browserify/node_modules/browser-pack/_prelude.js",
+ "animators/particleanimationset.ts",
+ "animators/particleanimator.ts",
+ "animators/skeletonanimationset.ts",
+ "animators/skeletonanimator.ts",
+ "animators/vertexanimationset.ts",
+ "animators/vertexanimator.ts",
+ "animators/data/animationsubgeometry.ts",
+ "animators/data/colorsegmentpoint.ts",
+ "animators/data/jointpose.ts",
+ "animators/data/particleanimationdata.ts",
+ "animators/data/particledata.ts",
+ "animators/data/particlepropertiesmode.ts",
+ "animators/data/particleproperties.ts",
+ "animators/data/skeletonjoint.ts",
+ "animators/data/skeletonpose.ts",
+ "animators/data/skeleton.ts",
+ "animators/data/vertexanimationmode.ts",
+ "animators/nodes/animationclipnodebase.ts",
+ "animators/nodes/particleaccelerationnode.ts",
+ "animators/nodes/particlebeziercurvenode.ts",
+ "animators/nodes/particlebillboardnode.ts",
+ "animators/nodes/particlecolornode.ts",
+ "animators/nodes/particlefollownode.ts",
+ "animators/nodes/particleinitialcolornode.ts",
+ "animators/nodes/particlenodebase.ts",
+ "animators/nodes/particleorbitnode.ts",
+ "animators/nodes/particleoscillatornode.ts",
+ "animators/nodes/particlepositionnode.ts",
+ "animators/nodes/particlerotatetoheadingnode.ts",
+ "animators/nodes/particlerotatetopositionnode.ts",
+ "animators/nodes/particlerotationalvelocitynode.ts",
+ "animators/nodes/particlescalenode.ts",
+ "animators/nodes/particlesegmentedcolornode.ts",
+ "animators/nodes/particlespritesheetnode.ts",
+ "animators/nodes/particletimenode.ts",
+ "animators/nodes/particleuvnode.ts",
+ "animators/nodes/particlevelocitynode.ts",
+ "animators/nodes/skeletonbinarylerpnode.ts",
+ "animators/nodes/skeletonclipnode.ts",
+ "animators/nodes/skeletondifferencenode.ts",
+ "animators/nodes/skeletondirectionalnode.ts",
+ "animators/nodes/skeletonnarylerpnode.ts",
+ "animators/nodes/vertexclipnode.ts",
+ "animators/states/animationclipstate.ts",
+ "animators/states/animationstatebase.ts",
+ "animators/states/iskeletonanimationstate.ts",
+ "animators/states/ivertexanimationstate.ts",
+ "animators/states/particleaccelerationstate.ts",
+ "animators/states/particlebeziercurvestate.ts",
+ "animators/states/particlebillboardstate.ts",
+ "animators/states/particlecolorstate.ts",
+ "animators/states/particlefollowstate.ts",
+ "animators/states/particleinitialcolorstate.ts",
+ "animators/states/particleorbitstate.ts",
+ "animators/states/particleoscillatorstate.ts",
+ "animators/states/particlepositionstate.ts",
+ "animators/states/particlerotatetoheadingstate.ts",
+ "animators/states/particlerotatetopositionstate.ts",
+ "animators/states/particlerotationalvelocitystate.ts",
+ "animators/states/particlescalestate.ts",
+ "animators/states/particlesegmentedcolorstate.ts",
+ "animators/states/particlespritesheetstate.ts",
+ "animators/states/particlestatebase.ts",
+ "animators/states/particletimestate.ts",
+ "animators/states/particleuvstate.ts",
+ "animators/states/particlevelocitystate.ts",
+ "animators/states/skeletonbinarylerpstate.ts",
+ "animators/states/skeletonclipstate.ts",
+ "animators/states/skeletondifferencestate.ts",
+ "animators/states/skeletondirectionalstate.ts",
+ "animators/states/skeletonnarylerpstate.ts",
+ "animators/states/vertexclipstate.ts",
+ "animators/transitions/crossfadetransitionnode.ts",
+ "animators/transitions/crossfadetransitionstate.ts",
+ "animators/transitions/crossfadetransition.ts",
+ "animators/transitions/ianimationtransition.ts",
+ "core/base/particlegeometry.ts",
+ "core/pick/jspickingcollider.ts",
+ "core/pick/pickingcolliderbase.ts",
+ "core/pick/shaderpicker.ts",
+ "events/animationstateevent.ts",
+ "materials/methods/ambientenvmapmethod.ts",
+ "materials/methods/diffusecelmethod.ts",
+ "materials/methods/diffusecompositemethod.ts",
+ "materials/methods/diffusedepthmethod.ts",
+ "materials/methods/diffusegradientmethod.ts",
+ "materials/methods/diffuselightmapmethod.ts",
+ "materials/methods/diffusesubsurfacemethod.ts",
+ "materials/methods/diffusewrapmethod.ts",
+ "materials/methods/effectalphamaskmethod.ts",
+ "materials/methods/effectcolormatrixmethod.ts",
+ "materials/methods/effectenvmapmethod.ts",
+ "materials/methods/effectfogmethod.ts",
+ "materials/methods/effectfresnelenvmapmethod.ts",
+ "materials/methods/effectlightmapmethod.ts",
+ "materials/methods/effectrefractionenvmapmethod.ts",
+ "materials/methods/effectrimlightmethod.ts",
+ "materials/methods/normalheightmapmethod.ts",
+ "materials/methods/normalsimplewatermethod.ts",
+ "materials/methods/shadowcascademethod.ts",
+ "materials/methods/shadowditheredmethod.ts",
+ "materials/methods/shadowfilteredmethod.ts",
+ "materials/methods/shadownearmethod.ts",
+ "materials/methods/shadowsoftmethod.ts",
+ "materials/methods/specularanisotropicmethod.ts",
+ "materials/methods/specularcelmethod.ts",
+ "materials/methods/specularcompositemethod.ts",
+ "materials/methods/specularfresnelmethod.ts",
+ "materials/methods/specularphongmethod.ts",
+ "materials/passes/singleobjectdepthpass.ts",
+ "parsers/awdparser.ts",
+ "parsers/md2parser.ts",
+ "parsers/md5animparser.ts",
+ "parsers/md5meshparser.ts",
+ "parsers/max3dsparser.ts",
+ "parsers/objparser.ts",
+ "parsers/parsers.ts",
+ "parsers/data/awdblock.ts",
+ "parsers/data/awdproperties.ts",
+ "parsers/data/baseframedata.ts",
+ "parsers/data/bitflags.ts",
+ "parsers/data/boundsdata.ts",
+ "parsers/data/facevo.ts",
+ "parsers/data/framedata.ts",
+ "parsers/data/hierarchydata.ts",
+ "parsers/data/materialvo.ts",
+ "parsers/data/objectvo.ts",
+ "parsers/data/texturevo.ts",
+ "parsers/data/vertexvo.ts",
+ "tools/commands/merge.ts",
+ "tools/data/particlegeometrytransform.ts",
+ "tools/helpers/particlegeometryhelper.ts",
+ "utils/perspectivematrix3d.ts"
+ ],
+ "names": [],
+ "mappings": "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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;o\n\t * initParticleFunc(prop:ParticleProperties)\n\t * {\n\t * \t\t//code for settings local properties\n\t * }\n\t *
\n\t *\n\t * Aside from setting any properties required in particle animation nodes using local static properties, the initParticleFunc function\n\t * is required to time node requirements as they may be needed. These properties on the ParticleProperties object can include\n\t * startTime
, duration
and delay
. The use of these properties is determined by the setting\n\t * arguments passed in the constructor of the particle animation set. By default, only the startTime
property is required.\n\t */\n\tpublic initParticleFunc:Function;\n\n\t/**\n\t * Initialiser function scope for static particle properties\n\t */\n\tpublic initParticleScope:Object;\n\n\t/**\n\t * Creates a new ParticleAnimationSet
\n\t *\n\t * @param [optional] usesDuration Defines whether the animation set uses the duration
data in its static properties to determine how long a particle is visible for. Defaults to false.\n\t * @param [optional] usesLooping Defines whether the animation set uses a looping timeframe for each particle determined by the startTime
, duration
and delay
data in its static properties function. Defaults to false. Requires usesDuration
to be true.\n\t * @param [optional] usesDelay Defines whether the animation set uses the delay
data in its static properties to determine how long a particle is hidden for. Defaults to false. Requires usesLooping
to be true.\n\t */\n\tconstructor(usesDuration:boolean = false, usesLooping:boolean = false, usesDelay:boolean = false)\n\t{\n\t\tsuper();\n\n\t\t//automatically add a particle time node to the set\n\t\tthis.addAnimation(this._timeNode = new ParticleTimeNode(usesDuration, usesLooping, usesDelay));\n\t}\n\n\t/**\n\t * Returns a vector of the particle animation nodes contained within the set.\n\t */\n\tpublic get particleNodes():ArrayParticleAnimator
object.\n\t *\n\t * @param particleAnimationSet The animation data set containing the particle animations used by the animator.\n\t */\n\tconstructor(particleAnimationSet:ParticleAnimationSet)\n\t{\n\t\tsuper(particleAnimationSet);\n\t\tthis._particleAnimationSet = particleAnimationSet;\n\n\t\tvar state:ParticleStateBase;\n\t\tvar node:ParticleNodeBase;\n\n\t\tfor (var i:number = 0; i < this._particleAnimationSet.particleNodes.length; i++) {\n\t\t\tnode = this._particleAnimationSet.particleNodes[i];\n\t\t\tstate = SkeletonAnimationSet
object.\n\t *\n\t * @param jointsPerVertex Sets the amount of skeleton joints that can be linked to a single vertex via skinned weight values. For GPU-base animation, the maximum allowed value is 4. Defaults to 4.\n\t */\n\tconstructor(jointsPerVertex:number /*uint*/ = 4)\n\t{\n\t\tsuper();\n\n\t\tthis._jointsPerVertex = jointsPerVertex;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase):string\n\t{\n\t\tvar len:number /*uint*/ = shaderObject.animatableAttributes.length;\n\n\t\tvar indexOffset0:number /*uint*/ = shaderObject.numUsedVertexConstants;\n\t\tvar indexOffset1:number /*uint*/ = indexOffset0 + 1;\n\t\tvar indexOffset2:number /*uint*/ = indexOffset0 + 2;\n\t\tvar indexStream:string = \"va\" + shaderObject.numUsedStreams;\n\t\tvar weightStream:string = \"va\" + (shaderObject.numUsedStreams + 1);\n\t\tvar indices:ArraySkeletonAnimator
object.\n\t *\n\t * @param skeletonAnimationSet The animation data set containing the skeleton animations used by the animator.\n\t * @param skeleton The skeleton object used for calculating the resulting global matrices for transforming skinned mesh data.\n\t * @param forceCPU Optional value that only allows the animator to perform calculation on the CPU. Defaults to false.\n\t */\n\tconstructor(animationSet:SkeletonAnimationSet, skeleton:Skeleton, forceCPU:boolean = false)\n\t{\n\t\tsuper(animationSet);\n\n\t\tthis._skeleton = skeleton;\n\t\tthis._forceCPU = forceCPU;\n\t\tthis._jointsPerVertex = animationSet.jointsPerVertex;\n\n\t\tthis._numJoints = this._skeleton.numJoints;\n\t\tthis._globalMatrices = new ArrayVertexAnimationSet
object.\n\t *\n\t * @param numPoses The number of poses made available at once to the GPU animation code.\n\t * @param blendMode Optional value for setting the animation mode of the vertex animator object.\n\t *\n\t * @see away3d.animators.data.VertexAnimationMode\n\t */\n\tconstructor(numPoses:number /*uint*/ = 2, blendMode:string = \"absolute\")\n\t{\n\t\tsuper();\n\t\tthis._numPoses = numPoses;\n\t\tthis._blendMode = blendMode;\n\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase):string\n\t{\n\t\tif (this._blendMode == VertexAnimationMode.ABSOLUTE)\n\t\t\treturn this.getAbsoluteAGALCode(shaderObject);\n\t\telse\n\t\t\treturn this.getAdditiveAGALCode(shaderObject);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic activate(shaderObject:ShaderObjectBase, stage:Stage)\n\t{\n//\t\t\tvar uID:number = pass._iUniqueId;\n//\t\t\tthis._uploadNormals = VertexAnimator
object.\n\t *\n\t * @param vertexAnimationSet The animation data set containing the vertex animations used by the animator.\n\t */\n\tconstructor(vertexAnimationSet:VertexAnimationSet)\n\t{\n\t\tsuper(vertexAnimationSet);\n\n\t\tthis._vertexAnimationSet = vertexAnimationSet;\n\t\tthis._numPoses = vertexAnimationSet.numPoses;\n\t\tthis._blendMode = vertexAnimationSet.blendMode;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic clone():AnimatorBase\n\t{\n\t\treturn new VertexAnimator(this._vertexAnimationSet);\n\t}\n\n\t/**\n\t * Plays a sequence with a given name. If the sequence is not found, it may not be loaded yet, and it will retry every frame.\n\t * @param sequenceName The name of the clip to be played.\n\t */\n\tpublic play(name:string, transition:IAnimationTransition = null, offset:number = NaN)\n\t{\n\t\tif (this._pActiveAnimationName == name)\n\t\t\treturn;\n\n\t\tthis._pActiveAnimationName = name;\n\n\t\t//TODO: implement transitions in vertex animator\n\n\t\tif (!this._pAnimationSet.hasAnimation(name))\n\t\t\tthrow new Error(\"Animation root node \" + name + \" not found!\");\n\n\t\tthis._pActiveNode = this._pAnimationSet.getAnimation(name);\n\n\t\tthis._pActiveState = this.getAnimationState(this._pActiveNode);\n\n\t\tif (this.updatePosition) {\n\t\t\t//update straight away to reset position deltas\n\t\t\tthis._pActiveState.update(this._pAbsoluteTime);\n\t\t\tthis._pActiveState.positionDelta;\n\t\t}\n\n\t\tthis._activeVertexState = useDuration
are enabled in the constructor.\n\t *\n\t * @see away.animators.ParticleAnimationSet\n\t */\n\tpublic duration:number;\n\n\t/**\n\t * The delay between cycles of the particle, an optional value used when the particle aniamtion set settings for useLooping
and useDelay
are enabled in the constructor.\n\t *\n\t * @see away.animators.ParticleAnimationSet\n\t */\n\tpublic delay:number;\n}\n\nexport = ParticleProperties;",
+ "/**\n * A value obect representing a single joint in a skeleton object.\n *\n * @see away.animators.Skeleton\n */\nclass SkeletonJoint\n{\n\t/**\n\t * The index of the parent joint in the skeleton's joints vector.\n\t *\n\t * @see away.animators.Skeleton#joints\n\t */\n\tpublic parentIndex:number /*int*/ = -1;\n\n\t/**\n\t * The name of the joint\n\t */\n\tpublic name:string; // intention is that this should be used only at load time, not in the main loop\n\n\t/**\n\t * The inverse bind pose matrix, as raw data, used to transform vertices to bind joint space in preparation for transformation using the joint matrix.\n\t */\n\tpublic inverseBindPose:ArraySkeletonJoint
object\n\t */\n\tconstructor()\n\t{\n\t}\n}\n\nexport = SkeletonJoint;",
+ "import JointPose\t\t\t\t\t\t= require(\"awayjs-renderergl/lib/animators/data/JointPose\");\n\nimport AssetType\t\t\t\t\t\t= require(\"awayjs-core/lib/core/library/AssetType\");\nimport IAsset\t\t\t\t\t\t\t= require(\"awayjs-core/lib/core/library/IAsset\");\nimport NamedAssetBase\t\t\t\t\t= require(\"awayjs-core/lib/core/library/NamedAssetBase\");\n\n/**\n * A collection of pose objects, determining the pose for an entire skeleton.\n * The jointPoses
vector object corresponds to a skeleton's joints
vector object, however, there is no\n * reference to a skeleton's instance, since several skeletons can be influenced by the same pose (eg: animation\n * clips are added to any animator with a valid skeleton)\n *\n * @see away.animators.Skeleton\n * @see away.animators.JointPose\n */\nclass SkeletonPose extends NamedAssetBase implements IAsset\n{\n\t/**\n\t * A flat list of pose objects that comprise the skeleton pose. The pose indices correspond to the target skeleton's joint indices.\n\t *\n\t * @see away.animators.Skeleton#joints\n\t */\n\tpublic jointPoses:ArraySkeletonPose
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.jointPoses = new ArraySkeletonPose
object, with a dulpicate of its component joint poses.\n\t *\n\t * @return SkeletonPose\n\t */\n\tpublic clone():SkeletonPose\n\t{\n\t\tvar clone:SkeletonPose = new SkeletonPose();\n\t\tvar numJointPoses:number /*uint*/ = this.jointPoses.length;\n\t\tfor (var i:number /*uint*/ = 0; i < numJointPoses; i++) {\n\t\t\tvar cloneJointPose:JointPose = new JointPose();\n\t\t\tvar thisJointPose:JointPose = this.jointPoses[i];\n\t\t\tcloneJointPose.name = thisJointPose.name;\n\t\t\tcloneJointPose.copyFrom(thisJointPose);\n\t\t\tclone.jointPoses[i] = cloneJointPose;\n\t\t}\n\t\treturn clone;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.jointPoses.length = 0;\n\t}\n}\n\nexport = SkeletonPose;",
+ "import SkeletonJoint\t\t\t\t\t= require(\"awayjs-renderergl/lib/animators/data/SkeletonJoint\");\n\nimport AssetType\t\t\t\t\t\t= require(\"awayjs-core/lib/core/library/AssetType\");\nimport IAsset\t\t\t\t\t\t\t= require(\"awayjs-core/lib/core/library/IAsset\");\nimport NamedAssetBase\t\t\t\t\t= require(\"awayjs-core/lib/core/library/NamedAssetBase\");\n\n/**\n * A Skeleton object is a hierarchical grouping of joint objects that can be used for skeletal animation.\n *\n * @see away.animators.SkeletonJoint\n */\nclass Skeleton extends NamedAssetBase implements IAsset\n{\n\t/**\n\t * A flat list of joint objects that comprise the skeleton. Every joint except for the root has a parentIndex\n\t * property that is an index into this list.\n\t * A child joint should always have a higher index than its parent.\n\t */\n\tpublic joints:ArraySkeleton
object\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\t// in the long run, it might be a better idea to not store Joint objects, but keep all data in Vectors, that we can upload easily?\n\t\tthis.joints = new ArrayAnimationClipNodeBase
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * Updates the node's final frame stitch state.\n\t *\n\t * @see #stitchFinalFrame\n\t */\n\tpublic _pUpdateStitch()\n\t{\n\t\tthis._pStitchDirty = false;\n\n\t\tthis._pLastFrame = (this._pStitchFinalFrame)? this._pNumFrames : this._pNumFrames - 1;\n\n\t\tthis._pTotalDuration = 0;\n\t\tthis._pTotalDelta.x = 0;\n\t\tthis._pTotalDelta.y = 0;\n\t\tthis._pTotalDelta.z = 0;\n\t}\n}\n\nexport = AnimationClipNodeBase;",
+ "import Vector3D\t\t\t\t\t\t\t= require(\"awayjs-core/lib/core/geom/Vector3D\");\n\nimport AnimatorBase\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/animators/AnimatorBase\");\nimport AnimationRegisterCache\t\t\t= require(\"awayjs-stagegl/lib/animators/data/AnimationRegisterCache\");\nimport ShaderObjectBase\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderObjectBase\");\nimport ShaderRegisterElement\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement\");\n\nimport ParticleProperties\t\t\t\t= require(\"awayjs-renderergl/lib/animators/data/ParticleProperties\");\nimport ParticlePropertiesMode\t\t\t= require(\"awayjs-renderergl/lib/animators/data/ParticlePropertiesMode\");\nimport ParticleNodeBase\t\t\t\t\t= require(\"awayjs-renderergl/lib/animators/nodes/ParticleNodeBase\");\nimport ParticleAccelerationState\t\t= require(\"awayjs-renderergl/lib/animators/states/ParticleAccelerationState\");\n\n/**\n * A particle animation node used to apply a constant acceleration vector to the motion of a particle.\n */\nclass ParticleAccelerationNode extends ParticleNodeBase\n{\n\t/** @private */\n\tpublic _acceleration:Vector3D;\n\n\t/**\n\t * Reference for acceleration node properties on a single particle (when in local property mode).\n\t * Expects a Vector3D
object representing the direction of acceleration on the particle.\n\t */\n\tpublic static ACCELERATION_VECTOR3D:string = \"AccelerationVector3D\";\n\n\t/**\n\t * Creates a new ParticleAccelerationNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.\n\t */\n\tconstructor(mode:number /*uint*/, acceleration:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleAcceleration\", mode, 3);\n\n\t\tthis._pStateClass = ParticleAccelerationState;\n\n\t\tthis._acceleration = acceleration || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic pGetAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar accelerationValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleAccelerationState.ACCELERATION_INDEX, accelerationValue.index);\n\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\n\t\tvar code:string = \"mul \" + temp + \",\" + animationRegisterCache.vertexTime + \",\" + accelerationValue + \"\\n\";\n\n\t\tif (animationRegisterCache.needVelocity) {\n\t\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tcode += \"mul \" + temp2 + \",\" + temp + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + temp2 + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t}\n\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\n\t\tcode += \"mul \" + temp + \",\" + temp + \",\" + animationRegisterCache.vertexTime + \"\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + temp + \",\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleAccelerationState\n\t{\n\t\treturn Vector3D
object representing the control point position (0, 1, 2) of the curve.\n\t */\n\tpublic static BEZIER_CONTROL_VECTOR3D:string = \"BezierControlVector3D\";\n\n\t/**\n\t * Reference for bezier curve node properties on a single particle (when in local property mode).\n\t * Expects a Vector3D
object representing the end point position (0, 1, 2) of the curve.\n\t */\n\tpublic static BEZIER_END_VECTOR3D:string = \"BezierEndVector3D\";\n\n\t/**\n\t * Creates a new ParticleBezierCurveNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] controlPoint Defines the default control point of the node, used when in global mode.\n\t * @param [optional] endPoint Defines the default end point of the node, used when in global mode.\n\t */\n\tconstructor(mode:number /*uint*/, controlPoint:Vector3D = null, endPoint:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleBezierCurve\", mode, 6);\n\n\t\tthis._pStateClass = ParticleBezierCurveState;\n\n\t\tthis._iControlPoint = controlPoint || new Vector3D();\n\t\tthis._iEndPoint = endPoint || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar controlValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_CONTROL_INDEX, controlValue.index);\n\n\t\tvar endValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleBezierCurveState.BEZIER_END_INDEX, endValue.index);\n\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar rev_time:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 0);\n\t\tvar time_2:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 1);\n\t\tvar time_temp:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 2);\n\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar distance:ShaderRegisterElement = new ShaderRegisterElement(temp2.regName, temp2.index);\n\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\n\t\tvar code:string = \"\";\n\t\tcode += \"sub \" + rev_time + \",\" + animationRegisterCache.vertexOneConst + \",\" + animationRegisterCache.vertexLife + \"\\n\";\n\t\tcode += \"mul \" + time_2 + \",\" + animationRegisterCache.vertexLife + \",\" + animationRegisterCache.vertexLife + \"\\n\";\n\n\t\tcode += \"mul \" + time_temp + \",\" + animationRegisterCache.vertexLife + \",\" + rev_time + \"\\n\";\n\t\tcode += \"mul \" + time_temp + \",\" + time_temp + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\tcode += \"mul \" + distance + \".xyz,\" + time_temp + \",\" + controlValue + \"\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\tcode += \"mul \" + distance + \".xyz,\" + time_2 + \",\" + endValue + \"\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\n\t\tif (animationRegisterCache.needVelocity) {\n\t\t\tcode += \"mul \" + time_2 + \",\" + animationRegisterCache.vertexLife + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\tcode += \"sub \" + time_temp + \",\" + animationRegisterCache.vertexOneConst + \",\" + time_2 + \"\\n\";\n\t\t\tcode += \"mul \" + time_temp + \",\" + animationRegisterCache.vertexTwoConst + \",\" + time_temp + \"\\n\";\n\t\t\tcode += \"mul \" + distance + \".xyz,\" + controlValue + \",\" + time_temp + \"\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t\tcode += \"mul \" + distance + \".xyz,\" + endValue + \",\" + time_2 + \"\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleBezierCurveState\n\t{\n\t\treturn ParticleBillboardNode
\n\t */\n\tconstructor(billboardAxis:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleBillboard\", ParticlePropertiesMode.GLOBAL, 0, 4);\n\n\t\tthis._pStateClass = ParticleBillboardState;\n\n\t\tthis._iBillboardAxis = billboardAxis;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar rotationMatrixRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleBillboardState.MATRIX_INDEX, rotationMatrixRegister.index);\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\n\t\tvar code:string = \"m33 \" + temp + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \",\" + rotationMatrixRegister + \"\\n\" +\n\t\t\t\t\t\t \"mov \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n\n\t\tvar shaderRegisterElement:ShaderRegisterElement;\n\t\tfor (var i:number /*uint*/ = 0; i < animationRegisterCache.rotationRegisters.length; i++) {\n\t\t\tshaderRegisterElement = animationRegisterCache.rotationRegisters[i];\n\t\t\tcode += \"m33 \" + temp + \".xyz,\" + shaderRegisterElement + \",\" + rotationMatrixRegister + \"\\n\" +\n\t\t\t\t\t\"mov \" + shaderRegisterElement + \".xyz,\" + shaderRegisterElement + \"\\n\";\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleBillboardState\n\t{\n\t\treturn ColorTransform
object representing the start color transform applied to the particle.\n\t */\n\tpublic static COLOR_START_COLORTRANSFORM:string = \"ColorStartColorTransform\";\n\n\t/**\n\t * Reference for color node properties on a single particle (when in local property mode).\n\t * Expects a ColorTransform
object representing the end color transform applied to the particle.\n\t */\n\tpublic static COLOR_END_COLORTRANSFORM:string = \"ColorEndColorTransform\";\n\n\t/**\n\t * Creates a new ParticleColorNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] usesMultiplier Defines whether the node uses multiplier data in the shader for its color transformations. Defaults to true.\n\t * @param [optional] usesOffset Defines whether the node uses offset data in the shader for its color transformations. Defaults to true.\n\t * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the animation independent of particle duration. Defaults to false.\n\t * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.\n\t * @param [optional] startColor Defines the default start color transform of the node, when in global mode.\n\t * @param [optional] endColor Defines the default end color transform of the node, when in global mode.\n\t * @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n\t * @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n\t */\n\tconstructor(mode:number /*uint*/, usesMultiplier:boolean = true, usesOffset:boolean = true, usesCycle:boolean = false, usesPhase:boolean = false, startColor:ColorTransform = null, endColor:ColorTransform = null, cycleDuration:number = 1, cyclePhase:number = 0)\n\t{\n\t\tsuper(\"ParticleColor\", mode, (usesMultiplier && usesOffset)? 16 : 8, ParticleAnimationSet.COLOR_PRIORITY);\n\n\t\tthis._pStateClass = ParticleColorState;\n\n\t\tthis._iUsesMultiplier = usesMultiplier;\n\t\tthis._iUsesOffset = usesOffset;\n\t\tthis._iUsesCycle = usesCycle;\n\t\tthis._iUsesPhase = usesPhase;\n\n\t\tthis._iStartColor = startColor || new ColorTransform();\n\t\tthis._iEndColor = endColor || new ColorTransform();\n\t\tthis._iCycleDuration = cycleDuration;\n\t\tthis._iCyclePhase = cyclePhase;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar code:string = \"\";\n\t\tif (animationRegisterCache.needFragmentAnimation) {\n\t\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\n\t\t\tif (this._iUsesCycle) {\n\t\t\t\tvar cycleConst:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleColorState.CYCLE_INDEX, cycleConst.index);\n\n\t\t\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\t\t\t\tvar sin:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\t\t\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\n\t\t\t\tcode += \"mul \" + sin + \",\" + animationRegisterCache.vertexTime + \",\" + cycleConst + \".x\\n\";\n\n\t\t\t\tif (this._iUsesPhase)\n\t\t\t\t\tcode += \"add \" + sin + \",\" + sin + \",\" + cycleConst + \".y\\n\";\n\n\t\t\t\tcode += \"sin \" + sin + \",\" + sin + \"\\n\";\n\t\t\t}\n\n\t\t\tif (this._iUsesMultiplier) {\n\t\t\t\tvar startMultiplierValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\t\t\tvar deltaMultiplierValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleColorState.START_MULTIPLIER_INDEX, startMultiplierValue.index);\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleColorState.DELTA_MULTIPLIER_INDEX, deltaMultiplierValue.index);\n\n\t\t\t\tcode += \"mul \" + temp + \",\" + deltaMultiplierValue + \",\" + (this._iUsesCycle? sin : animationRegisterCache.vertexLife) + \"\\n\";\n\t\t\t\tcode += \"add \" + temp + \",\" + temp + \",\" + startMultiplierValue + \"\\n\";\n\t\t\t\tcode += \"mul \" + animationRegisterCache.colorMulTarget + \",\" + temp + \",\" + animationRegisterCache.colorMulTarget + \"\\n\";\n\t\t\t}\n\n\t\t\tif (this._iUsesOffset) {\n\t\t\t\tvar startOffsetValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();\n\t\t\t\tvar deltaOffsetValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();\n\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleColorState.START_OFFSET_INDEX, startOffsetValue.index);\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleColorState.DELTA_OFFSET_INDEX, deltaOffsetValue.index);\n\n\t\t\t\tcode += \"mul \" + temp + \",\" + deltaOffsetValue + \",\" + (this._iUsesCycle? sin : animationRegisterCache.vertexLife) + \"\\n\";\n\t\t\t\tcode += \"add \" + temp + \",\" + temp + \",\" + startOffsetValue + \"\\n\";\n\t\t\t\tcode += \"add \" + animationRegisterCache.colorAddTarget + \",\" + temp + \",\" + animationRegisterCache.colorAddTarget + \"\\n\";\n\t\t\t}\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleColorState\n\t{\n\t\treturn ParticleFollowNode
\n\t *\n\t * @param [optional] usesPosition Defines wehether the individual particle reacts to the position of the target.\n\t * @param [optional] usesRotation Defines wehether the individual particle reacts to the rotation of the target.\n\t * @param [optional] smooth Defines wehether the state calculate the interpolated value.\n\t */\n\tconstructor(usesPosition:boolean = true, usesRotation:boolean = true, smooth:boolean = false)\n\t{\n\t\tsuper(\"ParticleFollow\", ParticlePropertiesMode.LOCAL_DYNAMIC, (usesPosition && usesRotation)? 6 : 3, ParticleAnimationSet.POST_PRIORITY);\n\n\t\tthis._pStateClass = ParticleFollowState;\n\n\t\tthis._iUsesPosition = usesPosition;\n\t\tthis._iUsesRotation = usesRotation;\n\t\tthis._iSmooth = smooth;\n\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\t//TODO: use Quaternion to implement this function\n\t\tvar code:string = \"\";\n\t\tif (this._iUsesRotation) {\n\t\t\tvar rotationAttribute:ShaderRegisterElement = animationRegisterCache.getFreeVertexAttribute();\n\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleFollowState.FOLLOW_ROTATION_INDEX, rotationAttribute.index);\n\n\t\t\tvar temp1:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp1, 1);\n\t\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp2, 1);\n\t\t\tvar temp3:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\n\t\t\tvar temp4:ShaderRegisterElement;\n\t\t\tif (animationRegisterCache.hasBillboard) {\n\t\t\t\tanimationRegisterCache.addVertexTempUsages(temp3, 1);\n\t\t\t\ttemp4 = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\t}\n\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp1);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp2);\n\t\t\tif (animationRegisterCache.hasBillboard)\n\t\t\t\tanimationRegisterCache.removeVertexTempUsage(temp3);\n\n\t\t\tvar len:number /*int*/ = animationRegisterCache.rotationRegisters.length;\n\t\t\tvar i:number /*int*/;\n\n\t\t\t//x axis\n\t\t\tcode += \"mov \" + temp1 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp1 + \".x,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"sin \" + temp3 + \".y,\" + rotationAttribute + \".x\\n\";\n\t\t\tcode += \"cos \" + temp3 + \".z,\" + rotationAttribute + \".x\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".x,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".y,\" + temp3 + \".z\\n\";\n\t\t\tcode += \"neg \" + temp2 + \".z,\" + temp3 + \".y\\n\";\n\n\t\t\tif (animationRegisterCache.hasBillboard)\n\t\t\t\tcode += \"m33 \" + temp4 + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\telse {\n\t\t\t\tcode += \"m33 \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\t\tfor (i = 0; i < len; i++)\n\t\t\t\t\tcode += \"m33 \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n\t\t\t}\n\n\t\t\t//y axis\n\t\t\tcode += \"mov \" + temp1 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"cos \" + temp1 + \".x,\" + rotationAttribute + \".y\\n\";\n\t\t\tcode += \"sin \" + temp1 + \".z,\" + rotationAttribute + \".y\\n\";\n\t\t\tcode += \"mov \" + temp2 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".y,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"neg \" + temp3 + \".x,\" + temp1 + \".z\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".z,\" + temp1 + \".x\\n\";\n\n\t\t\tif (animationRegisterCache.hasBillboard)\n\t\t\t\tcode += \"m33 \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + temp1 + \"\\n\";\n\t\t\telse {\n\t\t\t\tcode += \"m33 \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\t\tfor (i = 0; i < len; i++)\n\t\t\t\t\tcode += \"m33 \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n\t\t\t}\n\n\t\t\t//z axis\n\t\t\tcode += \"mov \" + temp2 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"sin \" + temp2 + \".x,\" + rotationAttribute + \".z\\n\";\n\t\t\tcode += \"cos \" + temp2 + \".y,\" + rotationAttribute + \".z\\n\";\n\t\t\tcode += \"mov \" + temp1 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp1 + \".x,\" + temp2 + \".y\\n\";\n\t\t\tcode += \"neg \" + temp1 + \".y,\" + temp2 + \".x\\n\";\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".z,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\n\t\t\tif (animationRegisterCache.hasBillboard) {\n\t\t\t\tcode += \"m33 \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + temp1 + \"\\n\";\n\t\t\t\tcode += \"sub \" + temp4 + \".xyz,\" + temp4 + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\t\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp4 + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\t\t} else {\n\t\t\t\tcode += \"m33 \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\t\tfor (i = 0; i < len; i++)\n\t\t\t\t\tcode += \"m33 \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n\t\t\t}\n\n\t\t}\n\n\t\tif (this._iUsesPosition) {\n\t\t\tvar positionAttribute:ShaderRegisterElement = animationRegisterCache.getFreeVertexAttribute();\n\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleFollowState.FOLLOW_POSITION_INDEX, positionAttribute.index);\n\t\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + positionAttribute + \",\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleFollowState\n\t{\n\t\treturn ColorTransform
object representing the color transform applied to the particle.\n\t */\n\tpublic static COLOR_INITIAL_COLORTRANSFORM:string = \"ColorInitialColorTransform\";\n\n\tconstructor(mode:number /*uint*/, usesMultiplier:boolean = true, usesOffset:boolean = false, initialColor:ColorTransform = null)\n\t{\n\t\tsuper(\"ParticleInitialColor\", mode, (usesMultiplier && usesOffset)? 8 : 4, ParticleAnimationSet.COLOR_PRIORITY);\n\n\t\tthis._pStateClass = ParticleInitialColorState;\n\n\t\tthis._iUsesMultiplier = usesMultiplier;\n\t\tthis._iUsesOffset = usesOffset;\n\t\tthis._iInitialColor = initialColor || new ColorTransform();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar code:string = \"\";\n\t\tif (animationRegisterCache.needFragmentAnimation) {\n\n\t\t\tif (this._iUsesMultiplier) {\n\t\t\t\tvar multiplierValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleInitialColorState.MULTIPLIER_INDEX, multiplierValue.index);\n\n\t\t\t\tcode += \"mul \" + animationRegisterCache.colorMulTarget + \",\" + multiplierValue + \",\" + animationRegisterCache.colorMulTarget + \"\\n\";\n\t\t\t}\n\n\t\t\tif (this._iUsesOffset) {\n\t\t\t\tvar offsetValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();\n\t\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleInitialColorState.OFFSET_INDEX, offsetValue.index);\n\n\t\t\t\tcode += \"add \" + animationRegisterCache.colorAddTarget + \",\" + offsetValue + \",\" + animationRegisterCache.colorAddTarget + \"\\n\";\n\t\t\t}\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _iProcessAnimationSetting(particleAnimationSet:ParticleAnimationSet)\n\t{\n\t\tif (this._iUsesMultiplier)\n\t\t\tparticleAnimationSet.hasColorMulNode = true;\n\t\tif (this._iUsesOffset)\n\t\t\tparticleAnimationSet.hasColorAddNode = true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _iGeneratePropertyOfOneParticle(param:ParticleProperties)\n\t{\n\t\tvar initialColor:ColorTransform = param[ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM];\n\t\tif (!initialColor)\n\t\t\tthrow(new Error(\"there is no \" + ParticleInitialColorNode.COLOR_INITIAL_COLORTRANSFORM + \" in param!\"));\n\n\t\tvar i:number /*uint*/ = 0;\n\n\t\t//multiplier\n\t\tif (this._iUsesMultiplier) {\n\t\t\tthis._pOneData[i++] = initialColor.redMultiplier;\n\t\t\tthis._pOneData[i++] = initialColor.greenMultiplier;\n\t\t\tthis._pOneData[i++] = initialColor.blueMultiplier;\n\t\t\tthis._pOneData[i++] = initialColor.alphaMultiplier;\n\t\t}\n\t\t//offset\n\t\tif (this._iUsesOffset) {\n\t\t\tthis._pOneData[i++] = initialColor.redOffset/255;\n\t\t\tthis._pOneData[i++] = initialColor.greenOffset/255;\n\t\t\tthis._pOneData[i++] = initialColor.blueOffset/255;\n\t\t\tthis._pOneData[i++] = initialColor.alphaOffset/255;\n\t\t}\n\n\t}\n\n}\n\nexport = ParticleInitialColorNode;",
+ "import AnimationNodeBase\t\t\t\t= require(\"awayjs-core/lib/animators/nodes/AnimationNodeBase\");\n\nimport AnimationRegisterCache\t\t\t= require(\"awayjs-stagegl/lib/animators/data/AnimationRegisterCache\");\nimport ShaderObjectBase\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderObjectBase\");\n\nimport ParticleAnimationSet\t\t\t\t= require(\"awayjs-renderergl/lib/animators/ParticleAnimationSet\");\nimport ParticleProperties\t\t\t\t= require(\"awayjs-renderergl/lib/animators/data/ParticleProperties\");\n\n/**\n * Provides an abstract base class for particle animation nodes.\n */\nclass ParticleNodeBase extends AnimationNodeBase\n{\n\tprivate _priority:number /*int*/;\n\n\tpublic _pMode:number /*uint*/;\n\tpublic _pDataLength:number /*uint*/ = 3;\n\tpublic _pOneData:ArrayLOCAL_STATIC
mode. Used to generate the local static data of the particle animation set.\n\t *\n\t * @see away.animators.ParticleAnimationSet\n\t * @see #getAGALVertexCode\n\t */\n\tpublic get dataLength():number /*int*/\n\t{\n\t\treturn this._pDataLength;\n\t}\n\n\t/**\n\t * Returns the generated data vector of the node after one particle pass during the generation of all local static data of the particle animation set.\n\t *\n\t * @see away.animators.ParticleAnimationSet\n\t * @see #generatePropertyOfOneParticle\n\t */\n\tpublic get oneData():ArrayParticleNodeBase
object.\n\t *\n\t * @param name Defines the generic name of the particle animation node.\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param dataLength Defines the length of the data used by the node when in LOCAL_STATIC
mode.\n\t * @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.\n\t */\n\tconstructor(name:string, mode:number /*uint*/, dataLength:number /*uint*/, priority:number /*int*/ = 1)\n\t{\n\t\tsuper();\n\n\t\tname = name + ParticleNodeBase.MODES[mode];\n\n\t\tthis.name = name;\n\t\tthis._pMode = mode;\n\t\tthis._priority = priority;\n\t\tthis._pDataLength = dataLength;\n\n\t\tthis._pOneData = new ArrayVector3D
object representing the radius (x), cycle speed (y) and cycle phase (z) of the motion on the particle.\n\t */\n\tpublic static ORBIT_VECTOR3D:string = \"OrbitVector3D\";\n\n\t/**\n\t * Creates a new ParticleOrbitNode
object.\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] usesEulers Defines whether the node uses the eulers
property in the shader to calculate a rotation on the orbit. Defaults to true.\n\t * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of the orbit independent of particle duration. Defaults to false.\n\t * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the cycle rotation of the particle. Defaults to false.\n\t * @param [optional] radius Defines the radius of the orbit when in global mode. Defaults to 100.\n\t * @param [optional] cycleDuration Defines the duration of the orbit in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n\t * @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n\t * @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.\n\t */\n\tconstructor(mode:number /*uint*/, usesEulers:boolean = true, usesCycle:boolean = false, usesPhase:boolean = false, radius:number = 100, cycleDuration:number = 1, cyclePhase:number = 0, eulers:Vector3D = null)\n\t{\n\t\tvar len:number /*int*/ = 3;\n\t\tif (usesPhase)\n\t\t\tlen++;\n\t\tsuper(\"ParticleOrbit\", mode, len);\n\n\t\tthis._pStateClass = ParticleOrbitState;\n\n\t\tthis._iUsesEulers = usesEulers;\n\t\tthis._iUsesCycle = usesCycle;\n\t\tthis._iUsesPhase = usesPhase;\n\n\t\tthis._iRadius = radius;\n\t\tthis._iCycleDuration = cycleDuration;\n\t\tthis._iCyclePhase = cyclePhase;\n\t\tthis._iEulers = eulers || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar orbitRegister:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleOrbitState.ORBIT_INDEX, orbitRegister.index);\n\n\t\tvar eulersMatrixRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleOrbitState.EULERS_INDEX, eulersMatrixRegister.index);\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.getFreeVertexConstant();\n\n\t\tvar temp1:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tanimationRegisterCache.addVertexTempUsages(temp1, 1);\n\t\tvar distance:ShaderRegisterElement = new ShaderRegisterElement(temp1.regName, temp1.index);\n\n\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar cos:ShaderRegisterElement = new ShaderRegisterElement(temp2.regName, temp2.index, 0);\n\t\tvar sin:ShaderRegisterElement = new ShaderRegisterElement(temp2.regName, temp2.index, 1);\n\t\tvar degree:ShaderRegisterElement = new ShaderRegisterElement(temp2.regName, temp2.index, 2);\n\t\tanimationRegisterCache.removeVertexTempUsage(temp1);\n\n\t\tvar code:string = \"\";\n\n\t\tif (this._iUsesCycle) {\n\t\t\tcode += \"mul \" + degree + \",\" + animationRegisterCache.vertexTime + \",\" + orbitRegister + \".y\\n\";\n\n\t\t\tif (this._iUsesPhase)\n\t\t\t\tcode += \"add \" + degree + \",\" + degree + \",\" + orbitRegister + \".w\\n\";\n\t\t} else\n\t\t\tcode += \"mul \" + degree + \",\" + animationRegisterCache.vertexLife + \",\" + orbitRegister + \".y\\n\";\n\n\t\tcode += \"cos \" + cos + \",\" + degree + \"\\n\";\n\t\tcode += \"sin \" + sin + \",\" + degree + \"\\n\";\n\t\tcode += \"mul \" + distance + \".x,\" + cos + \",\" + orbitRegister + \".x\\n\";\n\t\tcode += \"mul \" + distance + \".y,\" + sin + \",\" + orbitRegister + \".x\\n\";\n\t\tcode += \"mov \" + distance + \".wz\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\tif (this._iUsesEulers)\n\t\t\tcode += \"m44 \" + distance + \",\" + distance + \",\" + eulersMatrixRegister + \"\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\n\t\tif (animationRegisterCache.needVelocity) {\n\t\t\tcode += \"neg \" + distance + \".x,\" + sin + \"\\n\";\n\t\t\tcode += \"mov \" + distance + \".y,\" + cos + \"\\n\";\n\t\t\tcode += \"mov \" + distance + \".zw,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tif (this._iUsesEulers)\n\t\t\t\tcode += \"m44 \" + distance + \",\" + distance + \",\" + eulersMatrixRegister + \"\\n\";\n\t\t\tcode += \"mul \" + distance + \",\" + distance + \",\" + orbitRegister + \".z\\n\";\n\t\t\tcode += \"div \" + distance + \",\" + distance + \",\" + orbitRegister + \".y\\n\";\n\t\t\tif (!this._iUsesCycle)\n\t\t\t\tcode += \"div \" + distance + \",\" + distance + \",\" + animationRegisterCache.vertexLife + \"\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz,\" + distance + \".xyz\\n\";\n\t\t}\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleOrbitState\n\t{\n\t\treturn Vector3D
object representing the axis (x,y,z) and cycle speed (w) of the motion on the particle.\n\t */\n\tpublic static OSCILLATOR_VECTOR3D:string = \"OscillatorVector3D\";\n\n\t/**\n\t * Creates a new ParticleOscillatorNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.\n\t */\n\tconstructor(mode:number /*uint*/, oscillator:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleOscillator\", mode, 4);\n\n\t\tthis._pStateClass = ParticleOscillatorState;\n\n\t\tthis._iOscillator = oscillator || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar oscillatorRegister:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleOscillatorState.OSCILLATOR_INDEX, oscillatorRegister.index);\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar dgree:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 0);\n\t\tvar sin:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 1);\n\t\tvar cos:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 2);\n\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar distance:ShaderRegisterElement = new ShaderRegisterElement(temp2.regName, temp2.index);\n\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\n\t\tvar code:string = \"\";\n\t\tcode += \"mul \" + dgree + \",\" + animationRegisterCache.vertexTime + \",\" + oscillatorRegister + \".w\\n\";\n\t\tcode += \"sin \" + sin + \",\" + dgree + \"\\n\";\n\t\tcode += \"mul \" + distance + \".xyz,\" + sin + \",\" + oscillatorRegister + \".xyz\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\n\t\tif (animationRegisterCache.needVelocity) {\n\t\t\tcode += \"cos \" + cos + \",\" + dgree + \"\\n\";\n\t\t\tcode += \"mul \" + distance + \".xyz,\" + cos + \",\" + oscillatorRegister + \".xyz\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + distance + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleOscillatorState\n\t{\n\t\treturn Vector3D
object representing position of the particle.\n\t */\n\tpublic static POSITION_VECTOR3D:string = \"PositionVector3D\";\n\n\t/**\n\t * Creates a new ParticlePositionNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.\n\t */\n\tconstructor(mode:number /*uint*/, position:Vector3D = null)\n\t{\n\t\tsuper(\"ParticlePosition\", mode, 3);\n\n\t\tthis._pStateClass = ParticlePositionState;\n\n\t\tthis._iPosition = position || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar positionAttribute:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticlePositionState.POSITION_INDEX, positionAttribute.index);\n\n\t\treturn \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticlePositionState\n\t{\n\t\treturn ParticleBillboardNode
\n\t */\n\tconstructor()\n\t{\n\t\tsuper(\"ParticleRotateToHeading\", ParticlePropertiesMode.GLOBAL, 0, 3);\n\n\t\tthis._pStateClass = ParticleRotateToHeadingState;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar code:string = \"\";\n\t\tvar len:number /*int*/ = animationRegisterCache.rotationRegisters.length;\n\t\tvar i:number /*int*/;\n\t\tif (animationRegisterCache.hasBillboard) {\n\t\t\tvar temp1:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp1, 1);\n\t\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp2, 1);\n\t\t\tvar temp3:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\n\t\t\tvar rotationMatrixRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleRotateToHeadingState.MATRIX_INDEX, rotationMatrixRegister.index);\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp1);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp2);\n\n\t\t\t//process the velocity\n\t\t\tcode += \"m33 \" + temp1 + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz,\" + rotationMatrixRegister + \"\\n\";\n\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".xy,\" + temp1 + \".xy\\n\";\n\t\t\tcode += \"nrm \" + temp3 + \".xyz,\" + temp3 + \".xyz\\n\";\n\n\t\t\t//temp3.x=cos,temp3.y=sin\n\t\t\t//only process z axis\n\t\t\tcode += \"mov \" + temp2 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".x,\" + temp3 + \".y\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".y,\" + temp3 + \".x\\n\";\n\t\t\tcode += \"mov \" + temp1 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp1 + \".x,\" + temp3 + \".x\\n\";\n\t\t\tcode += \"neg \" + temp1 + \".y,\" + temp3 + \".y\\n\";\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".z,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"m33 \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\tfor (i = 0; i < len; i++)\n\t\t\t\tcode += \"m33 \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n\t\t} else {\n\t\t\tvar nrmVel:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(nrmVel, 1);\n\n\t\t\tvar xAxis:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(xAxis, 1);\n\n\t\t\tvar R:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(R, 1);\n\t\t\tvar R_rev:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tvar cos:ShaderRegisterElement = new ShaderRegisterElement(R.regName, R.index, 3);\n\t\t\tvar sin:ShaderRegisterElement = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);\n\t\t\tvar cos2:ShaderRegisterElement = new ShaderRegisterElement(nrmVel.regName, nrmVel.index, 3);\n\t\t\tvar tempSingle:ShaderRegisterElement = sin;\n\n\t\t\tanimationRegisterCache.removeVertexTempUsage(nrmVel);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(xAxis);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(R);\n\n\t\t\tcode += \"mov \" + xAxis + \".x,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"mov \" + xAxis + \".yz,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\n\t\t\tcode += \"nrm \" + nrmVel + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t\tcode += \"dp3 \" + cos2 + \",\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\tcode += \"crs \" + nrmVel + \".xyz,\" + xAxis + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\tcode += \"nrm \" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\t//use R as temp to judge if nrm is (0,0,0).\n\t\t\t//if nrm is (0,0,0) ,change it to (0,0,1).\n\t\t\tcode += \"dp3 \" + R + \".x,\" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\tcode += \"sge \" + R + \".x,\" + animationRegisterCache.vertexZeroConst + \",\" + R + \".x\\n\";\n\t\t\tcode += \"add \" + nrmVel + \".z,\" + R + \".x,\" + nrmVel + \".z\\n\";\n\n\t\t\tcode += \"add \" + tempSingle + \",\" + cos2 + \",\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\tcode += \"sqt \" + cos + \",\" + tempSingle + \"\\n\";\n\n\t\t\tcode += \"sub \" + tempSingle + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos2 + \"\\n\";\n\t\t\tcode += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\tcode += \"sqt \" + sin + \",\" + tempSingle + \"\\n\";\n\n\t\t\tcode += \"mul \" + R + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\n\t\t\t//use cos as R.w\n\n\t\t\tcode += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\t\tcode += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n\n\t\t\t//use cos as R_rev.w\n\n\t\t\t//nrmVel and xAxis are used as temp register\n\t\t\tcode += \"crs \" + nrmVel + \".xyz,\" + R + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\n\t\t\t//use cos as R.w\n\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\t\tcode += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\tcode += \"dp3 \" + xAxis + \".w,\" + R + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\t\tcode += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n\n\t\t\tcode += \"crs \" + R + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n\t\t\t//code += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" +R_rev + \".w\\n\";\n\t\t\tcode += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n\t\t\tcode += \"add \" + R + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n\n\t\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t//just repeat the calculate above\n\t\t\t\t//because of the limited registers, no need to optimise\n\t\t\t\tcode += \"mov \" + xAxis + \".x,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\t\tcode += \"mov \" + xAxis + \".yz,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\t\tcode += \"nrm \" + nrmVel + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\t\t\t\tcode += \"dp3 \" + cos2 + \",\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\t\tcode += \"crs \" + nrmVel + \".xyz,\" + xAxis + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\t\tcode += \"nrm \" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\t\tcode += \"dp3 \" + R + \".x,\" + nrmVel + \".xyz,\" + nrmVel + \".xyz\\n\";\n\t\t\t\tcode += \"sge \" + R + \".x,\" + animationRegisterCache.vertexZeroConst + \",\" + R + \".x\\n\";\n\t\t\t\tcode += \"add \" + nrmVel + \".z,\" + R + \".x,\" + nrmVel + \".z\\n\";\n\t\t\t\tcode += \"add \" + tempSingle + \",\" + cos2 + \",\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\t\tcode += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\t\tcode += \"sqt \" + cos + \",\" + tempSingle + \"\\n\";\n\t\t\t\tcode += \"sub \" + tempSingle + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos2 + \"\\n\";\n\t\t\t\tcode += \"div \" + tempSingle + \",\" + tempSingle + \",\" + animationRegisterCache.vertexTwoConst + \"\\n\";\n\t\t\t\tcode += \"sqt \" + sin + \",\" + tempSingle + \"\\n\";\n\t\t\t\tcode += \"mul \" + R + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\t\t\tcode += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\t\t\tcode += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n\t\t\t\tcode += \"crs \" + nrmVel + \".xyz,\" + R + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \".xyz\\n\";\n\t\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \".xyz\\n\";\n\t\t\t\tcode += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\t\tcode += \"dp3 \" + xAxis + \".w,\" + R + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \".xyz\\n\";\n\t\t\t\tcode += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n\t\t\t\tcode += \"crs \" + R + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n\t\t\t\tcode += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n\t\t\t\tcode += \"add \" + R + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n\t\t\t\tcode += \"add \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + R + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\t}\n\n\t\t}\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleRotateToHeadingState\n\t{\n\t\treturn Vector3D
object representing the position that the particle must face.\n\t */\n\tpublic static POSITION_VECTOR3D:string = \"RotateToPositionVector3D\";\n\n\t/**\n\t * Creates a new ParticleRotateToPositionNode
\n\t */\n\tconstructor(mode:number /*uint*/, position:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleRotateToPosition\", mode, 3, 3);\n\n\t\tthis._pStateClass = ParticleRotateToPositionState;\n\n\t\tthis._iPosition = position || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar positionAttribute:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleRotateToPositionState.POSITION_INDEX, positionAttribute.index);\n\n\t\tvar code:string = \"\";\n\t\tvar len:number /*int*/ = animationRegisterCache.rotationRegisters.length;\n\t\tvar i:number /*int*/;\n\t\tif (animationRegisterCache.hasBillboard) {\n\t\t\tvar temp1:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp1, 1);\n\t\t\tvar temp2:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp2, 1);\n\t\t\tvar temp3:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\n\t\t\tvar rotationMatrixRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.setRegisterIndex(this, ParticleRotateToPositionState.MATRIX_INDEX, rotationMatrixRegister.index);\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\t\t\tanimationRegisterCache.getFreeVertexConstant();\n\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp1);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp2);\n\n\t\t\t//process the position\n\t\t\tcode += \"sub \" + temp1 + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\t\tcode += \"m33 \" + temp1 + \".xyz,\" + temp1 + \".xyz,\" + rotationMatrixRegister + \"\\n\";\n\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".xy,\" + temp1 + \".xy\\n\";\n\t\t\tcode += \"nrm \" + temp3 + \".xyz,\" + temp3 + \".xyz\\n\";\n\n\t\t\t//temp3.x=cos,temp3.y=sin\n\t\t\t//only process z axis\n\t\t\tcode += \"mov \" + temp2 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".x,\" + temp3 + \".y\\n\";\n\t\t\tcode += \"mov \" + temp2 + \".y,\" + temp3 + \".x\\n\";\n\t\t\tcode += \"mov \" + temp1 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp1 + \".x,\" + temp3 + \".x\\n\";\n\t\t\tcode += \"neg \" + temp1 + \".y,\" + temp3 + \".y\\n\";\n\t\t\tcode += \"mov \" + temp3 + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mov \" + temp3 + \".z,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"m33 \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp1 + \"\\n\";\n\t\t\tfor (i = 0; i < len; i++)\n\t\t\t\tcode += \"m33 \" + animationRegisterCache.rotationRegisters[i] + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \",\" + temp1 + \"\\n\";\n\t\t} else {\n\t\t\tvar nrmDirection:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(nrmDirection, 1);\n\n\t\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\t\t\tvar cos:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 0);\n\t\t\tvar sin:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 1);\n\t\t\tvar o_temp:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 2);\n\t\t\tvar tempSingle:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 3);\n\n\t\t\tvar R:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\t\tanimationRegisterCache.addVertexTempUsages(R, 1);\n\n\t\t\tanimationRegisterCache.removeVertexTempUsage(nrmDirection);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\t\t\tanimationRegisterCache.removeVertexTempUsage(R);\n\n\t\t\tcode += \"sub \" + nrmDirection + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\t\tcode += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\n\t\t\tcode += \"mov \" + sin + \",\" + nrmDirection + \".y\\n\";\n\t\t\tcode += \"mul \" + cos + \",\" + sin + \",\" + sin + \"\\n\";\n\t\t\tcode += \"sub \" + cos + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos + \"\\n\";\n\t\t\tcode += \"sqt \" + cos + \",\" + cos + \"\\n\";\n\n\t\t\tcode += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".y\\n\";\n\t\t\tcode += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterCache.scaleAndRotateTarget + \".z\\n\";\n\t\t\tcode += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterCache.scaleAndRotateTarget + \".y\\n\";\n\t\t\tcode += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".z\\n\";\n\n\t\t\tcode += \"sub \" + animationRegisterCache.scaleAndRotateTarget + \".y,\" + R + \".x,\" + R + \".y\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".z,\" + R + \".z,\" + R + \".w\\n\";\n\n\t\t\tcode += \"abs \" + R + \".y,\" + nrmDirection + \".y\\n\";\n\t\t\tcode += \"sge \" + R + \".z,\" + R + \".y,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\tcode += \"mul \" + R + \".x,\" + R + \".y,\" + nrmDirection + \".y\\n\";\n\n\t\t\t//judgu if nrmDirection=(0,1,0);\n\t\t\tcode += \"mov \" + nrmDirection + \".y,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"dp3 \" + sin + \",\" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\t\t\tcode += \"sge \" + tempSingle + \",\" + animationRegisterCache.vertexZeroConst + \",\" + sin + \"\\n\";\n\n\t\t\tcode += \"mov \" + nrmDirection + \".y,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\n\t\t\tcode += \"sub \" + sin + \",\" + animationRegisterCache.vertexOneConst + \",\" + tempSingle + \"\\n\";\n\t\t\tcode += \"mul \" + sin + \",\" + sin + \",\" + nrmDirection + \".x\\n\";\n\n\t\t\tcode += \"mov \" + cos + \",\" + nrmDirection + \".z\\n\";\n\t\t\tcode += \"neg \" + cos + \",\" + cos + \"\\n\";\n\t\t\tcode += \"sub \" + o_temp + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos + \"\\n\";\n\t\t\tcode += \"mul \" + o_temp + \",\" + R + \".x,\" + tempSingle + \"\\n\";\n\t\t\tcode += \"add \" + cos + \",\" + cos + \",\" + o_temp + \"\\n\";\n\n\t\t\tcode += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".x\\n\";\n\t\t\tcode += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterCache.scaleAndRotateTarget + \".z\\n\";\n\t\t\tcode += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterCache.scaleAndRotateTarget + \".x\\n\";\n\t\t\tcode += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".z\\n\";\n\n\t\t\tcode += \"sub \" + animationRegisterCache.scaleAndRotateTarget + \".x,\" + R + \".x,\" + R + \".y\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".z,\" + R + \".z,\" + R + \".w\\n\";\n\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t//just repeat the calculate above\n\t\t\t\t//because of the limited registers, no need to optimise\n\t\t\t\tcode += \"sub \" + nrmDirection + \".xyz,\" + positionAttribute + \".xyz,\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\t\t\t\tcode += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\t\t\t\tcode += \"mov \" + sin + \",\" + nrmDirection + \".y\\n\";\n\t\t\t\tcode += \"mul \" + cos + \",\" + sin + \",\" + sin + \"\\n\";\n\t\t\t\tcode += \"sub \" + cos + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos + \"\\n\";\n\t\t\t\tcode += \"sqt \" + cos + \",\" + cos + \"\\n\";\n\t\t\t\tcode += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \".y\\n\";\n\t\t\t\tcode += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterCache.rotationRegisters[i] + \".z\\n\";\n\t\t\t\tcode += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterCache.rotationRegisters[i] + \".y\\n\";\n\t\t\t\tcode += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \".z\\n\";\n\t\t\t\tcode += \"sub \" + animationRegisterCache.rotationRegisters[i] + \".y,\" + R + \".x,\" + R + \".y\\n\";\n\t\t\t\tcode += \"add \" + animationRegisterCache.rotationRegisters[i] + \".z,\" + R + \".z,\" + R + \".w\\n\";\n\t\t\t\tcode += \"abs \" + R + \".y,\" + nrmDirection + \".y\\n\";\n\t\t\t\tcode += \"sge \" + R + \".z,\" + R + \".y,\" + animationRegisterCache.vertexOneConst + \"\\n\";\n\t\t\t\tcode += \"mul \" + R + \".x,\" + R + \".y,\" + nrmDirection + \".y\\n\";\n\t\t\t\tcode += \"mov \" + nrmDirection + \".y,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\t\tcode += \"dp3 \" + sin + \",\" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\t\t\t\tcode += \"sge \" + tempSingle + \",\" + animationRegisterCache.vertexZeroConst + \",\" + sin + \"\\n\";\n\t\t\t\tcode += \"mov \" + nrmDirection + \".y,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\t\tcode += \"nrm \" + nrmDirection + \".xyz,\" + nrmDirection + \".xyz\\n\";\n\t\t\t\tcode += \"sub \" + sin + \",\" + animationRegisterCache.vertexOneConst + \",\" + tempSingle + \"\\n\";\n\t\t\t\tcode += \"mul \" + sin + \",\" + sin + \",\" + nrmDirection + \".x\\n\";\n\t\t\t\tcode += \"mov \" + cos + \",\" + nrmDirection + \".z\\n\";\n\t\t\t\tcode += \"neg \" + cos + \",\" + cos + \"\\n\";\n\t\t\t\tcode += \"sub \" + o_temp + \",\" + animationRegisterCache.vertexOneConst + \",\" + cos + \"\\n\";\n\t\t\t\tcode += \"mul \" + o_temp + \",\" + R + \".x,\" + tempSingle + \"\\n\";\n\t\t\t\tcode += \"add \" + cos + \",\" + cos + \",\" + o_temp + \"\\n\";\n\t\t\t\tcode += \"mul \" + R + \".x,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \".x\\n\";\n\t\t\t\tcode += \"mul \" + R + \".y,\" + sin + \",\" + animationRegisterCache.rotationRegisters[i] + \".z\\n\";\n\t\t\t\tcode += \"mul \" + R + \".z,\" + sin + \",\" + animationRegisterCache.rotationRegisters[i] + \".x\\n\";\n\t\t\t\tcode += \"mul \" + R + \".w,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \".z\\n\";\n\t\t\t\tcode += \"sub \" + animationRegisterCache.rotationRegisters[i] + \".x,\" + R + \".x,\" + R + \".y\\n\";\n\t\t\t\tcode += \"add \" + animationRegisterCache.rotationRegisters[i] + \".z,\" + R + \".z,\" + R + \".w\\n\";\n\t\t\t}\n\t\t}\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleRotateToPositionState\n\t{\n\t\treturn Vector3D
object representing the rotational velocity around an axis of the particle.\n\t */\n\tpublic static ROTATIONALVELOCITY_VECTOR3D:string = \"RotationalVelocityVector3D\";\n\n\t/**\n\t * Creates a new ParticleRotationalVelocityNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t */\n\tconstructor(mode:number /*uint*/, rotationalVelocity:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleRotationalVelocity\", mode, 4);\n\n\t\tthis._pStateClass = ParticleRotationalVelocityState;\n\n\t\tthis._iRotationalVelocity = rotationalVelocity || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar rotationRegister:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleRotationalVelocityState.ROTATIONALVELOCITY_INDEX, rotationRegister.index);\n\n\t\tvar nrmVel:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tanimationRegisterCache.addVertexTempUsages(nrmVel, 1);\n\n\t\tvar xAxis:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tanimationRegisterCache.addVertexTempUsages(xAxis, 1);\n\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tanimationRegisterCache.addVertexTempUsages(temp, 1);\n\t\tvar Rtemp:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index);\n\t\tvar R_rev:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tR_rev = new ShaderRegisterElement(R_rev.regName, R_rev.index);\n\n\t\tvar cos:ShaderRegisterElement = new ShaderRegisterElement(Rtemp.regName, Rtemp.index, 3);\n\t\tvar sin:ShaderRegisterElement = new ShaderRegisterElement(R_rev.regName, R_rev.index, 3);\n\n\t\tanimationRegisterCache.removeVertexTempUsage(nrmVel);\n\t\tanimationRegisterCache.removeVertexTempUsage(xAxis);\n\t\tanimationRegisterCache.removeVertexTempUsage(temp);\n\n\t\tvar code:string = \"\";\n\t\tcode += \"mov \" + nrmVel + \".xyz,\" + rotationRegister + \".xyz\\n\";\n\t\tcode += \"mov \" + nrmVel + \".w,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\n\t\tcode += \"mul \" + cos + \",\" + animationRegisterCache.vertexTime + \",\" + rotationRegister + \".w\\n\";\n\n\t\tcode += \"sin \" + sin + \",\" + cos + \"\\n\";\n\t\tcode += \"cos \" + cos + \",\" + cos + \"\\n\";\n\n\t\tcode += \"mul \" + Rtemp + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\n\t\tcode += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\tcode += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n\n\t\t//nrmVel and xAxis are used as temp register\n\t\tcode += \"crs \" + nrmVel + \".xyz,\" + Rtemp + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\n\t\tcode += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\tcode += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\tcode += \"dp3 \" + xAxis + \".w,\" + Rtemp + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz\\n\";\n\t\tcode += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n\n\t\tcode += \"crs \" + Rtemp + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n\n\t\t//use cos as R_rev.w\n\t\tcode += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n\t\tcode += \"add \" + Rtemp + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\tcode += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n\n\t\tcode += \"add \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n\n\t\tvar len:number /*int*/ = animationRegisterCache.rotationRegisters.length;\n\t\tfor (var i:number /*int*/ = 0; i < len; i++) {\n\t\t\tcode += \"mov \" + nrmVel + \".xyz,\" + rotationRegister + \".xyz\\n\";\n\t\t\tcode += \"mov \" + nrmVel + \".w,\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\t\tcode += \"mul \" + cos + \",\" + animationRegisterCache.vertexTime + \",\" + rotationRegister + \".w\\n\";\n\t\t\tcode += \"sin \" + sin + \",\" + cos + \"\\n\";\n\t\t\tcode += \"cos \" + cos + \",\" + cos + \"\\n\";\n\t\t\tcode += \"mul \" + Rtemp + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\t\tcode += \"mul \" + R_rev + \".xyz,\" + sin + \",\" + nrmVel + \".xyz\\n\";\n\t\t\tcode += \"neg \" + R_rev + \".xyz,\" + R_rev + \".xyz\\n\";\n\t\t\tcode += \"crs \" + nrmVel + \".xyz,\" + Rtemp + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \".xyz\\n\";\n\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + cos + \",\" + animationRegisterCache.rotationRegisters[i] + \"\\n\";\n\t\t\tcode += \"add \" + nrmVel + \".xyz,\" + nrmVel + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\tcode += \"dp3 \" + xAxis + \".w,\" + Rtemp + \".xyz,\" + animationRegisterCache.rotationRegisters[i] + \"\\n\";\n\t\t\tcode += \"neg \" + nrmVel + \".w,\" + xAxis + \".w\\n\";\n\t\t\tcode += \"crs \" + Rtemp + \".xyz,\" + nrmVel + \".xyz,\" + R_rev + \".xyz\\n\";\n\t\t\tcode += \"mul \" + xAxis + \".xyzw,\" + nrmVel + \".xyzw,\" + cos + \"\\n\";\n\t\t\tcode += \"add \" + Rtemp + \".xyz,\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t\tcode += \"mul \" + xAxis + \".xyz,\" + nrmVel + \".w,\" + R_rev + \".xyz\\n\";\n\t\t\tcode += \"add \" + animationRegisterCache.rotationRegisters[i] + \",\" + Rtemp + \".xyz,\" + xAxis + \".xyz\\n\";\n\t\t}\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleRotationalVelocityState\n\t{\n\t\treturn Vector3D
representing the min scale (x), max scale(y), optional cycle speed (z) and phase offset (w) applied to the particle.\n\t */\n\tpublic static SCALE_VECTOR3D:string = \"ScaleVector3D\";\n\n\t/**\n\t * Creates a new ParticleScaleNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] usesCycle Defines whether the node uses the cycleDuration
property in the shader to calculate the period of animation independent of particle duration. Defaults to false.\n\t * @param [optional] usesPhase Defines whether the node uses the cyclePhase
property in the shader to calculate a starting offset to the animation cycle. Defaults to false.\n\t * @param [optional] minScale Defines the default min scale transform of the node, when in global mode. Defaults to 1.\n\t * @param [optional] maxScale Defines the default max color transform of the node, when in global mode. Defaults to 1.\n\t * @param [optional] cycleDuration Defines the default duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.\n\t * @param [optional] cyclePhase Defines the default phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.\n\t */\n\tconstructor(mode:number /*uint*/, usesCycle:boolean, usesPhase:boolean, minScale:number = 1, maxScale:number = 1, cycleDuration:number = 1, cyclePhase:number = 0)\n\t{\n\t\tsuper(\"ParticleScale\", mode, (usesCycle && usesPhase)? 4 : ((usesCycle || usesPhase)? 3 : 2), 3);\n\n\t\tthis._pStateClass = ParticleScaleState;\n\n\t\tthis._iUsesCycle = usesCycle;\n\t\tthis._iUsesPhase = usesPhase;\n\n\t\tthis._iMinScale = minScale;\n\t\tthis._iMaxScale = maxScale;\n\t\tthis._iCycleDuration = cycleDuration;\n\t\tthis._iCyclePhase = cyclePhase;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar code:string = \"\";\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\n\t\tvar scaleRegister:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleScaleState.SCALE_INDEX, scaleRegister.index);\n\n\t\tif (this._iUsesCycle) {\n\t\t\tcode += \"mul \" + temp + \",\" + animationRegisterCache.vertexTime + \",\" + scaleRegister + \".z\\n\";\n\n\t\t\tif (this._iUsesPhase)\n\t\t\t\tcode += \"add \" + temp + \",\" + temp + \",\" + scaleRegister + \".w\\n\";\n\n\t\t\tcode += \"sin \" + temp + \",\" + temp + \"\\n\";\n\t\t}\n\n\t\tcode += \"mul \" + temp + \",\" + scaleRegister + \".y,\" + ((this._iUsesCycle)? temp : animationRegisterCache.vertexLife) + \"\\n\";\n\t\tcode += \"add \" + temp + \",\" + scaleRegister + \".x,\" + temp + \"\\n\";\n\t\tcode += \"mul \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleScaleState\n\t{\n\t\treturn repeat
property on the material has to be set to true.\n */\nclass ParticleSpriteSheetNode extends ParticleNodeBase\n{\n\t/** @private */\n\tpublic _iUsesCycle:boolean;\n\n\t/** @private */\n\tpublic _iUsesPhase:boolean;\n\n\t/** @private */\n\tpublic _iTotalFrames:number /*int*/;\n\t/** @private */\n\tpublic _iNumColumns:number /*int*/;\n\t/** @private */\n\tpublic _iNumRows:number /*int*/;\n\t/** @private */\n\tpublic _iCycleDuration:number;\n\t/** @private */\n\tpublic _iCyclePhase:number;\n\n\t/**\n\t * Reference for spritesheet node properties on a single particle (when in local property mode).\n\t * Expects a Vector3D
representing the cycleDuration (x), optional phaseTime (y).\n\t */\n\tpublic static UV_VECTOR3D:string = \"UVVector3D\";\n\n\t/**\n\t * Defines the number of columns in the spritesheet, when in global mode. Defaults to 1. Read only.\n\t */\n\tpublic get numColumns():number\n\t{\n\t\treturn this._iNumColumns;\n\t}\n\n\t/**\n\t * Defines the number of rows in the spritesheet, when in global mode. Defaults to 1. Read only.\n\t */\n\tpublic get numRows():number\n\t{\n\t\treturn this._iNumRows;\n\t}\n\n\t/**\n\t * Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows. Read only.\n\t */\n\tpublic get totalFrames():number\n\t{\n\t\treturn this._iTotalFrames;\n\t}\n\n\t/**\n\t * Creates a new ParticleSpriteSheetNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] numColumns Defines the number of columns in the spritesheet, when in global mode. Defaults to 1.\n\t * @param [optional] numRows Defines the number of rows in the spritesheet, when in global mode. Defaults to 1.\n\t * @param [optional] cycleDuration Defines the default cycle duration in seconds, when in global mode. Defaults to 1.\n\t * @param [optional] cyclePhase Defines the default cycle phase, when in global mode. Defaults to 0.\n\t * @param [optional] totalFrames Defines the total number of frames used by the spritesheet, when in global mode. Defaults to the number defined by numColumns and numRows.\n\t * @param [optional] looping Defines whether the spritesheet animation is set to loop indefinitely. Defaults to true.\n\t */\n\tconstructor(mode:number /*uint*/, usesCycle:boolean, usesPhase:boolean, numColumns:number /*int*/ = 1, numRows:number /*uint*/ = 1, cycleDuration:number = 1, cyclePhase:number = 0, totalFrames:number /*uint*/ = Number.MAX_VALUE)\n\t{\n\t\tsuper(\"ParticleSpriteSheet\", mode, usesCycle? (usesPhase? 3 : 2) : 1, ParticleAnimationSet.POST_PRIORITY + 1);\n\n\t\tthis._pStateClass = ParticleSpriteSheetState;\n\n\t\tthis._iUsesCycle = usesCycle;\n\t\tthis._iUsesPhase = usesPhase;\n\n\t\tthis._iNumColumns = numColumns;\n\t\tthis._iNumRows = numRows;\n\t\tthis._iCyclePhase = cyclePhase;\n\t\tthis._iCycleDuration = cycleDuration;\n\t\tthis._iTotalFrames = Math.min(totalFrames, numColumns*numRows);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALUVCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\t//get 2 vc\n\t\tvar uvParamConst1:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\tvar uvParamConst2:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_0, uvParamConst1.index);\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleSpriteSheetState.UV_INDEX_1, uvParamConst2.index);\n\n\t\tvar uTotal:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 0);\n\t\tvar uStep:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 1);\n\t\tvar vStep:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst1.regName, uvParamConst1.index, 2);\n\n\t\tvar uSpeed:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 0);\n\t\tvar cycle:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 1);\n\t\tvar phaseTime:ShaderRegisterElement = new ShaderRegisterElement(uvParamConst2.regName, uvParamConst2.index, 2);\n\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar time:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 0);\n\t\tvar vOffset:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 1);\n\t\ttemp = new ShaderRegisterElement(temp.regName, temp.index, 2);\n\t\tvar temp2:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 3);\n\n\t\tvar u:ShaderRegisterElement = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, 0);\n\t\tvar v:ShaderRegisterElement = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, 1);\n\n\t\tvar code:string = \"\";\n\t\t//scale uv\n\t\tcode += \"mul \" + u + \",\" + u + \",\" + uStep + \"\\n\";\n\t\tif (this._iNumRows > 1)\n\t\t\tcode += \"mul \" + v + \",\" + v + \",\" + vStep + \"\\n\";\n\n\t\tif (this._iUsesCycle) {\n\t\t\tif (this._iUsesPhase)\n\t\t\t\tcode += \"add \" + time + \",\" + animationRegisterCache.vertexTime + \",\" + phaseTime + \"\\n\";\n\t\t\telse\n\t\t\t\tcode += \"mov \" + time + \",\" + animationRegisterCache.vertexTime + \"\\n\";\n\t\t\tcode += \"div \" + time + \",\" + time + \",\" + cycle + \"\\n\";\n\t\t\tcode += \"frc \" + time + \",\" + time + \"\\n\";\n\t\t\tcode += \"mul \" + time + \",\" + time + \",\" + cycle + \"\\n\";\n\t\t\tcode += \"mul \" + temp + \",\" + time + \",\" + uSpeed + \"\\n\";\n\t\t} else\n\t\t\tcode += \"mul \" + temp.toString() + \",\" + animationRegisterCache.vertexLife + \",\" + uTotal + \"\\n\";\n\n\t\tif (this._iNumRows > 1) {\n\t\t\tcode += \"frc \" + temp2 + \",\" + temp + \"\\n\";\n\t\t\tcode += \"sub \" + vOffset + \",\" + temp + \",\" + temp2 + \"\\n\";\n\t\t\tcode += \"mul \" + vOffset + \",\" + vOffset + \",\" + vStep + \"\\n\";\n\t\t\tcode += \"add \" + v + \",\" + v + \",\" + vOffset + \"\\n\";\n\t\t}\n\n\t\tcode += \"div \" + temp2 + \",\" + temp + \",\" + uStep + \"\\n\";\n\t\tcode += \"frc \" + temp + \",\" + temp2 + \"\\n\";\n\t\tcode += \"sub \" + temp2 + \",\" + temp2 + \",\" + temp + \"\\n\";\n\t\tcode += \"mul \" + temp + \",\" + temp2 + \",\" + uStep + \"\\n\";\n\n\t\tif (this._iNumRows > 1)\n\t\t\tcode += \"frc \" + temp + \",\" + temp + \"\\n\";\n\t\tcode += \"add \" + u + \",\" + u + \",\" + temp + \"\\n\";\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleSpriteSheetState\n\t{\n\t\treturn ParticleTimeNode
\n\t *\n\t * @param [optional] usesDuration Defines whether the node uses the duration
data in the static properties to determine how long a particle is visible for. Defaults to false.\n\t * @param [optional] usesDelay Defines whether the node uses the delay
data in the static properties to determine how long a particle is hidden for. Defaults to false. Requires usesDuration
to be true.\n\t * @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime
, duration
and delay
data in the static properties function. Defaults to false. Requires usesLooping
to be true.\n\t */\n\tconstructor(usesDuration:boolean = false, usesLooping:boolean = false, usesDelay:boolean = false)\n\t{\n\t\tthis._pStateClass = ParticleTimeState;\n\n\t\tthis._iUsesDuration = usesDuration;\n\t\tthis._iUsesLooping = usesLooping;\n\t\tthis._iUsesDelay = usesDelay;\n\n\t\tsuper(\"ParticleTime\", ParticlePropertiesMode.LOCAL_STATIC, 4, 0);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar timeStreamRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexAttribute(); //timeStreamRegister.x is start,timeStreamRegister.y is during time\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleTimeState.TIME_STREAM_INDEX, timeStreamRegister.index);\n\t\tvar timeConst:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleTimeState.TIME_CONSTANT_INDEX, timeConst.index);\n\n\t\tvar code:string = \"\";\n\t\tcode += \"sub \" + animationRegisterCache.vertexTime + \",\" + timeConst + \",\" + timeStreamRegister + \".x\\n\";\n\t\t//if time=0,set the position to zero.\n\t\tvar temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\t\tcode += \"sge \" + temp + \",\" + animationRegisterCache.vertexTime + \",\" + animationRegisterCache.vertexZeroConst + \"\\n\";\n\t\tcode += \"mul \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + temp + \"\\n\";\n\t\tif (this._iUsesDuration) {\n\t\t\tif (this._iUsesLooping) {\n\t\t\t\tvar div:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\t\t\t\tif (this._iUsesDelay) {\n\t\t\t\t\tcode += \"div \" + div + \",\" + animationRegisterCache.vertexTime + \",\" + timeStreamRegister + \".z\\n\";\n\t\t\t\t\tcode += \"frc \" + div + \",\" + div + \"\\n\";\n\t\t\t\t\tcode += \"mul \" + animationRegisterCache.vertexTime + \",\" + div + \",\" + timeStreamRegister + \".z\\n\";\n\t\t\t\t\tcode += \"slt \" + div + \",\" + animationRegisterCache.vertexTime + \",\" + timeStreamRegister + \".y\\n\";\n\t\t\t\t\tcode += \"mul \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + div + \"\\n\";\n\t\t\t\t} else {\n\t\t\t\t\tcode += \"mul \" + div + \",\" + animationRegisterCache.vertexTime + \",\" + timeStreamRegister + \".w\\n\";\n\t\t\t\t\tcode += \"frc \" + div + \",\" + div + \"\\n\";\n\t\t\t\t\tcode += \"mul \" + animationRegisterCache.vertexTime + \",\" + div + \",\" + timeStreamRegister + \".y\\n\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar sge:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\t\t\t\tcode += \"sge \" + sge + \",\" + timeStreamRegister + \".y,\" + animationRegisterCache.vertexTime + \"\\n\";\n\t\t\t\tcode += \"mul \" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + animationRegisterCache.scaleAndRotateTarget + \".xyz,\" + sge + \"\\n\";\n\t\t\t}\n\t\t}\n\t\tcode += \"mul \" + animationRegisterCache.vertexLife + \",\" + animationRegisterCache.vertexTime + \",\" + timeStreamRegister + \".w\\n\";\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleTimeState\n\t{\n\t\treturn ParticleTimeNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] cycle Defines whether the time track is in loop mode. Defaults to false.\n\t * @param [optional] scale Defines whether the time track is in loop mode. Defaults to false.\n\t * @param [optional] axis Defines whether the time track is in loop mode. Defaults to false.\n\t */\n\tconstructor(mode:number /*uint*/, cycle:number = 1, scale:number = 1, axis:string = \"x\")\n\t{\n\t\t//because of the stage3d register limitation, it only support the global mode\n\t\tsuper(\"ParticleUV\", ParticlePropertiesMode.GLOBAL, 4, ParticleAnimationSet.POST_PRIORITY + 1);\n\n\t\tthis._pStateClass = ParticleUVState;\n\n\t\tthis._cycle = cycle;\n\t\tthis._scale = scale;\n\t\tthis._axis = axis;\n\n\t\tthis.updateUVData();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get cycle():number\n\t{\n\t\treturn this._cycle;\n\t}\n\n\tpublic set cycle(value:number)\n\t{\n\t\tthis._cycle = value;\n\n\t\tthis.updateUVData();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get scale():number\n\t{\n\t\treturn this._scale;\n\t}\n\n\tpublic set scale(value:number)\n\t{\n\t\tthis._scale = value;\n\n\t\tthis.updateUVData();\n\t}\n\n\t/**\n\t *\n\t */\n\tpublic get axis():string\n\t{\n\t\treturn this._axis;\n\t}\n\n\tpublic set axis(value:string)\n\t{\n\t\tthis._axis = value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALUVCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar code:string = \"\";\n\n\t\tvar uvConst:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleUVState.UV_INDEX, uvConst.index);\n\n\t\tvar axisIndex:number = this._axis == \"x\"? 0 : (this._axis == \"y\"? 1 : 2);\n\n\t\tvar target:ShaderRegisterElement = new ShaderRegisterElement(animationRegisterCache.uvTarget.regName, animationRegisterCache.uvTarget.index, axisIndex);\n\n\t\tvar sin:ShaderRegisterElement = animationRegisterCache.getFreeVertexSingleTemp();\n\n\t\tif (this._scale != 1)\n\t\t\tcode += \"mul \" + target + \",\" + target + \",\" + uvConst + \".y\\n\";\n\n\t\tcode += \"mul \" + sin + \",\" + animationRegisterCache.vertexTime + \",\" + uvConst + \".x\\n\";\n\t\tcode += \"sin \" + sin + \",\" + sin + \"\\n\";\n\t\tcode += \"add \" + target + \",\" + target + \",\" + sin + \"\\n\";\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleUVState\n\t{\n\t\treturn Vector3D
object representing the direction of movement on the particle.\n\t */\n\tpublic static VELOCITY_VECTOR3D:string = \"VelocityVector3D\";\n\n\t/**\n\t * Creates a new ParticleVelocityNode
\n\t *\n\t * @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.\n\t * @param [optional] velocity Defines the default velocity vector of the node, used when in global mode.\n\t */\n\tconstructor(mode:number /*uint*/, velocity:Vector3D = null)\n\t{\n\t\tsuper(\"ParticleVelocity\", mode, 3);\n\n\t\tthis._pStateClass = ParticleVelocityState;\n\n\t\tthis._iVelocity = velocity || new Vector3D();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAGALVertexCode(shaderObject:ShaderObjectBase, animationRegisterCache:AnimationRegisterCache):string\n\t{\n\t\tvar velocityValue:ShaderRegisterElement = (this._pMode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();\n\t\tanimationRegisterCache.setRegisterIndex(this, ParticleVelocityState.VELOCITY_INDEX, velocityValue.index);\n\n\t\tvar distance:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();\n\t\tvar code:string = \"\";\n\t\tcode += \"mul \" + distance + \",\" + animationRegisterCache.vertexTime + \",\" + velocityValue + \"\\n\";\n\t\tcode += \"add \" + animationRegisterCache.positionTarget + \".xyz,\" + distance + \",\" + animationRegisterCache.positionTarget + \".xyz\\n\";\n\n\t\tif (animationRegisterCache.needVelocity)\n\t\t\tcode += \"add \" + animationRegisterCache.velocityTarget + \".xyz,\" + velocityValue + \".xyz,\" + animationRegisterCache.velocityTarget + \".xyz\\n\";\n\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):ParticleVelocityState\n\t{\n\t\treturn SkeletonBinaryLERPNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = SkeletonBinaryLERPState;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):SkeletonBinaryLERPState\n\t{\n\t\treturn SkeletonClipNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = SkeletonClipState;\n\t}\n\n\t/**\n\t * Adds a skeleton pose frame to the internal timeline of the animation node.\n\t *\n\t * @param skeletonPose The skeleton pose object to add to the timeline of the node.\n\t * @param duration The specified duration of the frame in milliseconds.\n\t */\n\tpublic addFrame(skeletonPose:SkeletonPose, duration:number /*number /*uint*/)\n\t{\n\t\tthis._frames.push(skeletonPose);\n\t\tthis._pDurations.push(duration);\n\n\t\tthis._pNumFrames = this._pDurations.length;\n\n\t\tthis._pStitchDirty = true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):SkeletonClipState\n\t{\n\t\treturn SkeletonAdditiveNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = SkeletonDifferenceState;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):SkeletonDifferenceState\n\t{\n\t\treturn SkeletonNaryLERPNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = SkeletonNaryLERPState;\n\t}\n\n\t/**\n\t * Returns an integer representing the input index of the given skeleton animation node.\n\t *\n\t * @param input The skeleton animation node for with the input index is requested.\n\t */\n\tpublic getInputIndex(input:AnimationNodeBase):number /*int*/\n\t{\n\t\treturn this._iInputs.indexOf(input);\n\t}\n\n\t/**\n\t * Returns the skeleton animation node object that resides at the given input index.\n\t *\n\t * @param index The input index for which the skeleton animation node is requested.\n\t */\n\tpublic getInputAt(index:number /*uint*/):AnimationNodeBase\n\t{\n\t\treturn this._iInputs[index];\n\t}\n\n\t/**\n\t * Adds a new skeleton animation node input to the animation node.\n\t */\n\tpublic addInput(input:AnimationNodeBase)\n\t{\n\t\tthis._iInputs[this._numInputs++] = input;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic getAnimationState(animator:AnimatorBase):SkeletonNaryLERPState\n\t{\n\t\treturn VertexClipNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = VertexClipState;\n\t}\n\n\t/**\n\t * Adds a geometry object to the internal timeline of the animation node.\n\t *\n\t * @param geometry The geometry object to add to the timeline of the node.\n\t * @param duration The specified duration of the frame in milliseconds.\n\t * @param translation The absolute translation of the frame, used in root delta calculations for mesh movement.\n\t */\n\tpublic addFrame(geometry:Geometry, duration:number /*uint*/, translation:Vector3D = null)\n\t{\n\t\tthis._frames.push(geometry);\n\t\tthis._pDurations.push(duration);\n\t\tthis._translations.push(translation || new Vector3D());\n\n\t\tthis._pNumFrames = this._pDurations.length;\n\n\t\tthis._pStitchDirty = true;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pUpdateStitch()\n\t{\n\t\tsuper._pUpdateStitch();\n\n\t\tvar i:number /*uint*/ = this._pNumFrames - 1;\n\t\tvar p1:Vector3D, p2:Vector3D, delta:Vector3D;\n\t\twhile (i--) {\n\t\t\tthis._pTotalDuration += this._pDurations[i];\n\t\t\tp1 = this._translations[i];\n\t\t\tp2 = this._translations[i + 1];\n\t\t\tdelta = p2.subtract(p1);\n\t\t\tthis._pTotalDelta.x += delta.x;\n\t\t\tthis._pTotalDelta.y += delta.y;\n\t\t\tthis._pTotalDelta.z += delta.z;\n\t\t}\n\n\t\tif (this._pNumFrames > 1 && (this._pStitchFinalFrame || !this._pLooping)) {\n\t\t\tthis._pTotalDuration += this._pDurations[this._pNumFrames - 1];\n\t\t\tp1 = this._translations[0];\n\t\t\tp2 = this._translations[1];\n\t\t\tdelta = p2.subtract(p1);\n\t\t\tthis._pTotalDelta.x += delta.x;\n\t\t\tthis._pTotalDelta.y += delta.y;\n\t\t\tthis._pTotalDelta.z += delta.z;\n\t\t}\n\t}\n}\n\nexport = VertexClipNode;",
+ "import AnimatorBase\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/animators/AnimatorBase\");\n\nimport AnimationClipNodeBase\t\t\t= require(\"awayjs-renderergl/lib/animators/nodes/AnimationClipNodeBase\");\nimport AnimationStateBase\t\t\t\t= require(\"awayjs-renderergl/lib/animators/states/AnimationStateBase\");\nimport AnimationStateEvent\t\t\t\t= require(\"awayjs-renderergl/lib/events/AnimationStateEvent\");\n\n/**\n *\n */\nclass AnimationClipState extends AnimationStateBase\n{\n\tprivate _animationClipNode:AnimationClipNodeBase;\n\tprivate _animationStatePlaybackComplete:AnimationStateEvent;\n\tpublic _pBlendWeight:number;\n\tpublic _pCurrentFrame:number /*uint*/;\n\tpublic _pNextFrame:number /*uint*/;\n\n\tpublic _pOldFrame:number /*uint*/;\n\tpublic _pTimeDir:number /*int*/;\n\tpublic _pFramesDirty:boolean = true;\n\n\t/**\n\t * Returns a fractional value between 0 and 1 representing the blending ratio of the current playhead position\n\t * between the current frame (0) and next frame (1) of the animation.\n\t *\n\t * @see #currentFrame\n\t * @see #nextFrame\n\t */\n\tpublic get blendWeight():number\n\t{\n\t\tif (this._pFramesDirty)\n\t\t\tthis._pUpdateFrames();\n\n\t\treturn this._pBlendWeight;\n\t}\n\n\t/**\n\t * Returns the current frame of animation in the clip based on the internal playhead position.\n\t */\n\tpublic get currentFrame():number /*uint*/\n\t{\n\t\tif (this._pFramesDirty)\n\t\t\tthis._pUpdateFrames();\n\n\t\treturn this._pCurrentFrame;\n\t}\n\n\t/**\n\t * Returns the next frame of animation in the clip based on the internal playhead position.\n\t */\n\tpublic get nextFrame():number /*uint*/\n\t{\n\t\tif (this._pFramesDirty)\n\t\t\tthis._pUpdateFrames();\n\n\t\treturn this._pNextFrame;\n\t}\n\n\tconstructor(animator:AnimatorBase, animationClipNode:AnimationClipNodeBase)\n\t{\n\t\tsuper(animator, animationClipNode);\n\n\t\tthis._animationClipNode = animationClipNode;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic update(time:number /*int*/)\n\t{\n\t\tif (!this._animationClipNode.looping) {\n\t\t\tif (time > this._pStartTime + this._animationClipNode.totalDuration)\n\t\t\t\ttime = this._pStartTime + this._animationClipNode.totalDuration; else if (time < this._pStartTime)\n\t\t\t\ttime = this._pStartTime;\n\t\t}\n\n\t\tif (this._pTime == time - this._pStartTime)\n\t\t\treturn;\n\n\t\tthis._pUpdateTime(time);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic phase(value:number)\n\t{\n\t\tvar time:number /*int*/ = value*this._animationClipNode.totalDuration + this._pStartTime;\n\n\t\tif (this._pTime == time - this._pStartTime)\n\t\t\treturn;\n\n\t\tthis._pUpdateTime(time);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pUpdateTime(time:number /*int*/)\n\t{\n\t\tthis._pFramesDirty = true;\n\n\t\tthis._pTimeDir = (time - this._pStartTime > this._pTime)? 1 : -1;\n\n\t\tsuper._pUpdateTime(time);\n\t}\n\n\t/**\n\t * Updates the nodes internal playhead to determine the current and next animation frame, and the blendWeight between the two.\n\t *\n\t * @see #currentFrame\n\t * @see #nextFrame\n\t * @see #blendWeight\n\t */\n\tpublic _pUpdateFrames()\n\t{\n\t\tthis._pFramesDirty = false;\n\n\t\tvar looping:boolean = this._animationClipNode.looping;\n\t\tvar totalDuration:number /*uint*/ = this._animationClipNode.totalDuration;\n\t\tvar lastFrame:number /*uint*/ = this._animationClipNode.lastFrame;\n\t\tvar time:number /*int*/ = this._pTime;\n\n\t\t//trace(\"time\", time, totalDuration)\n\t\tif (looping && (time >= totalDuration || time < 0)) {\n\t\t\ttime %= totalDuration;\n\t\t\tif (time < 0)\n\t\t\t\ttime += totalDuration;\n\t\t}\n\n\t\tif (!looping && time >= totalDuration) {\n\t\t\tthis.notifyPlaybackComplete();\n\t\t\tthis._pCurrentFrame = lastFrame;\n\t\t\tthis._pNextFrame = lastFrame;\n\t\t\tthis._pBlendWeight = 0;\n\t\t} else if (!looping && time <= 0) {\n\t\t\tthis._pCurrentFrame = 0;\n\t\t\tthis._pNextFrame = 0;\n\t\t\tthis._pBlendWeight = 0;\n\t\t} else if (this._animationClipNode.fixedFrameRate) {\n\t\t\tvar t:number = time/totalDuration*lastFrame;\n\t\t\tthis._pCurrentFrame = Math.floor(t);\n\t\t\tthis._pBlendWeight = t - this._pCurrentFrame;\n\t\t\tthis._pNextFrame = this._pCurrentFrame + 1;\n\t\t} else {\n\t\t\tthis._pCurrentFrame = 0;\n\t\t\tthis._pNextFrame = 0;\n\n\t\t\tvar dur:number /*uint*/ = 0, frameTime:number /*uint*/;\n\t\t\tvar durations:ArrayCrossfadeTransitionNode
object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis._pStateClass = CrossfadeTransitionState;\n\t}\n}\n\nexport = CrossfadeTransitionNode;",
+ "import AnimatorBase\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/animators/AnimatorBase\");\n\nimport SkeletonBinaryLERPNode\t\t\t= require(\"awayjs-renderergl/lib/animators/nodes/SkeletonBinaryLERPNode\");\nimport SkeletonBinaryLERPState\t\t\t= require(\"awayjs-renderergl/lib/animators/states/SkeletonBinaryLERPState\");\nimport CrossfadeTransitionNode\t\t\t= require(\"awayjs-renderergl/lib/animators/transitions/CrossfadeTransitionNode\");\nimport AnimationStateEvent\t\t\t\t= require(\"awayjs-renderergl/lib/events/AnimationStateEvent\");\n\n/**\n *\n */\nclass CrossfadeTransitionState extends SkeletonBinaryLERPState\n{\n\tprivate _crossfadeTransitionNode:CrossfadeTransitionNode;\n\tprivate _animationStateTransitionComplete:AnimationStateEvent;\n\n\tconstructor(animator:AnimatorBase, skeletonAnimationNode:CrossfadeTransitionNode)\n\t{\n\t\tsuper(animator, RaycastPicker
picking object.\n *\n * @see away.base.DisplayObject#pickingCollider\n * @see away.pick.RaycastPicker\n *\n * @class away.pick.JSPickingCollider\n */\nclass JSPickingCollider extends PickingColliderBase implements IPickingCollider\n{\n\tprivate _findClosestCollision:boolean;\n\n\t/**\n\t * Creates a new JSPickingCollider
object.\n\t *\n\t * @param findClosestCollision Determines whether the picking collider searches for the closest collision along the ray. Defaults to false.\n\t */\n\tconstructor(findClosestCollision:boolean = false)\n\t{\n\t\tsuper();\n\n\t\tthis._findClosestCollision = findClosestCollision;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic _pTestRenderableCollision(renderable:RenderableBase, pickingCollisionVO:PickingCollisionVO, shortestCollisionDistance:number):boolean\n\t{\n\t\tvar t:number;\n\t\tvar i0:number, i1:number, i2:number;\n\t\tvar rx:number, ry:number, rz:number;\n\t\tvar nx:number, ny:number, nz:number;\n\t\tvar cx:number, cy:number, cz:number;\n\t\tvar coeff:number, u:number, v:number, w:number;\n\t\tvar p0x:number, p0y:number, p0z:number;\n\t\tvar p1x:number, p1y:number, p1z:number;\n\t\tvar p2x:number, p2y:number, p2z:number;\n\t\tvar s0x:number, s0y:number, s0z:number;\n\t\tvar s1x:number, s1y:number, s1z:number;\n\t\tvar nl:number, nDotV:number, D:number, disToPlane:number;\n\t\tvar Q1Q2:number, Q1Q1:number, Q2Q2:number, RQ1:number, RQ2:number;\n\t\tvar indexData:ArrayBillboard
object for a collision with the picking ray.\n\t *\n\t * @param billboard The billboard instance to be tested.\n\t * @param pickingCollisionVO The collision object used to store the collision results\n\t * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray.\n\t * @param findClosest\n\t */\n\tpublic testBillboardCollision(billboard:Billboard, pickingCollisionVO:PickingCollisionVO, shortestCollisionDistance:number)\n\t{\n\t\tthis.setLocalRay(pickingCollisionVO.localRayPosition, pickingCollisionVO.localRayDirection);\n\t\tpickingCollisionVO.materialOwner = null;\n\n\t\tif (this._pTestRenderableCollision(Mesh
object for a collision with the picking ray.\n\t *\n\t * @param mesh The mesh instance to be tested.\n\t * @param pickingCollisionVO The collision object used to store the collision results\n\t * @param shortestCollisionDistance The current value of the shortest distance to a detected collision along the ray.\n\t * @param findClosest\n\t */\n\tpublic testMeshCollision(mesh:Mesh, pickingCollisionVO:PickingCollisionVO, shortestCollisionDistance:number, findClosest:boolean):boolean\n\t{\n\t\tthis.setLocalRay(pickingCollisionVO.localRayPosition, pickingCollisionVO.localRayDirection);\n\t\tpickingCollisionVO.materialOwner = null;\n\n\t\tvar subMesh:ISubMesh;\n\n\t\tvar len:number = mesh.subMeshes.length;\n\t\tfor (var i:number = 0; i < len; ++i) {\n\t\t\tsubMesh = mesh.subMeshes[i];\n\n\t\t\tif (this._pTestRenderableCollision(ShaderPicker
object.\n\t *\n\t * @param shaderPickingDetails Determines whether the picker includes a second pass to calculate extra\n\t * properties such as uv and normal coordinates.\n\t */\n\tconstructor(shaderPickingDetails:boolean = false)\n\t{\n\t\tthis._shaderPickingDetails = shaderPickingDetails;\n\n\t\tthis._id = new ArrayAnimatonStateEvent
\n\t *\n\t * @param type The event type.\n\t * @param animator The animation state object that is the subject of this event.\n\t * @param animationNode The animation node inside the animation state from which the event originated.\n\t */\n\tconstructor(type:string, animator:AnimatorBase, animationState:IAnimationState, animationNode:AnimationNodeBase)\n\t{\n\t\tsuper(type);\n\n\t\tthis._animator = animator;\n\t\tthis._animationState = animationState;\n\t\tthis._animationNode = animationNode;\n\t}\n\n\t/**\n\t * The animator object that is the subject of this event.\n\t */\n\tpublic get animator():AnimatorBase\n\t{\n\t\treturn this._animator;\n\t}\n\n\t/**\n\t * The animation state object that is the subject of this event.\n\t */\n\tpublic get animationState():IAnimationState\n\t{\n\t\treturn this._animationState;\n\t}\n\n\t/**\n\t * The animation node inside the animation state from which the event originated.\n\t */\n\tpublic get animationNode():AnimationNodeBase\n\t{\n\t\treturn this._animationNode;\n\t}\n\n\t/**\n\t * Clones the event.\n\t *\n\t * @return An exact duplicate of the current object.\n\t */\n\tpublic clone():Event\n\t{\n\t\treturn new AnimationStateEvent(this.type, this._animator, this._animationState, this._animationNode);\n\t}\n}\n\nexport = AnimationStateEvent;",
+ "import CubeTextureBase\t\t\t\t\t= require(\"awayjs-core/lib/textures/CubeTextureBase\");\n\nimport Stage\t\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/core/base/Stage\");\nimport IContextStageGL\t\t\t\t\t= require(\"awayjs-stagegl/lib/core/stagegl/IContextStageGL\");\nimport MethodVO\t\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/MethodVO\");\nimport ShaderObjectBase\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderObjectBase\");\nimport ShaderRegisterCache\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache\");\nimport ShaderRegisterData\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterData\");\nimport ShaderRegisterElement\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement\");\nimport AmbientBasicMethod\t\t\t\t= require(\"awayjs-stagegl/lib/materials/methods/AmbientBasicMethod\");\nimport ShaderCompilerHelper\t\t\t\t= require(\"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper\");\n\n/**\n * AmbientEnvMapMethod provides a diffuse shading method that uses a diffuse irradiance environment map to\n * approximate global lighting rather than lights.\n */\nclass AmbientEnvMapMethod extends AmbientBasicMethod\n{\n\tprivate _cubeTexture:CubeTextureBase;\n\t\n\t/**\n\t * Creates a new AmbientEnvMapMethod
object.\n\t *\n\t * @param envMap The cube environment map to use for the ambient lighting.\n\t */\n\tconstructor(envMap:CubeTextureBase)\n\t{\n\t\tsuper();\n\t\tthis._cubeTexture = envMap;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iInitVO(shaderObject:ShaderObjectBase, methodVO:MethodVO)\n\t{\n\t\tsuper.iInitVO(shaderObject, methodVO);\n\n\t\tmethodVO.needsNormals = true;\n\t}\n\t\n\t/**\n\t * The cube environment map to use for the diffuse lighting.\n\t */\n\tpublic get envMap():CubeTextureBase\n\t{\n\t\treturn this._cubeTexture;\n\t}\n\t\n\tpublic set envMap(value:CubeTextureBase)\n\t{\n\t\tthis._cubeTexture = value;\n\t}\n\t\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iActivate(shaderObject:ShaderObjectBase, methodVO:MethodVO, stage:Stage)\n\t{\n\t\tsuper.iActivate(shaderObject, methodVO, stage);\n\n\t\t(DiffuseCompositeMethod
object.\n\t *\n\t * @param modulateMethod The method which will add the code to alter the base method's strength. It needs to have the signature clampDiffuse(t:ShaderRegisterElement, regCache:ShaderRegisterCache):string, in which t.w will contain the diffuse strength.\n\t * @param baseMethod The base diffuse method on which this method's shading is based.\n\t */\n\tconstructor(modulateMethod:(shaderObject:ShaderObjectBase, methodVO:MethodVO, targetReg:ShaderRegisterElement, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData) => string, baseMethod:DiffuseBasicMethod = null)\n\t{\n\t\tsuper();\n\n\t\tthis._onShaderInvalidatedDelegate = (event:ShadingMethodEvent) => this.onShaderInvalidated(event);\n\n\t\tthis.pBaseMethod = baseMethod || new DiffuseBasicMethod();\n\t\tthis.pBaseMethod._iModulateMethod = modulateMethod;\n\t\tthis.pBaseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n\t}\n\n\t/**\n\t * The base diffuse method on which this method's shading is based.\n\t */\n\tpublic get baseMethod():DiffuseBasicMethod\n\t{\n\t\treturn this.pBaseMethod;\n\t}\n\n\tpublic set baseMethod(value:DiffuseBasicMethod)\n\t{\n\t\tif (this.pBaseMethod == value)\n\t\t\treturn;\n\n\t\tthis.pBaseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n\t\tthis.pBaseMethod = value;\n\t\tthis.pBaseMethod.addEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n\t\tthis.iInvalidateShaderProgram();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iInitVO(shaderObject:ShaderLightingObject, methodVO:MethodVO)\n\t{\n\t\tthis.pBaseMethod.iInitVO(shaderObject, methodVO);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iInitConstants(shaderObject:ShaderLightingObject, methodVO:MethodVO)\n\t{\n\t\tthis.pBaseMethod.iInitConstants(shaderObject, methodVO);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic dispose()\n\t{\n\t\tthis.pBaseMethod.removeEventListener(ShadingMethodEvent.SHADER_INVALIDATED, this._onShaderInvalidatedDelegate);\n\t\tthis.pBaseMethod.dispose();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get texture():Texture2DBase\n\t{\n\t\treturn this.pBaseMethod.texture;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic set texture(value:Texture2DBase)\n\t{\n\t\tthis.pBaseMethod.texture = value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get diffuseColor():number\n\t{\n\t\treturn this.pBaseMethod.diffuseColor;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic set diffuseColor(value:number)\n\t{\n\t\tthis.pBaseMethod.diffuseColor = value;\n\t}\n\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic get ambientColor():number\n\t{\n\t\treturn this.pBaseMethod.ambientColor;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic set ambientColor(value:number)\n\t{\n\t\tthis.pBaseMethod.ambientColor = value;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iGetFragmentPreLightingCode(shaderObject:ShaderLightingObject, methodVO:MethodVO, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):string\n\t{\n\t\treturn this.pBaseMethod.iGetFragmentPreLightingCode(shaderObject, methodVO, registerCache, sharedRegisters);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iGetFragmentCodePerLight(shaderObject:ShaderLightingObject, methodVO:MethodVO, lightDirReg:ShaderRegisterElement, lightColReg:ShaderRegisterElement, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):string\n\t{\n\t\tvar code:string = this.pBaseMethod.iGetFragmentCodePerLight(shaderObject, methodVO, lightDirReg, lightColReg, registerCache, sharedRegisters);\n\t\tthis._pTotalLightColorReg = this.pBaseMethod._pTotalLightColorReg;\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iGetFragmentCodePerProbe(shaderObject:ShaderLightingObject, methodVO:MethodVO, cubeMapReg:ShaderRegisterElement, weightRegister:string, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):string\n\t{\n\t\tvar code:string = this.pBaseMethod.iGetFragmentCodePerProbe(shaderObject, methodVO, cubeMapReg, weightRegister, registerCache, sharedRegisters);\n\t\tthis._pTotalLightColorReg = this.pBaseMethod._pTotalLightColorReg;\n\t\treturn code;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iActivate(shaderObject:ShaderLightingObject, methodVO:MethodVO, stage:Stage)\n\t{\n\t\tthis.pBaseMethod.iActivate(shaderObject, methodVO, stage);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iSetRenderState(shaderObject:ShaderLightingObject, methodVO:MethodVO, renderable:RenderableBase, stage:Stage, camera:Camera)\n\t{\n\t\tthis.pBaseMethod.iSetRenderState(shaderObject, methodVO, renderable, stage, camera);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iDeactivate(shaderObject:ShaderLightingObject, methodVO:MethodVO, stage:Stage)\n\t{\n\t\tthis.pBaseMethod.iDeactivate(shaderObject, methodVO, stage);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iGetVertexCode(shaderObject:ShaderObjectBase, methodVO:MethodVO, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):string\n\t{\n\t\treturn this.pBaseMethod.iGetVertexCode(shaderObject, methodVO, registerCache, sharedRegisters);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iGetFragmentPostLightingCode(shaderObject:ShaderLightingObject, methodVO:MethodVO, targetReg:ShaderRegisterElement, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData):string\n\t{\n\t\treturn this.pBaseMethod.iGetFragmentPostLightingCode(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iReset()\n\t{\n\t\tthis.pBaseMethod.iReset();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iCleanCompilationData()\n\t{\n\t\tsuper.iCleanCompilationData();\n\t\tthis.pBaseMethod.iCleanCompilationData();\n\t}\n\n\t/**\n\t * Called when the base method's shader code is invalidated.\n\t */\n\tprivate onShaderInvalidated(event:ShadingMethodEvent)\n\t{\n\t\tthis.iInvalidateShaderProgram();\n\t}\n}\n\nexport = DiffuseCompositeMethod;",
+ "import MethodVO\t\t\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/MethodVO\");\nimport ShaderLightingObject\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderLightingObject\");\nimport ShaderObjectBase\t\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderObjectBase\");\nimport ShaderRegisterCache\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterCache\");\nimport ShaderRegisterData\t\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterData\");\nimport ShaderRegisterElement\t\t\t= require(\"awayjs-stagegl/lib/materials/compilation/ShaderRegisterElement\");\nimport DiffuseBasicMethod\t\t\t\t= require(\"awayjs-stagegl/lib/materials/methods/DiffuseBasicMethod\");\nimport ShaderCompilerHelper\t\t\t\t= require(\"awayjs-stagegl/lib/materials/utils/ShaderCompilerHelper\");\n\n/**\n * DiffuseDepthMethod provides a debug method to visualise depth maps\n */\nclass DiffuseDepthMethod extends DiffuseBasicMethod\n{\n\t/**\n\t * Creates a new DiffuseBasicMethod object.\n\t */\n\tconstructor()\n\t{\n\t\tsuper();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic iInitConstants(shaderObject:ShaderObjectBase, methodVO:MethodVO)\n\t{\n\t\tvar data:ArrayDiffuseSubSurfaceMethod
object.\n\t *\n\t * @param depthMapSize The size of the depth map used.\n\t * @param depthMapOffset The amount by which the rendered object will be inflated, to prevent depth map rounding errors.\n\t * @param baseMethod The diffuse method used to calculate the regular diffuse-based lighting.\n\t */\n\tconstructor(depthMapSize:number /*int*/ = 512, depthMapOffset:number = 15, baseMethod:DiffuseBasicMethod = null)\n\t{\n\t\tsuper(null, baseMethod);\n\n\t\tthis.pBaseMethod._iModulateMethod = (shaderObject:ShaderObjectBase, methodVO:MethodVO, targetReg:ShaderRegisterElement, registerCache:ShaderRegisterCache, sharedRegisters:ShaderRegisterData) => this.scatterLight(shaderObject, methodVO, targetReg, registerCache, sharedRegisters);\n\n\t\tthis._passes = new Array