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 | 7x 7x 7x 7x 7x 17x 17x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 6x 3x 3x 3x | import { GeneralMesh, GeneralSizeChangeMesh } from "./generalMesh"
import { CreateBaseplateGeometryStrategy } from "../CreateGeometryStrategies/createBaseplateGeometryStrategy"
import { GeometryOptions } from "../preview3DPrintMesh"
import { ShaderMaterial } from "three"
import { BaseplateColorChangeStrategy } from "../ColorChangeStrategies/baseplateColorChangeStrategy"
export class BaseplateMesh extends GeneralMesh implements GeneralSizeChangeMesh {
constructor(private createBaseplateGeometryStrategy: CreateBaseplateGeometryStrategy = new CreateBaseplateGeometryStrategy()) {
super("Baseplate", new BaseplateColorChangeStrategy())
}
async init(geometryOptions: GeometryOptions): Promise<BaseplateMesh> {
this.createBaseplateGeometryStrategy.create(geometryOptions).then(geometry => {
this.geometry = geometry
})
//at the moment we use a workaround, so we don't need to calculate color, delta, deltaColor and isHeight
//the downside of this workaround is that there can only be one default color for all objects
//if its needed that all objects have ShaderMaterial have a look at geometryGenerator.ts
const shaderMaterial = new ShaderMaterial()
shaderMaterial.copy(geometryOptions.defaultMaterial)
shaderMaterial.polygonOffset = true
shaderMaterial.polygonOffsetUnits = 1
shaderMaterial.polygonOffsetFactor = 0.1
this.material = shaderMaterial
this.updateColor(geometryOptions.numberOfColors)
return new Promise(resolve => {
resolve(this)
})
}
changeSize(geometryOptions: GeometryOptions): void {
this.boundingBoxCalculated = false
this.createBaseplateGeometryStrategy.create(geometryOptions).then(geometry => {
this.geometry = geometry
})
}
}
|