Skip to content

Commit ea63366

Browse files
[prefab] Use precise collisions for scene picking
1 parent fb849ef commit ea63366

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

hrt/prefab/Object3D.hx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -380,11 +380,18 @@ class Object3D extends Prefab {
380380
}
381381
if( visibleMeshes.length == 0 )
382382
return null;
383-
var colliders = [for(m in visibleMeshes) {
384-
var c : h3d.col.Collider = try m.getLocalCollider() catch(e: Dynamic) null;
385-
if(c != null) c;
383+
var colliders : Array<h3d.col.Collider> = [for(m in visibleMeshes) {
384+
var hmd = Std.downcast(m.primitive, h3d.prim.HMDModel);
385+
var c : h3d.col.Collider;
386+
if (hmd != null) {
387+
c = hmd.getRawPolygonCollider();
388+
} else {
389+
c = try m.getLocalCollider() catch(e: Dynamic) null;
390+
}
391+
392+
if(c != null) new h3d.col.ObjectCollider(m, c);
386393
}];
387-
var meshCollider = new h3d.col.ObjectCollider(local3d, colliders.length == 1 ? colliders[0] : new h3d.col.Collider.GroupCollider(colliders));
394+
var meshCollider : h3d.col.Collider = colliders.length == 1 ? colliders[0] : new h3d.col.Collider.GroupCollider(colliders);
388395
var collider : h3d.col.Collider = new h3d.col.ObjectCollider(local3d, bounds);
389396
if( hasSkin ) {
390397
collider = meshCollider; // can't trust bounds

0 commit comments

Comments
 (0)