Browse Source

Moving VR cameras to VR folder
Adding all .d.ts files

David Catuhe 10 years ago
parent
commit
a825bc66fd
100 changed files with 3444 additions and 1 deletions
  1. 0 1
      Babylon/.gitignore
  2. 19 0
      Babylon/Actions/babylon.action.d.ts
  3. 50 0
      Babylon/Actions/babylon.actionManager.d.ts
  4. 42 0
      Babylon/Actions/babylon.condition.d.ts
  5. 71 0
      Babylon/Actions/babylon.directActions.d.ts
  6. 13 0
      Babylon/Actions/babylon.interpolateValueAction.d.ts
  7. 23 0
      Babylon/Animations/babylon.animatable.d.ts
  8. 50 0
      Babylon/Animations/babylon.animation.d.ts
  9. 71 0
      Babylon/Animations/babylon.easing.d.ts
  10. 10 0
      Babylon/Audio/babylon.audioengine.d.ts
  11. 64 0
      Babylon/Audio/babylon.sound.d.ts
  12. 15 0
      Babylon/Audio/babylon.soundtrack.d.ts
  13. 24 0
      Babylon/Bones/babylon.bone.d.ts
  14. 18 0
      Babylon/Bones/babylon.skeleton.d.ts
  15. 14 0
      Babylon/Cameras/VR/babylon.oculusCamera.d.ts
  16. 141 0
      Babylon/Cameras/VR/babylon.oculusCamera.js
  17. 0 0
      Babylon/Cameras/VR/babylon.oculusCamera.ts
  18. 21 0
      Babylon/Cameras/VR/babylon.oculusGamepadCamera.d.ts
  19. 175 0
      Babylon/Cameras/VR/babylon.oculusGamepadCamera.js
  20. 0 0
      Babylon/Cameras/VR/babylon.oculusGamepadCamera.ts
  21. 9 0
      Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.d.ts
  22. 37 0
      Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.js
  23. 0 0
      Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.ts
  24. 17 0
      Babylon/Cameras/VR/babylon.webVRCamera.d.ts
  25. 80 0
      Babylon/Cameras/VR/babylon.webVRCamera.js
  26. 0 0
      Babylon/Cameras/VR/babylon.webVRCamera.ts
  27. 20 0
      Babylon/Cameras/babylon.anaglyphCamera.d.ts
  28. 69 0
      Babylon/Cameras/babylon.arcRotateCamera.d.ts
  29. 44 0
      Babylon/Cameras/babylon.camera.d.ts
  30. 18 0
      Babylon/Cameras/babylon.deviceOrientationCamera.d.ts
  31. 14 0
      Babylon/Cameras/babylon.followCamera.d.ts
  32. 38 0
      Babylon/Cameras/babylon.freeCamera.d.ts
  33. 12 0
      Babylon/Cameras/babylon.gamepadCamera.d.ts
  34. 14 0
      Babylon/Cameras/babylon.oculusCamera.d.ts
  35. 21 0
      Babylon/Cameras/babylon.oculusGamepadCamera.d.ts
  36. 33 0
      Babylon/Cameras/babylon.targetCamera.d.ts
  37. 18 0
      Babylon/Cameras/babylon.touchCamera.d.ts
  38. 9 0
      Babylon/Cameras/babylon.virtualJoysticksCamera.d.ts
  39. 9 0
      Babylon/Cameras/babylon.vrDeviceOrientationCamera.d.ts
  40. 17 0
      Babylon/Cameras/babylon.webVRCamera.d.ts
  41. 36 0
      Babylon/Collisions/babylon.collider.d.ts
  42. 20 0
      Babylon/Collisions/babylon.pickingInfo.d.ts
  43. 22 0
      Babylon/Culling/Octrees/babylon.octree.d.ts
  44. 23 0
      Babylon/Culling/Octrees/babylon.octreeBlock.d.ts
  45. 26 0
      Babylon/Culling/babylon.boundingBox.d.ts
  46. 15 0
      Babylon/Culling/babylon.boundingInfo.d.ts
  47. 16 0
      Babylon/Culling/babylon.boundingSphere.d.ts
  48. 18 0
      Babylon/Layer/babylon.layer.d.ts
  49. 11 0
      Babylon/LensFlare/babylon.lensFlare.d.ts
  50. 27 0
      Babylon/LensFlare/babylon.lensFlareSystem.d.ts
  51. 35 0
      Babylon/Lights/Shadows/babylon.shadowGenerator.d.ts
  52. 15 0
      Babylon/Lights/babylon.directionalLight.d.ts
  53. 12 0
      Babylon/Lights/babylon.hemisphericLight.d.ts
  54. 22 0
      Babylon/Lights/babylon.light.d.ts
  55. 12 0
      Babylon/Lights/babylon.pointLight.d.ts
  56. 16 0
      Babylon/Lights/babylon.spotLight.d.ts
  57. 2 0
      Babylon/Loading/Plugins/babylon.babylonFileLoader.d.ts
  58. 31 0
      Babylon/Loading/babylon.sceneLoader.d.ts
  59. 15 0
      Babylon/Materials/Textures/Procedurals/babylon.customProceduralTexture.d.ts
  60. 48 0
      Babylon/Materials/Textures/Procedurals/babylon.proceduralTexture.d.ts
  61. 81 0
      Babylon/Materials/Textures/Procedurals/babylon.standardProceduralTexture.d.ts
  62. 37 0
      Babylon/Materials/Textures/babylon.baseTexture.d.ts
  63. 13 0
      Babylon/Materials/Textures/babylon.cubeTexture.d.ts
  64. 14 0
      Babylon/Materials/Textures/babylon.dynamicTexture.d.ts
  65. 10 0
      Babylon/Materials/Textures/babylon.mirrorTexture.d.ts
  66. 10 0
      Babylon/Materials/Textures/babylon.rawTexture.d.ts
  67. 30 0
      Babylon/Materials/Textures/babylon.renderTargetTexture.d.ts
  68. 50 0
      Babylon/Materials/Textures/babylon.texture.d.ts
  69. 9 0
      Babylon/Materials/Textures/babylon.videoTexture.d.ts
  70. 61 0
      Babylon/Materials/babylon.effect.d.ts
  71. 43 0
      Babylon/Materials/babylon.material.d.ts
  72. 8 0
      Babylon/Materials/babylon.multiMaterial.d.ts
  73. 32 0
      Babylon/Materials/babylon.shaderMaterial.d.ts
  74. 57 0
      Babylon/Materials/babylon.standardMaterial.d.ts
  75. 368 0
      Babylon/Math/babylon.math.d.ts
  76. 143 0
      Babylon/Mesh/babylon.abstractMesh.d.ts
  77. 24 0
      Babylon/Mesh/babylon.csg.d.ts
  78. 136 0
      Babylon/Mesh/babylon.geometry.d.ts
  79. 11 0
      Babylon/Mesh/babylon.groundMesh.d.ts
  80. 25 0
      Babylon/Mesh/babylon.instancedMesh.d.ts
  81. 18 0
      Babylon/Mesh/babylon.linesMesh.d.ts
  82. 102 0
      Babylon/Mesh/babylon.mesh.d.ts
  83. 49 0
      Babylon/Mesh/babylon.mesh.vertexData.d.ts
  84. 7 0
      Babylon/Mesh/babylon.meshLODLevel.d.ts
  85. 37 0
      Babylon/Mesh/babylon.subMesh.d.ts
  86. 34 0
      Babylon/Mesh/babylon.vertexBuffer.d.ts
  87. 13 0
      Babylon/Particles/babylon.particle.d.ts
  88. 75 0
      Babylon/Particles/babylon.particleSystem.d.ts
  89. 27 0
      Babylon/Physics/Plugins/babylon.cannonJSPlugin.d.ts
  90. 25 0
      Babylon/Physics/Plugins/babylon.oimoJSPlugin.d.ts
  91. 50 0
      Babylon/Physics/babylon.physicsEngine.d.ts
  92. 32 0
      Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.d.ts
  93. 16 0
      Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPass.d.ts
  94. 26 0
      Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.d.ts
  95. 20 0
      Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.d.ts
  96. 5 0
      Babylon/PostProcess/babylon.anaglyphPostProcess.d.ts
  97. 5 0
      Babylon/PostProcess/babylon.blackAndWhitePostProcess.d.ts
  98. 7 0
      Babylon/PostProcess/babylon.blurPostProcess.d.ts
  99. 12 0
      Babylon/PostProcess/babylon.convolutionPostProcess.d.ts
  100. 0 0
      Babylon/PostProcess/babylon.displayPassPostProcess.d.ts

+ 0 - 1
Babylon/.gitignore

@@ -1 +0,0 @@
-*.d.ts

+ 19 - 0
Babylon/Actions/babylon.action.d.ts

@@ -0,0 +1,19 @@
+declare module BABYLON {
+    class Action {
+        public triggerOptions: any;
+        public trigger: number;
+        public _actionManager: ActionManager;
+        private _nextActiveAction;
+        private _child;
+        private _condition;
+        private _triggerParameter;
+        constructor(triggerOptions: any, condition?: Condition);
+        public _prepare(): void;
+        public getTriggerParameter(): any;
+        public _executeCurrent(evt: ActionEvent): void;
+        public execute(evt: ActionEvent): void;
+        public then(action: Action): Action;
+        public _getProperty(propertyPath: string): string;
+        public _getEffectiveTarget(target: any, propertyPath: string): any;
+    }
+}

+ 50 - 0
Babylon/Actions/babylon.actionManager.d.ts

@@ -0,0 +1,50 @@
+declare module BABYLON {
+    class ActionEvent {
+        public source: AbstractMesh;
+        public pointerX: number;
+        public pointerY: number;
+        public meshUnderPointer: AbstractMesh;
+        public sourceEvent: any;
+        constructor(source: AbstractMesh, pointerX: number, pointerY: number, meshUnderPointer: AbstractMesh, sourceEvent?: any);
+        static CreateNew(source: AbstractMesh, evt?: Event): ActionEvent;
+        static CreateNewFromScene(scene: Scene, evt: Event): ActionEvent;
+    }
+    class ActionManager {
+        private static _NothingTrigger;
+        private static _OnPickTrigger;
+        private static _OnLeftPickTrigger;
+        private static _OnRightPickTrigger;
+        private static _OnCenterPickTrigger;
+        private static _OnPointerOverTrigger;
+        private static _OnPointerOutTrigger;
+        private static _OnEveryFrameTrigger;
+        private static _OnIntersectionEnterTrigger;
+        private static _OnIntersectionExitTrigger;
+        private static _OnKeyDownTrigger;
+        private static _OnKeyUpTrigger;
+        static NothingTrigger : number;
+        static OnPickTrigger : number;
+        static OnLeftPickTrigger : number;
+        static OnRightPickTrigger : number;
+        static OnCenterPickTrigger : number;
+        static OnPointerOverTrigger : number;
+        static OnPointerOutTrigger : number;
+        static OnEveryFrameTrigger : number;
+        static OnIntersectionEnterTrigger : number;
+        static OnIntersectionExitTrigger : number;
+        static OnKeyDownTrigger : number;
+        static OnKeyUpTrigger : number;
+        public actions: Action[];
+        private _scene;
+        constructor(scene: Scene);
+        public dispose(): void;
+        public getScene(): Scene;
+        public hasSpecificTriggers(triggers: number[]): boolean;
+        public hasPointerTriggers : boolean;
+        public hasPickTriggers : boolean;
+        public registerAction(action: Action): Action;
+        public processTrigger(trigger: number, evt: ActionEvent): void;
+        public _getEffectiveTarget(target: any, propertyPath: string): any;
+        public _getProperty(propertyPath: string): string;
+    }
+}

+ 42 - 0
Babylon/Actions/babylon.condition.d.ts

@@ -0,0 +1,42 @@
+declare module BABYLON {
+    class Condition {
+        public _actionManager: ActionManager;
+        public _evaluationId: number;
+        public _currentResult: boolean;
+        constructor(actionManager: ActionManager);
+        public isValid(): boolean;
+        public _getProperty(propertyPath: string): string;
+        public _getEffectiveTarget(target: any, propertyPath: string): any;
+    }
+    class ValueCondition extends Condition {
+        public propertyPath: string;
+        public value: any;
+        public operator: number;
+        private static _IsEqual;
+        private static _IsDifferent;
+        private static _IsGreater;
+        private static _IsLesser;
+        static IsEqual : number;
+        static IsDifferent : number;
+        static IsGreater : number;
+        static IsLesser : number;
+        public _actionManager: ActionManager;
+        private _target;
+        private _property;
+        constructor(actionManager: ActionManager, target: any, propertyPath: string, value: any, operator?: number);
+        public isValid(): boolean;
+    }
+    class PredicateCondition extends Condition {
+        public predicate: () => boolean;
+        public _actionManager: ActionManager;
+        constructor(actionManager: ActionManager, predicate: () => boolean);
+        public isValid(): boolean;
+    }
+    class StateCondition extends Condition {
+        public value: string;
+        public _actionManager: ActionManager;
+        private _target;
+        constructor(actionManager: ActionManager, target: any, value: string);
+        public isValid(): boolean;
+    }
+}

+ 71 - 0
Babylon/Actions/babylon.directActions.d.ts

