Add regression tests for prop attachment, centering, and editor UX

- Implemented test_phase9a_prop_attach.gd to validate anchor schema, alignment math, and preview isolation.
- Implemented test_phase9b_prop_centering.gd to check canonical origin presentation, bounds, centering, and save threshold.
- Implemented test_phase9c_prop_editor_ux.gd to assess the user experience in the prop editor, including anchor renaming and UI responsiveness.
- Added corresponding .uid files for each test.
- Created sync_sources.py script to manage markdown file synchronization with the notebook.
- Added .gitignore for virtual environment files.
This commit is contained in:
2026-09-21 16:48:24 -04:00
parent e3689c86c8
commit 00abacc7b2
30 changed files with 4903 additions and 55 deletions
+83
View File
@@ -0,0 +1,83 @@
{
"anchors": {
"origin": {
"allowed_hands": "both",
"role": "pivot",
"rotation_deg": 0.0,
"x": 0.0,
"y": 0.0,
"z_index_offset": 0
},
"primary_grip": {
"allowed_hands": "both",
"role": "grip",
"rotation_deg": 0.0,
"x": 0.0,
"y": 0.0,
"z_index_offset": 1
}
},
"material_preset": "rubber",
"metadata": {
"created_at": "2026-09-21T16:00:00",
"modified_at": "2026-09-21T16:00:00"
},
"prop_name": "Baseball",
"shapes": [
{
"closed": true,
"fill_color": "#F5F5F0FF",
"outline_color": "#A0A0A0FF",
"outline_width": 2.0,
"points": [
{ "x": 35.0, "y": 0.0 },
{ "x": 30.31, "y": 17.5 },
{ "x": 17.5, "y": 30.31 },
{ "x": 0.0, "y": 35.0 },
{ "x": -17.5, "y": 30.31 },
{ "x": -30.31, "y": 17.5 },
{ "x": -35.0, "y": 0.0 },
{ "x": -30.31, "y": -17.5 },
{ "x": -17.5, "y": -30.31 },
{ "x": 0.0, "y": -35.0 },
{ "x": 17.5, "y": -30.31 },
{ "x": 30.31, "y": -17.5 }
],
"radius": 35.0,
"reshaped": false,
"shape_type": "circle",
"vertex_flags": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
{
"closed": false,
"fill_color": "#00000000",
"outline_color": "#D62828FF",
"outline_width": 2.0,
"points": [
{ "x": -12.0, "y": -28.0 },
{ "x": -22.0, "y": -14.0 },
{ "x": -22.0, "y": 14.0 },
{ "x": -12.0, "y": 28.0 }
],
"reshaped": true,
"shape_type": "line",
"vertex_flags": [0, 0, 0, 0]
},
{
"closed": false,
"fill_color": "#00000000",
"outline_color": "#D62828FF",
"outline_width": 2.0,
"points": [
{ "x": 12.0, "y": -28.0 },
{ "x": 22.0, "y": -14.0 },
{ "x": 22.0, "y": 14.0 },
{ "x": 12.0, "y": 28.0 }
],
"reshaped": true,
"shape_type": "line",
"vertex_flags": [0, 0, 0, 0]
}
],
"version": "1.0"
}
+93
View File
@@ -0,0 +1,93 @@
{
"anchors": {
"origin": {
"allowed_hands": "both",
"role": "pivot",
"rotation_deg": 0.0,
"x": 0.0,
"y": 0.0,
"z_index_offset": 0
},
"primary_grip": {
"allowed_hands": "both",
"role": "grip",
"rotation_deg": 0.0,
"x": 0.0,
"y": -42.5,
"z_index_offset": 1
}
},
"material_preset": "wood",
"metadata": {
"created_at": "2026-09-21T16:00:00",
"modified_at": "2026-09-21T16:00:00"
},
"prop_name": "Brown Briefcase",
"shapes": [
{
"closed": true,
"fill_color": "#3D2314FF",
"outline_color": "#26150CFF",
"outline_width": 2.0,
"points": [
{ "x": -25.0, "y": -30.0 },
{ "x": -25.0, "y": -55.0 },
{ "x": 25.0, "y": -55.0 },
{ "x": 25.0, "y": -30.0 },
{ "x": 18.0, "y": -30.0 },
{ "x": 18.0, "y": -47.0 },
{ "x": -18.0, "y": -47.0 },
{ "x": -18.0, "y": -30.0 }
],
"reshaped": true,
"shape_type": "polygon",
"vertex_flags": [0, 0, 0, 0, 0, 0, 0, 0]
},
{
"closed": true,
"fill_color": "#6D3C19FF",
"outline_color": "#3B200AFF",
"outline_width": 3.0,
"points": [
{ "x": -70.0, "y": -30.0 },
{ "x": 70.0, "y": -30.0 },
{ "x": 70.0, "y": 40.0 },
{ "x": -70.0, "y": 40.0 }
],
"reshaped": false,
"shape_type": "polygon",
"vertex_flags": [0, 0, 0, 0]
},
{
"closed": true,
"fill_color": "#D4AF37FF",
"outline_color": "#8B7500FF",
"outline_width": 1.5,
"points": [
{ "x": -45.0, "y": -32.0 },
{ "x": -30.0, "y": -32.0 },
{ "x": -30.0, "y": -22.0 },
{ "x": -45.0, "y": -22.0 }
],
"reshaped": false,
"shape_type": "polygon",
"vertex_flags": [0, 0, 0, 0]
},
{
"closed": true,
"fill_color": "#D4AF37FF",
"outline_color": "#8B7500FF",
"outline_width": 1.5,
"points": [
{ "x": 30.0, "y": -32.0 },
{ "x": 45.0, "y": -32.0 },
{ "x": 45.0, "y": -22.0 },
{ "x": 30.0, "y": -22.0 }
],
"reshaped": false,
"shape_type": "polygon",
"vertex_flags": [0, 0, 0, 0]
}
],
"version": "1.0"
}