Skip to content

Commit ed7450b

Browse files
committed
Refactor for clarity
1 parent ed40544 commit ed7450b

File tree

2 files changed

+14
-22
lines changed

2 files changed

+14
-22
lines changed

Sources/GateEngine/Resources/Geometry/Raw/RawGeometry.swift

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

Sources/GateEngine/Resources/Import & Export/Importers/GLTransmissionFormat.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ extension GLTransmissionFormat: GeometryImporter {
686686
return geometries[0]
687687
}
688688
}else{
689-
var geometry = RawGeometry(geometries: geometries)
689+
var geometry = RawGeometry(byCombining: geometries)
690690
if options.applyRootTransform, let nodeIndex = gltf.scenes[gltf.scene].nodes?[0] {
691691
let transform = gltf.nodes[nodeIndex].transform.createMatrix()
692692
geometry = geometry * transform
@@ -840,7 +840,7 @@ extension GLTransmissionFormat: SkeletonImporter {
840840
guard let rootNode = skeletonNode(named: options.subobjectName, in: gltf) else {
841841
throw GateEngineError.failedToDecode("Couldn't find skeleton root.")
842842
}
843-
var rawSkeleton: RawSkeleton = .init()
843+
var rawSkeleton: RawSkeleton = .init(rawJoints: [])
844844
rawSkeleton.joints.append(
845845
RawSkeleton.RawJoint(id: rootNode, parent: nil, name: gltf.nodes[rootNode].name, localTransform: gltf.nodes[rootNode].transform)
846846
)

0 commit comments

Comments
 (0)