@@ -0,0 +1,71 @@
+declare module BABYLON {
+    class SwitchBooleanAction extends Action {
+        public propertyPath: string;
+        private _target;
+        private _property;
+        constructor(triggerOptions: any, target: any, propertyPath: string, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+    class SetStateAction extends Action {
+        public value: string;
+        private _target;
+        constructor(triggerOptions: any, target: any, value: string, condition?: Condition);
+        public execute(): void;
+    }
+    class SetValueAction extends Action {
+        public propertyPath: string;
+        public value: any;
+        private _target;
+        private _property;
+        constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+    class IncrementValueAction extends Action {
+        public propertyPath: string;
+        public value: any;
+        private _target;
+        private _property;
+        constructor(triggerOptions: any, target: any, propertyPath: string, value: any, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+    class PlayAnimationAction extends Action {
+        public from: number;
+        public to: number;
+        public loop: boolean;
+        private _target;
+        constructor(triggerOptions: any, target: any, from: number, to: number, loop?: boolean, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+    class StopAnimationAction extends Action {
+        private _target;
+        constructor(triggerOptions: any, target: any, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+    class DoNothingAction extends Action {
+        constructor(triggerOptions?: any, condition?: Condition);
+        public execute(): void;
+    }
+    class CombineAction extends Action {
+        public children: Action[];
+        constructor(triggerOptions: any, children: Action[], condition?: Condition);
+        public _prepare(): void;
+        public execute(evt: ActionEvent): void;
+    }
+    class ExecuteCodeAction extends Action {
+        public func: (evt: ActionEvent) => void;
+        constructor(triggerOptions: any, func: (evt: ActionEvent) => void, condition?: Condition);
+        public execute(evt: ActionEvent): void;
+    }
+    class SetParentAction extends Action {
+        private _parent;
+        private _target;
+        constructor(triggerOptions: any, target: any, parent: any, condition?: Condition);
+        public _prepare(): void;
+        public execute(): void;
+    }
+}

+ 13 - 0
Babylon/Actions/babylon.interpolateValueAction.d.ts

@@ -0,0 +1,13 @@
+declare module BABYLON {
+    class InterpolateValueAction extends Action {
+        public propertyPath: string;
+        public value: any;
+        public duration: number;
+        public stopOtherAnimations: boolean;
+        private _target;
+        private _property;
+        constructor(triggerOptions: any, target: any, propertyPath: string, value: any, duration?: number, condition?: Condition, stopOtherAnimations?: boolean);
+        public _prepare(): void;
+        public execute(): void;
+    }
+}

+ 23 - 0
Babylon/Animations/babylon.animatable.d.ts

@@ -0,0 +1,23 @@
+declare module BABYLON {
+    class Animatable {
+        public target: any;
+        public fromFrame: number;
+        public toFrame: number;
+        public loopAnimation: boolean;
+        public speedRatio: number;
+        public onAnimationEnd: any;
+        private _localDelayOffset;
+        private _pausedDelay;
+        private _animations;
+        private _paused;
+        private _scene;
+        public animationStarted: boolean;
+        constructor(scene: Scene, target: any, fromFrame?: number, toFrame?: number, loopAnimation?: boolean, speedRatio?: number, onAnimationEnd?: any, animations?: any);
+        public appendAnimations(target: any, animations: Animation[]): void;
+        public getAnimationByTargetProperty(property: string): Animation;
+        public pause(): void;
+        public restart(): void;
+        public stop(): void;
+        public _animate(delay: number): boolean;
+    }
+}

+ 50 - 0
Babylon/Animations/babylon.animation.d.ts

@@ -0,0 +1,50 @@
+declare module BABYLON {
+    class Animation {
+        public name: string;
+        public targetProperty: string;
+        public framePerSecond: number;
+        public dataType: number;
+        public loopMode: number;
+        private _keys;
+        private _offsetsCache;
+        private _highLimitsCache;
+        private _stopped;
+        public _target: any;
+        private _easingFunction;
+        public targetPropertyPath: string[];
+        public currentFrame: number;
+        static CreateAndStartAnimation(name: string, mesh: AbstractMesh, tartgetProperty: string, framePerSecond: number, totalFrame: number, from: any, to: any, loopMode?: number): void;
+        constructor(name: string, targetProperty: string, framePerSecond: number, dataType: number, loopMode?: number);
+        public isStopped(): boolean;
+        public getKeys(): any[];
+        public getEasingFunction(): IEasingFunction;
+        public setEasingFunction(easingFunction: EasingFunction): void;
+        public floatInterpolateFunction(startValue: number, endValue: number, gradient: number): number;
+        public quaternionInterpolateFunction(startValue: Quaternion, endValue: Quaternion, gradient: number): Quaternion;
+        public vector3InterpolateFunction(startValue: Vector3, endValue: Vector3, gradient: number): Vector3;
+        public vector2InterpolateFunction(startValue: Vector2, endValue: Vector2, gradient: number): Vector2;
+        public color3InterpolateFunction(startValue: Color3, endValue: Color3, gradient: number): Color3;
+        public clone(): Animation;
+        public setKeys(values: any[]): void;
+        private _interpolate(currentFrame, repeatCount, loopMode, offsetValue?, highLimitValue?);
+        public animate(delay: number, from: number, to: number, loop: boolean, speedRatio: number): boolean;
+        private static _ANIMATIONTYPE_FLOAT;
+        private static _ANIMATIONTYPE_VECTOR3;
+        private static _ANIMATIONTYPE_QUATERNION;
+        private static _ANIMATIONTYPE_MATRIX;
+        private static _ANIMATIONTYPE_COLOR3;
+        private static _ANIMATIONTYPE_VECTOR2;
+        private static _ANIMATIONLOOPMODE_RELATIVE;
+        private static _ANIMATIONLOOPMODE_CYCLE;
+        private static _ANIMATIONLOOPMODE_CONSTANT;
+        static ANIMATIONTYPE_FLOAT : number;
+        static ANIMATIONTYPE_VECTOR3 : number;
+        static ANIMATIONTYPE_VECTOR2 : number;
+        static ANIMATIONTYPE_QUATERNION : number;
+        static ANIMATIONTYPE_MATRIX : number;
+        static ANIMATIONTYPE_COLOR3 : number;
+        static ANIMATIONLOOPMODE_RELATIVE : number;
+        static ANIMATIONLOOPMODE_CYCLE : number;
+        static ANIMATIONLOOPMODE_CONSTANT : number;
+    }
+}

+ 71 - 0
Babylon/Animations/babylon.easing.d.ts

@@ -0,0 +1,71 @@
+declare module BABYLON {
+    interface IEasingFunction {
+        ease(gradient: number): number;
+    }
+    class EasingFunction implements IEasingFunction {
+        private static _EASINGMODE_EASEIN;
+        private static _EASINGMODE_EASEOUT;
+        private static _EASINGMODE_EASEINOUT;
+        static EASINGMODE_EASEIN : number;
+        static EASINGMODE_EASEOUT : number;
+        static EASINGMODE_EASEINOUT : number;
+        private _easingMode;
+        public setEasingMode(easingMode: number): void;
+        public getEasingMode(): number;
+        public easeInCore(gradient: number): number;
+        public ease(gradient: number): number;
+    }
+    class CircleEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class BackEase extends EasingFunction implements IEasingFunction {
+        public amplitude: number;
+        constructor(amplitude?: number);
+        public easeInCore(gradient: number): number;
+    }
+    class BounceEase extends EasingFunction implements IEasingFunction {
+        public bounces: number;
+        public bounciness: number;
+        constructor(bounces?: number, bounciness?: number);
+        public easeInCore(gradient: number): number;
+    }
+    class CubicEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class ElasticEase extends EasingFunction implements IEasingFunction {
+        public oscillations: number;
+        public springiness: number;
+        constructor(oscillations?: number, springiness?: number);
+        public easeInCore(gradient: number): number;
+    }
+    class ExponentialEase extends EasingFunction implements IEasingFunction {
+        public exponent: number;
+        constructor(exponent?: number);
+        public easeInCore(gradient: number): number;
+    }
+    class PowerEase extends EasingFunction implements IEasingFunction {
+        public power: number;
+        constructor(power?: number);
+        public easeInCore(gradient: number): number;
+    }
+    class QuadraticEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class QuarticEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class QuinticEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class SineEase extends EasingFunction implements IEasingFunction {
+        public easeInCore(gradient: number): number;
+    }
+    class BezierCurveEase extends EasingFunction implements IEasingFunction {
+        public x1: number;
+        public y1: number;
+        public x2: number;
+        public y2: number;
+        constructor(x1?: number, y1?: number, x2?: number, y2?: number);
+        public easeInCore(gradient: number): number;
+    }
+}

+ 10 - 0
Babylon/Audio/babylon.audioengine.d.ts

@@ -0,0 +1,10 @@
+declare module BABYLON {
+    class AudioEngine {
+        public audioContext: AudioContext;
+        public canUseWebAudio: boolean;
+        public masterGain: GainNode;
+        constructor();
+        public getGlobalVolume(): number;
+        public setGlobalVolume(newVolume: number): void;
+    }
+}

+ 64 - 0
Babylon/Audio/babylon.sound.d.ts

@@ -0,0 +1,64 @@
+declare module BABYLON {
+    class Sound {
+        public maxDistance: number;
+        public autoplay: boolean;
+        public loop: boolean;
+        public useBabylonJSAttenuation: boolean;
+        public soundTrackId: number;
+        private _position;
+        private _localDirection;
+        private _volume;
+        private _isLoaded;
+        private _isReadyToPlay;
+        private _isPlaying;
+        private _isDirectional;
+        private _audioEngine;
+        private _readyToPlayCallback;
+        private _audioBuffer;
+        private _soundSource;
+        private _soundPanner;
+        private _soundGain;
+        private _coneInnerAngle;
+        private _coneOuterAngle;
+        private _coneOuterGain;
+        private _scene;
+        private _name;
+        private _connectedMesh;
+        /**
+        * Create a sound and attach it to a scene
+        * @param name Name of your sound
+        * @param url Url to the sound to load async
+        * @param readyToPlayCallback Provide a callback function if you'd like to load your code once the sound is ready to be played
+        * @param options Objects to provide with the current available options: autoplay, loop, distanceMax
+        */
+        constructor(name: string, url: string, scene: Scene, readyToPlayCallback?: () => void, options?: any);
+        public connectToSoundTrackAudioNode(soundTrackAudioNode: AudioNode): void;
+        /**
+        * Transform this sound into a directional source
+        * @param coneInnerAngle Size of the inner cone in degree
+        * @param coneOuterAngle Size of the outer cone in degree
+        * @param coneOuterGain Volume of the sound outside the outer cone (between 0.0 and 1.0)
+        */
+        public setDirectionalCone(coneInnerAngle: number, coneOuterAngle: number, coneOuterGain: number): void;
+        public setPosition(newPosition: Vector3): void;
+        public setLocalDirectionToMesh(newLocalDirection: Vector3): void;
+        private _updateDirection();
+        public updateDistanceFromListener(): void;
+        /**
+        * Play the sound
+        * @param time (optional) Start the sound after X seconds. Start immediately (0) by default.
+        */
+        public play(time?: number): void;
+        /**
+        * Stop the sound
+        * @param time (optional) Stop the sound after X seconds. Stop immediately (0) by default.
+        */
+        public stop(time?: number): void;
+        public pause(): void;
+        public setVolume(newVolume: number): void;
+        public getVolume(): number;
+        public attachToMesh(meshToConnectTo: AbstractMesh): void;
+        private _onRegisterAfterWorldMatrixUpdate(connectedMesh);
+        private _soundLoaded(audioData);
+    }
+}

+ 15 - 0
Babylon/Audio/babylon.soundtrack.d.ts

@@ -0,0 +1,15 @@
+declare module BABYLON {
+    class SoundTrack {
+        private _audioEngine;
+        private _trackGain;
+        private _trackConvolver;
+        private _scene;
+        public id: number;
+        public soundCollection: Sound[];
+        private _isMainTrack;
+        constructor(scene: Scene, options?: any);
+        public AddSound(sound: Sound): void;
+        public RemoveSound(sound: Sound): void;
+        public setVolume(newVolume: number): void;
+    }
+}

+ 24 - 0
Babylon/Bones/babylon.bone.d.ts

@@ -0,0 +1,24 @@
+declare module BABYLON {
+    class Bone {
+        public name: string;
+        public children: Bone[];
+        public animations: Animation[];
+        private _skeleton;
+        private _matrix;
+        private _baseMatrix;
+        private _worldTransform;
+        private _absoluteTransform;
+        private _invertedAbsoluteTransform;
+        private _parent;
+        constructor(name: string, skeleton: Skeleton, parentBone: Bone, matrix: Matrix);
+        public getParent(): Bone;
+        public getLocalMatrix(): Matrix;
+        public getBaseMatrix(): Matrix;
+        public getWorldMatrix(): Matrix;
+        public getInvertedAbsoluteTransform(): Matrix;
+        public getAbsoluteMatrix(): Matrix;
+        public updateMatrix(matrix: Matrix): void;
+        private _updateDifferenceMatrix();
+        public markAsDirty(): void;
+    }
+}

+ 18 - 0
Babylon/Bones/babylon.skeleton.d.ts

@@ -0,0 +1,18 @@
+declare module BABYLON {
+    class Skeleton {
+        public name: string;
+        public id: string;
+        public bones: Bone[];
+        private _scene;
+        private _isDirty;
+        private _transformMatrices;
+        private _animatables;
+        private _identity;
+        constructor(name: string, id: string, scene: Scene);
+        public getTransformMatrices(): Float32Array;
+        public _markAsDirty(): void;
+        public prepare(): void;
+        public getAnimatables(): IAnimatable[];
+        public clone(name: string, id: string): Skeleton;
+    }
+}

+ 14 - 0
Babylon/Cameras/VR/babylon.oculusCamera.d.ts

@@ -0,0 +1,14 @@
+declare module BABYLON {
+    class OculusCamera extends FreeCamera {
+        private _leftCamera;
+        private _rightCamera;
+        private _offsetOrientation;
+        private _deviceOrientationHandler;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _update(): void;
+        public _updateCamera(camera: FreeCamera): void;
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+    }
+}

+ 141 - 0
Babylon/Cameras/VR/babylon.oculusCamera.js

@@ -0,0 +1,141 @@
+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 BABYLON;
+(function (BABYLON) {
+    var OculusRiftDevKit2013_Metric = {
+        HResolution: 1280,
+        VResolution: 800,
+        HScreenSize: 0.149759993,
+        VScreenSize: 0.0935999975,
+        VScreenCenter: 0.0467999987,
+        EyeToScreenDistance: 0.0410000011,
+        LensSeparationDistance: 0.0635000020,
+        InterpupillaryDistance: 0.0640000030,
+        DistortionK: [1.0, 0.219999999, 0.239999995, 0.0],
+        ChromaAbCorrection: [0.995999992, -0.00400000019, 1.01400006, 0.0],
+        PostProcessScaleFactor: 1.714605507808412,
+        LensCenterOffset: 0.151976421
+    };
+
+    var _OculusInnerCamera = (function (_super) {
+        __extends(_OculusInnerCamera, _super);
+        function _OculusInnerCamera(name, position, scene, isLeftEye) {
+            _super.call(this, name, position, scene);
+            this._workMatrix = new BABYLON.Matrix();
+            this._actualUp = new BABYLON.Vector3(0, 0, 0);
+
+            // Constants
+            this._aspectRatioAspectRatio = OculusRiftDevKit2013_Metric.HResolution / (2 * OculusRiftDevKit2013_Metric.VResolution);
+            this._aspectRatioFov = (2 * Math.atan((OculusRiftDevKit2013_Metric.PostProcessScaleFactor * OculusRiftDevKit2013_Metric.VScreenSize) / (2 * OculusRiftDevKit2013_Metric.EyeToScreenDistance)));
+
+            var hMeters = (OculusRiftDevKit2013_Metric.HScreenSize / 4) - (OculusRiftDevKit2013_Metric.LensSeparationDistance / 2);
+            var h = (4 * hMeters) / OculusRiftDevKit2013_Metric.HScreenSize;
+
+            this._hMatrix = BABYLON.Matrix.Translation(isLeftEye ? h : -h, 0, 0);
+
+            this.viewport = new BABYLON.Viewport(isLeftEye ? 0 : 0.5, 0, 0.5, 1.0);
+
+            this._preViewMatrix = BABYLON.Matrix.Translation(isLeftEye ? .5 * OculusRiftDevKit2013_Metric.InterpupillaryDistance : -.5 * OculusRiftDevKit2013_Metric.InterpupillaryDistance, 0, 0);
+
+            // Postprocess
+            var postProcess = new BABYLON.OculusDistortionCorrectionPostProcess("Oculus Distortion", this, !isLeftEye, OculusRiftDevKit2013_Metric);
+        }
+        _OculusInnerCamera.prototype.getProjectionMatrix = function () {
+            BABYLON.Matrix.PerspectiveFovLHToRef(this._aspectRatioFov, this._aspectRatioAspectRatio, this.minZ, this.maxZ, this._workMatrix);
+            this._workMatrix.multiplyToRef(this._hMatrix, this._projectionMatrix);
+            return this._projectionMatrix;
+        };
+
+        _OculusInnerCamera.prototype._getViewMatrix = function () {
+            BABYLON.Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);
+
+            BABYLON.Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);
+            BABYLON.Vector3.TransformNormalToRef(this.upVector, this._cameraRotationMatrix, this._actualUp);
+
+            // Computing target and final matrix
+            this.position.addToRef(this._transformedReferencePoint, this._currentTarget);
+
+            BABYLON.Matrix.LookAtLHToRef(this.position, this._currentTarget, this._actualUp, this._workMatrix);
+
+            this._workMatrix.multiplyToRef(this._preViewMatrix, this._viewMatrix);
+            return this._viewMatrix;
+        };
+        return _OculusInnerCamera;
+    })(BABYLON.FreeCamera);
+
+    var OculusCamera = (function (_super) {
+        __extends(OculusCamera, _super);
+        function OculusCamera(name, position, scene) {
+            _super.call(this, name, position, scene);
+
+            this._leftCamera = new _OculusInnerCamera(name + "_left", position.clone(), scene, true);
+            this._rightCamera = new _OculusInnerCamera(name + "_right", position.clone(), scene, false);
+
+            this.subCameras.push(this._leftCamera);
+            this.subCameras.push(this._rightCamera);
+
+            this._deviceOrientationHandler = this._onOrientationEvent.bind(this);
+        }
+        OculusCamera.prototype._update = function () {
+            this._leftCamera.position.copyFrom(this.position);
+            this._rightCamera.position.copyFrom(this.position);
+
+            this._updateCamera(this._leftCamera);
+            this._updateCamera(this._rightCamera);
+
+            _super.prototype._update.call(this);
+        };
+
+        OculusCamera.prototype._updateCamera = function (camera) {
+            camera.minZ = this.minZ;
+            camera.maxZ = this.maxZ;
+
+            camera.rotation.x = this.rotation.x;
+            camera.rotation.y = this.rotation.y;
+            camera.rotation.z = this.rotation.z;
+        };
+
+        // Oculus events
+        OculusCamera.prototype._onOrientationEvent = function (evt) {
+            var yaw = evt.alpha / 180 * Math.PI;
+            var pitch = evt.beta / 180 * Math.PI;
+            var roll = evt.gamma / 180 * Math.PI;
+
+            if (!this._offsetOrientation) {
+                this._offsetOrientation = {
+                    yaw: yaw,
+                    pitch: pitch,
+                    roll: roll
+                };
+                return;
+            } else {
+                this.rotation.y += yaw - this._offsetOrientation.yaw;
+                this.rotation.x += pitch - this._offsetOrientation.pitch;
+                this.rotation.z += this._offsetOrientation.roll - roll;
+
+                this._offsetOrientation.yaw = yaw;
+                this._offsetOrientation.pitch = pitch;
+                this._offsetOrientation.roll = roll;
+            }
+        };
+
+        OculusCamera.prototype.attachControl = function (element, noPreventDefault) {
+            _super.prototype.attachControl.call(this, element, noPreventDefault);
+
+            window.addEventListener("deviceorientation", this._deviceOrientationHandler);
+        };
+
+        OculusCamera.prototype.detachControl = function (element) {
+            _super.prototype.detachControl.call(this, element);
+
+            window.removeEventListener("deviceorientation", this._deviceOrientationHandler);
+        };
+        return OculusCamera;
+    })(BABYLON.FreeCamera);
+    BABYLON.OculusCamera = OculusCamera;
+})(BABYLON || (BABYLON = {}));
+//# sourceMappingURL=babylon.oculusCamera.js.map

Babylon/Cameras/babylon.oculusCamera.ts → Babylon/Cameras/VR/babylon.oculusCamera.ts


+ 21 - 0
Babylon/Cameras/VR/babylon.oculusGamepadCamera.d.ts

@@ -0,0 +1,21 @@
+declare module BABYLON {
+    class OculusGamepadCamera extends FreeCamera {
+        private _leftCamera;
+        private _rightCamera;
+        private _offsetOrientation;
+        private _deviceOrientationHandler;
+        private _gamepad;
+        private _gamepads;
+        public angularSensibility: number;
+        public moveSensibility: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private _onNewGameConnected(gamepad);
+        public _update(): void;
+        public _checkInputs(): void;
+        public _updateCamera(camera: FreeCamera): void;
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+        public dispose(): void;
+    }
+}

+ 175 - 0
Babylon/Cameras/VR/babylon.oculusGamepadCamera.js

@@ -0,0 +1,175 @@
+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 BABYLON;
+(function (BABYLON) {
+    var OculusRiftDevKit2013_Metric = {
+        HResolution: 1280,
+        VResolution: 800,
+        HScreenSize: 0.149759993,
+        VScreenSize: 0.0935999975,
+        VScreenCenter: 0.0467999987,
+        EyeToScreenDistance: 0.0410000011,
+        LensSeparationDistance: 0.0635000020,
+        InterpupillaryDistance: 0.0640000030,
+        DistortionK: [1.0, 0.219999999, 0.239999995, 0.0],
+        ChromaAbCorrection: [0.995999992, -0.00400000019, 1.01400006, 0.0],
+        PostProcessScaleFactor: 1.714605507808412,
+        LensCenterOffset: 0.151976421
+    };
+
+    var _OculusInnerGamepadCamera = (function (_super) {
+        __extends(_OculusInnerGamepadCamera, _super);
+        function _OculusInnerGamepadCamera(name, position, scene, isLeftEye) {
+            _super.call(this, name, position, scene);
+            this._workMatrix = new BABYLON.Matrix();
+            this._actualUp = new BABYLON.Vector3(0, 0, 0);
+
+            // Constants
+            this._aspectRatioAspectRatio = OculusRiftDevKit2013_Metric.HResolution / (2 * OculusRiftDevKit2013_Metric.VResolution);
+            this._aspectRatioFov = (2 * Math.atan((OculusRiftDevKit2013_Metric.PostProcessScaleFactor * OculusRiftDevKit2013_Metric.VScreenSize) / (2 * OculusRiftDevKit2013_Metric.EyeToScreenDistance)));
+
+            var hMeters = (OculusRiftDevKit2013_Metric.HScreenSize / 4) - (OculusRiftDevKit2013_Metric.LensSeparationDistance / 2);
+            var h = (4 * hMeters) / OculusRiftDevKit2013_Metric.HScreenSize;
+
+            this._hMatrix = BABYLON.Matrix.Translation(isLeftEye ? h : -h, 0, 0);
+
+            this.viewport = new BABYLON.Viewport(isLeftEye ? 0 : 0.5, 0, 0.5, 1.0);
+
+            this._preViewMatrix = BABYLON.Matrix.Translation(isLeftEye ? .5 * OculusRiftDevKit2013_Metric.InterpupillaryDistance : -.5 * OculusRiftDevKit2013_Metric.InterpupillaryDistance, 0, 0);
+
+            // Postprocess
+            var postProcess = new BABYLON.OculusDistortionCorrectionPostProcess("Oculus Distortion", this, !isLeftEye, OculusRiftDevKit2013_Metric);
+        }
+        _OculusInnerGamepadCamera.prototype.getProjectionMatrix = function () {
+            BABYLON.Matrix.PerspectiveFovLHToRef(this._aspectRatioFov, this._aspectRatioAspectRatio, this.minZ, this.maxZ, this._workMatrix);
+            this._workMatrix.multiplyToRef(this._hMatrix, this._projectionMatrix);
+            return this._projectionMatrix;
+        };
+
+        _OculusInnerGamepadCamera.prototype._getViewMatrix = function () {
+            BABYLON.Matrix.RotationYawPitchRollToRef(this.rotation.y, this.rotation.x, this.rotation.z, this._cameraRotationMatrix);
+
+            BABYLON.Vector3.TransformCoordinatesToRef(this._referencePoint, this._cameraRotationMatrix, this._transformedReferencePoint);
+            BABYLON.Vector3.TransformNormalToRef(this.upVector, this._cameraRotationMatrix, this._actualUp);
+
+            // Computing target and final matrix
+            this.position.addToRef(this._transformedReferencePoint, this._currentTarget);
+
+            BABYLON.Matrix.LookAtLHToRef(this.position, this._currentTarget, this._actualUp, this._workMatrix);
+
+            this._workMatrix.multiplyToRef(this._preViewMatrix, this._viewMatrix);
+            return this._viewMatrix;
+        };
+        return _OculusInnerGamepadCamera;
+    })(BABYLON.FreeCamera);
+
+    var OculusGamepadCamera = (function (_super) {
+        __extends(OculusGamepadCamera, _super);
+        function OculusGamepadCamera(name, position, scene) {
+            var _this = this;
+            _super.call(this, name, position, scene);
+            this.angularSensibility = 200;
+            this.moveSensibility = 75;
+
+            this._leftCamera = new _OculusInnerGamepadCamera(name + "_left", position.clone(), scene, true);
+            this._rightCamera = new _OculusInnerGamepadCamera(name + "_right", position.clone(), scene, false);
+
+            this.subCameras.push(this._leftCamera);
+            this.subCameras.push(this._rightCamera);
+
+            this._deviceOrientationHandler = this._onOrientationEvent.bind(this);
+            this._gamepads = new BABYLON.Gamepads(function (gamepad) {
+                _this._onNewGameConnected(gamepad);
+            });
+        }
+        OculusGamepadCamera.prototype._onNewGameConnected = function (gamepad) {
+            // Only the first gamepad can control the camera
+            if (gamepad.index === 0) {
+                this._gamepad = gamepad;
+            }
+        };
+
+        OculusGamepadCamera.prototype._update = function () {
+            this._leftCamera.position.copyFrom(this.position);
+            this._rightCamera.position.copyFrom(this.position);
+
+            this._updateCamera(this._leftCamera);
+            this._updateCamera(this._rightCamera);
+
+            _super.prototype._update.call(this);
+        };
+
+        OculusGamepadCamera.prototype._checkInputs = function () {
+            if (!this._gamepad) {
+                return;
+            }
+
+            var LSValues = this._gamepad.leftStick;
+            var normalizedLX = LSValues.x / this.moveSensibility;
+            var normalizedLY = LSValues.y / this.moveSensibility;
+            LSValues.x = Math.abs(normalizedLX) > 0.005 ? 0 + normalizedLX : 0;
+            LSValues.y = Math.abs(normalizedLY) > 0.005 ? 0 + normalizedLY : 0;
+
+            var cameraTransform = BABYLON.Matrix.RotationYawPitchRoll(this.rotation.y, this.rotation.x, 0);
+            var deltaTransform = BABYLON.Vector3.TransformCoordinates(new BABYLON.Vector3(LSValues.x, 0, -LSValues.y), cameraTransform);
+            this.cameraDirection = this.cameraDirection.add(deltaTransform);
+        };
+
+        OculusGamepadCamera.prototype._updateCamera = function (camera) {
+            camera.minZ = this.minZ;
+            camera.maxZ = this.maxZ;
+
+            camera.rotation.x = this.rotation.x;
+            camera.rotation.y = this.rotation.y;
+            camera.rotation.z = this.rotation.z;
+        };
+
+        // Oculus events
+        OculusGamepadCamera.prototype._onOrientationEvent = function (evt) {
+            var yaw = evt.alpha / 180 * Math.PI;
+            var pitch = evt.beta / 180 * Math.PI;
+            var roll = evt.gamma / 180 * Math.PI;
+
+            if (!this._offsetOrientation) {
+                this._offsetOrientation = {
+                    yaw: yaw,
+                    pitch: pitch,
+                    roll: roll
+                };
+                return;
+            } else {
+                this.rotation.y += yaw - this._offsetOrientation.yaw;
+                this.rotation.x += pitch - this._offsetOrientation.pitch;
+                this.rotation.z += this._offsetOrientation.roll - roll;
+
+                this._offsetOrientation.yaw = yaw;
+                this._offsetOrientation.pitch = pitch;
+                this._offsetOrientation.roll = roll;
+            }
+        };
+
+        OculusGamepadCamera.prototype.attachControl = function (element, noPreventDefault) {
+            _super.prototype.attachControl.call(this, element, noPreventDefault);
+
+            window.addEventListener("deviceorientation", this._deviceOrientationHandler);
+        };
+
+        OculusGamepadCamera.prototype.detachControl = function (element) {
+            _super.prototype.detachControl.call(this, element);
+
+            window.removeEventListener("deviceorientation", this._deviceOrientationHandler);
+        };
+
+        OculusGamepadCamera.prototype.dispose = function () {
+            this._gamepads.dispose();
+            _super.prototype.dispose.call(this);
+        };
+        return OculusGamepadCamera;
+    })(BABYLON.FreeCamera);
+    BABYLON.OculusGamepadCamera = OculusGamepadCamera;
+})(BABYLON || (BABYLON = {}));
+//# sourceMappingURL=babylon.oculusGamepadCamera.js.map

Babylon/Cameras/babylon.oculusGamepadCamera.ts → Babylon/Cameras/VR/babylon.oculusGamepadCamera.ts


+ 9 - 0
Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.d.ts

@@ -0,0 +1,9 @@
+declare module BABYLON {
+    class VRDeviceOrientationCamera extends OculusCamera {
+        public _alpha: number;
+        public _beta: number;
+        public _gamma: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+    }
+}

+ 37 - 0
Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.js

@@ -0,0 +1,37 @@
+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 BABYLON;
+(function (BABYLON) {
+    var VRDeviceOrientationCamera = (function (_super) {
+        __extends(VRDeviceOrientationCamera, _super);
+        function VRDeviceOrientationCamera(name, position, scene) {
+            _super.call(this, name, position, scene);
+            this._alpha = 0;
+            this._beta = 0;
+            this._gamma = 0;
+        }
+        VRDeviceOrientationCamera.prototype._onOrientationEvent = function (evt) {
+            this._alpha = +evt.alpha | 0;
+            this._beta = +evt.beta | 0;
+            this._gamma = +evt.gamma | 0;
+
+            if (this._gamma < 0) {
+                this._gamma = 90 + this._gamma;
+            } else {
+                // Incline it in the correct angle.
+                this._gamma = 270 - this._gamma;
+            }
+
+            this.rotation.x = this._gamma / 180.0 * Math.PI;
+            this.rotation.y = -this._alpha / 180.0 * Math.PI;
+            this.rotation.z = this._beta / 180.0 * Math.PI;
+        };
+        return VRDeviceOrientationCamera;
+    })(BABYLON.OculusCamera);
+    BABYLON.VRDeviceOrientationCamera = VRDeviceOrientationCamera;
+})(BABYLON || (BABYLON = {}));
+//# sourceMappingURL=babylon.vrDeviceOrientationCamera.js.map

Babylon/Cameras/babylon.vrDeviceOrientationCamera.ts → Babylon/Cameras/VR/babylon.vrDeviceOrientationCamera.ts


+ 17 - 0
Babylon/Cameras/VR/babylon.webVRCamera.d.ts

@@ -0,0 +1,17 @@
+declare var HMDVRDevice: any;
+declare var PositionSensorVRDevice: any;
+declare module BABYLON {
+    class WebVRCamera extends OculusCamera {
+        public _hmdDevice: any;
+        public _sensorDevice: any;
+        public _cacheState: any;
+        public _cacheQuaternion: Quaternion;
+        public _cacheRotation: Vector3;
+        public _vrEnabled: boolean;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private _getWebVRDevices(devices);
+        public _update(): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+    }
+}

+ 80 - 0
Babylon/Cameras/VR/babylon.webVRCamera.js

@@ -0,0 +1,80 @@
+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 BABYLON;
+(function (BABYLON) {
+    var WebVRCamera = (function (_super) {
+        __extends(WebVRCamera, _super);
+        function WebVRCamera(name, position, scene) {
+            _super.call(this, name, position, scene);
+            this._hmdDevice = null;
+            this._sensorDevice = null;
+            this._cacheState = null;
+            this._cacheQuaternion = new BABYLON.Quaternion();
+            this._cacheRotation = BABYLON.Vector3.Zero();
+            this._vrEnabled = false;
+            this._getWebVRDevices = this._getWebVRDevices.bind(this);
+        }
+        WebVRCamera.prototype._getWebVRDevices = function (devices) {
+            var size = devices.length;
+            var i = 0;
+
+            // Reset devices.
+            this._sensorDevice = null;
+            this._hmdDevice = null;
+
+            while (i < size && this._hmdDevice === null) {
+                if (devices[i] instanceof HMDVRDevice) {
+                    this._hmdDevice = devices[i];
+                }
+                i++;
+            }
+
+            i = 0;
+
+            while (i < size && this._sensorDevice === null) {
+                if (devices[i] instanceof PositionSensorVRDevice && (!this._hmdDevice || devices[i].hardwareUnitId === this._hmdDevice.hardwareUnitId)) {
+                    this._sensorDevice = devices[i];
+                }
+                i++;
+            }
+
+            this._vrEnabled = this._sensorDevice && this._hmdDevice ? true : false;
+        };
+
+        WebVRCamera.prototype._update = function () {
+            if (this._vrEnabled) {
+                this._cacheState = this._sensorDevice.getState();
+                this._cacheQuaternion.copyFromFloats(this._cacheState.orientation.x, this._cacheState.orientation.y, this._cacheState.orientation.z, this._cacheState.orientation.w);
+                this._cacheQuaternion.toEulerAnglesToRef(this._cacheRotation);
+
+                this.rotation.x = -this._cacheRotation.z;
+                this.rotation.y = -this._cacheRotation.y;
+                this.rotation.z = this._cacheRotation.x;
+            }
+
+            _super.prototype._update.call(this);
+        };
+
+        WebVRCamera.prototype.attachControl = function (element, noPreventDefault) {
+            _super.prototype.attachControl.call(this, element, noPreventDefault);
+
+            if (navigator.getVRDevices) {
+                navigator.getVRDevices().then(this._getWebVRDevices);
+            } else if (navigator.mozGetVRDevices) {
+                navigator.mozGetVRDevices(this._getWebVRDevices);
+            }
+        };
+
+        WebVRCamera.prototype.detachControl = function (element) {
+            _super.prototype.detachControl.call(this, element);
+            this._vrEnabled = false;
+        };
+        return WebVRCamera;
+    })(BABYLON.OculusCamera);
+    BABYLON.WebVRCamera = WebVRCamera;
+})(BABYLON || (BABYLON = {}));
+//# sourceMappingURL=babylon.webVRCamera.js.map

Babylon/Cameras/babylon.webVRCamera.ts → Babylon/Cameras/VR/babylon.webVRCamera.ts


+ 20 - 0
Babylon/Cameras/babylon.anaglyphCamera.d.ts

@@ -0,0 +1,20 @@
+declare module BABYLON {
+    class AnaglyphArcRotateCamera extends ArcRotateCamera {
+        private _eyeSpace;
+        private _leftCamera;
+        private _rightCamera;
+        constructor(name: string, alpha: number, beta: number, radius: number, target: any, eyeSpace: number, scene: any);
+        public _update(): void;
+        public _updateCamera(camera: ArcRotateCamera): void;
+    }
+    class AnaglyphFreeCamera extends FreeCamera {
+        private _eyeSpace;
+        private _leftCamera;
+        private _rightCamera;
+        private _transformMatrix;
+        constructor(name: string, position: Vector3, eyeSpace: number, scene: Scene);
+        public _getSubCameraPosition(eyeSpace: any, result: any): void;
+        public _update(): void;
+        public _updateCamera(camera: FreeCamera): void;
+    }
+}

+ 69 - 0
Babylon/Cameras/babylon.arcRotateCamera.d.ts

@@ -0,0 +1,69 @@
+declare module BABYLON {
+    class ArcRotateCamera extends Camera {
+        public alpha: number;
+        public beta: number;
+        public radius: number;
+        public target: any;
+        public inertialAlphaOffset: number;
+        public inertialBetaOffset: number;
+        public inertialRadiusOffset: number;
+        public lowerAlphaLimit: any;
+        public upperAlphaLimit: any;
+        public lowerBetaLimit: number;
+        public upperBetaLimit: number;
+        public lowerRadiusLimit: any;
+        public upperRadiusLimit: any;
+        public angularSensibility: number;
+        public wheelPrecision: number;
+        public keysUp: number[];
+        public keysDown: number[];
+        public keysLeft: number[];
+        public keysRight: number[];
+        public zoomOnFactor: number;
+        public targetScreenOffset: Vector2;
+        private _keys;
+        private _viewMatrix;
+        private _attachedElement;
+        private _onPointerDown;
+        private _onPointerUp;
+        private _onPointerMove;
+        private _wheel;
+        private _onMouseMove;
+        private _onKeyDown;
+        private _onKeyUp;
+        private _onLostFocus;
+        private _reset;
+        private _onGestureStart;
+        private _onGesture;
+        private _MSGestureHandler;
+        public onCollide: (collidedMesh: AbstractMesh) => void;
+        public checkCollisions: boolean;
+        public collisionRadius: Vector3;
+        private _collider;
+        private _previousPosition;
+        private _collisionVelocity;
+        private _newPosition;
+        private _previousAlpha;
+        private _previousBeta;
+        private _previousRadius;
+        public pinchPrecision: number;
+        private _touchStart;
+        private _touchMove;
+        private _touchEnd;
+        private _pinchStart;
+        private _pinchMove;
+        private _pinchEnd;
+        constructor(name: string, alpha: number, beta: number, radius: number, target: any, scene: Scene);
+        public _getTargetPosition(): Vector3;
+        public _initCache(): void;
+        public _updateCache(ignoreParentClass?: boolean): void;
+        public _isSynchronizedViewMatrix(): boolean;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+        public _update(): void;
+        public setPosition(position: Vector3): void;
+        public _getViewMatrix(): Matrix;
+        public zoomOn(meshes?: AbstractMesh[]): void;
+        public focusOn(meshesOrMinMaxVectorAndDistance: any): void;
+    }
+}

+ 44 - 0
Babylon/Cameras/babylon.camera.d.ts

@@ -0,0 +1,44 @@
+declare module BABYLON {
+    class Camera extends Node {
+        public position: Vector3;
+        static PERSPECTIVE_CAMERA: number;
+        static ORTHOGRAPHIC_CAMERA: number;
+        public upVector: Vector3;
+        public orthoLeft: any;
+        public orthoRight: any;
+        public orthoBottom: any;
+        public orthoTop: any;
+        public fov: number;
+        public minZ: number;
+        public maxZ: number;
+        public inertia: number;
+        public mode: number;
+        public isIntermediate: boolean;
+        public viewport: Viewport;
+        public subCameras: any[];
+        public layerMask: number;
+        private _computedViewMatrix;
+        public _projectionMatrix: Matrix;
+        private _worldMatrix;
+        public _postProcesses: PostProcess[];
+        public _postProcessesTakenIndices: any[];
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _initCache(): void;
+        public _updateCache(ignoreParentClass?: boolean): void;
+        public _updateFromScene(): void;
+        public _isSynchronized(): boolean;
+        public _isSynchronizedViewMatrix(): boolean;
+        public _isSynchronizedProjectionMatrix(): boolean;
+        public attachControl(element: HTMLElement): void;
+        public detachControl(element: HTMLElement): void;
+        public _update(): void;
+        public attachPostProcess(postProcess: PostProcess, insertAt?: number): number;
+        public detachPostProcess(postProcess: PostProcess, atIndices?: any): number[];
+        public getWorldMatrix(): Matrix;
+        public _getViewMatrix(): Matrix;
+        public getViewMatrix(): Matrix;
+        public _computeViewMatrix(force?: boolean): Matrix;
+        public getProjectionMatrix(force?: boolean): Matrix;
+        public dispose(): void;
+    }
+}

+ 18 - 0
Babylon/Cameras/babylon.deviceOrientationCamera.d.ts

@@ -0,0 +1,18 @@
+declare module BABYLON {
+    class DeviceOrientationCamera extends FreeCamera {
+        private _offsetX;
+        private _offsetY;
+        private _orientationGamma;
+        private _orientationBeta;
+        private _initialOrientationGamma;
+        private _initialOrientationBeta;
+        private _attachedCanvas;
+        private _orientationChanged;
+        public angularSensibility: number;
+        public moveSensibility: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public attachControl(canvas: HTMLCanvasElement, noPreventDefault: boolean): void;
+        public detachControl(canvas: HTMLCanvasElement): void;
+        public _checkInputs(): void;
+    }
+}

+ 14 - 0
Babylon/Cameras/babylon.followCamera.d.ts

@@ -0,0 +1,14 @@
+declare module BABYLON {
+    class FollowCamera extends TargetCamera {
+        public radius: number;
+        public rotationOffset: number;
+        public heightOffset: number;
+        public cameraAcceleration: number;
+        public maxCameraSpeed: number;
+        public target: AbstractMesh;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private getRadians(degrees);
+        private follow(cameraTarget);
+        public _update(): void;
+    }
+}

+ 38 - 0
Babylon/Cameras/babylon.freeCamera.d.ts

@@ -0,0 +1,38 @@
+declare module BABYLON {
+    class FreeCamera extends TargetCamera {
+        public ellipsoid: Vector3;
+        public keysUp: number[];
+        public keysDown: number[];
+        public keysLeft: number[];
+        public keysRight: number[];
+        public checkCollisions: boolean;
+        public applyGravity: boolean;
+        public angularSensibility: number;
+        public onCollide: (collidedMesh: AbstractMesh) => void;
+        private _keys;
+        private _collider;
+        private _needMoveForGravity;
+        private _oldPosition;
+        private _diffPosition;
+        private _newPosition;
+        private _attachedElement;
+        private _localDirection;
+        private _transformedDirection;
+        private _onMouseDown;
+        private _onMouseUp;
+        private _onMouseOut;
+        private _onMouseMove;
+        private _onKeyDown;
+        private _onKeyUp;
+        public _onLostFocus: (e: FocusEvent) => any;
+        public _waitingLockedTargetId: string;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+        public _collideWithWorld(velocity: Vector3): void;
+        public _checkInputs(): void;
+        public _decideIfNeedsToMove(): boolean;
+        public _updatePosition(): void;
+        public _update(): void;
+    }
+}

+ 12 - 0
Babylon/Cameras/babylon.gamepadCamera.d.ts

@@ -0,0 +1,12 @@
+declare module BABYLON {
+    class GamepadCamera extends FreeCamera {
+        private _gamepad;
+        private _gamepads;
+        public angularSensibility: number;
+        public moveSensibility: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private _onNewGameConnected(gamepad);
+        public _checkInputs(): void;
+        public dispose(): void;
+    }
+}

+ 14 - 0
Babylon/Cameras/babylon.oculusCamera.d.ts

@@ -0,0 +1,14 @@
+declare module BABYLON {
+    class OculusCamera extends FreeCamera {
+        private _leftCamera;
+        private _rightCamera;
+        private _offsetOrientation;
+        private _deviceOrientationHandler;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _update(): void;
+        public _updateCamera(camera: FreeCamera): void;
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+    }
+}

+ 21 - 0
Babylon/Cameras/babylon.oculusGamepadCamera.d.ts

@@ -0,0 +1,21 @@
+declare module BABYLON {
+    class OculusGamepadCamera extends FreeCamera {
+        private _leftCamera;
+        private _rightCamera;
+        private _offsetOrientation;
+        private _deviceOrientationHandler;
+        private _gamepad;
+        private _gamepads;
+        public angularSensibility: number;
+        public moveSensibility: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private _onNewGameConnected(gamepad);
+        public _update(): void;
+        public _checkInputs(): void;
+        public _updateCamera(camera: FreeCamera): void;
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+        public dispose(): void;
+    }
+}

+ 33 - 0
Babylon/Cameras/babylon.targetCamera.d.ts

@@ -0,0 +1,33 @@
+declare module BABYLON {
+    class TargetCamera extends Camera {
+        public cameraDirection: Vector3;
+        public cameraRotation: Vector2;
+        public rotation: Vector3;
+        public speed: number;
+        public noRotationConstraint: boolean;
+        public lockedTarget: any;
+        public _currentTarget: Vector3;
+        public _viewMatrix: Matrix;
+        public _camMatrix: Matrix;
+        public _cameraTransformMatrix: Matrix;
+        public _cameraRotationMatrix: Matrix;
+        public _referencePoint: Vector3;
+        public _transformedReferencePoint: Vector3;
+        public _lookAtTemp: Matrix;
+        public _tempMatrix: Matrix;
+        public _reset: () => void;
+        public _waitingLockedTargetId: string;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _getLockedTargetPosition(): Vector3;
+        public _initCache(): void;
+        public _updateCache(ignoreParentClass?: boolean): void;
+        public _isSynchronizedViewMatrix(): boolean;
+        public _computeLocalCameraSpeed(): number;
+        public setTarget(target: Vector3): void;
+        public getTarget(): Vector3;
+        public _decideIfNeedsToMove(): boolean;
+        public _updatePosition(): void;
+        public _update(): void;
+        public _getViewMatrix(): Matrix;
+    }
+}

+ 18 - 0
Babylon/Cameras/babylon.touchCamera.d.ts

@@ -0,0 +1,18 @@
+declare module BABYLON {
+    class TouchCamera extends FreeCamera {
+        private _offsetX;
+        private _offsetY;
+        private _pointerCount;
+        private _pointerPressed;
+        private _attachedCanvas;
+        private _onPointerDown;
+        private _onPointerUp;
+        private _onPointerMove;
+        public angularSensibility: number;
+        public moveSensibility: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public attachControl(canvas: HTMLCanvasElement, noPreventDefault: boolean): void;
+        public detachControl(canvas: HTMLCanvasElement): void;
+        public _checkInputs(): void;
+    }
+}

+ 9 - 0
Babylon/Cameras/babylon.virtualJoysticksCamera.d.ts

@@ -0,0 +1,9 @@
+declare module BABYLON {
+    class VirtualJoysticksCamera extends FreeCamera {
+        private _leftjoystick;
+        private _rightjoystick;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _checkInputs(): void;
+        public dispose(): void;
+    }
+}

+ 9 - 0
Babylon/Cameras/babylon.vrDeviceOrientationCamera.d.ts

@@ -0,0 +1,9 @@
+declare module BABYLON {
+    class VRDeviceOrientationCamera extends OculusCamera {
+        public _alpha: number;
+        public _beta: number;
+        public _gamma: number;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public _onOrientationEvent(evt: DeviceOrientationEvent): void;
+    }
+}

+ 17 - 0
Babylon/Cameras/babylon.webVRCamera.d.ts

@@ -0,0 +1,17 @@
+declare var HMDVRDevice: any;
+declare var PositionSensorVRDevice: any;
+declare module BABYLON {
+    class WebVRCamera extends OculusCamera {
+        public _hmdDevice: any;
+        public _sensorDevice: any;
+        public _cacheState: any;
+        public _cacheQuaternion: Quaternion;
+        public _cacheRotation: Vector3;
+        public _vrEnabled: boolean;
+        constructor(name: string, position: Vector3, scene: Scene);
+        private _getWebVRDevices(devices);
+        public _update(): void;
+        public attachControl(element: HTMLElement, noPreventDefault?: boolean): void;
+        public detachControl(element: HTMLElement): void;
+    }
+}

+ 36 - 0
Babylon/Collisions/babylon.collider.d.ts

@@ -0,0 +1,36 @@
+declare module BABYLON {
+    class Collider {
+        public radius: Vector3;
+        public retry: number;
+        public velocity: Vector3;
+        public basePoint: Vector3;
+        public epsilon: number;
+        public collisionFound: boolean;
+        public velocityWorldLength: number;
+        public basePointWorld: Vector3;
+        public velocityWorld: Vector3;
+        public normalizedVelocity: Vector3;
+        public initialVelocity: Vector3;
+        public initialPosition: Vector3;
+        public nearestDistance: number;
+        public intersectionPoint: Vector3;
+        public collidedMesh: AbstractMesh;
+        private _collisionPoint;
+        private _planeIntersectionPoint;
+        private _tempVector;
+        private _tempVector2;
+        private _tempVector3;
+        private _tempVector4;
+        private _edge;
+        private _baseToVertex;
+        private _destinationPoint;
+        private _slidePlaneNormal;
+        private _displacementVector;
+        public _initialize(source: Vector3, dir: Vector3, e: number): void;
+        public _checkPointInTriangle(point: Vector3, pa: Vector3, pb: Vector3, pc: Vector3, n: Vector3): boolean;
+        public _canDoCollision(sphereCenter: Vector3, sphereRadius: number, vecMin: Vector3, vecMax: Vector3): boolean;
+        public _testTriangle(faceIndex: number, subMesh: SubMesh, p1: Vector3, p2: Vector3, p3: Vector3): void;
+        public _collide(subMesh: any, pts: Vector3[], indices: number[], indexStart: number, indexEnd: number, decal: number): void;
+        public _getResponse(pos: Vector3, vel: Vector3): void;
+    }
+}

+ 20 - 0
Babylon/Collisions/babylon.pickingInfo.d.ts

@@ -0,0 +1,20 @@
+declare module BABYLON {
+    class IntersectionInfo {
+        public bu: number;
+        public bv: number;
+        public distance: number;
+        public faceId: number;
+        constructor(bu: number, bv: number, distance: number);
+    }
+    class PickingInfo {
+        public hit: boolean;
+        public distance: number;
+        public pickedPoint: Vector3;
+        public pickedMesh: AbstractMesh;
+        public bu: number;
+        public bv: number;
+        public faceId: number;
+        public getNormal(): Vector3;
+        public getTextureCoordinates(): Vector2;
+    }
+}

+ 22 - 0
Babylon/Culling/Octrees/babylon.octree.d.ts

@@ -0,0 +1,22 @@
+declare module BABYLON {
+    interface IOctreeContainer<T> {
+        blocks: OctreeBlock<T>[];
+    }
+    class Octree<T> {
+        public maxDepth: number;
+        public blocks: OctreeBlock<T>[];
+        public dynamicContent: T[];
+        private _maxBlockCapacity;
+        private _selectionContent;
+        private _creationFunc;
+        constructor(creationFunc: (entry: T, block: OctreeBlock<T>) => void, maxBlockCapacity?: number, maxDepth?: number);
+        public update(worldMin: Vector3, worldMax: Vector3, entries: T[]): void;
+        public addMesh(entry: T): void;
+        public select(frustumPlanes: Plane[], allowDuplicate?: boolean): SmartArray<T>;
+        public intersects(sphereCenter: Vector3, sphereRadius: number, allowDuplicate?: boolean): SmartArray<T>;
+        public intersectsRay(ray: Ray): SmartArray<T>;
+        static _CreateBlocks<T>(worldMin: Vector3, worldMax: Vector3, entries: T[], maxBlockCapacity: number, currentDepth: number, maxDepth: number, target: IOctreeContainer<T>, creationFunc: (entry: T, block: OctreeBlock<T>) => void): void;
+        static CreationFuncForMeshes: (entry: AbstractMesh, block: OctreeBlock<AbstractMesh>) => void;
+        static CreationFuncForSubMeshes: (entry: SubMesh, block: OctreeBlock<SubMesh>) => void;
+    }
+}

+ 23 - 0
Babylon/Culling/Octrees/babylon.octreeBlock.d.ts

@@ -0,0 +1,23 @@
+declare module BABYLON {
+    class OctreeBlock<T> {
+        public entries: T[];
+        public blocks: OctreeBlock<T>[];
+        private _depth;
+        private _maxDepth;
+        private _capacity;
+        private _minPoint;
+        private _maxPoint;
+        private _boundingVectors;
+        private _creationFunc;
+        constructor(minPoint: Vector3, maxPoint: Vector3, capacity: number, depth: number, maxDepth: number, creationFunc: (entry: T, block: OctreeBlock<T>) => void);
+        public capacity : number;
+        public minPoint : Vector3;
+        public maxPoint : Vector3;
+        public addEntry(entry: T): void;
+        public addEntries(entries: T[]): void;
+        public select(frustumPlanes: Plane[], selection: SmartArray<T>, allowDuplicate?: boolean): void;
+        public intersects(sphereCenter: Vector3, sphereRadius: number, selection: SmartArray<T>, allowDuplicate?: boolean): void;
+        public intersectsRay(ray: Ray, selection: SmartArray<T>): void;
+        public createInnerBlocks(): void;
+    }
+}

+ 26 - 0
Babylon/Culling/babylon.boundingBox.d.ts

@@ -0,0 +1,26 @@
+declare module BABYLON {
+    class BoundingBox {
+        public minimum: Vector3;
+        public maximum: Vector3;
+        public vectors: Vector3[];
+        public center: Vector3;
+        public extendSize: Vector3;
+        public directions: Vector3[];
+        public vectorsWorld: Vector3[];
+        public minimumWorld: Vector3;
+        public maximumWorld: Vector3;
+        private _worldMatrix;
+        constructor(minimum: Vector3, maximum: Vector3);
+        public getWorldMatrix(): Matrix;
+        public _update(world: Matrix): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public isCompletelyInFrustum(frustumPlanes: Plane[]): boolean;
+        public intersectsPoint(point: Vector3): boolean;
+        public intersectsSphere(sphere: BoundingSphere): boolean;
+        public intersectsMinMax(min: Vector3, max: Vector3): boolean;
+        static Intersects(box0: BoundingBox, box1: BoundingBox): boolean;
+        static IntersectsSphere(minPoint: Vector3, maxPoint: Vector3, sphereCenter: Vector3, sphereRadius: number): boolean;
+        static IsCompletelyInFrustum(boundingVectors: Vector3[], frustumPlanes: Plane[]): boolean;
+        static IsInFrustum(boundingVectors: Vector3[], frustumPlanes: Plane[]): boolean;
+    }
+}

+ 15 - 0
Babylon/Culling/babylon.boundingInfo.d.ts

@@ -0,0 +1,15 @@
+declare module BABYLON {
+    class BoundingInfo {
+        public minimum: Vector3;
+        public maximum: Vector3;
+        public boundingBox: BoundingBox;
+        public boundingSphere: BoundingSphere;
+        constructor(minimum: Vector3, maximum: Vector3);
+        public _update(world: Matrix): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public isCompletelyInFrustum(frustumPlanes: Plane[]): boolean;
+        public _checkCollision(collider: Collider): boolean;
+        public intersectsPoint(point: Vector3): boolean;
+        public intersects(boundingInfo: BoundingInfo, precise: boolean): boolean;
+    }
+}

+ 16 - 0
Babylon/Culling/babylon.boundingSphere.d.ts

@@ -0,0 +1,16 @@
+declare module BABYLON {
+    class BoundingSphere {
+        public minimum: Vector3;
+        public maximum: Vector3;
+        public center: Vector3;
+        public radius: number;
+        public centerWorld: Vector3;
+        public radiusWorld: number;
+        private _tempRadiusVector;
+        constructor(minimum: Vector3, maximum: Vector3);
+        public _update(world: Matrix): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public intersectsPoint(point: Vector3): boolean;
+        static Intersects(sphere0: BoundingSphere, sphere1: BoundingSphere): boolean;
+    }
+}

+ 18 - 0
Babylon/Layer/babylon.layer.d.ts

@@ -0,0 +1,18 @@
+declare module BABYLON {
+    class Layer {
+        public name: string;
+        public texture: Texture;
+        public isBackground: boolean;
+        public color: Color4;
+        public onDispose: () => void;
+        private _scene;
+        private _vertexDeclaration;
+        private _vertexStrideSize;
+        private _vertexBuffer;
+        private _indexBuffer;
+        private _effect;
+        constructor(name: string, imgUrl: string, scene: Scene, isBackground?: boolean, color?: Color4);
+        public render(): void;
+        public dispose(): void;
+    }
+}

+ 11 - 0
Babylon/LensFlare/babylon.lensFlare.d.ts

@@ -0,0 +1,11 @@
+declare module BABYLON {
+    class LensFlare {
+        public size: number;
+        public position: number;
+        public color: Color3;
+        public texture: Texture;
+        private _system;
+        constructor(size: number, position: number, color: any, imgUrl: string, system: LensFlareSystem);
+        public dispose: () => void;
+    }
+}

+ 27 - 0
Babylon/LensFlare/babylon.lensFlareSystem.d.ts

@@ -0,0 +1,27 @@
+declare module BABYLON {
+    class LensFlareSystem {
+        public name: string;
+        public lensFlares: LensFlare[];
+        public borderLimit: number;
+        public meshesSelectionPredicate: (mesh: Mesh) => boolean;
+        private _scene;
+        private _emitter;
+        private _vertexDeclaration;
+        private _vertexStrideSize;
+        private _vertexBuffer;
+        private _indexBuffer;
+        private _effect;
+        private _positionX;
+        private _positionY;
+        private _isEnabled;
+        constructor(name: string, emitter: any, scene: Scene);
+        public isEnabled : boolean;
+        public getScene(): Scene;
+        public getEmitter(): any;
+        public getEmitterPosition(): Vector3;
+        public computeEffectivePosition(globalViewport: Viewport): boolean;
+        public _isVisible(): boolean;
+        public render(): boolean;
+        public dispose(): void;
+    }
+}

+ 35 - 0
Babylon/Lights/Shadows/babylon.shadowGenerator.d.ts

@@ -0,0 +1,35 @@
+declare module BABYLON {
+    class ShadowGenerator {
+        private static _FILTER_NONE;
+        private static _FILTER_VARIANCESHADOWMAP;
+        private static _FILTER_POISSONSAMPLING;
+        static FILTER_NONE : number;
+        static FILTER_VARIANCESHADOWMAP : number;
+        static FILTER_POISSONSAMPLING : number;
+        public filter: number;
+        public useVarianceShadowMap : boolean;
+        public usePoissonSampling : boolean;
+        private _light;
+        private _scene;
+        private _shadowMap;
+        private _darkness;
+        private _transparencyShadow;
+        private _effect;
+        private _viewMatrix;
+        private _projectionMatrix;
+        private _transformMatrix;
+        private _worldViewProjection;
+        private _cachedPosition;
+        private _cachedDirection;
+        private _cachedDefines;
+        constructor(mapSize: number, light: DirectionalLight);
+        public isReady(subMesh: SubMesh, useInstances: boolean): boolean;
+        public getShadowMap(): RenderTargetTexture;
+        public getLight(): DirectionalLight;
+        public getTransformMatrix(): Matrix;
+        public getDarkness(): number;
+        public setDarkness(darkness: number): void;
+        public setTransparencyShadow(hasShadow: boolean): void;
+        public dispose(): void;
+    }
+}

+ 15 - 0
Babylon/Lights/babylon.directionalLight.d.ts

@@ -0,0 +1,15 @@
+declare module BABYLON {
+    class DirectionalLight extends Light {
+        public direction: Vector3;
+        public position: Vector3;
+        private _transformedDirection;
+        public _transformedPosition: Vector3;
+        private _worldMatrix;
+        constructor(name: string, direction: Vector3, scene: Scene);
+        public getAbsolutePosition(): Vector3;
+        public setDirectionToTarget(target: Vector3): Vector3;
+        public _computeTransformedPosition(): boolean;
+        public transferToEffect(effect: Effect, directionUniformName: string): void;
+        public _getWorldMatrix(): Matrix;
+    }
+}

+ 12 - 0
Babylon/Lights/babylon.hemisphericLight.d.ts

@@ -0,0 +1,12 @@
+declare module BABYLON {
+    class HemisphericLight extends Light {
+        public direction: Vector3;
+        public groundColor: Color3;
+        private _worldMatrix;
+        constructor(name: string, direction: Vector3, scene: Scene);
+        public setDirectionToTarget(target: Vector3): Vector3;
+        public getShadowGenerator(): ShadowGenerator;
+        public transferToEffect(effect: Effect, directionUniformName: string, groundColorUniformName: string): void;
+        public _getWorldMatrix(): Matrix;
+    }
+}

+ 22 - 0
Babylon/Lights/babylon.light.d.ts

@@ -0,0 +1,22 @@
+declare module BABYLON {
+    class Light extends Node {
+        public diffuse: Color3;
+        public specular: Color3;
+        public intensity: number;
+        public range: number;
+        public includedOnlyMeshes: AbstractMesh[];
+        public excludedMeshes: AbstractMesh[];
+        public _shadowGenerator: ShadowGenerator;
+        private _parentedWorldMatrix;
+        public _excludedMeshesIds: string[];
+        public _includedOnlyMeshesIds: string[];
+        constructor(name: string, scene: Scene);
+        public getShadowGenerator(): ShadowGenerator;
+        public getAbsolutePosition(): Vector3;
+        public transferToEffect(effect: Effect, uniformName0?: string, uniformName1?: string): void;
+        public _getWorldMatrix(): Matrix;
+        public canAffectMesh(mesh: AbstractMesh): boolean;
+        public getWorldMatrix(): Matrix;
+        public dispose(): void;
+    }
+}

+ 12 - 0
Babylon/Lights/babylon.pointLight.d.ts

@@ -0,0 +1,12 @@
+declare module BABYLON {
+    class PointLight extends Light {
+        public position: Vector3;
+        private _worldMatrix;
+        private _transformedPosition;
+        constructor(name: string, position: Vector3, scene: Scene);
+        public getAbsolutePosition(): Vector3;
+        public transferToEffect(effect: Effect, positionUniformName: string): void;
+        public getShadowGenerator(): ShadowGenerator;
+        public _getWorldMatrix(): Matrix;
+    }
+}

+ 16 - 0
Babylon/Lights/babylon.spotLight.d.ts

@@ -0,0 +1,16 @@
+declare module BABYLON {
+    class SpotLight extends Light {
+        public position: Vector3;
+        public direction: Vector3;
+        public angle: number;
+        public exponent: number;
+        private _transformedDirection;
+        private _transformedPosition;
+        private _worldMatrix;
+        constructor(name: string, position: Vector3, direction: Vector3, angle: number, exponent: number, scene: Scene);
+        public getAbsolutePosition(): Vector3;
+        public setDirectionToTarget(target: Vector3): Vector3;
+        public transferToEffect(effect: Effect, positionUniformName: string, directionUniformName: string): void;
+        public _getWorldMatrix(): Matrix;
+    }
+}

+ 2 - 0
Babylon/Loading/Plugins/babylon.babylonFileLoader.d.ts

@@ -0,0 +1,2 @@
+declare module BABYLON.Internals {
+}

+ 31 - 0
Babylon/Loading/babylon.sceneLoader.d.ts

@@ -0,0 +1,31 @@
+declare module BABYLON {
+    interface ISceneLoaderPlugin {
+        extensions: string;
+        importMesh: (meshesNames: any, scene: Scene, data: any, rootUrl: string, meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => boolean;
+        load: (scene: Scene, data: string, rootUrl: string) => boolean;
+    }
+    class SceneLoader {
+        private static _ForceFullSceneLoadingForIncremental;
+        private static _ShowLoadingScreen;
+        static ForceFullSceneLoadingForIncremental : boolean;
+        static ShowLoadingScreen : boolean;
+        private static _registeredPlugins;
+        private static _getPluginForFilename(sceneFilename);
+        static RegisterPlugin(plugin: ISceneLoaderPlugin): void;
+        static ImportMesh(meshesNames: any, rootUrl: string, sceneFilename: string, scene: Scene, onsuccess?: (meshes: AbstractMesh[], particleSystems: ParticleSystem[], skeletons: Skeleton[]) => void, progressCallBack?: () => void, onerror?: (scene: Scene, e: any) => void): void;
+        /**
+        * Load a scene
+        * @param rootUrl a string that defines the root url for scene and resources
+        * @param sceneFilename a string that defines the name of the scene file. can start with "data:" following by the stringified version of the scene
+        * @param engine is the instance of BABYLON.Engine to use to create the scene
+        */
+        static Load(rootUrl: string, sceneFilename: any, engine: Engine, onsuccess?: (scene: Scene) => void, progressCallBack?: any, onerror?: (scene: Scene) => void): void;
+        /**
+        * Append a scene
+        * @param rootUrl a string that defines the root url for scene and resources
+        * @param sceneFilename a string that defines the name of the scene file. can start with "data:" following by the stringified version of the scene
+        * @param scene is the instance of BABYLON.Scene to append to
+        */
+        static Append(rootUrl: string, sceneFilename: any, scene: Scene, onsuccess?: (scene: Scene) => void, progressCallBack?: any, onerror?: (scene: Scene) => void): void;
+    }
+}

+ 15 - 0
Babylon/Materials/Textures/Procedurals/babylon.customProceduralTexture.d.ts

@@ -0,0 +1,15 @@
+declare module BABYLON {
+    class CustomProceduralTexture extends ProceduralTexture {
+        private _animate;
+        private _time;
+        private _config;
+        private _texturePath;
+        constructor(name: string, texturePath: any, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        private loadJson(jsonUrl);
+        public isReady(): boolean;
+        public render(useCameraPostProcess?: boolean): void;
+        public updateTextures(): void;
+        public updateShaderUniforms(): void;
+        public animate : boolean;
+    }
+}

+ 48 - 0
Babylon/Materials/Textures/Procedurals/babylon.proceduralTexture.d.ts

@@ -0,0 +1,48 @@
+declare module BABYLON {
+    class ProceduralTexture extends Texture {
+        private _size;
+        public _generateMipMaps: boolean;
+        private _doNotChangeAspectRatio;
+        private _currentRefreshId;
+        private _refreshRate;
+        private _vertexBuffer;
+        private _indexBuffer;
+        private _effect;
+        private _vertexDeclaration;
+        private _vertexStrideSize;
+        private _uniforms;
+        private _samplers;
+        private _fragment;
+        public _textures: Texture[];
+        private _floats;
+        private _floatsArrays;
+        private _colors3;
+        private _colors4;
+        private _vectors2;
+        private _vectors3;
+        private _matrices;
+        private _fallbackTexture;
+        private _fallbackTextureUsed;
+        constructor(name: string, size: any, fragment: any, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public reset(): void;
+        public isReady(): boolean;
+        public resetRefreshCounter(): void;
+        public setFragment(fragment: any): void;
+        public refreshRate : number;
+        public _shouldRender(): boolean;
+        public getRenderSize(): number;
+        public resize(size: any, generateMipMaps: any): void;
+        private _checkUniform(uniformName);
+        public setTexture(name: string, texture: Texture): ProceduralTexture;
+        public setFloat(name: string, value: number): ProceduralTexture;
+        public setFloats(name: string, value: number[]): ProceduralTexture;
+        public setColor3(name: string, value: Color3): ProceduralTexture;
+        public setColor4(name: string, value: Color4): ProceduralTexture;
+        public setVector2(name: string, value: Vector2): ProceduralTexture;
+        public setVector3(name: string, value: Vector3): ProceduralTexture;
+        public setMatrix(name: string, value: Matrix): ProceduralTexture;
+        public render(useCameraPostProcess?: boolean): void;
+        public clone(): ProceduralTexture;
+        public dispose(): void;
+    }
+}

+ 81 - 0
Babylon/Materials/Textures/Procedurals/babylon.standardProceduralTexture.d.ts

@@ -0,0 +1,81 @@
+declare module BABYLON {
+    class WoodProceduralTexture extends ProceduralTexture {
+        private _ampScale;
+        private _woodColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public ampScale : number;
+        public woodColor : Color3;
+    }
+    class FireProceduralTexture extends ProceduralTexture {
+        private _time;
+        private _speed;
+        private _shift;
+        private _autoGenerateTime;
+        private _fireColors;
+        private _alphaThreshold;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public render(useCameraPostProcess?: boolean): void;
+        static PurpleFireColors : Color3[];
+        static GreenFireColors : Color3[];
+        static RedFireColors : Color3[];
+        static BlueFireColors : Color3[];
+        public fireColors : Color3[];
+        public time : number;
+        public speed : Vector2;
+        public shift : number;
+        public alphaThreshold : number;
+    }
+    class CloudProceduralTexture extends ProceduralTexture {
+        private _skyColor;
+        private _cloudColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public skyColor : Color3;
+        public cloudColor : Color3;
+    }
+    class GrassProceduralTexture extends ProceduralTexture {
+        private _grassColors;
+        private _herb1;
+        private _herb2;
+        private _herb3;
+        private _groundColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public grassColors : Color3[];
+        public groundColor : Color3;
+    }
+    class RoadProceduralTexture extends ProceduralTexture {
+        private _roadColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public roadColor : Color3;
+    }
+    class BrickProceduralTexture extends ProceduralTexture {
+        private _numberOfBricksHeight;
+        private _numberOfBricksWidth;
+        private _jointColor;
+        private _brickColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public numberOfBricksHeight : number;
+        public cloudColor : number;
+        public numberOfBricksWidth : number;
+        public jointColor : Color3;
+        public brickColor : Color3;
+    }
+    class MarbleProceduralTexture extends ProceduralTexture {
+        private _numberOfTilesHeight;
+        private _numberOfTilesWidth;
+        private _amplitude;
+        private _marbleColor;
+        private _jointColor;
+        constructor(name: string, size: number, scene: Scene, fallbackTexture?: Texture, generateMipMaps?: boolean);
+        public updateShaderUniforms(): void;
+        public numberOfTilesHeight : number;
+        public numberOfTilesWidth : number;
+        public jointColor : Color3;
+        public marbleColor : Color3;
+    }
+}

+ 37 - 0
Babylon/Materials/Textures/babylon.baseTexture.d.ts

@@ -0,0 +1,37 @@
+declare module BABYLON {
+    class BaseTexture {
+        public name: string;
+        public delayLoadState: number;
+        public hasAlpha: boolean;
+        public getAlphaFromRGB: boolean;
+        public level: number;
+        public isCube: boolean;
+        public isRenderTarget: boolean;
+        public animations: Animation[];
+        public onDispose: () => void;
+        public coordinatesIndex: number;
+        public coordinatesMode: number;
+        public wrapU: number;
+        public wrapV: number;
+        public anisotropicFilteringLevel: number;
+        public _cachedAnisotropicFilteringLevel: number;
+        private _scene;
+        public _texture: WebGLTexture;
+        constructor(scene: Scene);
+        public getScene(): Scene;
+        public getTextureMatrix(): Matrix;
+        public getReflectionTextureMatrix(): Matrix;
+        public getInternalTexture(): WebGLTexture;
+        public isReady(): boolean;
+        public getSize(): ISize;
+        public getBaseSize(): ISize;
+        public scale(ratio: number): void;
+        public canRescale : boolean;
+        public _removeFromCache(url: string, noMipmap: boolean): void;
+        public _getFromCache(url: string, noMipmap: boolean): WebGLTexture;
+        public delayLoad(): void;
+        public releaseInternalTexture(): void;
+        public clone(): BaseTexture;
+        public dispose(): void;
+    }
+}

+ 13 - 0
Babylon/Materials/Textures/babylon.cubeTexture.d.ts

@@ -0,0 +1,13 @@
+declare module BABYLON {
+    class CubeTexture extends BaseTexture {
+        public url: string;
+        public coordinatesMode: number;
+        private _noMipmap;
+        private _extensions;
+        private _textureMatrix;
+        constructor(rootUrl: string, scene: Scene, extensions?: string[], noMipmap?: boolean);
+        public clone(): CubeTexture;
+        public delayLoad(): void;
+        public getReflectionTextureMatrix(): Matrix;
+    }
+}

+ 14 - 0
Babylon/Materials/Textures/babylon.dynamicTexture.d.ts

@@ -0,0 +1,14 @@
+declare module BABYLON {
+    class DynamicTexture extends Texture {
+        private _generateMipMaps;
+        private _canvas;
+        private _context;
+        constructor(name: string, options: any, scene: Scene, generateMipMaps: boolean, samplingMode?: number);
+        public canRescale : boolean;
+        public scale(ratio: number): void;
+        public getContext(): CanvasRenderingContext2D;
+        public update(invertY?: boolean): void;
+        public drawText(text: string, x: number, y: number, font: string, color: string, clearColor: string, invertY?: boolean): void;
+        public clone(): DynamicTexture;
+    }
+}

+ 10 - 0
Babylon/Materials/Textures/babylon.mirrorTexture.d.ts

@@ -0,0 +1,10 @@
+declare module BABYLON {
+    class MirrorTexture extends RenderTargetTexture {
+        public mirrorPlane: Plane;
+        private _transformMatrix;
+        private _mirrorMatrix;
+        private _savedViewMatrix;
+        constructor(name: string, size: number, scene: Scene, generateMipMaps?: boolean);
+        public clone(): MirrorTexture;
+    }
+}

+ 10 - 0
Babylon/Materials/Textures/babylon.rawTexture.d.ts

@@ -0,0 +1,10 @@
+declare module BABYLON {
+    class RawTexture extends Texture {
+        constructor(data: ArrayBufferView, width: number, height: number, format: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number);
+        static CreateLuminanceTexture(data: ArrayBufferView, width: number, height: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number): RawTexture;
+        static CreateLuminanceAlphaTexture(data: ArrayBufferView, width: number, height: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number): RawTexture;
+        static CreateAlphaTexture(data: ArrayBufferView, width: number, height: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number): RawTexture;
+        static CreateRGBTexture(data: ArrayBufferView, width: number, height: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number): RawTexture;
+        static CreateRGBATexture(data: ArrayBufferView, width: number, height: number, scene: Scene, generateMipMaps?: boolean, invertY?: boolean, samplingMode?: number): RawTexture;
+    }
+}

+ 30 - 0
Babylon/Materials/Textures/babylon.renderTargetTexture.d.ts

@@ -0,0 +1,30 @@
+declare module BABYLON {
+    class RenderTargetTexture extends Texture {
+        public renderList: AbstractMesh[];
+        public renderParticles: boolean;
+        public renderSprites: boolean;
+        public coordinatesMode: number;
+        public onBeforeRender: () => void;
+        public onAfterRender: () => void;
+        public activeCamera: Camera;
+        public customRenderFunction: (opaqueSubMeshes: SmartArray<SubMesh>, transparentSubMeshes: SmartArray<SubMesh>, alphaTestSubMeshes: SmartArray<SubMesh>, beforeTransparents?: () => void) => void;
+        private _size;
+        public _generateMipMaps: boolean;
+        private _renderingManager;
+        public _waitingRenderList: string[];
+        private _doNotChangeAspectRatio;
+        private _currentRefreshId;
+        private _refreshRate;
+        constructor(name: string, size: any, scene: Scene, generateMipMaps?: boolean, doNotChangeAspectRatio?: boolean);
+        public resetRefreshCounter(): void;
+        public refreshRate : number;
+        public _shouldRender(): boolean;
+        public isReady(): boolean;
+        public getRenderSize(): number;
+        public canRescale : boolean;
+        public scale(ratio: number): void;
+        public resize(size: any, generateMipMaps?: boolean): void;
+        public render(useCameraPostProcess?: boolean): void;
+        public clone(): RenderTargetTexture;
+    }
+}

+ 50 - 0
Babylon/Materials/Textures/babylon.texture.d.ts

@@ -0,0 +1,50 @@
+declare module BABYLON {
+    class Texture extends BaseTexture {
+        static NEAREST_SAMPLINGMODE: number;
+        static BILINEAR_SAMPLINGMODE: number;
+        static TRILINEAR_SAMPLINGMODE: number;
+        static EXPLICIT_MODE: number;
+        static SPHERICAL_MODE: number;
+        static PLANAR_MODE: number;
+        static CUBIC_MODE: number;
+        static PROJECTION_MODE: number;
+        static SKYBOX_MODE: number;
+        static CLAMP_ADDRESSMODE: number;
+        static WRAP_ADDRESSMODE: number;
+        static MIRROR_ADDRESSMODE: number;
+        public url: string;
+        public uOffset: number;
+        public vOffset: number;
+        public uScale: number;
+        public vScale: number;
+        public uAng: number;
+        public vAng: number;
+        public wAng: number;
+        private _noMipmap;
+        public _invertY: boolean;
+        private _rowGenerationMatrix;
+        private _cachedTextureMatrix;
+        private _projectionModeMatrix;
+        private _t0;
+        private _t1;
+        private _t2;
+        private _cachedUOffset;
+        private _cachedVOffset;
+        private _cachedUScale;
+        private _cachedVScale;
+        private _cachedUAng;
+        private _cachedVAng;
+        private _cachedWAng;
+        private _cachedCoordinatesMode;
+        public _samplingMode: number;
+        private _buffer;
+        private _deleteBuffer;
+        constructor(url: string, scene: Scene, noMipmap?: boolean, invertY?: boolean, samplingMode?: number, onLoad?: () => void, onError?: () => void, buffer?: any, deleteBuffer?: boolean);
+        public delayLoad(): void;
+        private _prepareRowForTextureGeneration(x, y, z, t);
+        public getTextureMatrix(): Matrix;
+        public getReflectionTextureMatrix(): Matrix;
+        public clone(): Texture;
+        static CreateFromBase64String(data: string, name: string, scene: Scene, noMipmap?: boolean, invertY?: boolean, samplingMode?: number, onLoad?: () => void, onError?: () => void): Texture;
+    }
+}

+ 9 - 0
Babylon/Materials/Textures/babylon.videoTexture.d.ts

@@ -0,0 +1,9 @@
+declare module BABYLON {
+    class VideoTexture extends Texture {
+        public video: HTMLVideoElement;
+        private _autoLaunch;
+        private _lastUpdate;
+        constructor(name: string, urls: string[], size: any, scene: Scene, generateMipMaps: boolean, invertY: boolean, samplingMode?: number);
+        public update(): boolean;
+    }
+}

+ 61 - 0
Babylon/Materials/babylon.effect.d.ts

@@ -0,0 +1,61 @@
+declare module BABYLON {
+    class EffectFallbacks {
+        private _defines;
+        private _currentRank;
+        private _maxRank;
+        public addFallback(rank: number, define: string): void;
+        public isMoreFallbacks : boolean;
+        public reduce(currentDefines: string): string;
+    }
+    class Effect {
+        public name: any;
+        public defines: string;
+        public onCompiled: (effect: Effect) => void;
+        public onError: (effect: Effect, errors: string) => void;
+        public onBind: (effect: Effect) => void;
+        private _engine;
+        private _uniformsNames;
+        private _samplers;
+        private _isReady;
+        private _compilationError;
+        private _attributesNames;
+        private _attributes;
+        private _uniforms;
+        public _key: string;
+        private _program;
+        private _valueCache;
+        constructor(baseName: any, attributesNames: string[], uniformsNames: string[], samplers: string[], engine: any, defines?: string, fallbacks?: EffectFallbacks, onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void);
+        public isReady(): boolean;
+        public getProgram(): WebGLProgram;
+        public getAttributesNames(): string[];
+        public getAttributeLocation(index: number): number;
+        public getAttributeLocationByName(name: string): number;
+        public getAttributesCount(): number;
+        public getUniformIndex(uniformName: string): number;
+        public getUniform(uniformName: string): WebGLUniformLocation;
+        public getSamplers(): string[];
+        public getCompilationError(): string;
+        public _loadVertexShader(vertex: any, callback: (data: any) => void): void;
+        public _loadFragmentShader(fragment: any, callback: (data: any) => void): void;
+        private _prepareEffect(vertexSourceCode, fragmentSourceCode, attributesNames, defines, fallbacks?);
+        public _bindTexture(channel: string, texture: WebGLTexture): void;
+        public setTexture(channel: string, texture: BaseTexture): void;
+        public setTextureFromPostProcess(channel: string, postProcess: PostProcess): void;
+        public _cacheFloat2(uniformName: string, x: number, y: number): void;
+        public _cacheFloat3(uniformName: string, x: number, y: number, z: number): void;
+        public _cacheFloat4(uniformName: string, x: number, y: number, z: number, w: number): void;
+        public setArray(uniformName: string, array: number[]): Effect;
+        public setMatrices(uniformName: string, matrices: Float32Array): Effect;
+        public setMatrix(uniformName: string, matrix: Matrix): Effect;
+        public setFloat(uniformName: string, value: number): Effect;
+        public setBool(uniformName: string, bool: boolean): Effect;
+        public setVector2(uniformName: string, vector2: Vector2): Effect;
+        public setFloat2(uniformName: string, x: number, y: number): Effect;
+        public setVector3(uniformName: string, vector3: Vector3): Effect;
+        public setFloat3(uniformName: string, x: number, y: number, z: number): Effect;
+        public setFloat4(uniformName: string, x: number, y: number, z: number, w: number): Effect;
+        public setColor3(uniformName: string, color3: Color3): Effect;
+        public setColor4(uniformName: string, color3: Color3, alpha: number): Effect;
+        static ShadersStore: {};
+    }
+}

+ 43 - 0
Babylon/Materials/babylon.material.d.ts

@@ -0,0 +1,43 @@
+declare module BABYLON {
+    class Material {
+        public name: string;
+        private static _TriangleFillMode;
+        private static _WireFrameFillMode;
+        private static _PointFillMode;
+        static TriangleFillMode : number;
+        static WireFrameFillMode : number;
+        static PointFillMode : number;
+        public id: string;
+        public checkReadyOnEveryCall: boolean;
+        public checkReadyOnlyOnce: boolean;
+        public state: string;
+        public alpha: number;
+        public backFaceCulling: boolean;
+        public onCompiled: (effect: Effect) => void;
+        public onError: (effect: Effect, errors: string) => void;
+        public onDispose: () => void;
+        public onBind: (material: Material) => void;
+        public getRenderTargetTextures: () => SmartArray<RenderTargetTexture>;
+        public _effect: Effect;
+        public _wasPreviouslyReady: boolean;
+        private _scene;
+        private _fillMode;
+        public pointSize: number;
+        public wireframe : boolean;
+        public pointsCloud : boolean;
+        public fillMode : number;
+        constructor(name: string, scene: Scene, doNotAdd?: boolean);
+        public isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean;
+        public getEffect(): Effect;
+        public getScene(): Scene;
+        public needAlphaBlending(): boolean;
+        public needAlphaTesting(): boolean;
+        public getAlphaTestTexture(): BaseTexture;
+        public trackCreation(onCompiled: (effect: Effect) => void, onError: (effect: Effect, errors: string) => void): void;
+        public _preBind(): void;
+        public bind(world: Matrix, mesh: Mesh): void;
+        public bindOnlyWorldMatrix(world: Matrix): void;
+        public unbind(): void;
+        public dispose(forceDisposeEffect?: boolean): void;
+    }
+}

+ 8 - 0
Babylon/Materials/babylon.multiMaterial.d.ts

@@ -0,0 +1,8 @@
+declare module BABYLON {
+    class MultiMaterial extends Material {
+        public subMaterials: Material[];
+        constructor(name: string, scene: Scene);
+        public getSubMaterial(index: any): Material;
+        public isReady(mesh?: AbstractMesh): boolean;
+    }
+}

+ 32 - 0
Babylon/Materials/babylon.shaderMaterial.d.ts

@@ -0,0 +1,32 @@
+declare module BABYLON {
+    class ShaderMaterial extends Material {
+        private _shaderPath;
+        private _options;
+        private _textures;
+        private _floats;
+        private _floatsArrays;
+        private _colors3;
+        private _colors4;
+        private _vectors2;
+        private _vectors3;
+        private _matrices;
+        private _cachedWorldViewMatrix;
+        private _renderId;
+        constructor(name: string, scene: Scene, shaderPath: any, options: any);
+        public needAlphaBlending(): boolean;
+        public needAlphaTesting(): boolean;
+        private _checkUniform(uniformName);
+        public setTexture(name: string, texture: Texture): ShaderMaterial;
+        public setFloat(name: string, value: number): ShaderMaterial;
+        public setFloats(name: string, value: number[]): ShaderMaterial;
+        public setColor3(name: string, value: Color3): ShaderMaterial;
+        public setColor4(name: string, value: Color4): ShaderMaterial;
+        public setVector2(name: string, value: Vector2): ShaderMaterial;
+        public setVector3(name: string, value: Vector3): ShaderMaterial;
+        public setMatrix(name: string, value: Matrix): ShaderMaterial;
+        public isReady(): boolean;
+        public bindOnlyWorldMatrix(world: Matrix): void;
+        public bind(world: Matrix): void;
+        public dispose(forceDisposeEffect?: boolean): void;
+    }
+}

+ 57 - 0
Babylon/Materials/babylon.standardMaterial.d.ts

@@ -0,0 +1,57 @@
+declare module BABYLON {
+    class FresnelParameters {
+        public isEnabled: boolean;
+        public leftColor: Color3;
+        public rightColor: Color3;
+        public bias: number;
+        public power: number;
+    }
+    class StandardMaterial extends Material {
+        public diffuseTexture: BaseTexture;
+        public ambientTexture: BaseTexture;
+        public opacityTexture: BaseTexture;
+        public reflectionTexture: BaseTexture;
+        public emissiveTexture: BaseTexture;
+        public specularTexture: BaseTexture;
+        public bumpTexture: BaseTexture;
+        public ambientColor: Color3;
+        public diffuseColor: Color3;
+        public specularColor: Color3;
+        public specularPower: number;
+        public emissiveColor: Color3;
+        public useAlphaFromDiffuseTexture: boolean;
+        public useSpecularOverAlpha: boolean;
+        public fogEnabled: boolean;
+        public diffuseFresnelParameters: FresnelParameters;
+        public opacityFresnelParameters: FresnelParameters;
+        public reflectionFresnelParameters: FresnelParameters;
+        public emissiveFresnelParameters: FresnelParameters;
+        private _cachedDefines;
+        private _renderTargets;
+        private _worldViewProjectionMatrix;
+        private _globalAmbientColor;
+        private _scaledDiffuse;
+        private _scaledSpecular;
+        private _renderId;
+        constructor(name: string, scene: Scene);
+        public needAlphaBlending(): boolean;
+        public needAlphaTesting(): boolean;
+        private _shouldUseAlphaFromDiffuseTexture();
+        public getAlphaTestTexture(): BaseTexture;
+        public isReady(mesh?: AbstractMesh, useInstances?: boolean): boolean;
+        public unbind(): void;
+        public bindOnlyWorldMatrix(world: Matrix): void;
+        public bind(world: Matrix, mesh: Mesh): void;
+        public getAnimatables(): IAnimatable[];
+        public dispose(forceDisposeEffect?: boolean): void;
+        public clone(name: string): StandardMaterial;
+        static DiffuseTextureEnabled: boolean;
+        static AmbientTextureEnabled: boolean;
+        static OpacityTextureEnabled: boolean;
+        static ReflectionTextureEnabled: boolean;
+        static EmissiveTextureEnabled: boolean;
+        static SpecularTextureEnabled: boolean;
+        static BumpTextureEnabled: boolean;
+        static FresnelEnabled: boolean;
+    }
+}

+ 368 - 0
Babylon/Math/babylon.math.d.ts

@@ -0,0 +1,368 @@
+declare module BABYLON {
+    class Color3 {
+        public r: number;
+        public g: number;
+        public b: number;
+        constructor(r?: number, g?: number, b?: number);
+        public toString(): string;
+        public toArray(array: number[], index?: number): void;
+        public toColor4(alpha?: number): Color4;
+        public asArray(): number[];
+        public toLuminance(): number;
+        public multiply(otherColor: Color3): Color3;
+        public multiplyToRef(otherColor: Color3, result: Color3): void;
+        public equals(otherColor: Color3): boolean;
+        public scale(scale: number): Color3;
+        public scaleToRef(scale: number, result: Color3): void;
+        public add(otherColor: Color3): Color3;
+        public addToRef(otherColor: Color3, result: Color3): void;
+        public subtract(otherColor: Color3): Color3;
+        public subtractToRef(otherColor: Color3, result: Color3): void;
+        public clone(): Color3;
+        public copyFrom(source: Color3): void;
+        public copyFromFloats(r: number, g: number, b: number): void;
+        static FromArray(array: number[]): Color3;
+        static FromInts(r: number, g: number, b: number): Color3;
+        static Lerp(start: Color3, end: Color3, amount: number): Color3;
+        static Red(): Color3;
+        static Green(): Color3;
+        static Blue(): Color3;
+        static Black(): Color3;
+        static White(): Color3;
+        static Purple(): Color3;
+        static Magenta(): Color3;
+        static Yellow(): Color3;
+        static Gray(): Color3;
+    }
+    class Color4 {
+        public r: number;
+        public g: number;
+        public b: number;
+        public a: number;
+        constructor(r: number, g: number, b: number, a: number);
+        public addInPlace(right: any): void;
+        public asArray(): number[];
+        public toArray(array: number[], index?: number): void;
+        public add(right: Color4): Color4;
+        public subtract(right: Color4): Color4;
+        public subtractToRef(right: Color4, result: Color4): void;
+        public scale(scale: number): Color4;
+        public scaleToRef(scale: number, result: Color4): void;
+        public toString(): string;
+        public clone(): Color4;
+        static Lerp(left: Color4, right: Color4, amount: number): Color4;
+        static LerpToRef(left: Color4, right: Color4, amount: number, result: Color4): void;
+        static FromArray(array: number[], offset?: number): Color4;
+        static FromInts(r: number, g: number, b: number, a: number): Color4;
+    }
+    class Vector2 {
+        public x: number;
+        public y: number;
+        constructor(x: number, y: number);
+        public toString(): string;
+        public toArray(array: number[], index?: number): void;
+        public asArray(): number[];
+        public copyFrom(source: Vector2): void;
+        public copyFromFloats(x: number, y: number): void;
+        public add(otherVector: Vector2): Vector2;
+        public addVector3(otherVector: Vector3): Vector2;
+        public subtract(otherVector: Vector2): Vector2;
+        public subtractInPlace(otherVector: Vector2): void;
+        public multiplyInPlace(otherVector: Vector2): void;
+        public multiply(otherVector: Vector2): Vector2;
+        public multiplyToRef(otherVector: Vector2, result: Vector2): void;
+        public multiplyByFloats(x: number, y: number): Vector2;
+        public divide(otherVector: Vector2): Vector2;
+        public divideToRef(otherVector: Vector2, result: Vector2): void;
+        public negate(): Vector2;
+        public scaleInPlace(scale: number): Vector2;
+        public scale(scale: number): Vector2;
+        public equals(otherVector: Vector2): boolean;
+        public length(): number;
+        public lengthSquared(): number;
+        public normalize(): Vector2;
+        public clone(): Vector2;
+        static Zero(): Vector2;
+        static FromArray(array: number[], offset?: number): Vector2;
+        static FromArrayToRef(array: number[], offset: number, result: Vector2): void;
+        static CatmullRom(value1: Vector2, value2: Vector2, value3: Vector2, value4: Vector2, amount: number): Vector2;
+        static Clamp(value: Vector2, min: Vector2, max: Vector2): Vector2;
+        static Hermite(value1: Vector2, tangent1: Vector2, value2: Vector2, tangent2: Vector2, amount: number): Vector2;
+        static Lerp(start: Vector2, end: Vector2, amount: number): Vector2;
+        static Dot(left: Vector2, right: Vector2): number;
+        static Normalize(vector: Vector2): Vector2;
+        static Minimize(left: Vector2, right: Vector2): Vector2;
+        static Maximize(left: Vector2, right: Vector2): Vector2;
+        static Transform(vector: Vector2, transformation: Matrix): Vector2;
+        static Distance(value1: Vector2, value2: Vector2): number;
+        static DistanceSquared(value1: Vector2, value2: Vector2): number;
+    }
+    class Vector3 {
+        public x: number;
+        public y: number;
+        public z: number;
+        constructor(x: number, y: number, z: number);
+        public toString(): string;
+        public asArray(): number[];
+        public toArray(array: number[], index?: number): void;
+        public addInPlace(otherVector: Vector3): void;
+        public add(otherVector: Vector3): Vector3;
+        public addToRef(otherVector: Vector3, result: Vector3): void;
+        public subtractInPlace(otherVector: Vector3): void;
+        public subtract(otherVector: Vector3): Vector3;
+        public subtractToRef(otherVector: Vector3, result: Vector3): void;
+        public subtractFromFloats(x: number, y: number, z: number): Vector3;
+        public subtractFromFloatsToRef(x: number, y: number, z: number, result: Vector3): void;
+        public negate(): Vector3;
+        public scaleInPlace(scale: number): Vector3;
+        public scale(scale: number): Vector3;
+        public scaleToRef(scale: number, result: Vector3): void;
+        public equals(otherVector: Vector3): boolean;
+        public equalsWithEpsilon(otherVector: Vector3): boolean;
+        public equalsToFloats(x: number, y: number, z: number): boolean;
+        public multiplyInPlace(otherVector: Vector3): void;
+        public multiply(otherVector: Vector3): Vector3;
+        public multiplyToRef(otherVector: Vector3, result: Vector3): void;
+        public multiplyByFloats(x: number, y: number, z: number): Vector3;
+        public divide(otherVector: Vector3): Vector3;
+        public divideToRef(otherVector: Vector3, result: Vector3): void;
+        public MinimizeInPlace(other: Vector3): void;
+        public MaximizeInPlace(other: Vector3): void;
+        public length(): number;
+        public lengthSquared(): number;
+        public normalize(): Vector3;
+        public clone(): Vector3;
+        public copyFrom(source: Vector3): void;
+        public copyFromFloats(x: number, y: number, z: number): void;
+        static FromArray(array: number[], offset?: number): Vector3;
+        static FromArrayToRef(array: number[], offset: number, result: Vector3): void;
+        static FromFloatArrayToRef(array: Float32Array, offset: number, result: Vector3): void;
+        static FromFloatsToRef(x: number, y: number, z: number, result: Vector3): void;
+        static Zero(): Vector3;
+        static Up(): Vector3;
+        static TransformCoordinates(vector: Vector3, transformation: Matrix): Vector3;
+        static TransformCoordinatesToRef(vector: Vector3, transformation: Matrix, result: Vector3): void;
+        static TransformCoordinatesFromFloatsToRef(x: number, y: number, z: number, transformation: Matrix, result: Vector3): void;
+        static TransformNormal(vector: Vector3, transformation: Matrix): Vector3;
+        static TransformNormalToRef(vector: Vector3, transformation: Matrix, result: Vector3): void;
+        static TransformNormalFromFloatsToRef(x: number, y: number, z: number, transformation: Matrix, result: Vector3): void;
+        static CatmullRom(value1: Vector3, value2: Vector3, value3: Vector3, value4: Vector3, amount: number): Vector3;
+        static Clamp(value: Vector3, min: Vector3, max: Vector3): Vector3;
+        static Hermite(value1: Vector3, tangent1: Vector3, value2: Vector3, tangent2: Vector3, amount: number): Vector3;
+        static Lerp(start: Vector3, end: Vector3, amount: number): Vector3;
+        static Dot(left: Vector3, right: Vector3): number;
+        static Cross(left: Vector3, right: Vector3): Vector3;
+        static CrossToRef(left: Vector3, right: Vector3, result: Vector3): void;
+        static Normalize(vector: Vector3): Vector3;
+        static NormalizeToRef(vector: Vector3, result: Vector3): void;
+        static Project(vector: Vector3, world: Matrix, transform: Matrix, viewport: Viewport): Vector3;
+        static UnprojectFromTransform(source: Vector3, viewportWidth: number, viewportHeight: number, world: Matrix, transform: Matrix): Vector3;
+        static Unproject(source: Vector3, viewportWidth: number, viewportHeight: number, world: Matrix, view: Matrix, projection: Matrix): Vector3;
+        static Minimize(left: Vector3, right: Vector3): Vector3;
+        static Maximize(left: Vector3, right: Vector3): Vector3;
+        static Distance(value1: Vector3, value2: Vector3): number;
+        static DistanceSquared(value1: Vector3, value2: Vector3): number;
+        static Center(value1: Vector3, value2: Vector3): Vector3;
+    }
+    class Vector4 {
+        public x: number;
+        public y: number;
+        public z: number;
+        public w: number;
+        constructor(x: number, y: number, z: number, w: number);
+        public toString(): string;
+        public asArray(): number[];
+        public toArray(array: number[], index?: number): void;
+        public addInPlace(otherVector: Vector4): void;
+        public add(otherVector: Vector4): Vector4;
+        public addToRef(otherVector: Vector4, result: Vector4): void;
+        public subtractInPlace(otherVector: Vector4): void;
+        public subtract(otherVector: Vector4): Vector4;
+        public subtractToRef(otherVector: Vector4, result: Vector4): void;
+        public subtractFromFloats(x: number, y: number, z: number, w: number): Vector4;
+        public subtractFromFloatsToRef(x: number, y: number, z: number, w: number, result: Vector4): void;
+        public negate(): Vector4;
+        public scaleInPlace(scale: number): Vector4;
+        public scale(scale: number): Vector4;
+        public scaleToRef(scale: number, result: Vector4): void;
+        public equals(otherVector: Vector4): boolean;
+        public equalsWithEpsilon(otherVector: Vector4): boolean;
+        public equalsToFloats(x: number, y: number, z: number, w: number): boolean;
+        public multiplyInPlace(otherVector: Vector4): void;
+        public multiply(otherVector: Vector4): Vector4;
+        public multiplyToRef(otherVector: Vector4, result: Vector4): void;
+        public multiplyByFloats(x: number, y: number, z: number, w: number): Vector4;
+        public divide(otherVector: Vector4): Vector4;
+        public divideToRef(otherVector: Vector4, result: Vector4): void;
+        public MinimizeInPlace(other: Vector4): void;
+        public MaximizeInPlace(other: Vector4): void;
+        public length(): number;
+        public lengthSquared(): number;
+        public normalize(): Vector4;
+        public clone(): Vector4;
+        public copyFrom(source: Vector4): void;
+        public copyFromFloats(x: number, y: number, z: number, w: number): void;
+        static FromArray(array: number[], offset?: number): Vector4;
+        static FromArrayToRef(array: number[], offset: number, result: Vector4): void;
+        static FromFloatArrayToRef(array: Float32Array, offset: number, result: Vector4): void;
+        static FromFloatsToRef(x: number, y: number, z: number, w: number, result: Vector4): void;
+        static Zero(): Vector4;
+        static Normalize(vector: Vector4): Vector4;
+        static NormalizeToRef(vector: Vector4, result: Vector4): void;
+        static Minimize(left: Vector4, right: Vector4): Vector4;
+        static Maximize(left: Vector4, right: Vector4): Vector4;
+        static Distance(value1: Vector4, value2: Vector4): number;
+        static DistanceSquared(value1: Vector4, value2: Vector4): number;
+        static Center(value1: Vector4, value2: Vector4): Vector4;
+    }
+    class Quaternion {
+        public x: number;
+        public y: number;
+        public z: number;
+        public w: number;
+        constructor(x?: number, y?: number, z?: number, w?: number);
+        public toString(): string;
+        public asArray(): number[];
+        public equals(otherQuaternion: Quaternion): boolean;
+        public clone(): Quaternion;
+        public copyFrom(other: Quaternion): void;
+        public copyFromFloats(x: number, y: number, z: number, w: number): void;
+        public add(other: Quaternion): Quaternion;
+        public subtract(other: Quaternion): Quaternion;
+        public scale(value: number): Quaternion;
+        public multiply(q1: Quaternion): Quaternion;
+        public multiplyToRef(q1: Quaternion, result: Quaternion): void;
+        public length(): number;
+        public normalize(): void;
+        public toEulerAngles(): Vector3;
+        public toEulerAnglesToRef(result: Vector3): void;
+        public toRotationMatrix(result: Matrix): void;
+        public fromRotationMatrix(matrix: Matrix): void;
+        static Inverse(q: Quaternion): Quaternion;
+        static RotationAxis(axis: Vector3, angle: number): Quaternion;
+        static FromArray(array: number[], offset?: number): Quaternion;
+        static RotationYawPitchRoll(yaw: number, pitch: number, roll: number): Quaternion;
+        static RotationYawPitchRollToRef(yaw: number, pitch: number, roll: number, result: Quaternion): void;
+        static Slerp(left: Quaternion, right: Quaternion, amount: number): Quaternion;
+    }
+    class Matrix {
+        private static _tempQuaternion;
+        private static _xAxis;
+        private static _yAxis;
+        private static _zAxis;
+        public m: Float32Array;
+        public isIdentity(): boolean;
+        public determinant(): number;
+        public toArray(): Float32Array;
+        public asArray(): Float32Array;
+        public invert(): void;
+        public invertToRef(other: Matrix): void;
+        public setTranslation(vector3: Vector3): void;
+        public multiply(other: Matrix): Matrix;
+        public copyFrom(other: Matrix): void;
+        public copyToArray(array: Float32Array, offset?: number): void;
+        public multiplyToRef(other: Matrix, result: Matrix): void;
+        public multiplyToArray(other: Matrix, result: Float32Array, offset: number): void;
+        public equals(value: Matrix): boolean;
+        public clone(): Matrix;
+        static FromArray(array: number[], offset?: number): Matrix;
+        static FromArrayToRef(array: number[], offset: number, result: Matrix): void;
+        static FromValuesToRef(initialM11: number, initialM12: number, initialM13: number, initialM14: number, initialM21: number, initialM22: number, initialM23: number, initialM24: number, initialM31: number, initialM32: number, initialM33: number, initialM34: number, initialM41: number, initialM42: number, initialM43: number, initialM44: number, result: Matrix): void;
+        static FromValues(initialM11: number, initialM12: number, initialM13: number, initialM14: number, initialM21: number, initialM22: number, initialM23: number, initialM24: number, initialM31: number, initialM32: number, initialM33: number, initialM34: number, initialM41: number, initialM42: number, initialM43: number, initialM44: number): Matrix;
+        static Identity(): Matrix;
+        static IdentityToRef(result: Matrix): void;
+        static Zero(): Matrix;
+        static RotationX(angle: number): Matrix;
+        static Invert(source: Matrix): Matrix;
+        static RotationXToRef(angle: number, result: Matrix): void;
+        static RotationY(angle: number): Matrix;
+        static RotationYToRef(angle: number, result: Matrix): void;
+        static RotationZ(angle: number): Matrix;
+        static RotationZToRef(angle: number, result: Matrix): void;
+        static RotationAxis(axis: Vector3, angle: number): Matrix;
+        static RotationYawPitchRoll(yaw: number, pitch: number, roll: number): Matrix;
+        static RotationYawPitchRollToRef(yaw: number, pitch: number, roll: number, result: Matrix): void;
+        static Scaling(x: number, y: number, z: number): Matrix;
+        static ScalingToRef(x: number, y: number, z: number, result: Matrix): void;
+        static Translation(x: number, y: number, z: number): Matrix;
+        static TranslationToRef(x: number, y: number, z: number, result: Matrix): void;
+        static LookAtLH(eye: Vector3, target: Vector3, up: Vector3): Matrix;
+        static LookAtLHToRef(eye: Vector3, target: Vector3, up: Vector3, result: Matrix): void;
+        static OrthoLH(width: number, height: number, znear: number, zfar: number): Matrix;
+        static OrthoOffCenterLH(left: number, right: number, bottom: number, top: number, znear: number, zfar: number): Matrix;
+        static OrthoOffCenterLHToRef(left: number, right: any, bottom: number, top: number, znear: number, zfar: number, result: Matrix): void;
+        static PerspectiveLH(width: number, height: number, znear: number, zfar: number): Matrix;
+        static PerspectiveFovLH(fov: number, aspect: number, znear: number, zfar: number): Matrix;
+        static PerspectiveFovLHToRef(fov: number, aspect: number, znear: number, zfar: number, result: Matrix): void;
+        static GetFinalMatrix(viewport: Viewport, world: Matrix, view: Matrix, projection: Matrix, zmin: number, zmax: number): Matrix;
+        static Transpose(matrix: Matrix): Matrix;
+        static Reflection(plane: Plane): Matrix;
+        static ReflectionToRef(plane: Plane, result: Matrix): void;
+    }
+    class Plane {
+        public normal: Vector3;
+        public d: number;
+        constructor(a: number, b: number, c: number, d: number);
+        public asArray(): number[];
+        public clone(): Plane;
+        public normalize(): void;
+        public transform(transformation: Matrix): Plane;
+        public dotCoordinate(point: any): number;
+        public copyFromPoints(point1: Vector3, point2: Vector3, point3: Vector3): void;
+        public isFrontFacingTo(direction: Vector3, epsilon: number): boolean;
+        public signedDistanceTo(point: Vector3): number;
+        static FromArray(array: number[]): Plane;
+        static FromPoints(point1: any, point2: any, point3: any): Plane;
+        static FromPositionAndNormal(origin: Vector3, normal: Vector3): Plane;
+        static SignedDistanceToPlaneFromPositionAndNormal(origin: Vector3, normal: Vector3, point: Vector3): number;
+    }
+    class Viewport {
+        public x: number;
+        public y: number;
+        public width: number;
+        public height: number;
+        constructor(x: number, y: number, width: number, height: number);
+        public toGlobal(engine: any): Viewport;
+    }
+    class Frustum {
+        static GetPlanes(transform: Matrix): Plane[];
+        static GetPlanesToRef(transform: Matrix, frustumPlanes: Plane[]): void;
+    }
+    class Ray {
+        public origin: Vector3;
+        public direction: Vector3;
+        public length: number;
+        private _edge1;
+        private _edge2;
+        private _pvec;
+        private _tvec;
+        private _qvec;
+        constructor(origin: Vector3, direction: Vector3, length?: number);
+        public intersectsBoxMinMax(minimum: Vector3, maximum: Vector3): boolean;
+        public intersectsBox(box: BoundingBox): boolean;
+        public intersectsSphere(sphere: any): boolean;
+        public intersectsTriangle(vertex0: Vector3, vertex1: Vector3, vertex2: Vector3): IntersectionInfo;
+        static CreateNew(x: number, y: number, viewportWidth: number, viewportHeight: number, world: Matrix, view: Matrix, projection: Matrix): Ray;
+        /**
+        * Function will create a new transformed ray starting from origin and ending at the end point. Ray's length will be set, and ray will be
+        * transformed to the given world matrix.
+        * @param origin The origin point
+        * @param end The end point
+        * @param world a matrix to transform the ray to. Default is the identity matrix.
+        */
+        static CreateNewFromTo(origin: Vector3, end: Vector3, world?: Matrix): Ray;
+        static Transform(ray: Ray, matrix: Matrix): Ray;
+    }
+    enum Space {
+        LOCAL = 0,
+        WORLD = 1,
+    }
+    class Axis {
+        static X: Vector3;
+        static Y: Vector3;
+        static Z: Vector3;
+    }
+    class BezierCurve {
+        static interpolate(t: number, x1: number, y1: number, x2: number, y2: number): number;
+    }
+}

+ 143 - 0
Babylon/Mesh/babylon.abstractMesh.d.ts

@@ -0,0 +1,143 @@
+declare module BABYLON {
+    class AbstractMesh extends Node implements IDisposable {
+        private static _BILLBOARDMODE_NONE;
+        private static _BILLBOARDMODE_X;
+        private static _BILLBOARDMODE_Y;
+        private static _BILLBOARDMODE_Z;
+        private static _BILLBOARDMODE_ALL;
+        static BILLBOARDMODE_NONE : number;
+        static BILLBOARDMODE_X : number;
+        static BILLBOARDMODE_Y : number;
+        static BILLBOARDMODE_Z : number;
+        static BILLBOARDMODE_ALL : number;
+        public position: Vector3;
+        public rotation: Vector3;
+        public rotationQuaternion: Quaternion;
+        public scaling: Vector3;
+        public billboardMode: number;
+        public visibility: number;
+        public alphaIndex: number;
+        public infiniteDistance: boolean;
+        public isVisible: boolean;
+        public isPickable: boolean;
+        public showBoundingBox: boolean;
+        public showSubMeshesBoundingBox: boolean;
+        public onDispose: any;
+        public checkCollisions: boolean;
+        public isBlocker: boolean;
+        public skeleton: Skeleton;
+        public renderingGroupId: number;
+        public material: Material;
+        public receiveShadows: boolean;
+        public actionManager: ActionManager;
+        public renderOutline: boolean;
+        public outlineColor: Color3;
+        public outlineWidth: number;
+        public renderOverlay: boolean;
+        public overlayColor: Color3;
+        public overlayAlpha: number;
+        public hasVertexAlpha: boolean;
+        public useVertexColors: boolean;
+        public applyFog: boolean;
+        public useOctreeForRenderingSelection: boolean;
+        public useOctreeForPicking: boolean;
+        public useOctreeForCollisions: boolean;
+        public layerMask: number;
+        public _physicImpostor: number;
+        public _physicsMass: number;
+        public _physicsFriction: number;
+        public _physicRestitution: number;
+        public ellipsoid: Vector3;
+        public ellipsoidOffset: Vector3;
+        private _collider;
+        private _oldPositionForCollisions;
+        private _diffPositionForCollisions;
+        private _newPositionForCollisions;
+        private _localScaling;
+        private _localRotation;
+        private _localTranslation;
+        private _localBillboard;
+        private _localPivotScaling;
+        private _localPivotScalingRotation;
+        private _localWorld;
+        public _worldMatrix: Matrix;
+        private _rotateYByPI;
+        private _absolutePosition;
+        private _collisionsTransformMatrix;
+        private _collisionsScalingMatrix;
+        public _positions: Vector3[];
+        private _isDirty;
+        public _masterMesh: AbstractMesh;
+        public _boundingInfo: BoundingInfo;
+        private _pivotMatrix;
+        public _isDisposed: boolean;
+        public _renderId: number;
+        public subMeshes: SubMesh[];
+        public _submeshesOctree: Octree<SubMesh>;
+        public _intersectionsInProgress: AbstractMesh[];
+        private _onAfterWorldMatrixUpdate;
+        constructor(name: string, scene: Scene);
+        public isBlocked : boolean;
+        public getLOD(camera: Camera): AbstractMesh;
+        public getTotalVertices(): number;
+        public getIndices(): number[];
+        public getVerticesData(kind: string): number[];
+        public isVerticesDataPresent(kind: string): boolean;
+        public getBoundingInfo(): BoundingInfo;
+        public _preActivate(): void;
+        public _activate(renderId: number): void;
+        public getWorldMatrix(): Matrix;
+        public worldMatrixFromCache : Matrix;
+        public absolutePosition : Vector3;
+        public rotate(axis: Vector3, amount: number, space: Space): void;
+        public translate(axis: Vector3, distance: number, space: Space): void;
+        public getAbsolutePosition(): Vector3;
+        public setAbsolutePosition(absolutePosition: Vector3): void;
+        public setPivotMatrix(matrix: Matrix): void;
+        public getPivotMatrix(): Matrix;
+        public _isSynchronized(): boolean;
+        public _initCache(): void;
+        public markAsDirty(property: string): void;
+        public _updateBoundingInfo(): void;
+        public _updateSubMeshesBoundingInfo(matrix: Matrix): void;
+        public computeWorldMatrix(force?: boolean): Matrix;
+        /**
+        * If you'd like to be callbacked after the mesh position, rotation or scaling has been updated
+        * @param func: callback function to add
+        */
+        public registerAfterWorldMatrixUpdate(func: (mesh: AbstractMesh) => void): void;
+        public unregisterAfterWorldMatrixUpdate(func: (mesh: AbstractMesh) => void): void;
+        public setPositionWithLocalVector(vector3: Vector3): void;
+        public getPositionExpressedInLocalSpace(): Vector3;
+        public locallyTranslate(vector3: Vector3): void;
+        public lookAt(targetPoint: Vector3, yawCor: number, pitchCor: number, rollCor: number): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public isCompletelyInFrustum(camera?: Camera): boolean;
+        public intersectsMesh(mesh: AbstractMesh, precise?: boolean): boolean;
+        public intersectsPoint(point: Vector3): boolean;
+        public setPhysicsState(impostor?: any, options?: PhysicsBodyCreationOptions): any;
+        public getPhysicsImpostor(): number;
+        public getPhysicsMass(): number;
+        public getPhysicsFriction(): number;
+        public getPhysicsRestitution(): number;
+        public getPositionInCameraSpace(camera?: Camera): Vector3;
+        public getDistanceToCamera(camera?: Camera): number;
+        public applyImpulse(force: Vector3, contactPoint: Vector3): void;
+        public setPhysicsLinkWith(otherMesh: Mesh, pivot1: Vector3, pivot2: Vector3, options?: any): void;
+        public updatePhysicsBodyPosition(): void;
+        public moveWithCollisions(velocity: Vector3): void;
+        /**
+        * This function will create an octree to help select the right submeshes for rendering, picking and collisions
+        * Please note that you must have a decent number of submeshes to get performance improvements when using octree
+        */
+        public createOrUpdateSubmeshesOctree(maxCapacity?: number, maxDepth?: number): Octree<SubMesh>;
+        public _collideForSubMesh(subMesh: SubMesh, transformMatrix: Matrix, collider: Collider): void;
+        public _processCollisionsForSubMeshes(collider: Collider, transformMatrix: Matrix): void;
+        public _checkCollision(collider: Collider): void;
+        public _generatePointsArray(): boolean;
+        public intersects(ray: Ray, fastCheck?: boolean): PickingInfo;
+        public clone(name: string, newParent: Node, doNotCloneChildren?: boolean): AbstractMesh;
+        public releaseSubMeshes(): void;
+        public dispose(doNotRecurse?: boolean): void;
+    }
+}

+ 24 - 0
Babylon/Mesh/babylon.csg.d.ts

@@ -0,0 +1,24 @@
+declare module BABYLON {
+    class CSG {
+        private polygons;
+        public matrix: Matrix;
+        public position: Vector3;
+        public rotation: Vector3;
+        public scaling: Vector3;
+        static FromMesh(mesh: Mesh): CSG;
+        private static FromPolygons(polygons);
+        public clone(): CSG;
+        private toPolygons();
+        public union(csg: CSG): CSG;
+        public unionInPlace(csg: CSG): void;
+        public subtract(csg: CSG): CSG;
+        public subtractInPlace(csg: CSG): void;
+        public intersect(csg: CSG): CSG;
+        public intersectInPlace(csg: CSG): void;
+        public inverse(): CSG;
+        public inverseInPlace(): void;
+        public copyTransformAttributes(csg: CSG): CSG;
+        public buildMeshGeometry(name: string, scene: Scene, keepSubMeshes: boolean): Mesh;
+        public toMesh(name: string, material: Material, scene: Scene, keepSubMeshes: boolean): Mesh;
+    }
+}

+ 136 - 0
Babylon/Mesh/babylon.geometry.d.ts

@@ -0,0 +1,136 @@
+declare module BABYLON {
+    class Geometry implements IGetSetVerticesData {
+        public id: string;
+        public delayLoadState: number;
+        public delayLoadingFile: string;
+        private _scene;
+        private _engine;
+        private _meshes;
+        private _totalVertices;
+        private _indices;
+        private _vertexBuffers;
+        public _delayInfo: any;
+        private _indexBuffer;
+        public _boundingInfo: BoundingInfo;
+        public _delayLoadingFunction: (any: any, Geometry: any) => void;
+        constructor(id: string, scene: Scene, vertexData?: VertexData, updatable?: boolean, mesh?: Mesh);
+        public getScene(): Scene;
+        public getEngine(): Engine;
+        public isReady(): boolean;
+        public setAllVerticesData(vertexData: VertexData, updatable?: boolean): void;
+        public setVerticesData(kind: string, data: number[], updatable?: boolean, stride?: number): void;
+        public updateVerticesDataDirectly(kind: string, data: Float32Array, offset: number): void;
+        public updateVerticesData(kind: string, data: number[], updateExtends?: boolean): void;
+        public getTotalVertices(): number;
+        public getVerticesData(kind: string): number[];
+        public getVertexBuffer(kind: string): VertexBuffer;
+        public getVertexBuffers(): VertexBuffer[];
+        public isVerticesDataPresent(kind: string): boolean;
+        public getVerticesDataKinds(): string[];
+        public setIndices(indices: number[], totalVertices?: number): void;
+        public getTotalIndices(): number;
+        public getIndices(): number[];
+        public getIndexBuffer(): any;
+        public releaseForMesh(mesh: Mesh, shouldDispose?: boolean): void;
+        public applyToMesh(mesh: Mesh): void;
+        private _applyToMesh(mesh);
+        public load(scene: Scene, onLoaded?: () => void): void;
+        public dispose(): void;
+        public copy(id: string): Geometry;
+        static ExtractFromMesh(mesh: Mesh, id: string): Geometry;
+        static RandomId(): string;
+    }
+    module Geometry.Primitives {
+        class _Primitive extends Geometry {
+            private _beingRegenerated;
+            private _canBeRegenerated;
+            constructor(id: string, scene: Scene, vertexData?: VertexData, canBeRegenerated?: boolean, mesh?: Mesh);
+            public canBeRegenerated(): boolean;
+            public regenerate(): void;
+            public asNewGeometry(id: string): Geometry;
+            public setAllVerticesData(vertexData: VertexData, updatable?: boolean): void;
+            public setVerticesData(kind: string, data: number[], updatable?: boolean): void;
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Box extends _Primitive {
+            public size: number;
+            constructor(id: string, scene: Scene, size: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Sphere extends _Primitive {
+            public segments: number;
+            public diameter: number;
+            constructor(id: string, scene: Scene, segments: number, diameter: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Cylinder extends _Primitive {
+            public height: number;
+            public diameterTop: number;
+            public diameterBottom: number;
+            public tessellation: number;
+            public subdivisions: number;
+            constructor(id: string, scene: Scene, height: number, diameterTop: number, diameterBottom: number, tessellation: number, subdivisions?: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Torus extends _Primitive {
+            public diameter: number;
+            public thickness: number;
+            public tessellation: number;
+            constructor(id: string, scene: Scene, diameter: number, thickness: number, tessellation: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Ground extends _Primitive {
+            public width: number;
+            public height: number;
+            public subdivisions: number;
+            constructor(id: string, scene: Scene, width: number, height: number, subdivisions: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class TiledGround extends _Primitive {
+            public xmin: number;
+            public zmin: number;
+            public xmax: number;
+            public zmax: number;
+            public subdivisions: {
+                w: number;
+                h: number;
+            };
+            public precision: {
+                w: number;
+                h: number;
+            };
+            constructor(id: string, scene: Scene, xmin: number, zmin: number, xmax: number, zmax: number, subdivisions: {
+                w: number;
+                h: number;
+            }, precision: {
+                w: number;
+                h: number;
+            }, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class Plane extends _Primitive {
+            public size: number;
+            constructor(id: string, scene: Scene, size: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+        class TorusKnot extends _Primitive {
+            public radius: number;
+            public tube: number;
+            public radialSegments: number;
+            public tubularSegments: number;
+            public p: number;
+            public q: number;
+            constructor(id: string, scene: Scene, radius: number, tube: number, radialSegments: number, tubularSegments: number, p: number, q: number, canBeRegenerated?: boolean, mesh?: Mesh);
+            public _regenerateVertexData(): VertexData;
+            public copy(id: string): Geometry;
+        }
+    }
+}

+ 11 - 0
Babylon/Mesh/babylon.groundMesh.d.ts

@@ -0,0 +1,11 @@
+declare module BABYLON {
+    class GroundMesh extends Mesh {
+        public generateOctree: boolean;
+        private _worldInverse;
+        public _subdivisions: number;
+        constructor(name: string, scene: Scene);
+        public subdivisions : number;
+        public optimize(chunksCount: number): void;
+        public getHeightAtCoordinates(x: number, z: number): number;
+    }
+}

+ 25 - 0
Babylon/Mesh/babylon.instancedMesh.d.ts

@@ -0,0 +1,25 @@
+declare module BABYLON {
+    class InstancedMesh extends AbstractMesh {
+        private _sourceMesh;
+        private _currentLOD;
+        constructor(name: string, source: Mesh);
+        public receiveShadows : boolean;
+        public material : Material;
+        public visibility : number;
+        public skeleton : Skeleton;
+        public getTotalVertices(): number;
+        public sourceMesh : Mesh;
+        public getVerticesData(kind: string): number[];
+        public isVerticesDataPresent(kind: string): boolean;
+        public getIndices(): number[];
+        public _positions : Vector3[];
+        public refreshBoundingInfo(): void;
+        public _preActivate(): void;
+        public _activate(renderId: number): void;
+        public getLOD(camera: Camera): AbstractMesh;
+        public _syncSubMeshes(): void;
+        public _generatePointsArray(): boolean;
+        public clone(name: string, newParent: Node, doNotCloneChildren?: boolean): InstancedMesh;
+        public dispose(doNotRecurse?: boolean): void;
+    }
+}

+ 18 - 0
Babylon/Mesh/babylon.linesMesh.d.ts

@@ -0,0 +1,18 @@
+declare module BABYLON {
+    class LinesMesh extends Mesh {
+        public color: Color3;
+        public alpha: number;
+        private _colorShader;
+        private _ib;
+        private _indicesLength;
+        private _indices;
+        constructor(name: string, scene: Scene, updatable?: boolean);
+        public material : Material;
+        public isPickable : boolean;
+        public checkCollisions : boolean;
+        public _bind(subMesh: SubMesh, effect: Effect, fillMode: number): void;
+        public _draw(subMesh: SubMesh, fillMode: number, instancesCount?: number): void;
+        public intersects(ray: Ray, fastCheck?: boolean): any;
+        public dispose(doNotRecurse?: boolean): void;
+    }
+}

+ 102 - 0
Babylon/Mesh/babylon.mesh.d.ts

@@ -0,0 +1,102 @@
+declare module BABYLON {
+    class _InstancesBatch {
+        public mustReturn: boolean;
+        public visibleInstances: InstancedMesh[][];
+        public renderSelf: boolean[];
+    }
+    class Mesh extends AbstractMesh implements IGetSetVerticesData {
+        public delayLoadState: number;
+        public instances: InstancedMesh[];
+        public delayLoadingFile: string;
+        public _binaryInfo: any;
+        private _LODLevels;
+        public _geometry: Geometry;
+        private _onBeforeRenderCallbacks;
+        private _onAfterRenderCallbacks;
+        public _delayInfo: any;
+        public _delayLoadingFunction: (any: any, Mesh: any) => void;
+        public _visibleInstances: any;
+        private _renderIdForInstances;
+        private _batchCache;
+        private _worldMatricesInstancesBuffer;
+        private _worldMatricesInstancesArray;
+        private _instancesBufferSize;
+        public _shouldGenerateFlatShading: boolean;
+        private _preActivateId;
+        constructor(name: string, scene: Scene);
+        public hasLODLevels : boolean;
+        private _sortLODLevels();
+        public addLODLevel(distance: number, mesh: Mesh): Mesh;
+        public removeLODLevel(mesh: Mesh): Mesh;
+        public getLOD(camera: Camera, boundingSphere?: BoundingSphere): AbstractMesh;
+        public geometry : Geometry;
+        public getTotalVertices(): number;
+        public getVerticesData(kind: string): number[];
+        public getVertexBuffer(kind: any): VertexBuffer;
+        public isVerticesDataPresent(kind: string): boolean;
+        public getVerticesDataKinds(): string[];
+        public getTotalIndices(): number;
+        public getIndices(): number[];
+        public isBlocked : boolean;
+        public isReady(): boolean;
+        public isDisposed(): boolean;
+        public _preActivate(): void;
+        public _registerInstanceForRenderId(instance: InstancedMesh, renderId: number): void;
+        public refreshBoundingInfo(): void;
+        public _createGlobalSubMesh(): SubMesh;
+        public subdivide(count: number): void;
+        public setVerticesData(kind: any, data: any, updatable?: boolean, stride?: number): void;
+        public updateVerticesData(kind: string, data: number[], updateExtends?: boolean, makeItUnique?: boolean): void;
+        public updateVerticesDataDirectly(kind: string, data: Float32Array, offset?: number, makeItUnique?: boolean): void;
+        public makeGeometryUnique(): void;
+        public setIndices(indices: number[], totalVertices?: number): void;
+        public _bind(subMesh: SubMesh, effect: Effect, fillMode: number): void;
+        public _draw(subMesh: SubMesh, fillMode: number, instancesCount?: number): void;
+        public registerBeforeRender(func: () => void): void;
+        public unregisterBeforeRender(func: () => void): void;
+        public registerAfterRender(func: () => void): void;
+        public unregisterAfterRender(func: () => void): void;
+        public _getInstancesRenderList(subMeshId: number): _InstancesBatch;
+        public _renderWithInstances(subMesh: SubMesh, fillMode: number, batch: _InstancesBatch, effect: Effect, engine: Engine): void;
+        public render(subMesh: SubMesh): void;
+        public getEmittedParticleSystems(): ParticleSystem[];
+        public getHierarchyEmittedParticleSystems(): ParticleSystem[];
+        public getChildren(): Node[];
+        public _checkDelayState(): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public setMaterialByID(id: string): void;
+        public getAnimatables(): IAnimatable[];
+        public bakeTransformIntoVertices(transform: Matrix): void;
+        public _resetPointsArrayCache(): void;
+        public _generatePointsArray(): boolean;
+        public clone(name: string, newParent: Node, doNotCloneChildren?: boolean): Mesh;
+        public dispose(doNotRecurse?: boolean): void;
+        public applyDisplacementMap(url: string, minHeight: number, maxHeight: number): void;
+        public applyDisplacementMapFromBuffer(buffer: Uint8Array, heightMapWidth: number, heightMapHeight: number, minHeight: number, maxHeight: number): void;
+        public convertToFlatShadedMesh(): void;
+        public createInstance(name: string): InstancedMesh;
+        public synchronizeInstances(): void;
+        static CreateBox(name: string, size: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateSphere(name: string, segments: number, diameter: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateCylinder(name: string, height: number, diameterTop: number, diameterBottom: number, tessellation: number, subdivisions: any, scene: Scene, updatable?: any): Mesh;
+        static CreateTorus(name: string, diameter: number, thickness: number, tessellation: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateTorusKnot(name: string, radius: number, tube: number, radialSegments: number, tubularSegments: number, p: number, q: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateLines(name: string, points: Vector3[], scene: Scene, updatable?: boolean): LinesMesh;
+        static CreatePlane(name: string, size: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateGround(name: string, width: number, height: number, subdivisions: number, scene: Scene, updatable?: boolean): Mesh;
+        static CreateTiledGround(name: string, xmin: number, zmin: number, xmax: number, zmax: number, subdivisions: {
+            w: number;
+            h: number;
+        }, precision: {
+            w: number;
+            h: number;
+        }, scene: Scene, updatable?: boolean): Mesh;
+        static CreateGroundFromHeightMap(name: string, url: string, width: number, height: number, subdivisions: number, minHeight: number, maxHeight: number, scene: Scene, updatable?: boolean): GroundMesh;
+        static MinMax(meshes: AbstractMesh[]): {
+            min: Vector3;
+            max: Vector3;
+        };
+        static Center(meshesOrMinMaxVector: any): Vector3;
+        static MergeMeshes(meshes: Mesh[], disposeSource?: boolean, allow32BitsIndices?: boolean): Mesh;
+    }
+}

+ 49 - 0
Babylon/Mesh/babylon.mesh.vertexData.d.ts

@@ -0,0 +1,49 @@
+declare module BABYLON {
+    interface IGetSetVerticesData {
+        isVerticesDataPresent(kind: string): boolean;
+        getVerticesData(kind: string): number[];
+        getIndices(): number[];
+        setVerticesData(kind: string, data: number[], updatable?: boolean): void;
+        updateVerticesData(kind: string, data: number[], updateExtends?: boolean, makeItUnique?: boolean): void;
+        setIndices(indices: number[]): void;
+    }
+    class VertexData {
+        public positions: number[];
+        public normals: number[];
+        public uvs: number[];
+        public uv2s: number[];
+        public colors: number[];
+        public matricesIndices: number[];
+        public matricesWeights: number[];
+        public indices: number[];
+        public set(data: number[], kind: string): void;
+        public applyToMesh(mesh: Mesh, updatable?: boolean): void;
+        public applyToGeometry(geometry: Geometry, updatable?: boolean): void;
+        public updateMesh(mesh: Mesh, updateExtends?: boolean, makeItUnique?: boolean): void;
+        public updateGeometry(geometry: Geometry, updateExtends?: boolean, makeItUnique?: boolean): void;
+        private _applyTo(meshOrGeometry, updatable?);
+        private _update(meshOrGeometry, updateExtends?, makeItUnique?);
+        public transform(matrix: Matrix): void;
+        public merge(other: VertexData): void;
+        static ExtractFromMesh(mesh: Mesh): VertexData;
+        static ExtractFromGeometry(geometry: Geometry): VertexData;
+        private static _ExtractFrom(meshOrGeometry);
+        static CreateBox(size: number): VertexData;
+        static CreateSphere(segments: number, diameter: number): VertexData;
+        static CreateCylinder(height: number, diameterTop: number, diameterBottom: number, tessellation: number, subdivisions?: number): VertexData;
+        static CreateTorus(diameter: any, thickness: any, tessellation: any): VertexData;
+        static CreateLines(points: Vector3[]): VertexData;
+        static CreateGround(width: number, height: number, subdivisions: number): VertexData;
+        static CreateTiledGround(xmin: number, zmin: number, xmax: number, zmax: number, subdivisions?: {
+            w: number;
+            h: number;
+        }, precision?: {
+            w: number;
+            h: number;
+        }): VertexData;
+        static CreateGroundFromHeightMap(width: number, height: number, subdivisions: number, minHeight: number, maxHeight: number, buffer: Uint8Array, bufferWidth: number, bufferHeight: number): VertexData;
+        static CreatePlane(size: number): VertexData;
+        static CreateTorusKnot(radius: number, tube: number, radialSegments: number, tubularSegments: number, p: number, q: number): VertexData;
+        static ComputeNormals(positions: number[], indices: number[], normals: number[]): void;
+    }
+}

+ 7 - 0
Babylon/Mesh/babylon.meshLODLevel.d.ts

@@ -0,0 +1,7 @@
+declare module BABYLON.Internals {
+    class MeshLODLevel {
+        public distance: number;
+        public mesh: Mesh;
+        constructor(distance: number, mesh: Mesh);
+    }
+}

+ 37 - 0
Babylon/Mesh/babylon.subMesh.d.ts

@@ -0,0 +1,37 @@
+declare module BABYLON {
+    class SubMesh {
+        public materialIndex: number;
+        public verticesStart: number;
+        public verticesCount: number;
+        public indexStart: any;
+        public indexCount: number;
+        public linesIndexCount: number;
+        private _mesh;
+        private _renderingMesh;
+        private _boundingInfo;
+        private _linesIndexBuffer;
+        public _lastColliderWorldVertices: Vector3[];
+        public _trianglePlanes: Plane[];
+        public _lastColliderTransformMatrix: Matrix;
+        public _renderId: number;
+        public _alphaIndex: number;
+        public _distanceToCamera: number;
+        public _id: number;
+        constructor(materialIndex: number, verticesStart: number, verticesCount: number, indexStart: any, indexCount: number, mesh: AbstractMesh, renderingMesh?: Mesh, createBoundingBox?: boolean);
+        public getBoundingInfo(): BoundingInfo;
+        public getMesh(): AbstractMesh;
+        public getRenderingMesh(): Mesh;
+        public getMaterial(): Material;
+        public refreshBoundingInfo(): void;
+        public _checkCollision(collider: Collider): boolean;
+        public updateBoundingInfo(world: Matrix): void;
+        public isInFrustum(frustumPlanes: Plane[]): boolean;
+        public render(): void;
+        public getLinesIndexBuffer(indices: number[], engine: any): WebGLBuffer;
+        public canIntersects(ray: Ray): boolean;
+        public intersects(ray: Ray, positions: Vector3[], indices: number[], fastCheck?: boolean): IntersectionInfo;
+        public clone(newMesh: AbstractMesh, newRenderingMesh?: Mesh): SubMesh;
+        public dispose(): void;
+        static CreateFromIndices(materialIndex: number, startIndex: number, indexCount: number, mesh: AbstractMesh, renderingMesh?: Mesh): SubMesh;
+    }
+}

+ 34 - 0
Babylon/Mesh/babylon.vertexBuffer.d.ts

@@ -0,0 +1,34 @@
+declare module BABYLON {
+    class VertexBuffer {
+        private _mesh;
+        private _engine;
+        private _buffer;
+        private _data;
+        private _updatable;
+        private _kind;
+        private _strideSize;
+        constructor(engine: any, data: number[], kind: string, updatable: boolean, postponeInternalCreation?: boolean, stride?: number);
+        public isUpdatable(): boolean;
+        public getData(): number[];
+        public getBuffer(): WebGLBuffer;
+        public getStrideSize(): number;
+        public create(data?: number[]): void;
+        public update(data: number[]): void;
+        public updateDirectly(data: Float32Array, offset: number): void;
+        public dispose(): void;
+        private static _PositionKind;
+        private static _NormalKind;
+        private static _UVKind;
+        private static _UV2Kind;
+        private static _ColorKind;
+        private static _MatricesIndicesKind;
+        private static _MatricesWeightsKind;
+        static PositionKind : string;
+        static NormalKind : string;
+        static UVKind : string;
+        static UV2Kind : string;
+        static ColorKind : string;
+        static MatricesIndicesKind : string;
+        static MatricesWeightsKind : string;
+    }
+}

+ 13 - 0
Babylon/Particles/babylon.particle.d.ts

@@ -0,0 +1,13 @@
+declare module BABYLON {
+    class Particle {
+        public position: Vector3;
+        public direction: Vector3;
+        public color: Color4;
+        public colorStep: Color4;
+        public lifeTime: number;
+        public age: number;
+        public size: number;
+        public angle: number;
+        public angularSpeed: number;
+    }
+}

+ 75 - 0
Babylon/Particles/babylon.particleSystem.d.ts

@@ -0,0 +1,75 @@
+declare module BABYLON {
+    class ParticleSystem implements IDisposable {
+        public name: string;
+        static BLENDMODE_ONEONE: number;
+        static BLENDMODE_STANDARD: number;
+        public id: string;
+        public renderingGroupId: number;
+        public emitter: any;
+        public emitRate: number;
+        public manualEmitCount: number;
+        public updateSpeed: number;
+        public targetStopDuration: number;
+        public disposeOnStop: boolean;
+        public minEmitPower: number;
+        public maxEmitPower: number;
+        public minLifeTime: number;
+        public maxLifeTime: number;
+        public minSize: number;
+        public maxSize: number;
+        public minAngularSpeed: number;
+        public maxAngularSpeed: number;
+        public particleTexture: Texture;
+        public onDispose: () => void;
+        public updateFunction: (particles: Particle[]) => void;
+        public blendMode: number;
+        public forceDepthWrite: boolean;
+        public gravity: Vector3;
+        public direction1: Vector3;
+        public direction2: Vector3;
+        public minEmitBox: Vector3;
+        public maxEmitBox: Vector3;
+        public color1: Color4;
+        public color2: Color4;
+        public colorDead: Color4;
+        public textureMask: Color4;
+        public startDirectionFunction: (emitPower: number, worldMatrix: Matrix, directionToUpdate: Vector3) => void;
+        public startPositionFunction: (worldMatrix: Matrix, positionToUpdate: Vector3) => void;
+        private particles;
+        private _capacity;
+        private _scene;
+        private _vertexDeclaration;
+        private _vertexStrideSize;
+        private _stockParticles;
+        private _newPartsExcess;
+        private _vertexBuffer;
+        private _indexBuffer;
+        private _vertices;
+        private _effect;
+        private _customEffect;
+        private _cachedDefines;
+        private _scaledColorStep;
+        private _colorDiff;
+        private _scaledDirection;
+        private _scaledGravity;
+        private _currentRenderId;
+        private _alive;
+        private _started;
+        private _stopped;
+        private _actualFrame;
+        private _scaledUpdateSpeed;
+        constructor(name: string, capacity: number, scene: Scene, customEffect?: Effect);
+        public getCapacity(): number;
+        public isAlive(): boolean;
+        public isStarted(): boolean;
+        public start(): void;
+        public stop(): void;
+        public _appendParticleVertex(index: number, particle: Particle, offsetX: number, offsetY: number): void;
+        private _update(newParticles);
+        private _getEffect();
+        public animate(): void;
+        public render(): number;
+        public dispose(): void;
+        public clone(name: string, newEmitter: any): ParticleSystem;
+    }
+}

+ 27 - 0
Babylon/Physics/Plugins/babylon.cannonJSPlugin.d.ts

@@ -0,0 +1,27 @@
+declare module BABYLON {
+    class CannonJSPlugin implements IPhysicsEnginePlugin {
+        public checkWithEpsilon: (value: number) => number;
+        private _world;
+        private _registeredMeshes;
+        private _physicsMaterials;
+        public initialize(iterations?: number): void;
+        private _checkWithEpsilon(value);
+        public runOneStep(delta: number): void;
+        public setGravity(gravity: Vector3): void;
+        public registerMesh(mesh: AbstractMesh, impostor: number, options?: PhysicsBodyCreationOptions): any;
+        private _createSphere(radius, mesh, options?);
+        private _createBox(x, y, z, mesh, options?);
+        private _createPlane(mesh, options?);
+        private _createConvexPolyhedron(rawVerts, rawFaces, mesh, options?);
+        private _addMaterial(friction, restitution);
+        private _createRigidBodyFromShape(shape, mesh, mass, friction, restitution);
+        public registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
+        private _unbindBody(body);
+        public unregisterMesh(mesh: AbstractMesh): void;
+        public applyImpulse(mesh: AbstractMesh, force: Vector3, contactPoint: Vector3): void;
+        public updateBodyPosition: (mesh: AbstractMesh) => void;
+        public createLink(mesh1: AbstractMesh, mesh2: AbstractMesh, pivot1: Vector3, pivot2: Vector3): boolean;
+        public dispose(): void;
+        public isSupported(): boolean;
+    }
+}

+ 25 - 0
Babylon/Physics/Plugins/babylon.oimoJSPlugin.d.ts

@@ -0,0 +1,25 @@
+declare module BABYLON {
+    class OimoJSPlugin implements IPhysicsEnginePlugin {
+        private _world;
+        private _registeredMeshes;
+        private _checkWithEpsilon(value);
+        public initialize(iterations?: number): void;
+        public setGravity(gravity: Vector3): void;
+        public registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any;
+        public registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
+        private _createBodyAsCompound(part, options, initialMesh);
+        public unregisterMesh(mesh: AbstractMesh): void;
+        private _unbindBody(body);
+        /**
+        * Update the body position according to the mesh position
+        * @param mesh
+        */
+        public updateBodyPosition: (mesh: AbstractMesh) => void;
+        public applyImpulse(mesh: AbstractMesh, force: Vector3, contactPoint: Vector3): void;
+        public createLink(mesh1: AbstractMesh, mesh2: AbstractMesh, pivot1: Vector3, pivot2: Vector3, options?: any): boolean;
+        public dispose(): void;
+        public isSupported(): boolean;
+        private _getLastShape(body);
+        public runOneStep(time: number): void;
+    }
+}

+ 50 - 0
Babylon/Physics/babylon.physicsEngine.d.ts

@@ -0,0 +1,50 @@
+declare module BABYLON {
+    interface IPhysicsEnginePlugin {
+        initialize(iterations?: number): any;
+        setGravity(gravity: Vector3): void;
+        runOneStep(delta: number): void;
+        registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any;
+        registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
+        unregisterMesh(mesh: AbstractMesh): any;
+        applyImpulse(mesh: AbstractMesh, force: Vector3, contactPoint: Vector3): void;
+        createLink(mesh1: AbstractMesh, mesh2: AbstractMesh, pivot1: Vector3, pivot2: Vector3, options?: any): boolean;
+        dispose(): void;
+        isSupported(): boolean;
+        updateBodyPosition(mesh: AbstractMesh): void;
+    }
+    interface PhysicsBodyCreationOptions {
+        mass: number;
+        friction: number;
+        restitution: number;
+    }
+    interface PhysicsCompoundBodyPart {
+        mesh: Mesh;
+        impostor: number;
+    }
+    class PhysicsEngine {
+        public gravity: Vector3;
+        private _currentPlugin;
+        constructor(plugin?: IPhysicsEnginePlugin);
+        public _initialize(gravity?: Vector3): void;
+        public _runOneStep(delta: number): void;
+        public _setGravity(gravity: Vector3): void;
+        public _registerMesh(mesh: AbstractMesh, impostor: number, options: PhysicsBodyCreationOptions): any;
+        public _registerMeshesAsCompound(parts: PhysicsCompoundBodyPart[], options: PhysicsBodyCreationOptions): any;
+        public _unregisterMesh(mesh: AbstractMesh): void;
+        public _applyImpulse(mesh: AbstractMesh, force: Vector3, contactPoint: Vector3): void;
+        public _createLink(mesh1: AbstractMesh, mesh2: AbstractMesh, pivot1: Vector3, pivot2: Vector3, options?: any): boolean;
+        public _updateBodyPosition(mesh: AbstractMesh): void;
+        public dispose(): void;
+        public isSupported(): boolean;
+        static NoImpostor: number;
+        static SphereImpostor: number;
+        static BoxImpostor: number;
+        static PlaneImpostor: number;
+        static MeshImpostor: number;
+        static CapsuleImpostor: number;
+        static ConeImpostor: number;
+        static CylinderImpostor: number;
+        static ConvexHullImpostor: number;
+        static Epsilon: number;
+    }
+}

+ 32 - 0
Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderEffect.d.ts

@@ -0,0 +1,32 @@
+declare module BABYLON {
+    class PostProcessRenderEffect {
+        private _engine;
+        private _postProcesses;
+        private _getPostProcess;
+        private _singleInstance;
+        private _cameras;
+        private _indicesForCamera;
+        private _renderPasses;
+        private _renderEffectAsPasses;
+        public _name: string;
+        public applyParameters: (postProcess: PostProcess) => void;
+        constructor(engine: Engine, name: string, getPostProcess: () => PostProcess, singleInstance?: boolean);
+        public _update(): void;
+        public addPass(renderPass: PostProcessRenderPass): void;
+        public removePass(renderPass: PostProcessRenderPass): void;
+        public addRenderEffectAsPass(renderEffect: PostProcessRenderEffect): void;
+        public getPass(passName: string): void;
+        public emptyPasses(): void;
+        public _attachCameras(cameras: Camera): any;
+        public _attachCameras(cameras: Camera[]): any;
+        public _detachCameras(cameras: Camera): any;
+        public _detachCameras(cameras: Camera[]): any;
+        public _enable(cameras: Camera): any;
+        public _enable(cameras: Camera[]): any;
+        public _disable(cameras: Camera): any;
+        public _disable(cameras: Camera[]): any;
+        public getPostProcess(camera?: Camera): PostProcess;
+        private _linkParameters();
+        private _linkTextures(effect);
+    }
+}

+ 16 - 0
Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPass.d.ts

@@ -0,0 +1,16 @@
+declare module BABYLON {
+    class PostProcessRenderPass {
+        private _enabled;
+        private _renderList;
+        private _renderTexture;
+        private _scene;
+        private _refCount;
+        public _name: string;
+        constructor(scene: Scene, name: string, size: number, renderList: Mesh[], beforeRender: () => void, afterRender: () => void);
+        public _incRefCount(): number;
+        public _decRefCount(): number;
+        public _update(): void;
+        public setRenderList(renderList: Mesh[]): void;
+        public getRenderTexture(): RenderTargetTexture;
+    }
+}

+ 26 - 0
Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipeline.d.ts

@@ -0,0 +1,26 @@
+declare module BABYLON {
+    class PostProcessRenderPipeline {
+        private _engine;
+        private _renderEffects;
+        private _renderEffectsForIsolatedPass;
+        private _cameras;
+        public _name: string;
+        private static PASS_EFFECT_NAME;
+        private static PASS_SAMPLER_NAME;
+        constructor(engine: Engine, name: string);
+        public addEffect(renderEffect: PostProcessRenderEffect): void;
+        public _enableEffect(renderEffectName: string, cameras: Camera): any;
+        public _enableEffect(renderEffectName: string, cameras: Camera[]): any;
+        public _disableEffect(renderEffectName: string, cameras: Camera): any;
+        public _disableEffect(renderEffectName: string, cameras: Camera[]): any;
+        public _attachCameras(cameras: Camera, unique: boolean): any;
+        public _attachCameras(cameras: Camera[], unique: boolean): any;
+        public _detachCameras(cameras: Camera): any;
+        public _detachCameras(cameras: Camera[]): any;
+        public _enableDisplayOnlyPass(passName: any, cameras: Camera): any;
+        public _enableDisplayOnlyPass(passName: any, cameras: Camera[]): any;
+        public _disableDisplayOnlyPass(cameras: Camera): any;
+        public _disableDisplayOnlyPass(cameras: Camera[]): any;
+        public _update(): void;
+    }
+}

+ 20 - 0
Babylon/PostProcess/RenderPipeline/babylon.postProcessRenderPipelineManager.d.ts

@@ -0,0 +1,20 @@
+declare module BABYLON {
+    class PostProcessRenderPipelineManager {
+        private _renderPipelines;
+        constructor();
+        public addPipeline(renderPipeline: PostProcessRenderPipeline): void;
+        public attachCamerasToRenderPipeline(renderPipelineName: string, cameras: Camera, unique?: boolean): any;
+        public attachCamerasToRenderPipeline(renderPipelineName: string, cameras: Camera[], unique?: boolean): any;
+        public detachCamerasFromRenderPipeline(renderPipelineName: string, cameras: Camera): any;
+        public detachCamerasFromRenderPipeline(renderPipelineName: string, cameras: Camera[]): any;
+        public enableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera): any;
+        public enableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera[]): any;
+        public disableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera): any;
+        public disableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera[]): any;
+        public enableDisplayOnlyPassInPipeline(renderPipelineName: string, passName: string, cameras: Camera): any;
+        public enableDisplayOnlyPassInPipeline(renderPipelineName: string, passName: string, cameras: Camera[]): any;
+        public disableDisplayOnlyPassInPipeline(renderPipelineName: string, cameras: Camera): any;
+        public disableDisplayOnlyPassInPipeline(renderPipelineName: string, cameras: Camera[]): any;
+        public update(): void;
+    }
+}

+ 5 - 0
Babylon/PostProcess/babylon.anaglyphPostProcess.d.ts

@@ -0,0 +1,5 @@
+declare module BABYLON {
+    class AnaglyphPostProcess extends PostProcess {
+        constructor(name: string, ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
+    }
+}

+ 5 - 0
Babylon/PostProcess/babylon.blackAndWhitePostProcess.d.ts

@@ -0,0 +1,5 @@
+declare module BABYLON {
+    class BlackAndWhitePostProcess extends PostProcess {
+        constructor(name: string, ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
+    }
+}

+ 7 - 0
Babylon/PostProcess/babylon.blurPostProcess.d.ts

@@ -0,0 +1,7 @@
+declare module BABYLON {
+    class BlurPostProcess extends PostProcess {
+        public direction: Vector2;
+        public blurWidth: number;
+        constructor(name: string, direction: Vector2, blurWidth: number, ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
+    }
+}

+ 12 - 0
Babylon/PostProcess/babylon.convolutionPostProcess.d.ts

@@ -0,0 +1,12 @@
+declare module BABYLON {
+    class ConvolutionPostProcess extends PostProcess {
+        public kernel: number[];
+        constructor(name: string, kernel: number[], ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean);
+        static EdgeDetect0Kernel: number[];
+        static EdgeDetect1Kernel: number[];
+        static EdgeDetect2Kernel: number[];
+        static SharpenKernel: number[];
+        static EmbossKernel: number[];
+        static GaussianKernel: number[];
+    }
+}

+ 0 - 0
Babylon/PostProcess/babylon.displayPassPostProcess.d.ts


Some files were not shown because too many files changed in this diff