diff options
| author | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2026-08-26 21:37:56 +0100 |
|---|---|---|
| committer | Arturs Artamonovs <arturs.artamonovs@protonmail.com> | 2026-08-26 21:37:56 +0100 |
| commit | e8b5398d8f9a2d4fa9ed339fec774badc270979f (patch) | |
| tree | 2e4607262e7887cdb37003568d846503b35f9cc8 /ShedCalc/RenderView.swift | |
| parent | 91d0042017e6c46f2c9f5d42d438836efa6d53e4 (diff) | |
| download | ShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.tar.gz ShedCalc-e8b5398d8f9a2d4fa9ed339fec774badc270979f.zip | |
All views seem to work ok
Diffstat (limited to 'ShedCalc/RenderView.swift')
| -rw-r--r-- | ShedCalc/RenderView.swift | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/ShedCalc/RenderView.swift b/ShedCalc/RenderView.swift index a143e99..b71b741 100644 --- a/ShedCalc/RenderView.swift +++ b/ShedCalc/RenderView.swift @@ -31,23 +31,44 @@ struct RenderView: View { //content.addChild(beam) //draw all beams - let beamData = renderController.generateShedWall(position: [0,0,0], height: paramModel.height, widthNum: paramModel.widthBeamNum(), lengthNum: paramModel.lengthBeamNum(), spaceBeem: paramModel.beamSpace) - //content.add(beams) - let beams = renderController.createBeams(beamData) - beams.forEach { scene.addChild($0) } + let beamData = renderController.generateShedWall(position: [0,0,0], height: paramModel.height, widthNum: paramModel.widthBeamNum(), lengthNum: paramModel.lengthBeamNum(), spaceBeam: paramModel.beamSpace) + let wallBeams = renderController.createBeams(beamData) + wallBeams.forEach { scene.addChild($0) } + + //let floorBeamData = renderController.generateShedFloor(position: [0,0,0], width: Float(1.0), widthNum: paramModel.widthBeamNum(), spaceBeam: paramModel.beamSpace) + //let floorBeams = renderController.createBeams(floorBeamData) + //floorBeams.forEach { scene.addChild($0) } } update: { content in // Update box geometry directly in the scene - if let scene = content.entities.first(where: { $0.name == "scene" }), - let box = scene.findEntity(named: "box") as? ModelEntity { - box.model?.mesh = .generateBox(size: paramModel.dimensions(), cornerRadius: 0.02) + //if let scene = content.entities.first(where: { $0.name == "scene" }), + //let box = scene.findEntity(named: "box") as? ModelEntity { + //box.model?.mesh = .generateBox(size: paramModel.dimensions(), cornerRadius: 0.02) + //} + if let scene = content.entities.first(where: { $0.name == "scene"}) { + let oldBeams = scene.children.filter { $0.name.hasPrefix("beam-") } + oldBeams.forEach { $0.removeFromParent() } + + let beamData = renderController.generateShedWall(position: [0,0,0], height: paramModel.height, widthNum: paramModel.widthBeamNum(), lengthNum: paramModel.lengthBeamNum(), spaceBeam: paramModel.beamSpace) + let beams = renderController.createBeams(beamData) + beams.forEach { scene.addChild($0) } + + let floorBeamData = renderController.generateShedFloor(position: [0,0,0], height: paramModel.height, width: Double(paramModel.lengthBeamNum())*paramModel.beamSpace, widthNum: paramModel.widthBeamNum(), spaceBeam: paramModel.beamSpace) + let floorBeams = renderController.createBeams(floorBeamData) + floorBeams.forEach { scene.addChild($0) } + + let roofBeamData = renderController.generateShedRoof(position: [0,0,0], height: paramModel.height, width: Double(paramModel.lengthBeamNum())*paramModel.beamSpace, widthNum: paramModel.widthBeamNum(), spaceBeam: paramModel.beamSpace) + let roofBeams = renderController.createBeams(roofBeamData) + roofBeams.forEach { scene.addChild($0) } } + // Update scene rotation directly if let scene = content.entities.first(where: { $0.name == "scene" }) { - let xRot = simd_quatf(angle: viewModel.rotationX, axis: [1, 0, 0]) - let yRot = simd_quatf(angle: viewModel.rotationY, axis: [0, 1, 0]) + let xRot = simd_quatf(angle: Float(viewModel.rotationX), axis: [1, 0, 0]) + let yRot = simd_quatf(angle: Float(viewModel.rotationY), axis: [0, 1, 0]) scene.transform.rotation = yRot * xRot } + //update amount of beams }.gesture( DragGesture() .onChanged { value in |
