瀏覽代碼

Merge remote-tracking branch 'refs/remotes/BabylonJS/master' into Particle2

# Conflicts:
#	dist/preview release/babylon.d.ts
#	dist/preview release/babylon.js
#	dist/preview release/babylon.worker.js
DESKTOP-QJU4N0L\mityh 7 年之前
父節點
當前提交
688891c08c
共有 34 個文件被更改,包括 23009 次插入23000 次删除
  1. 8489 8489
      Playground/babylon.d.txt
  2. 二進制
      Playground/textures/normal.png
  3. 1 3
      Tools/Gulp/package.json
  4. 8783 8828
      dist/preview release/babylon.d.ts
  5. 42 42
      dist/preview release/babylon.js
  6. 3 1
      dist/preview release/babylon.max.js
  7. 43 43
      dist/preview release/babylon.worker.js
  8. 5448 5448
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts
  9. 42 42
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js
  10. 3 1
      dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js
  11. 3 3
      dist/preview release/gui/babylon.gui.min.js
  12. 4 4
      dist/preview release/inspector/babylon.inspector.bundle.js
  13. 3 3
      dist/preview release/inspector/babylon.inspector.min.js
  14. 2 2
      dist/preview release/loaders/babylon.glTF1FileLoader.min.js
  15. 2 2
      dist/preview release/loaders/babylon.glTF2FileLoader.min.js
  16. 3 3
      dist/preview release/loaders/babylon.glTFFileLoader.min.js
  17. 1 1
      dist/preview release/loaders/babylon.objFileLoader.min.js
  18. 3 3
      dist/preview release/loaders/babylonjs.loaders.min.js
  19. 1 1
      dist/preview release/materialsLibrary/babylon.customMaterial.min.js
  20. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js
  21. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  22. 3 3
      dist/preview release/materialsLibrary/babylonjs.materials.min.js
  23. 1 1
      dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js
  24. 1 1
      dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js
  25. 1 1
      dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js
  26. 1 1
      dist/preview release/serializers/babylon.glTF2Serializer.min.js
  27. 1 1
      dist/preview release/serializers/babylonjs.serializers.min.js
  28. 49 49
      dist/preview release/viewer/babylon.viewer.js
  29. 4 1
      src/Mesh/babylon.transformNode.ts
  30. 37 7
      src/Particles/babylon.boxParticleEmitter.ts
  31. 1 1
      src/Particles/babylon.coneParticleEmitter.ts
  32. 29 9
      src/Particles/babylon.particleSystem.ts
  33. 2 2
      src/Particles/babylon.sphereParticleEmitter.ts
  34. 1 2
      tests/validation/config.json

文件差異過大導致無法顯示
+ 8489 - 8489
Playground/babylon.d.txt


二進制
Playground/textures/normal.png


+ 1 - 3
Tools/Gulp/package.json

@@ -44,16 +44,14 @@
         "ts-loader": "^2.3.7",
         "typescript": "^2.6.2",
         "webpack-stream": "^4.0.0",
-
         "karma": "^2.0.0",
         "karma-chrome-launcher": "^2.2.0",
         "karma-sauce-launcher": "^1.2.0",
-
         "mocha": "^4.0.1",
         "chai": "^4.1.2",
         "sinon": "^4.1.3",
         "karma-mocha": "^1.3.0",
