// // PipeRoute.swift // GasTankAR // // Created by Dennis Nemec on 28.08.26. // import Foundation import simd /// Eine Rohrführung als geordnete Folge von Wegpunkten (Welt-Koordinaten), die zu einem /// zusammenhängenden Pfad verbunden werden – visualisiert die geplante Rohrverlegung. struct PipeRoute { private(set) var waypoints: [SIMD3] = [] var count: Int { waypoints.count } /// Gesamtlänge des Pfads über alle Segmente in Metern. var totalLength: Float { guard waypoints.count > 1 else { return 0 } return zip(waypoints, waypoints.dropFirst()) .reduce(0) { $0 + simd_distance($1.0, $1.1) } } var formattedLength: String { String(format: "%.2f m", totalLength) } mutating func add(_ waypoint: SIMD3) { waypoints.append(waypoint) } @discardableResult mutating func removeLast() -> SIMD3? { waypoints.isEmpty ? nil : waypoints.removeLast() } mutating func clear() { waypoints.removeAll() } } /// Ablaufphasen beim Erstellen einer Rohrführung. enum PipeRoutingPhase: Equatable { /// Kein Rohr-Routing aktiv. case idle /// Wegpunkte werden gesetzt. case placing }