summaryrefslogtreecommitdiff
path: root/ShedCalc/RenderView.swift
diff options
context:
space:
mode:
Diffstat (limited to 'ShedCalc/RenderView.swift')
-rw-r--r--ShedCalc/RenderView.swift39
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