- Added specifications for Phase 10a, introducing permanent size changes to `.prop` documents and reversible uniform instance scaling in Sandbox EDIT mode. - Updated `PropCanvas`, `PropAnchorData`, `PropEditor`, `StageGizmos`, `SandboxStage`, and `StageSelection` classes to support new scaling features. - Implemented document transactions for scaling, including normalization to a 96 px maximum dimension. - Introduced a new **Transform Whole Prop** tool in the Prop Editor for moving, rotating, and resizing props. - Created unit tests for the new scaling functionality, validating shape scaling, anchor transformations, and whole-prop interactions. - Ensured compatibility with existing prop formats and maintained the integrity of the document structure during scaling operations.
177 lines
2.8 KiB
Plaintext
177 lines
2.8 KiB
Plaintext
{
|
|
"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": -82.066291809082,
|
|
"z_index_offset": 1
|
|
}
|
|
},
|
|
"material_preset": "wood",
|
|
"metadata": {
|
|
"created_at": "2026-09-22T00:22:32",
|
|
"modified_at": "2026-09-22T00:22:32"
|
|
},
|
|
"prop_name": "Brown Briefcase",
|
|
"shapes": [
|
|
{
|
|
"closed": true,
|
|
"fill_color": "#3D2314FF",
|
|
"outline_color": "#26150CFF",
|
|
"outline_width": 2.0,
|
|
"points": [
|
|
{
|
|
"x": -48.2742919921875,
|
|
"y": -57.9291458129883
|
|
},
|
|
{
|
|
"x": -48.2742919921875,
|
|
"y": -106.20344543457
|
|
},
|
|
{
|
|
"x": 48.2742919921875,
|
|
"y": -106.20344543457
|
|
},
|
|
{
|
|
"x": 48.2742919921875,
|
|
"y": -57.9291458129883
|
|
},
|
|
{
|
|
"x": 34.7574882507324,
|
|
"y": -57.9291458129883
|
|
},
|
|
{
|
|
"x": 34.7574882507324,
|
|
"y": -90.7556686401367
|
|
},
|
|
{
|
|
"x": -34.7574882507324,
|
|
"y": -90.7556686401367
|
|
},
|
|
{
|
|
"x": -34.7574882507324,
|
|
"y": -57.9291458129883
|
|
}
|
|
],
|
|
"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": -135.168014526367,
|
|
"y": -57.9291458129883
|
|
},
|
|
{
|
|
"x": 135.168014526367,
|
|
"y": -57.9291458129883
|
|
},
|
|
{
|
|
"x": 135.168014526367,
|
|
"y": 77.2388610839844
|
|
},
|
|
{
|
|
"x": -135.168014526367,
|
|
"y": 77.2388610839844
|
|
}
|
|
],
|
|
"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": -86.8937225341797,
|
|
"y": -61.791088104248
|
|
},
|
|
{
|
|
"x": -57.9291458129883,
|
|
"y": -61.791088104248
|
|
},
|
|
{
|
|
"x": -57.9291458129883,
|
|
"y": -42.481372833252
|
|
},
|
|
{
|
|
"x": -86.8937225341797,
|
|
"y": -42.481372833252
|
|
}
|
|
],
|
|
"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": 57.9291458129883,
|
|
"y": -61.791088104248
|
|
},
|
|
{
|
|
"x": 86.8937225341797,
|
|
"y": -61.791088104248
|
|
},
|
|
{
|
|
"x": 86.8937225341797,
|
|
"y": -42.481372833252
|
|
},
|
|
{
|
|
"x": 57.9291458129883,
|
|
"y": -42.481372833252
|
|
}
|
|
],
|
|
"reshaped": false,
|
|
"shape_type": "polygon",
|
|
"vertex_flags": [
|
|
0,
|
|
0,
|
|
0,
|
|
0
|
|
]
|
|
}
|
|
],
|
|
"version": "1.0"
|
|
} |