123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import { Color4 } from "../Maths/math.color.js";
- /** Class used to store color4 gradient */
- export class ColorGradient {
- /**
- * Creates a new color4 gradient
- * @param gradient gets or sets the gradient value (between 0 and 1)
- * @param color1 gets or sets first associated color
- * @param color2 gets or sets first second color
- */
- constructor(
- /**
- * Gets or sets the gradient value (between 0 and 1)
- */
- gradient,
- /**
- * Gets or sets first associated color
- */
- color1,
- /**
- * Gets or sets second associated color
- */
- color2) {
- this.gradient = gradient;
- this.color1 = color1;
- this.color2 = color2;
- }
- /**
- * 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
- */
- getColorToRef(result) {
- if (!this.color2) {
- result.copyFrom(this.color1);
- return;
- }
- Color4.LerpToRef(this.color1, this.color2, Math.random(), result);
- }
- }
- /** Class used to store color 3 gradient */
- export class Color3Gradient {
- /**
- * Creates a new color3 gradient
- * @param gradient gets or sets the gradient value (between 0 and 1)
- * @param color gets or sets associated color
- */
- constructor(
- /**
- * Gets or sets the gradient value (between 0 and 1)
- */
- gradient,
- /**
- * Gets or sets the associated color
- */
- color) {
- this.gradient = gradient;
- this.color = color;
- }
- }
- /** Class used to store factor gradient */
- export class FactorGradient {
- /**
- * Creates a new factor gradient
- * @param gradient gets or sets the gradient value (between 0 and 1)
- * @param factor1 gets or sets first associated factor
- * @param factor2 gets or sets second associated factor
- */
- constructor(
- /**
- * Gets or sets the gradient value (between 0 and 1)
- */
- gradient,
- /**
- * Gets or sets first associated factor
- */
- factor1,
- /**
- * Gets or sets second associated factor
- */
- factor2) {
- this.gradient = gradient;
- this.factor1 = factor1;
- this.factor2 = factor2;
- }
- /**
- * Will get a number picked randomly between factor1 and factor2.
- * If factor2 is undefined then factor1 will be used
- * @returns the picked number
- */
- getFactor() {
- if (this.factor2 === undefined || this.factor2 === this.factor1) {
- return this.factor1;
- }
- return this.factor1 + (this.factor2 - this.factor1) * Math.random();
- }
- }
- /**
- * Helper used to simplify some generic gradient tasks
- */
- export class GradientHelper {
- /**
- * Gets the current gradient from an array of IValueGradient
- * @param ratio defines the current ratio to get
- * @param gradients defines the array of IValueGradient
- * @param updateFunc defines the callback function used to get the final value from the selected gradients
- */
- static GetCurrentGradient(ratio, gradients, updateFunc) {
- // Use last index if over
- if (gradients[0].gradient > ratio) {
- updateFunc(gradients[0], gradients[0], 1.0);
- return;
- }
- for (let gradientIndex = 0; gradientIndex < gradients.length - 1; gradientIndex++) {
- const currentGradient = gradients[gradientIndex];
- const nextGradient = gradients[gradientIndex + 1];
- if (ratio >= currentGradient.gradient && ratio <= nextGradient.gradient) {
- const scale = (ratio - currentGradient.gradient) / (nextGradient.gradient - currentGradient.gradient);
- updateFunc(currentGradient, nextGradient, scale);
- return;
- }
- }
- // Use last index if over
- const lastIndex = gradients.length - 1;
- updateFunc(gradients[lastIndex], gradients[lastIndex], 1.0);
- }
- }
- //# sourceMappingURL=gradients.js.map
|