@@ -257,33 +257,17 @@ public struct RawGeometry: Codable, Sendable, Equatable, Hashable {
257257 self . uvSets = [ uvSet1, uvSet2]
258258 }
259259
260- public init ( byCombiningTrianglesFrom geometries: [ RawGeometry ] ) {
261- var triangles : [ Triangle ] = [ ]
262- for geom in geometries {
263- triangles. append ( contentsOf: geom. generateTriangles ( ) )
264- }
265- self . init ( triangles: triangles)
266- }
267-
268260 /// Creates a new `Geometry` by merging multiple geometry. This is usful for loading files that store geometry speretly base don material if you intend to only use a single material for them all.
269- public init ( geometries: [ RawGeometry ] ) {
261+ public init ( byCombining geometries: [ RawGeometry ] , withOptimization optimization : Optimization = . dontOptimize ) {
270262 var triangles : [ Triangle ] = [ ]
271263 for geometry in geometries {
272264 triangles. append ( contentsOf: geometry. generateTriangles ( ) )
273265 }
274- self . init ( triangles: triangles)
275- }
276-
277- public func hash( into hasher: inout Hasher ) {
278- hasher. combine ( positions)
279- hasher. combine ( normals)
280- hasher. combine ( uvSet1)
281- hasher. combine ( uvSet2)
282- hasher. combine ( tangents)
283- hasher. combine ( colors)
284- hasher. combine ( indices)
266+ self . init ( triangles: triangles, optimization: optimization)
285267 }
268+ }
286269
270+ extension RawGeometry {
287271 public static func * ( lhs: Self , rhs: Matrix4x4 ) -> Self {
288272 let triangles = lhs. generateTriangles ( ) . map ( { $0 * rhs } )
289273 return RawGeometry ( triangles: triangles)
@@ -298,4 +282,12 @@ extension Array where Element == RawGeometry {
298282 }
299283 return vertices
300284 }
285+
286+ public func generateTriangles( ) -> [ Triangle ] {
287+ var triangles : [ Triangle ] = [ ]
288+ for geometry in self {
289+ triangles. append ( contentsOf: geometry. generateTriangles ( ) )
290+ }
291+ return triangles
292+ }
301293}
0 commit comments