From 61073ea192c24a789a349a65afb115fd817c9544 Mon Sep 17 00:00:00 2001
From: Quaternions <krakow20@gmail.com>
Date: Fri, 21 Mar 2025 13:56:41 -0700
Subject: [PATCH] rbx_loader: default physics for unions

---
 lib/rbx_loader/src/union.rs | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/rbx_loader/src/union.rs b/lib/rbx_loader/src/union.rs
index 2d4fb7e..74e92fe 100644
--- a/lib/rbx_loader/src/union.rs
+++ b/lib/rbx_loader/src/union.rs
@@ -1,4 +1,5 @@
 use crate::rbx::RobloxPartDescription;
+use crate::primitives::{CUBE_DEFAULT_VERTICES,CUBE_DEFAULT_POLYS};
 
 use rbx_mesh::mesh_data::{VertexId as MeshDataVertexId,NormalId2 as MeshDataNormalId2};
 use rbx_mesh::physics_data::VertexId as PhysicsDataVertexId;
@@ -168,8 +169,15 @@ pub fn convert(
 		});
 		polygon_groups_normal_it.chain(physics_convex_meshes_it).collect::<Result<_,_>>()?
 	}else{
-		// TODO: generate a unit cube as default physics
-		polygon_groups_normal_it.collect::<Result<_,_>>()?
+		// generate a unit cube as default physics
+		let pos_list=CUBE_DEFAULT_VERTICES.map(|pos|mb.acquire_pos_id(pos));
+		let tex=mb.acquire_tex_id(glam::Vec2::ZERO);
+		let normal=mb.acquire_normal_id(vec3::ZERO);
+		let color=mb.acquire_color_id(glam::Vec4::ONE);
+		let polygon_group=PolygonGroup::PolygonList(PolygonList::new(CUBE_DEFAULT_POLYS.map(|poly|poly.map(|[pos_id,_]|
+			mb.acquire_vertex_id(IndexedVertex{pos:pos_list[pos_id as usize],tex,normal,color})
+		).to_vec()).to_vec()));
+		polygon_groups_normal_it.chain([Ok(polygon_group)]).collect::<Result<_,_>>()?
 	};
 	let physics_groups=(NORMAL_FACES..polygon_groups.len()).map(|id|model::IndexedPhysicsGroup{
 		groups:vec![PolygonGroupId::new(id as u32)]