From 80ff00e6432be459d5e25dc5348fcbe1d61f23d9 Mon Sep 17 00:00:00 2001 From: ChenX Date: Wed, 25 May 2022 15:32:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96:=E5=93=8D=E5=BA=94=E6=9D=90?= =?UTF-8?q?=E8=B4=A8=E5=8F=82=E6=95=B0=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DatabaseServices/Entity/Extrude.ts | 33 +++++++++++++++++++------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/DatabaseServices/Entity/Extrude.ts b/src/DatabaseServices/Entity/Extrude.ts index 9dfc8a3da..1efcca899 100644 --- a/src/DatabaseServices/Entity/Extrude.ts +++ b/src/DatabaseServices/Entity/Extrude.ts @@ -1609,6 +1609,12 @@ export class ExtrudeSolid extends Entity let mesh = new Mesh(this.MeshGeometry, ColorMaterial.GetPrintConceptualMaterial()); return [line, mesh]; } + + private get CaseShadow() + { + return !this.MeshMaterial.transparent || this.MeshMaterial.opacity === 1; + } + InitDrawObject(renderType: RenderType = RenderType.Wireframe) { if (renderType === RenderType.Wireframe) @@ -1626,8 +1632,12 @@ export class ExtrudeSolid extends Entity { let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); - mesh.castShadow = this.MeshMaterial.opacity === 1; - mesh.receiveShadow = mesh.castShadow; + Object.defineProperty(mesh, "castShadow", { + get: () => this.CaseShadow + }); + Object.defineProperty(mesh, "receiveShadow", { + get: () => this.CaseShadow + }); return mesh; } @@ -1643,8 +1653,12 @@ export class ExtrudeSolid extends Entity { let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); - mesh.castShadow = this.MeshMaterial.opacity === 1; - mesh.receiveShadow = mesh.castShadow; + Object.defineProperty(mesh, "castShadow", { + get: () => this.CaseShadow + }); + Object.defineProperty(mesh, "receiveShadow", { + get: () => this.CaseShadow + }); return new Object3D().add( mesh, @@ -2025,8 +2039,12 @@ export class ExtrudeSolid extends Entity { let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); - mesh.castShadow = this.MeshMaterial.opacity === 1; - mesh.receiveShadow = mesh.castShadow; + Object.defineProperty(mesh, "castShadow", { + get: () => this.CaseShadow + }); + Object.defineProperty(mesh, "receiveShadow", { + get: () => this.CaseShadow + }); return obj.add( mesh, @@ -2055,9 +2073,6 @@ export class ExtrudeSolid extends Entity { let mesh = obj as Mesh; mesh.material = this.MeshMaterial; - - mesh.castShadow = this.MeshMaterial.opacity === 1; - mesh.receiveShadow = mesh.castShadow; } }