Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 17x 17x 106x 106x 106x 18x 18x 74x 74x 245x 245x 153x 153x 32x 31x 153x | import { GeneralMesh } from "./generalMesh" import { ColorChangeStrategy } from "../ColorChangeStrategies/colorChangeStrategy" export abstract class CustomVisibilityMesh extends GeneralMesh { currentWidth: number visibleBecauseOfColor: boolean constructor( name: string, colorChangeStrategy: ColorChangeStrategy, public minWidth = 1, public manualVisibility = true ) { super(name, colorChangeStrategy) } setManualVisibility(manualVisibility: boolean): void { this.manualVisibility = manualVisibility this.updateVisibility() } setCurrentWidth(width: number): void { this.currentWidth = width this.updateVisibility() } private updateVisibility(): void { const visibleBecauseOfWidth = this.currentWidth ? this.currentWidth >= this.minWidth : true this.visible = this.manualVisibility && this.visibleBecauseOfColor && visibleBecauseOfWidth } updateColor(numberOfColors: number) { this.visibleBecauseOfColor = this.colorChangeStrategy.execute(numberOfColors, this) for (const child of this.children) { if (child instanceof GeneralMesh) { child.updateColor(numberOfColors) } } this.updateVisibility() } } |