diff --git a/src/ui/elements/slider.ts b/src/ui/elements/slider.ts index 2c88729..5e2230c 100644 --- a/src/ui/elements/slider.ts +++ b/src/ui/elements/slider.ts @@ -19,6 +19,7 @@ export class SliderElement extends ConfigUIElement { private _dragging: boolean; private _hovering: boolean; private _internalValue: number; + private _small: boolean; public constructor() { super(); @@ -29,6 +30,7 @@ export class SliderElement extends ConfigUIElement { this._internalValue = 0.5; this._dragging = false; this._hovering = false; + this._small = false; } public override setDefaultValue(value: number) { @@ -37,6 +39,11 @@ export class SliderElement extends ConfigUIElement { return this; } + public setSmall() { + this._small = true; + return this; + } + /** * Set the minimum value the slider can be set to. */ @@ -123,12 +130,12 @@ export class SliderElement extends ConfigUIElement { }); } - protected override _generateInnerHTML() { + public override _generateInnerHTML() { const norm = (this._internalValue - this._min) / (this._max - this._min); return ` - -
+ +
diff --git a/src/ui/elements/solid_material_element.ts b/src/ui/elements/solid_material_element.ts index 39144ee..c269fea 100644 --- a/src/ui/elements/solid_material_element.ts +++ b/src/ui/elements/solid_material_element.ts @@ -4,11 +4,13 @@ import { getRandomID } from '../../util'; import { UIUtil } from '../../util/ui_util'; import { ConfigUIElement } from './config_element'; import { MaterialTypeElement } from './material_type_element'; +import { SliderElement } from './slider'; export class SolidMaterialElement extends ConfigUIElement { private _materialName: string; private _colourId: string; private _typeElement: MaterialTypeElement; + private _alphaElement: SliderElement; public constructor(materialName: string, material: SolidMaterial) { super(material); @@ -16,15 +18,28 @@ export class SolidMaterialElement extends ConfigUIElement { this._onChangeTypeDelegate?.(); }); + this._alphaElement.addValueChangedListener((newAlpha) => { + this.getValue().colour.a = newAlpha; + }); + const swatchElement = UIUtil.getElementById(this._colourId) as HTMLInputElement; swatchElement.addEventListener('change', () => { const material = this.getValue(); @@ -51,7 +66,7 @@ export class SolidMaterialElement extends ConfigUIElement`); - addSubproperty('Alpha', `${material.colour.a.toFixed(4)}`); + addSubproperty('Alpha', this._alphaElement._generateInnerHTML()); return `
diff --git a/src/ui/elements/textured_material_element.ts b/src/ui/elements/textured_material_element.ts index 39ff3a3..142f382 100644 --- a/src/ui/elements/textured_material_element.ts +++ b/src/ui/elements/textured_material_element.ts @@ -4,6 +4,7 @@ import { ComboBoxElement } from './combobox'; import { ConfigUIElement } from './config_element'; import { ImageElement } from './image_element'; import { MaterialTypeElement } from './material_type_element'; +import { SliderElement } from './slider'; export class TexturedMaterialElement extends ConfigUIElement { private _materialName: string; @@ -12,6 +13,7 @@ export class TexturedMaterialElement extends ConfigUIElement; private _imageElement: ImageElement; private _typeElement: MaterialTypeElement; + private _alphaElement: SliderElement; public constructor(materialName: string, material: TexturedMaterial) { super(material); @@ -33,6 +35,14 @@ export class TexturedMaterialElement extends ConfigUIElement { const material = this.getValue(); @@ -59,6 +70,10 @@ export class TexturedMaterialElement extends ConfigUIElement { this._onChangeTypeDelegate?.(); }); + + this._alphaElement.addValueChangedListener((newAlpha) => { + this.getValue().alphaFactor = newAlpha; + }); } protected override _generateInnerHTML(): string { @@ -79,7 +94,7 @@ export class TexturedMaterialElement extends ConfigUIElement