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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 16x 16x 16x 9x 9x 9x 9x 9x 9x 9x 9x 54x 54x 54x 9x 9x 12x 12x 12x 87x 70x 3x 14x 14x 14x 15x 15x 5x | import { GeometryOptions } from "../../preview3DPrintMesh"
import { GeneralMesh, GeneralSizeChangeMesh } from "../generalMesh"
import { BackPrintColorChangeStrategy } from "../../ColorChangeStrategies/backPrintColorChangeStrategy"
import { BackMWLogoMesh } from "./backMWLogoMesh"
import { BackBelowLogoTextMesh } from "./backBelowLogoTextMesh"
import { QrCodeMesh } from "./qrCodeMesh"
import { CodeChartaLogoMesh } from "./codeChartaLogoMesh"
import { CodeChartaTextMesh } from "./codeChartaTextMesh"
import { MetricDescriptionsContainerMesh } from "./metricDescriptionsContainerMesh"
import { Font } from "three/examples/jsm/loaders/FontLoader"
import { CustomVisibilityMesh } from "../customVisibilityMesh"
export class BackPrintContainerMesh extends GeneralMesh implements GeneralSizeChangeMesh {
private childrenMeshes: Map<string, GeneralMesh>
constructor(private font: Font) {
const colorChangeStrategy = new BackPrintColorChangeStrategy()
super("BackPrintContainer", colorChangeStrategy)
}
async init(geometryOptions: GeometryOptions): Promise<BackPrintContainerMesh> {
this.childrenMeshes = new Map<string, GeneralMesh>()
this.childrenMeshes.set("BackMWLogo", new BackMWLogoMesh("BackMWLogo"))
this.childrenMeshes.set("BackBelowLogoText", new BackBelowLogoTextMesh("BackBelowLogoText", this.font))
this.childrenMeshes.set("QrCode", new QrCodeMesh("QrCode"))
this.childrenMeshes.set("CodeChartaLogo", new CodeChartaLogoMesh("CodeChartaLogo"))
this.childrenMeshes.set("CodeChartaText", new CodeChartaTextMesh("CodeChartaText", this.font))
this.childrenMeshes.set(
"MetricDescriptionsContainer",
new MetricDescriptionsContainerMesh("MetricDescriptionsContainer", this.font)
)
await Promise.all(
[...this.childrenMeshes.values()].map(async mesh => {
await mesh.init(geometryOptions)
this.add(mesh)
})
)
this.changeSize(geometryOptions, 1)
return this
}
changeSize(geometryOptions: GeometryOptions, oldWidth: number): void {
const scaleFactor = geometryOptions.width / oldWidth
this.scale.set(this.scale.x * scaleFactor, this.scale.y * scaleFactor, this.scale.z)
this.traverse(mesh => {
if (mesh instanceof CustomVisibilityMesh) {
mesh.setCurrentWidth(geometryOptions.width)
}
})
}
isQRCodeVisible(): boolean {
return this.childrenMeshes.get("QrCode").visible
}
async updateQrCodeText(qrCodeText: string, geometryOptions: GeometryOptions): Promise<void> {
geometryOptions.qrCodeText = qrCodeText
const qrCodeMesh = this.childrenMeshes.get("QrCode") as QrCodeMesh
await qrCodeMesh.changeText(geometryOptions)
}
updateQrCodeVisibility(qrCodeVisible: boolean) {
const qrCodeMesh = this.childrenMeshes.get("QrCode") as QrCodeMesh
qrCodeMesh.setManualVisibility(qrCodeVisible)
}
getChildrenMeshes(): Map<string, GeneralMesh> {
return this.childrenMeshes
}
}
|