Explorar o código

Merge pull request #989 from RaananW/travis-gulp

Travis - gulp fail on TS errors
David Catuhe %!s(int64=9) %!d(string=hai) anos
pai
achega
b1e8823109

+ 18 - 6
Tools/Gulp/gulpfile.js

@@ -70,13 +70,25 @@ gulp.task('typescript-compile', function () {
             typescript: require('typescript'),
             experimentalDecorators: true
         }));
+    //If this gulp task is running on travis, file the build!
+    if (process.env.TRAVIS) {
+        var error = false;
+        tsResult.on('error', function () {
+            error = true;
+        }).on('end', function () {
+            if (error) {
+                console.log('Typescript compile failed');
+                process.exit(1);
+            }
+        });
+    }
     return merge2([
         tsResult.dts
             .pipe(concat(config.build.declarationFilename))
             .pipe(gulp.dest(config.build.outputDirectory)),
         tsResult.js
             .pipe(gulp.dest(config.build.srcOutputDirectory))
-    ]);
+    ])
 });
 
 gulp.task('typescript-sourcemaps', function () {
@@ -97,7 +109,7 @@ gulp.task('typescript-sourcemaps', function () {
 gulp.task("buildCore", ["shaders"], function () {
     return merge2(
         gulp.src(config.core.files),
-        shadersStream, 
+        shadersStream,
         includeShadersStream
         )
         .pipe(concat(config.build.minCoreFilename))
@@ -112,7 +124,7 @@ gulp.task("buildNoWorker", ["shaders"], function () {
     return merge2(
         gulp.src(config.core.files),
         gulp.src(config.extras.files),
-        shadersStream, 
+        shadersStream,
         includeShadersStream
         )
         .pipe(concat(config.build.minNoWorkerFilename))
@@ -142,14 +154,14 @@ gulp.task("build", ["workers", "shaders"], function () {
 });
 
 gulp.task("typescript", function (cb) {
-    runSequence("typescript-compile", "default");
+    runSequence("typescript-compile", "default", cb);
 });
 
 /**
  * The default task, call the tasks: build
  */
-gulp.task('default', function () {
-    return runSequence("buildNoWorker", "build", "buildCore");
+gulp.task('default', function (cb) {
+    runSequence("buildNoWorker", "build", "buildCore", cb);
 });
 
 /**

+ 25 - 126
src/Mesh/babylon.geometry.ts

@@ -820,14 +820,13 @@
 
         /// Abstract class
         export class _Primitive extends Geometry {
-            // Private
+
             private _beingRegenerated: boolean;
-            private _canBeRegenerated: boolean;
 
-            constructor(id: string, scene: Scene, vertexData?: VertexData, canBeRegenerated?: boolean, mesh?: Mesh) {
+            constructor(id: string, scene: Scene, private _canBeRegenerated?: boolean, mesh?: Mesh) {
+                super(id, scene, null, false, mesh); // updatable = false to be sure not to update vertices
                 this._beingRegenerated = true;
-                this._canBeRegenerated = canBeRegenerated;
-                super(id, scene, vertexData, false, mesh); // updatable = false to be sure not to update vertices
+                this.regenerate();
                 this._beingRegenerated = false;
             }
 
@@ -884,20 +883,9 @@
 
         export class Ribbon extends _Primitive {
             // Members
-            public pathArray: Vector3[][];
-            public closeArray: boolean;
-            public closePath: boolean;
-            public offset: number;
-            public side: number;
-
-            constructor(id: string, scene: Scene, pathArray: Vector3[][], closeArray: boolean, closePath: boolean, offset: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.pathArray = pathArray;
-                this.closeArray = closeArray;
-                this.closePath = closePath;
-                this.offset = offset;
-                this.side = side;
 
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public pathArray: Vector3[][], public closeArray: boolean, public closePath: boolean, public offset: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -911,14 +899,8 @@
 
         export class Box extends _Primitive {
             // Members
-            public size: number;
-            public side: number;
-
-            constructor(id: string, scene: Scene, size: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.size = size;
-                this.side = side;
-
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public size: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -952,17 +934,9 @@
         }
 
         export class Sphere extends _Primitive {
-            // Members
-            public segments: number;
-            public diameter: number;
-            public side: number;
 
-            constructor(id: string, scene: Scene, segments: number, diameter: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.segments = segments;
-                this.diameter = diameter;
-                this.side = side;
-
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public segments: number, public diameter: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -998,16 +972,9 @@
 
         export class Disc extends _Primitive {
             // Members
-            public radius: number;
-            public tessellation: number;
-            public side: number;
-
-            constructor(id: string, scene: Scene, radius: number, tessellation: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.radius = radius;
-                this.tessellation = tessellation;
-                this.side = side;
 
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public radius: number,public tessellation: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1021,23 +988,9 @@
 
 
         export class Cylinder extends _Primitive {
-            // Members
-            public height: number;
-            public diameterTop: number;
-            public diameterBottom: number;
-            public tessellation: number;
-            public subdivisions: number;
-            public side: number;
 
-            constructor(id: string, scene: Scene, height: number, diameterTop: number, diameterBottom: number, tessellation: number, subdivisions: number = 1, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.height = height;
-                this.diameterTop = diameterTop;
-                this.diameterBottom = diameterBottom;
-                this.tessellation = tessellation;
-                this.subdivisions = subdivisions;
-                this.side = side;
-
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public height: number, public diameterTop: number, public diameterBottom: number, public tessellation: number, public subdivisions: number = 1, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1074,19 +1027,9 @@
         }
 
         export class Torus extends _Primitive {
-            // Members
-            public diameter: number;
-            public thickness: number;
-            public tessellation: number;
-            public side: number;
 
-            constructor(id: string, scene: Scene, diameter: number, thickness: number, tessellation: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.diameter = diameter;
-                this.thickness = thickness;
-                this.tessellation = tessellation;
-                this.side = side;
-
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public diameter: number, public thickness: number, public tessellation: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1122,17 +1065,9 @@
         }
 
         export class Ground extends _Primitive {
-            // Members
-            public width: number;
-            public height: number;
-            public subdivisions: number;
-
-            constructor(id: string, scene: Scene, width: number, height: number, subdivisions: number, canBeRegenerated?: boolean, mesh?: Mesh) {
-                this.width = width;
-                this.height = height;
-                this.subdivisions = subdivisions;
 
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public width: number, public height: number, public subdivisions: number, canBeRegenerated?: boolean, mesh?: Mesh) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1168,23 +1103,9 @@
         }
 
         export class TiledGround extends _Primitive {
-            // Members
-            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) {
-                this.xmin = xmin;
-                this.zmin = zmin;
-                this.xmax = xmax;
-                this.zmax = zmax;
-                this.subdivisions = subdivisions;
-                this.precision = precision;
 
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public xmin: number, public zmin: number, public xmax: number, public zmax: number, public subdivisions: { w: number; h: number; }, public precision: { w: number; h: number; }, canBeRegenerated?: boolean, mesh?: Mesh) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1197,15 +1118,9 @@
         }
 
         export class Plane extends _Primitive {
-            // Members
-            public size: number;
-            public side: number;
-
-            constructor(id: string, scene: Scene, size: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.size = size;
-                this.side = side;
 
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+            constructor(id: string, scene: Scene, public size: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {
@@ -1239,25 +1154,9 @@
         }
 
         export class TorusKnot extends _Primitive {
-            // Members
-            public radius: number;
-            public tube: number;
-            public radialSegments: number;
-            public tubularSegments: number;
-            public p: number;
-            public q: number;
-            public side: number;
-
-            constructor(id: string, scene: Scene, radius: number, tube: number, radialSegments: number, tubularSegments: number, p: number, q: number, canBeRegenerated?: boolean, mesh?: Mesh, side: number = Mesh.DEFAULTSIDE) {
-                this.radius = radius;
-                this.tube = tube;
-                this.radialSegments = radialSegments;
-                this.tubularSegments = tubularSegments;
-                this.p = p;
-                this.q = q;
-                this.side = side;
-
-                super(id, scene, this._regenerateVertexData(), canBeRegenerated, mesh);
+
+            constructor(id: string, scene: Scene, public radius: number, public tube: number, public radialSegments: number, public tubularSegments: number, public p: number, public q: number, canBeRegenerated?: boolean, mesh?: Mesh, public side: number = Mesh.DEFAULTSIDE) {
+                super(id, scene, canBeRegenerated, mesh);
             }
 
             public _regenerateVertexData(): VertexData {

+ 13 - 20
src/PostProcess/babylon.tonemapPostProcess.ts

@@ -1,39 +1,32 @@
-module BABYLON
-{
-    export enum TonemappingOperator
-    {
+module BABYLON {
+    export enum TonemappingOperator {
         Hable = 0,
         Reinhard = 1,
         HejiDawson = 2,
         Photographic = 3,
     };
 
-    export class TonemapPostProcess extends PostProcess
-    {
-        private _operator : TonemappingOperator;
-        public exposureAdjustment : number;
+    export class TonemapPostProcess extends PostProcess {
 
-        constructor(name: string, operator: TonemappingOperator, exposureAdjustment: number, camera: Camera, samplingMode: number = Texture.BILINEAR_SAMPLINGMODE, engine?: Engine, textureFormat = Engine.TEXTURETYPE_UNSIGNED_INT)
-        {
-            this._operator = operator;
-            this.exposureAdjustment = exposureAdjustment;
+        constructor(name: string, private _operator: TonemappingOperator, public exposureAdjustment: number, camera: Camera, samplingMode: number = Texture.BILINEAR_SAMPLINGMODE, engine?: Engine, textureFormat = Engine.TEXTURETYPE_UNSIGNED_INT) {
+            super(name, "tonemap", ["_ExposureAdjustment"], null, 1.0, camera, samplingMode, engine, true, defines, textureFormat);
 
-            var params = ["_ExposureAdjustment"];
             var defines = "#define ";
 
-            if (operator === TonemappingOperator.Hable)
+            if (this._operator === TonemappingOperator.Hable)
                 defines += "HABLE_TONEMAPPING";
-            else if (operator === TonemappingOperator.Reinhard)
+            else if (this._operator === TonemappingOperator.Reinhard)
                 defines += "REINHARD_TONEMAPPING";
-            else if (operator === TonemappingOperator.HejiDawson)
+            else if (this._operator === TonemappingOperator.HejiDawson)
                 defines += "OPTIMIZED_HEJIDAWSON_TONEMAPPING";
-            else if (operator === TonemappingOperator.Photographic)
+            else if (this._operator === TonemappingOperator.Photographic)
                 defines += "PHOTOGRAPHIC_TONEMAPPING";
+                
+            //sadly a second call to create the effect.
+            this.updateEffect(defines);
 
-            super(name, "tonemap", params, null, 1.0, camera, samplingMode, engine, true, defines, textureFormat);
 
-            this.onApply = (effect: Effect) =>
-            {
+            this.onApply = (effect: Effect) => {
                 effect.setFloat("_ExposureAdjustment", this.exposureAdjustment);
             };
         }

+ 1 - 1
src/Tools/babylon.gamepads.ts

@@ -68,7 +68,7 @@
             // Remove the gamepad from the list of gamepads to monitor.
             for (var i in this.babylonGamepads) {
                 if (this.babylonGamepads[i].index == evt.gamepad.index) {
-                    this.babylonGamepads.splice(i, 1);
+                    this.babylonGamepads.splice(+i, 1);
                     break;
                 }
             }

+ 9 - 5
src/babylon.engine.ts

@@ -1134,11 +1134,13 @@
             this._gl.useProgram(effect.getProgram());
 
             for (var i in this._vertexAttribArrays) {
-                if (i > this._gl.VERTEX_ATTRIB_ARRAY_ENABLED || !this._vertexAttribArrays[i]) {
+                //make sure this is a number)
+                var iAsNumber = +i;
+                if (iAsNumber > this._gl.VERTEX_ATTRIB_ARRAY_ENABLED || !this._vertexAttribArrays[iAsNumber]) {
                     continue;
                 }
-                this._vertexAttribArrays[i] = false;
-                this._gl.disableVertexAttribArray(i);
+                this._vertexAttribArrays[iAsNumber] = false;
+                this._gl.disableVertexAttribArray(iAsNumber);
             }
 
             var attributesCount = effect.getAttributesCount();
@@ -2187,10 +2189,12 @@
 
             // Unbind
             for (var i in this._vertexAttribArrays) {
-                if (i > this._gl.VERTEX_ATTRIB_ARRAY_ENABLED || !this._vertexAttribArrays[i]) {
+                //making sure this is a string
+                var iAsNumber = +i;
+                if (iAsNumber > this._gl.VERTEX_ATTRIB_ARRAY_ENABLED || !this._vertexAttribArrays[iAsNumber]) {
                     continue;
                 }
-                this._gl.disableVertexAttribArray(i);
+                this._gl.disableVertexAttribArray(iAsNumber);
             }
 
             this._gl = null;