-        "karma-chai":"^0.1.0",
+        "karma-chai": "^0.1.0",
         "karma-sinon": "^1.0.5"
     },
     "scripts": {

文件差異過大導致無法顯示
+ 8783 - 8828
dist/preview release/babylon.d.ts


文件差異過大導致無法顯示
+ 42 - 42
dist/preview release/babylon.js


+ 3 - 1
dist/preview release/babylon.max.js

@@ -13585,7 +13585,7 @@ var BABYLON;
          */
         TransformNode.prototype._getWorldMatrixDeterminant = function () {
             if (this._currentRenderId !== this.getScene().getRenderId()) {
-                this._worldMatrixDeterminant = this.computeWorldMatrix().determinant();
+                this.computeWorldMatrix();
             }
             return this._worldMatrixDeterminant;
         };
@@ -14233,6 +14233,8 @@ var BABYLON;
             if (!this._poseMatrix) {
                 this._poseMatrix = BABYLON.Matrix.Invert(this._worldMatrix);
             }
+            // Cache the determinant
+            this._worldMatrixDeterminant = this._worldMatrix.determinant();
             return this._worldMatrix;
         };
         TransformNode.prototype._afterComputeWorldMatrix = function () {

文件差異過大導致無法顯示
+ 43 - 43
dist/preview release/babylon.worker.js


文件差異過大導致無法顯示
+ 5448 - 5448
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


文件差異過大導致無法顯示
+ 42 - 42
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 3 - 1
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -13585,7 +13585,7 @@ var BABYLON;
          */
         TransformNode.prototype._getWorldMatrixDeterminant = function () {
             if (this._currentRenderId !== this.getScene().getRenderId()) {
-                this._worldMatrixDeterminant = this.computeWorldMatrix().determinant();
+                this.computeWorldMatrix();
             }
             return this._worldMatrixDeterminant;
         };
@@ -14233,6 +14233,8 @@ var BABYLON;
             if (!this._poseMatrix) {
                 this._poseMatrix = BABYLON.Matrix.Invert(this._worldMatrix);
             }
+            // Cache the determinant
+            this._worldMatrixDeterminant = this._worldMatrix.determinant();
             return this._worldMatrix;
         };
         TransformNode.prototype._afterComputeWorldMatrix = function () {

文件差異過大導致無法顯示
+ 3 - 3
dist/preview release/gui/babylon.gui.min.js


文件差異過大導致無法顯示
+ 4 - 4
dist/preview release/inspector/babylon.inspector.bundle.js


文件差異過大導致無法顯示
+ 3 - 3
dist/preview release/inspector/babylon.inspector.min.js


文件差異過大導致無法顯示
+ 2 - 2
dist/preview release/loaders/babylon.glTF1FileLoader.min.js


文件差異過大導致無法顯示
+ 2 - 2
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


文件差異過大導致無法顯示
+ 3 - 3
dist/preview release/loaders/babylon.glTFFileLoader.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/loaders/babylon.objFileLoader.min.js


文件差異過大導致無法顯示
+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/materialsLibrary/babylon.customMaterial.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


文件差異過大導致無法顯示
+ 3 - 3
dist/preview release/materialsLibrary/babylonjs.materials.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.min.js


文件差異過大導致無法顯示
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.min.js


文件差異過大導致無法顯示
+ 49 - 49
dist/preview release/viewer/babylon.viewer.js


+ 4 - 1
src/Mesh/babylon.transformNode.ts

@@ -119,7 +119,7 @@ module BABYLON {
          */
         protected _getWorldMatrixDeterminant(): number {
             if (this._currentRenderId !== this.getScene().getRenderId()) {
-                this._worldMatrixDeterminant = this.computeWorldMatrix().determinant();
+                this.computeWorldMatrix();
             }
             return this._worldMatrixDeterminant;
         }
@@ -835,6 +835,9 @@ module BABYLON {
                 this._poseMatrix = Matrix.Invert(this._worldMatrix);
             }
 
+            // Cache the determinant
+            this._worldMatrixDeterminant = this._worldMatrix.determinant();
+
             return this._worldMatrix;
         }
 

+ 37 - 7
src/Particles/babylon.boxParticleEmitter.ts

@@ -1,22 +1,52 @@
 module BABYLON {
     export class BoxParticleEmitter implements IParticleEmitterType {
+
+        public get direction1(): Vector3 {
+            return this._particleSystem.direction1;
+        }
+        public set direction1(value: Vector3) {
+            this._particleSystem.direction1 = value;
+        }
+
+        public get direction2(): Vector3 {
+            return this._particleSystem.direction2;
+        }
+        public set direction2(value: Vector3) {
+            this._particleSystem.direction2 = value;
+        }
+
+        public get minEmitBox(): Vector3 {
+            return this._particleSystem.minEmitBox;
+        }
+        public set minEmitBox(value: Vector3) {
+            this._particleSystem.minEmitBox = value;
+        }
+
+        public get maxEmitBox(): Vector3 {
+            return this._particleSystem.maxEmitBox;
+        }
+        public set maxEmitBox(value: Vector3) {
+            this._particleSystem.maxEmitBox = value;
+        }
+        
         // to be updated like the rest of emitters when breaking changes.
-        constructor(private particleSystem: ParticleSystem) {
+        // all property should be come public variables and passed through constructor.
+        constructor(private _particleSystem: ParticleSystem) {
 
         }
 
         startDirectionFunction(emitPower: number, worldMatrix: Matrix, directionToUpdate: Vector3, particle: Particle): void {
-            var randX = ParticleSystem.randomNumber(this.particleSystem.direction1.x, this.particleSystem.direction2.x);
-            var randY = ParticleSystem.randomNumber(this.particleSystem.direction1.y, this.particleSystem.direction2.y);
-            var randZ = ParticleSystem.randomNumber(this.particleSystem.direction1.z, this.particleSystem.direction2.z);
+            var randX = ParticleSystem.randomNumber(this.direction1.x, this.direction2.x);
+            var randY = ParticleSystem.randomNumber(this.direction1.y, this.direction2.y);
+            var randZ = ParticleSystem.randomNumber(this.direction1.z, this.direction2.z);
 
             Vector3.TransformNormalFromFloatsToRef(randX * emitPower, randY * emitPower, randZ * emitPower, worldMatrix, directionToUpdate);
         }
 
         startPositionFunction(worldMatrix: Matrix, positionToUpdate: Vector3, particle: Particle): void {
-            var randX = ParticleSystem.randomNumber(this.particleSystem.minEmitBox.x, this.particleSystem.maxEmitBox.x);
-            var randY = ParticleSystem.randomNumber(this.particleSystem.minEmitBox.y, this.particleSystem.maxEmitBox.y);
-            var randZ = ParticleSystem.randomNumber(this.particleSystem.minEmitBox.z, this.particleSystem.maxEmitBox.z);
+            var randX = ParticleSystem.randomNumber(this.minEmitBox.x, this.maxEmitBox.x);
+            var randY = ParticleSystem.randomNumber(this.minEmitBox.y, this.maxEmitBox.y);
+            var randZ = ParticleSystem.randomNumber(this.minEmitBox.z, this.maxEmitBox.z);
 
             Vector3.TransformCoordinatesFromFloatsToRef(randX, randY, randZ, worldMatrix, positionToUpdate);
         }

+ 1 - 1
src/Particles/babylon.coneParticleEmitter.ts

@@ -1,6 +1,6 @@
 module BABYLON {
     export class ConeParticleEmitter implements IParticleEmitterType {
-        constructor(private radius: number, private angle: number) {
+        constructor(public radius: number, public angle: number) {
         }
 
         startDirectionFunction(emitPower: number, worldMatrix: Matrix, directionToUpdate: Vector3, particle: Particle): void {

+ 29 - 9
src/Particles/babylon.particleSystem.ts

@@ -2,7 +2,7 @@
     export interface IParticleSystem {
         id: string;
         name: string;
-        emitter: Nullable<AbstractMesh | Vector3>; 
+        emitter: Nullable<AbstractMesh | Vector3>;
         renderingGroupId: number;
         layerMask: number;
         isStarted(): boolean;
@@ -83,7 +83,9 @@
         public color2 = new Color4(1.0, 1.0, 1.0, 1.0);
         public colorDead = new Color4(0, 0, 0, 1.0);
         public textureMask = new Color4(1.0, 1.0, 1.0, 1.0);
-        private _particleEmitterType: IParticleEmitterType;
+        public particleEmitterType: IParticleEmitterType;
+        public startDirectionFunction: (emitPower: number, worldMatrix: Matrix, directionToUpdate: Vector3, particle: Particle) => void;
+        public startPositionFunction: (worldMatrix: Matrix, positionToUpdate: Vector3, particle: Particle) => void;
 
         private particles = new Array<Particle>();
 
@@ -161,7 +163,7 @@
             this._vertexBuffers["options"] = options;
 
             // Default behaviors
-            this._particleEmitterType = new BoxParticleEmitter(this);
+            this.particleEmitterType = new BoxParticleEmitter(this);
 
             this.updateFunction = (particles: Particle[]): void => {
                 for (var index = 0; index < particles.length; index++) {
@@ -322,9 +324,19 @@
 
                 var emitPower = ParticleSystem.randomNumber(this.minEmitPower, this.maxEmitPower);
 
-                this._particleEmitterType.startPositionFunction(worldMatrix, particle.position, particle);
+                if (this.startDirectionFunction) {
+                    this.startDirectionFunction(emitPower, worldMatrix, particle.direction, particle);
+                }
+                else {
+                    this.particleEmitterType.startDirectionFunction(emitPower, worldMatrix, particle.direction, particle);
+                }
 
-                this._particleEmitterType.startDirectionFunction(emitPower, worldMatrix, particle.direction, particle);
+                if (this.startPositionFunction) {
+                    this.startPositionFunction(worldMatrix, particle.position, particle);
+                }
+                else {
+                    this.particleEmitterType.startPositionFunction(worldMatrix, particle.position, particle);
+                }
 
                 particle.lifeTime = ParticleSystem.randomNumber(this.minLifeTime, this.maxLifeTime);
 
@@ -569,24 +581,32 @@
         }
 
         public createSphereEmitter(radius = 1) {
-            this._particleEmitterType = new SphereParticleEmitter(radius);
+            var particleEmitter = new SphereParticleEmitter(radius);
+            this.particleEmitterType = particleEmitter;
+            return particleEmitter;
         }
 
         public createDirectedSphereEmitter(radius = 1, direction1 = new Vector3(0, 1.0, 0), direction2 = new Vector3(0, 1.0, 0)) {
-            this._particleEmitterType = new SphereDirectedParticleEmitter(radius, direction1, direction2);
+            var particleEmitter = new SphereDirectedParticleEmitter(radius, direction1, direction2)
+            this.particleEmitterType = particleEmitter;
+            return particleEmitter;
         }
 
         public createConeEmitter(radius = 1, angle = Math.PI / 4) {
-            this._particleEmitterType = new ConeParticleEmitter(radius, angle);
+            var particleEmitter = new ConeParticleEmitter(radius, angle);
+            this.particleEmitterType = particleEmitter;
+            return particleEmitter;
         }
 
         // this method need to be changed when breaking changes to match the sphere and cone methods and properties direction1,2 and minEmitBox,maxEmitBox to be removed from the system.
         public createBoxEmitter(direction1: Vector3, direction2: Vector3, minEmitBox: Vector3, maxEmitBox: Vector3) {
+            var particleEmitter = new BoxParticleEmitter(this);
             this.direction1 = direction1;
             this.direction2 = direction2;
             this.minEmitBox = minEmitBox;
             this.maxEmitBox = maxEmitBox;
-            this._particleEmitterType = new BoxParticleEmitter(this);
+            this.particleEmitterType = particleEmitter;
+            return particleEmitter;
         }
 
         public static randomNumber = (min: number, max: number): number => {

+ 2 - 2
src/Particles/babylon.sphereParticleEmitter.ts

@@ -1,6 +1,6 @@
 module BABYLON {
     export class SphereParticleEmitter implements IParticleEmitterType {
-        constructor(private radius: number) {
+        constructor(public radius: number) {
 
         }
 
@@ -21,7 +21,7 @@ module BABYLON {
     }
 
     export class SphereDirectedParticleEmitter extends SphereParticleEmitter {
-        constructor(radius: number, private direction1: Vector3, private direction2: Vector3) {
+        constructor(radius: number, public direction1: Vector3, public direction2: Vector3) {
             super(radius);
         }
 

+ 1 - 2
tests/validation/config.json

@@ -176,8 +176,7 @@
     },
     {
       "title": "Normals",
-      "scriptToRun": "/Demos/Normals/index.js",
-      "functionToCall": "createScene",
+      "playgroundId": "#WXKLLJ#2",
       "referenceImage": "normals.png"
     },
     {