|
@@ -7441,7 +7441,7 @@ var BABYLON;
|
|
|
function Tmp() {
|
|
|
}
|
|
|
Tmp.Color3 = [Color3.Black(), Color3.Black(), Color3.Black()];
|
|
|
- Tmp.Color4 = [new Color4(0, 0, 0, 0)];
|
|
|
+ Tmp.Color4 = [new Color4(0, 0, 0, 0), new Color4(0, 0, 0, 0)];
|
|
|
Tmp.Vector2 = [Vector2.Zero(), Vector2.Zero(), Vector2.Zero()]; // 3 temp Vector2 at once should be enough
|
|
|
Tmp.Vector3 = [Vector3.Zero(), Vector3.Zero(), Vector3.Zero(),
|
|
|
Vector3.Zero(), Vector3.Zero(), Vector3.Zero(), Vector3.Zero(), Vector3.Zero(), Vector3.Zero()]; // 9 temp Vector3 at once should be enough
|
|
@@ -8540,6 +8540,18 @@ var BABYLON;
|
|
|
var ColorGradient = /** @class */ (function () {
|
|
|
function ColorGradient() {
|
|
|
}
|
|
|
+ /**
|
|
|
+ * Will get a color picked randomly between color1 and color2.
|
|
|
+ * If color2 is undefined then color1 will be used
|
|
|
+ * @param result defines the target Color4 to store the result in
|
|
|
+ */
|
|
|
+ ColorGradient.prototype.getColorToRef = function (result) {
|
|
|
+ if (!this.color2) {
|
|
|
+ result.copyFrom(this.color1);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ BABYLON.Color4.LerpToRef(this.color1, this.color2, Math.random(), result);
|
|
|
+ };
|
|
|
return ColorGradient;
|
|
|
}());
|
|
|
BABYLON.ColorGradient = ColorGradient;
|
|
@@ -55496,8 +55508,12 @@ var BABYLON;
|
|
|
var ratio = particle.age / particle.lifeTime;
|
|
|
// Color
|
|
|
if (_this._colorGradients && _this._colorGradients.length > 0) {
|
|
|
+ var color1 = BABYLON.Tmp.Color4[0];
|
|
|
+ var color2 = BABYLON.Tmp.Color4[1];
|
|
|
BABYLON.Tools.GetCurrentGradient(ratio, _this._colorGradients, function (currentGradient, nextGradient, scale) {
|
|
|
- BABYLON.Color4.LerpToRef(currentGradient.color, nextGradient.color, scale, particle.color);
|
|
|
+ currentGradient.getColorToRef(color1);
|
|
|
+ nextGradient.getColorToRef(color2);
|
|
|
+ BABYLON.Color4.LerpToRef(color1, color2, scale, particle.color);
|
|
|
});
|
|
|
}
|
|
|
else {
|
|
@@ -55722,14 +55738,16 @@ var BABYLON;
|
|
|
* Adds a new color gradient
|
|
|
* @param gradient defines the gradient to use (between 0 and 1)
|
|
|
* @param color defines the color to affect to the specified gradient
|
|
|
+ * @param color2 defines an additional color used to define a range ([color, color2]) with main color to pick the final color from
|
|
|
*/
|
|
|
- ParticleSystem.prototype.addColorGradient = function (gradient, color) {
|
|
|
+ ParticleSystem.prototype.addColorGradient = function (gradient, color, color2) {
|
|
|
if (!this._colorGradients) {
|
|
|
this._colorGradients = [];
|
|
|
}
|
|
|
var colorGradient = new BABYLON.ColorGradient();
|
|
|
colorGradient.gradient = gradient;
|
|
|
- colorGradient.color = color;
|
|
|
+ colorGradient.color1 = color;
|
|
|
+ colorGradient.color2 = color;
|
|
|
this._colorGradients.push(colorGradient);
|
|
|
this._colorGradients.sort(function (a, b) {
|
|
|
if (a.gradient < b.gradient) {
|
|
@@ -56014,7 +56032,7 @@ var BABYLON;
|
|
|
this._colorDiff.scaleToRef(1.0 / particle.lifeTime, particle.colorStep);
|
|
|
}
|
|
|
else {
|
|
|
- particle.color.copyFrom(this._colorGradients[0].color);
|
|
|
+ this._colorGradients[0].getColorToRef(particle.color);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -56411,10 +56429,14 @@ var BABYLON;
|
|
|
serializationObject.colorGradients = [];
|
|
|
for (var _i = 0, colorGradients_1 = colorGradients; _i < colorGradients_1.length; _i++) {
|
|
|
var colorGradient = colorGradients_1[_i];
|
|
|
- serializationObject.colorGradients.push({
|
|
|
+ var serializedGradient = {
|
|
|
gradient: colorGradient.gradient,
|
|
|
- color: colorGradient.color.asArray()
|
|
|
- });
|
|
|
+ color1: colorGradient.color1.asArray()
|
|
|
+ };
|
|
|
+ if (colorGradient.color2) {
|
|
|
+ serializedGradient.color2 = colorGradient.color2.asArray();
|
|
|
+ }
|
|
|
+ serializationObject.colorGradients.push(serializedGradient);
|
|
|
}
|
|
|
}
|
|
|
var sizeGradients = particleSystem.getSizeGradients();
|
|
@@ -56487,7 +56509,7 @@ var BABYLON;
|
|
|
if (parsedParticleSystem.colorGradients) {
|
|
|
for (var _i = 0, _a = parsedParticleSystem.colorGradients; _i < _a.length; _i++) {
|
|
|
var colorGradient = _a[_i];
|
|
|
- particleSystem.addColorGradient(colorGradient.gradient, BABYLON.Color4.FromArray(colorGradient.color));
|
|
|
+ particleSystem.addColorGradient(colorGradient.gradient, BABYLON.Color4.FromArray(colorGradient.color1), colorGradient.color2 ? BABYLON.Color4.FromArray(colorGradient.color2) : undefined);
|
|
|
}
|
|
|
}
|
|
|
if (parsedParticleSystem.sizeGradients) {
|
|
@@ -57482,14 +57504,15 @@ var BABYLON;
|
|
|
* Adds a new color gradient
|
|
|
* @param gradient defines the gradient to use (between 0 and 1)
|
|
|
* @param color defines the color to affect to the specified gradient
|
|
|
+ * @param color2 defines an additional color used to define a range ([color, color2]) with main color to pick the final color from
|
|
|
*/
|
|
|
- GPUParticleSystem.prototype.addColorGradient = function (gradient, color) {
|
|
|
+ GPUParticleSystem.prototype.addColorGradient = function (gradient, color1, color2) {
|
|
|
if (!this._colorGradients) {
|
|
|
this._colorGradients = [];
|
|
|
}
|
|
|
var colorGradient = new BABYLON.ColorGradient();
|
|
|
colorGradient.gradient = gradient;
|
|
|
- colorGradient.color = color;
|
|
|
+ colorGradient.color1 = color1;
|
|
|
this._colorGradients.push(colorGradient);
|
|
|
this._colorGradients.sort(function (a, b) {
|
|
|
if (a.gradient < b.gradient) {
|
|
@@ -57802,7 +57825,7 @@ var BABYLON;
|
|
|
for (var x = 0; x < textureWidth; x++) {
|
|
|
var ratio = x / textureWidth;
|
|
|
BABYLON.Tools.GetCurrentGradient(ratio, this._colorGradients, function (currentGradient, nextGradient, scale) {
|
|
|
- BABYLON.Color4.LerpToRef(currentGradient.color, nextGradient.color, scale, tmpColor);
|
|
|
+ BABYLON.Color4.LerpToRef(currentGradient.color1, nextGradient.color1, scale, tmpColor);
|
|
|
data[x * 4] = tmpColor.r * 255;
|
|
|
data[x * 4 + 1] = tmpColor.g * 255;
|
|
|
data[x * 4 + 2] = tmpColor.b * 255;
|