|
|
|
@@ -15,33 +15,37 @@ export class BlockVerificationLevelRender {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderBlock() {
|
|
|
|
|
for (const particleLocation of this.getParticleLocations()) {
|
|
|
|
|
const sizeScalar = this.verificationLevelToSizeScalar();
|
|
|
|
|
for (const particle of this.getBlockParticles(sizeScalar)) {
|
|
|
|
|
const color = this.getRGBAMolang();
|
|
|
|
|
if (!color)
|
|
|
|
|
return;
|
|
|
|
|
color.setFloat("lifetime", this.lifetimeSeconds);
|
|
|
|
|
color.setFloat("width", 0.5*sizeScalar);
|
|
|
|
|
color.setFloat("height", 0.5*sizeScalar);
|
|
|
|
|
try {
|
|
|
|
|
this.dimension.spawnParticle(particleLocation.particleType, particleLocation.location, color);
|
|
|
|
|
this.dimension.spawnParticle(particle.particleType, particle.location, color);
|
|
|
|
|
} catch {
|
|
|
|
|
/* pass */
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getParticleLocations() {
|
|
|
|
|
getBlockParticles(sizeScalar = 1) {
|
|
|
|
|
const bottomFace = new Vector(0.5, 0, 0.5);
|
|
|
|
|
const topFace = new Vector(0.5, 1, 0.5);
|
|
|
|
|
const leftFace = new Vector(1, 0.5, 0.5);
|
|
|
|
|
const rightFace = new Vector(0, 0.5, 0.5);
|
|
|
|
|
const frontFace = new Vector(0.5, 0.5, 1);
|
|
|
|
|
const backFace = new Vector(0.5, 0.5, 0);
|
|
|
|
|
const center = new Vector(0.5, 0.5, 0.5);
|
|
|
|
|
return [
|
|
|
|
|
{ particleType: "construct:blockoverlay_xz", location: this.location.add(topFace) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xz", location: this.location.add(bottomFace) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_yz", location: this.location.add(leftFace) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_yz", location: this.location.add(rightFace) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xy", location: this.location.add(frontFace) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xy", location: this.location.add(backFace) }
|
|
|
|
|
{ particleType: "construct:blockoverlay_xz", location: this.location.add(center).add(topFace.subtract(center).multiply(sizeScalar)) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xz", location: this.location.add(center).add(bottomFace.subtract(center).multiply(sizeScalar)) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_yz", location: this.location.add(center).add(leftFace.subtract(center).multiply(sizeScalar)) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_yz", location: this.location.add(center).add(rightFace.subtract(center).multiply(sizeScalar)) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xy", location: this.location.add(center).add(frontFace.subtract(center).multiply(sizeScalar)) },
|
|
|
|
|
{ particleType: "construct:blockoverlay_xy", location: this.location.add(center).add(backFace.subtract(center).multiply(sizeScalar)) }
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -66,4 +70,17 @@ export class BlockVerificationLevelRender {
|
|
|
|
|
return void 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
verificationLevelToSizeScalar() {
|
|
|
|
|
switch (this.verificationLevel) {
|
|
|
|
|
case BlockVerificationLevel.NoMatch:
|
|
|
|
|
return 1.01;
|
|
|
|
|
case BlockVerificationLevel.TypeMatch:
|
|
|
|
|
return 1.01;
|
|
|
|
|
case BlockVerificationLevel.Missing:
|
|
|
|
|
return 0.90;
|
|
|
|
|
default:
|
|
|
|
|
return 1.00;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|