Skip to content

Commit 929fb89

Browse files
committed
rename _ComponentContentBuilder
1 parent 939f3f0 commit 929fb89

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

Sources/LiveViewNativeRealityKit/ContentBuilders/EntityContentBuilder.swift

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,19 @@ extension Entity {
177177
}
178178

179179
if element.attributeBoolean(for: "generateCollisionShapes") {
180-
self.generateCollisionShapes(
181-
recursive: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "recursive")),
182-
static: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "static"))
183-
)
180+
if element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "convex")) {
181+
// convex mesh collision shapes
182+
self.generateConvexCollisionShapes(
183+
recursive: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "recursive")),
184+
static: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "static"))
185+
)
186+
} else {
187+
// simple box collision shapes
188+
self.generateCollisionShapes(
189+
recursive: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "recursive")),
190+
static: element.attributeBoolean(for: .init(namespace: "generateCollisionShapes", name: "static"))
191+
)
192+
}
184193
}
185194
}
186195

@@ -241,3 +250,19 @@ extension Entity {
241250
}
242251
}
243252
}
253+
254+
extension Entity {
255+
func generateConvexCollisionShapes(
256+
recursive: Bool,
257+
static isStatic: Bool
258+
) {
259+
if let mesh = self.components[ModelComponent.self]?.mesh {
260+
self.components.set(CollisionComponent(shapes: [.generateConvex(from: mesh)], isStatic: isStatic))
261+
}
262+
if recursive {
263+
for child in children {
264+
child.generateConvexCollisionShapes(recursive: recursive, static: isStatic)
265+
}
266+
}
267+
}
268+
}

0 commit comments

Comments
 (0)