|
@@ -14097,35 +14097,6 @@ var BABYLON;
|
|
|
return effect;
|
|
|
};
|
|
|
/**
|
|
|
- * Create an effect to use with particle systems.
|
|
|
- * Please note that some parameters like animation sheets or not being billboard are not supported in this configuration
|
|
|
- * @param fragmentName defines the base name of the effect (The name of file without .fragment.fx)
|
|
|
- * @param uniformsNames defines a list of attribute names
|
|
|
- * @param samplers defines an array of string used to represent textures
|
|
|
- * @param defines defines the string containing the defines to use to compile the shaders
|
|
|
- * @param fallbacks defines the list of potential fallbacks to use if shader conmpilation fails
|
|
|
- * @param onCompiled defines a function to call when the effect creation is successful
|
|
|
- * @param onError defines a function to call when the effect creation has failed
|
|
|
- * @returns the new Effect
|
|
|
- */
|
|
|
- Engine.prototype.createEffectForParticles = function (fragmentName, uniformsNames, samplers, defines, fallbacks, onCompiled, onError) {
|
|
|
- if (uniformsNames === void 0) { uniformsNames = []; }
|
|
|
- if (samplers === void 0) { samplers = []; }
|
|
|
- if (defines === void 0) { defines = ""; }
|
|
|
- var attributesNamesOrOptions = BABYLON.ParticleSystem._GetAttributeNamesOrOptions();
|
|
|
- var effectCreationOption = BABYLON.ParticleSystem._GetEffectCreationOptions();
|
|
|
- if (defines.indexOf(" BILLBOARD") === -1) {
|
|
|
- defines += "\n#define BILLBOARD\n";
|
|
|
- }
|
|
|
- if (samplers.indexOf("diffuseSampler") === -1) {
|
|
|
- samplers.push("diffuseSampler");
|
|
|
- }
|
|
|
- return this.createEffect({
|
|
|
- vertex: "particles",
|
|
|
- fragmentElement: fragmentName
|
|
|
- }, attributesNamesOrOptions, effectCreationOption.concat(uniformsNames), samplers, defines, fallbacks, onCompiled, onError);
|
|
|
- };
|
|
|
- /**
|
|
|
* Directly creates a webGL program
|
|
|
* @param vertexCode defines the vertex shader code to use
|
|
|
* @param fragmentCode defines the fragment shader code to use
|
|
@@ -23968,6 +23939,7 @@ var BABYLON;
|
|
|
SceneComponentConstants.NAME_LAYER = "Layer";
|
|
|
SceneComponentConstants.NAME_LENSFLARESYSTEM = "LensFlareSystem";
|
|
|
SceneComponentConstants.NAME_BOUNDINGBOXRENDERER = "BoundingBoxRenderer";
|
|
|
+ SceneComponentConstants.NAME_PARTICLESYSTEM = "ParticleSystem";
|
|
|
SceneComponentConstants.STEP_ISREADYFORMESH_EFFECTLAYER = 0;
|
|
|
SceneComponentConstants.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER = 0;
|
|
|
SceneComponentConstants.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER = 0;
|
|
@@ -29492,9 +29464,6 @@ var BABYLON;
|
|
|
this.skeletons.forEach(function (o) {
|
|
|
_this.scene.addSkeleton(o);
|
|
|
});
|
|
|
- this.particleSystems.forEach(function (o) {
|
|
|
- _this.scene.addParticleSystem(o);
|
|
|
- });
|
|
|
this.animations.forEach(function (o) {
|
|
|
_this.scene.addAnimation(o);
|
|
|
});
|
|
@@ -29549,9 +29518,6 @@ var BABYLON;
|
|
|
this.skeletons.forEach(function (o) {
|
|
|
_this.scene.removeSkeleton(o);
|
|
|
});
|
|
|
- this.particleSystems.forEach(function (o) {
|
|
|
- _this.scene.removeParticleSystem(o);
|
|
|
- });
|
|
|
this.animations.forEach(function (o) {
|
|
|
_this.scene.removeAnimation(o);
|
|
|
});
|
|
@@ -56967,10 +56933,6 @@ var BABYLON;
|
|
|
|
|
|
//# sourceMappingURL=babylon.particleSystem.js.map
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-//# sourceMappingURL=babylon.IParticleEmitterType.js.map
|
|
|
-
|
|
|
var BABYLON;
|
|
|
(function (BABYLON) {
|
|
|
/**
|
|
@@ -57476,6 +57438,46 @@ var BABYLON;
|
|
|
|
|
|
//# sourceMappingURL=babylon.sphereParticleEmitter.js.map
|
|
|
|
|
|
+var BABYLON;
|
|
|
+(function (BABYLON) {
|
|
|
+ // Adds the parser to the scene parsers.
|
|
|
+ BABYLON.AbstractScene.AddParser(BABYLON.SceneComponentConstants.NAME_PARTICLESYSTEM, function (parsedData, scene, container, rootUrl) {
|
|
|
+ // Particles Systems
|
|
|
+ if (parsedData.particleSystems !== undefined && parsedData.particleSystems !== null) {
|
|
|
+ for (var index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {
|
|
|
+ var parsedParticleSystem = parsedData.particleSystems[index];
|
|
|
+ if (parsedParticleSystem.activeParticleCount) {
|
|
|
+ var ps = BABYLON.GPUParticleSystem.Parse(parsedParticleSystem, scene, rootUrl);
|
|
|
+ container.particleSystems.push(ps);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ var ps = BABYLON.ParticleSystem.Parse(parsedParticleSystem, scene, rootUrl);
|
|
|
+ container.particleSystems.push(ps);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ BABYLON.Engine.prototype.createEffectForParticles = function (fragmentName, uniformsNames, samplers, defines, fallbacks, onCompiled, onError) {
|
|
|
+ if (uniformsNames === void 0) { uniformsNames = []; }
|
|
|
+ if (samplers === void 0) { samplers = []; }
|
|
|
+ if (defines === void 0) { defines = ""; }
|
|
|
+ var attributesNamesOrOptions = BABYLON.ParticleSystem._GetAttributeNamesOrOptions();
|
|
|
+ var effectCreationOption = BABYLON.ParticleSystem._GetEffectCreationOptions();
|
|
|
+ if (defines.indexOf(" BILLBOARD") === -1) {
|
|
|
+ defines += "\n#define BILLBOARD\n";
|
|
|
+ }
|
|
|
+ if (samplers.indexOf("diffuseSampler") === -1) {
|
|
|
+ samplers.push("diffuseSampler");
|
|
|
+ }
|
|
|
+ return this.createEffect({
|
|
|
+ vertex: "particles",
|
|
|
+ fragmentElement: fragmentName
|
|
|
+ }, attributesNamesOrOptions, effectCreationOption.concat(uniformsNames), samplers, defines, fallbacks, onCompiled, onError);
|
|
|
+ };
|
|
|
+})(BABYLON || (BABYLON = {}));
|
|
|
+
|
|
|
+//# sourceMappingURL=babylon.particleSystemComponent.js.map
|
|
|
+
|
|
|
var __assign = (this && this.__assign) || Object.assign || function(t) {
|
|
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
|
s = arguments[i];
|
|
@@ -69033,20 +69035,6 @@ var BABYLON;
|
|
|
currentMesh.computeWorldMatrix(true);
|
|
|
}
|
|
|
}
|
|
|
- // Particles Systems
|
|
|
- if (parsedData.particleSystems !== undefined && parsedData.particleSystems !== null) {
|
|
|
- for (index = 0, cache = parsedData.particleSystems.length; index < cache; index++) {
|
|
|
- var parsedParticleSystem = parsedData.particleSystems[index];
|
|
|
- if (parsedParticleSystem.activeParticleCount) {
|
|
|
- var ps = BABYLON.GPUParticleSystem.Parse(parsedParticleSystem, scene, rootUrl);
|
|
|
- container.particleSystems.push(ps);
|
|
|
- }
|
|
|
- else {
|
|
|
- var ps = BABYLON.ParticleSystem.Parse(parsedParticleSystem, scene, rootUrl);
|
|
|
- container.particleSystems.push(ps);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
// Shadows
|
|
|
if (parsedData.shadowGenerators !== undefined && parsedData.shadowGenerators !== null) {
|
|
|
for (index = 0, cache = parsedData.shadowGenerators.length; index < cache; index++) {
|
|
@@ -84908,7 +84896,7 @@ var BABYLON;
|
|
|
this.lensFlareSystems.push(newLensFlareSystem);
|
|
|
};
|
|
|
/**
|
|
|
- * Defines the layer scene component responsible to manage any layers
|
|
|
+ * Defines the lens flare scene component responsible to manage any lens flares
|
|
|
* in a given scene.
|
|
|
*/
|
|
|
var LensFlareSystemSceneComponent = /** @class */ (function () {
|
|
@@ -84922,7 +84910,7 @@ var BABYLON;
|
|
|
*/
|
|
|
this.name = BABYLON.SceneComponentConstants.NAME_LENSFLARESYSTEM;
|
|
|
this.scene = scene;
|
|
|
- this._lensFlareSystems = scene.lensFlareSystems = new Array();
|
|
|
+ scene.lensFlareSystems = new Array();
|
|
|
}
|
|
|
/**
|
|
|
* Registers the component in a given scene
|
|
@@ -84970,8 +84958,9 @@ var BABYLON;
|
|
|
LensFlareSystemSceneComponent.prototype.serialize = function (serializationObject) {
|
|
|
// Lens flares
|
|
|
serializationObject.lensFlareSystems = [];
|
|
|
- for (var _i = 0, _a = this._lensFlareSystems; _i < _a.length; _i++) {
|
|
|
- var lensFlareSystem = _a[_i];
|
|
|
+ var lensFlareSystems = this.scene.lensFlareSystems;
|
|
|
+ for (var _i = 0, lensFlareSystems_1 = lensFlareSystems; _i < lensFlareSystems_1.length; _i++) {
|
|
|
+ var lensFlareSystem = lensFlareSystems_1[_i];
|
|
|
serializationObject.lensFlareSystems.push(lensFlareSystem.serialize());
|
|
|
}
|
|
|
};
|
|
@@ -84979,21 +84968,23 @@ var BABYLON;
|
|
|
* Disposes the component and the associated ressources.
|
|
|
*/
|
|
|
LensFlareSystemSceneComponent.prototype.dispose = function () {
|
|
|
- while (this._lensFlareSystems.length) {
|
|
|
- this._lensFlareSystems[0].dispose();
|
|
|
+ var lensFlareSystems = this.scene.lensFlareSystems;
|
|
|
+ while (lensFlareSystems.length) {
|
|
|
+ lensFlareSystems[0].dispose();
|
|
|
}
|
|
|
};
|
|
|
LensFlareSystemSceneComponent.prototype._draw = function (camera) {
|
|
|
// Lens flares
|
|
|
if (this.scene.lensFlaresEnabled) {
|
|
|
- BABYLON.Tools.StartPerformanceCounter("Lens flares", this._lensFlareSystems.length > 0);
|
|
|
- for (var _i = 0, _a = this._lensFlareSystems; _i < _a.length; _i++) {
|
|
|
- var lensFlareSystem = _a[_i];
|
|
|
+ var lensFlareSystems = this.scene.lensFlareSystems;
|
|
|
+ BABYLON.Tools.StartPerformanceCounter("Lens flares", lensFlareSystems.length > 0);
|
|
|
+ for (var _i = 0, lensFlareSystems_2 = lensFlareSystems; _i < lensFlareSystems_2.length; _i++) {
|
|
|
+ var lensFlareSystem = lensFlareSystems_2[_i];
|
|
|
if ((camera.layerMask & lensFlareSystem.layerMask) !== 0) {
|
|
|
lensFlareSystem.render();
|
|
|
}
|
|
|
}
|
|
|
- BABYLON.Tools.EndPerformanceCounter("Lens flares", this._lensFlareSystems.length > 0);
|
|
|
+ BABYLON.Tools.EndPerformanceCounter("Lens flares", lensFlareSystems.length > 0);
|
|
|
}
|
|
|
};
|
|
|
return LensFlareSystemSceneComponent;
|
|
@@ -97087,7 +97078,7 @@ var BABYLON;
|
|
|
this._previousStencilState = false;
|
|
|
this.scene = scene;
|
|
|
this._engine = scene.getEngine();
|
|
|
- this._effectLayers = scene.effectLayers = new Array();
|
|
|
+ scene.effectLayers = new Array();
|
|
|
}
|
|
|
/**
|
|
|
* Registers the component in a given scene
|
|
@@ -97105,8 +97096,9 @@ var BABYLON;
|
|
|
* context lost for instance.
|
|
|
*/
|
|
|
EffectLayerSceneComponent.prototype.rebuild = function () {
|
|
|
- for (var _i = 0, _a = this._effectLayers; _i < _a.length; _i++) {
|
|
|
- var effectLayer = _a[_i];
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ for (var _i = 0, layers_1 = layers; _i < layers_1.length; _i++) {
|
|
|
+ var effectLayer = layers_1[_i];
|
|
|
effectLayer._rebuild();
|
|
|
}
|
|
|
};
|
|
@@ -97117,8 +97109,9 @@ var BABYLON;
|
|
|
EffectLayerSceneComponent.prototype.serialize = function (serializationObject) {
|
|
|
// Effect layers
|
|
|
serializationObject.effectLayers = [];
|
|
|
- for (var _i = 0, _a = this._effectLayers; _i < _a.length; _i++) {
|
|
|
- var effectLayer = _a[_i];
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ for (var _i = 0, layers_2 = layers; _i < layers_2.length; _i++) {
|
|
|
+ var effectLayer = layers_2[_i];
|
|
|
if (effectLayer.serialize) {
|
|
|
serializationObject.effectLayers.push(effectLayer.serialize());
|
|
|
}
|
|
@@ -97154,18 +97147,20 @@ var BABYLON;
|
|
|
* Disposes the component and the associated ressources.
|
|
|
*/
|
|
|
EffectLayerSceneComponent.prototype.dispose = function () {
|
|
|
- while (this._effectLayers.length) {
|
|
|
- this._effectLayers[0].dispose();
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ while (layers.length) {
|
|
|
+ layers[0].dispose();
|
|
|
}
|
|
|
};
|
|
|
EffectLayerSceneComponent.prototype._isReadyForMesh = function (mesh, hardwareInstancedRendering) {
|
|
|
- for (var _i = 0, _a = this._effectLayers; _i < _a.length; _i++) {
|
|
|
- var layer = _a[_i];
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ for (var _i = 0, layers_3 = layers; _i < layers_3.length; _i++) {
|
|
|
+ var layer = layers_3[_i];
|
|
|
if (!layer.hasMesh(mesh)) {
|
|
|
continue;
|
|
|
}
|
|
|
- for (var _b = 0, _c = mesh.subMeshes; _b < _c.length; _b++) {
|
|
|
- var subMesh = _c[_b];
|
|
|
+ for (var _a = 0, _b = mesh.subMeshes; _a < _b.length; _a++) {
|
|
|
+ var subMesh = _b[_a];
|
|
|
if (!layer.isReady(subMesh, hardwareInstancedRendering)) {
|
|
|
return false;
|
|
|
}
|
|
@@ -97176,10 +97171,11 @@ var BABYLON;
|
|
|
EffectLayerSceneComponent.prototype._renderMainTexture = function (camera) {
|
|
|
this._renderEffects = false;
|
|
|
this._needStencil = false;
|
|
|
- if (this._effectLayers && this._effectLayers.length > 0) {
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ if (layers && layers.length > 0) {
|
|
|
this._previousStencilState = this._engine.getStencilBuffer();
|
|
|
- for (var _i = 0, _a = this._effectLayers; _i < _a.length; _i++) {
|
|
|
- var effectLayer = _a[_i];
|
|
|
+ for (var _i = 0, layers_4 = layers; _i < layers_4.length; _i++) {
|
|
|
+ var effectLayer = layers_4[_i];
|
|
|
if (effectLayer.shouldRender() &&
|
|
|
(!effectLayer.camera ||
|
|
|
(effectLayer.camera.cameraRigMode === BABYLON.Camera.RIG_MODE_NONE && camera === effectLayer.camera) ||
|
|
@@ -97211,8 +97207,9 @@ var BABYLON;
|
|
|
EffectLayerSceneComponent.prototype._draw = function (renderingGroupId) {
|
|
|
if (this._renderEffects) {
|
|
|
this._engine.setDepthBuffer(false);
|
|
|
- for (var i = 0; i < this._effectLayers.length; i++) {
|
|
|
- var effectLayer = this._effectLayers[i];
|
|
|
+ var layers = this.scene.effectLayers;
|
|
|
+ for (var i = 0; i < layers.length; i++) {
|
|
|
+ var effectLayer = layers[i];
|
|
|
if (effectLayer.renderingGroupId === renderingGroupId) {
|
|
|
if (effectLayer.shouldRender()) {
|
|
|
effectLayer.render();
|
|
@@ -100022,7 +100019,7 @@ var BABYLON;
|
|
|
this.name = BABYLON.SceneComponentConstants.NAME_LAYER;
|
|
|
this.scene = scene;
|
|
|
this._engine = scene.getEngine();
|
|
|
- this._layers = scene.layers = new Array();
|
|
|
+ scene.layers = new Array();
|
|
|
}
|
|
|
/**
|
|
|
* Registers the component in a given scene
|
|
@@ -100036,8 +100033,9 @@ var BABYLON;
|
|
|
* context lost for instance.
|
|
|
*/
|
|
|
LayerSceneComponent.prototype.rebuild = function () {
|
|
|
- for (var _i = 0, _a = this._layers; _i < _a.length; _i++) {
|
|
|
- var layer = _a[_i];
|
|
|
+ var layers = this.scene.layers;
|
|
|
+ for (var _i = 0, layers_1 = layers; _i < layers_1.length; _i++) {
|
|
|
+ var layer = layers_1[_i];
|
|
|
layer._rebuild();
|
|
|
}
|
|
|
};
|
|
@@ -100045,16 +100043,18 @@ var BABYLON;
|
|
|
* Disposes the component and the associated ressources.
|
|
|
*/
|
|
|
LayerSceneComponent.prototype.dispose = function () {
|
|
|
- while (this._layers.length) {
|
|
|
- this._layers[0].dispose();
|
|
|
+ var layers = this.scene.layers;
|
|
|
+ while (layers.length) {
|
|
|
+ layers[0].dispose();
|
|
|
}
|
|
|
};
|
|
|
LayerSceneComponent.prototype._draw = function (camera, isBackground) {
|
|
|
- if (this._layers.length) {
|
|
|
+ var layers = this.scene.layers;
|
|
|
+ if (layers.length) {
|
|
|
this._engine.setDepthBuffer(false);
|
|
|
var cameraLayerMask = camera.layerMask;
|
|
|
- for (var _i = 0, _a = this._layers; _i < _a.length; _i++) {
|
|
|
- var layer = _a[_i];
|
|
|
+ for (var _i = 0, layers_2 = layers; _i < layers_2.length; _i++) {
|
|
|
+ var layer = layers_2[_i];
|
|
|
if (layer.isBackground === isBackground && ((layer.layerMask & cameraLayerMask) !== 0)) {
|
|
|
layer.render();
|
|
|
}
|