blue.atroom.room.layout
Schema Diff
+147 -40
Compatibility Analysis
Breaking Changes Detected
27 breaking changes, 57 non-breaking changes.
Breaking Changes (27)
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.createdAt" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.model" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.name" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items.lang" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items.value" }
- RemovedVertex RemovedVertex { vertex_id: "blue.atroom.room.object:body.scale" }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object", tgt: "blue.atroom.room.object:body", kind: "record-schema", name: None }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.createdAt", kind: "prop", name: Some("createdAt") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.model", kind: "prop", name: Some("model") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.nameLangs", kind: "prop", name: Some("nameLangs") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.scale", kind: "prop", name: Some("scale") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body.nameLangs", tgt: "blue.atroom.room.object:body.nameLangs:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body.nameLangs:items", tgt: "blue.atroom.room.object:body.nameLangs:items.lang", kind: "prop", name: Some("lang") }
- RemovedEdge RemovedEdge { src: "blue.atroom.room.object:body.nameLangs:items", tgt: "blue.atroom.room.object:body.nameLangs:items.value", kind: "prop", name: Some("value") }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.green", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.green", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.red", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.red", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.blue", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.blue", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout:body.size", sort: "minimum", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout:body.size", sort: "maximum", value: "20000" }
Non-Breaking Changes (57)
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#color" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#color.blue" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#color.green" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#color.red" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#floor" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#floor.surface" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.object" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.position" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.position:items" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.rotation" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.rotation:items" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#surface" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#surface.color" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#surface.texture" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#surface.textureTiling" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#surface.textureTiling:items" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#wall" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#wall.height" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#wall.surface" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout#wall.thickness" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.createdAt" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.floor" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.furnishings" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.furnishings:items" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.size" }
- AddedVertex AddedVertex { vertex_id: "blue.atroom.room.layout:body.wall" }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout", tgt: "blue.atroom.room.layout:body", kind: "record-schema", name: None }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.blue", kind: "prop", name: Some("blue") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.green", kind: "prop", name: Some("green") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.red", kind: "prop", name: Some("red") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#floor", tgt: "blue.atroom.room.layout#floor.surface", kind: "prop", name: Some("surface") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.object", kind: "prop", name: Some("object") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.position", kind: "prop", name: Some("position") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.rotation", kind: "prop", name: Some("rotation") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#furnishing.position", tgt: "blue.atroom.room.layout#furnishing.position:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#furnishing.rotation", tgt: "blue.atroom.room.layout#furnishing.rotation:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.color", kind: "prop", name: Some("color") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.texture", kind: "prop", name: Some("texture") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.textureTiling", kind: "prop", name: Some("textureTiling") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#surface.textureTiling", tgt: "blue.atroom.room.layout#surface.textureTiling:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.height", kind: "prop", name: Some("height") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.surface", kind: "prop", name: Some("surface") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.thickness", kind: "prop", name: Some("thickness") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.createdAt", kind: "prop", name: Some("createdAt") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.floor", kind: "prop", name: Some("floor") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.furnishings", kind: "prop", name: Some("furnishings") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.size", kind: "prop", name: Some("size") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.wall", kind: "prop", name: Some("wall") }
- AddedEdge AddedEdge { src: "blue.atroom.room.layout:body.furnishings", tgt: "blue.atroom.room.layout:body.furnishings:items", kind: "items", name: None }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.name", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.nameLangs:items.lang", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.scale", sort: "minimum" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.scale", sort: "maximum" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.nameLangs:items.value", sort: "maxLength" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "blue.atroom.room.object" }RemovedVertex { vertex_id: "blue.atroom.room.object:body" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.createdAt" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.model" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.name" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items.lang" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.nameLangs:items.value" }RemovedVertex { vertex_id: "blue.atroom.room.object:body.scale" }
Added Elements
AddedVertex { vertex_id: "blue.atroom.room.layout" }AddedVertex { vertex_id: "blue.atroom.room.layout#color" }AddedVertex { vertex_id: "blue.atroom.room.layout#color.blue" }AddedVertex { vertex_id: "blue.atroom.room.layout#color.green" }AddedVertex { vertex_id: "blue.atroom.room.layout#color.red" }AddedVertex { vertex_id: "blue.atroom.room.layout#floor" }AddedVertex { vertex_id: "blue.atroom.room.layout#floor.surface" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.object" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.position" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.position:items" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.rotation" }AddedVertex { vertex_id: "blue.atroom.room.layout#furnishing.rotation:items" }AddedVertex { vertex_id: "blue.atroom.room.layout#surface" }AddedVertex { vertex_id: "blue.atroom.room.layout#surface.color" }AddedVertex { vertex_id: "blue.atroom.room.layout#surface.texture" }AddedVertex { vertex_id: "blue.atroom.room.layout#surface.textureTiling" }AddedVertex { vertex_id: "blue.atroom.room.layout#surface.textureTiling:items" }AddedVertex { vertex_id: "blue.atroom.room.layout#wall" }AddedVertex { vertex_id: "blue.atroom.room.layout#wall.height" }AddedVertex { vertex_id: "blue.atroom.room.layout#wall.surface" }AddedVertex { vertex_id: "blue.atroom.room.layout#wall.thickness" }AddedVertex { vertex_id: "blue.atroom.room.layout:body" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.createdAt" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.floor" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.furnishings" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.furnishings:items" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.size" }AddedVertex { vertex_id: "blue.atroom.room.layout:body.wall" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.red", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.red", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout:body.size", sort: "maximum", value: "20000" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout:body.size", sort: "minimum", value: "1000" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.blue", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.blue", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.green", sort: "maximum", value: "255" }
- ConstraintAdded ConstraintAdded { vertex_id: "blue.atroom.room.layout#color.green", sort: "minimum", value: "0" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.nameLangs:items.lang", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.scale", sort: "maximum" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.scale", sort: "minimum" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.name", sort: "maxLength" }
- ConstraintRemoved ConstraintRemoved { vertex_id: "blue.atroom.room.object:body.nameLangs:items.value", sort: "maxLength" }
Additional Notes
- Breaking: RemovedEdge { src: "blue.atroom.room.object", tgt: "blue.atroom.room.object:body", kind: "record-schema", name: None }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.createdAt", kind: "prop", name: Some("createdAt") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.model", kind: "prop", name: Some("model") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.nameLangs", kind: "prop", name: Some("nameLangs") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body", tgt: "blue.atroom.room.object:body.scale", kind: "prop", name: Some("scale") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body.nameLangs", tgt: "blue.atroom.room.object:body.nameLangs:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body.nameLangs:items", tgt: "blue.atroom.room.object:body.nameLangs:items.lang", kind: "prop", name: Some("lang") }
- Breaking: RemovedEdge { src: "blue.atroom.room.object:body.nameLangs:items", tgt: "blue.atroom.room.object:body.nameLangs:items.value", kind: "prop", name: Some("value") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout", tgt: "blue.atroom.room.layout:body", kind: "record-schema", name: None }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.blue", kind: "prop", name: Some("blue") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.green", kind: "prop", name: Some("green") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#color", tgt: "blue.atroom.room.layout#color.red", kind: "prop", name: Some("red") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#floor", tgt: "blue.atroom.room.layout#floor.surface", kind: "prop", name: Some("surface") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.object", kind: "prop", name: Some("object") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.position", kind: "prop", name: Some("position") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#furnishing", tgt: "blue.atroom.room.layout#furnishing.rotation", kind: "prop", name: Some("rotation") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#furnishing.position", tgt: "blue.atroom.room.layout#furnishing.position:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#furnishing.rotation", tgt: "blue.atroom.room.layout#furnishing.rotation:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.color", kind: "prop", name: Some("color") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.texture", kind: "prop", name: Some("texture") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#surface", tgt: "blue.atroom.room.layout#surface.textureTiling", kind: "prop", name: Some("textureTiling") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#surface.textureTiling", tgt: "blue.atroom.room.layout#surface.textureTiling:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.height", kind: "prop", name: Some("height") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.surface", kind: "prop", name: Some("surface") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout#wall", tgt: "blue.atroom.room.layout#wall.thickness", kind: "prop", name: Some("thickness") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.createdAt", kind: "prop", name: Some("createdAt") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.floor", kind: "prop", name: Some("floor") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.furnishings", kind: "prop", name: Some("furnishings") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.size", kind: "prop", name: Some("size") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body", tgt: "blue.atroom.room.layout:body.wall", kind: "prop", name: Some("wall") }
- Non-breaking: AddedEdge { src: "blue.atroom.room.layout:body.furnishings", tgt: "blue.atroom.room.layout:body.furnishings:items", kind: "items", name: None }
1
1
{
2
-
"id": "blue.atroom.room.object",
2
+
"id": "blue.atroom.room.layout",
3
3
"defs": {
4
4
"main": {
5
-
"key": "tid",
5
+
"key": "any",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
-
"name",
11
-
"model",
12
-
"scale",
10
+
"size",
11
+
"floor",
12
+
"wall",
13
+
"furnishings",
13
14
"createdAt"
14
15
],
15
16
"properties": {
16
-
"name": {
17
-
"type": "string",
18
-
"maxLength": 100,
19
-
"description": "Display name of the object."
17
+
"size": {
18
+
"type": "integer",
19
+
"maximum": 20000,
20
+
"minimum": 1000,
21
+
"description": "Room size in millimeters (square room)."
20
22
},
21
-
"model": {
22
-
"type": "blob",
23
-
"accept": [
24
-
"model/gltf-binary"
25
-
],
26
-
"maxSize": 10485760,
27
-
"description": "GLB (glTF Binary) model file."
23
+
"wall": {
24
+
"ref": "#wall",
25
+
"type": "ref"
28
26
},
29
-
"scale": {
30
-
"type": "integer",
31
-
"maximum": 1000,
32
-
"minimum": 1,
33
-
"description": "Scale factor in percent (100 = 1.0x)."
27
+
"floor": {
28
+
"ref": "#floor",
29
+
"type": "ref"
34
30
},
35
31
"createdAt": {
36
32
"type": "string",
37
33
"format": "datetime"
38
34
},
39
-
"nameLangs": {
35
+
"furnishings": {
40
36
"type": "array",
41
37
"items": {
42
-
"type": "object",
43
-
"required": [
44
-
"lang",
45
-
"value"
46
-
],
47
-
"properties": {
48
-
"lang": {
49
-
"type": "string",
50
-
"maxLength": 16,
51
-
"description": "BCP-47 language tag."
52
-
},
53
-
"value": {
54
-
"type": "string",
55
-
"maxLength": 100
56
-
}
57
-
}
38
+
"ref": "#furnishing",
39
+
"type": "ref"
58
40
},
59
-
"description": "Localized display names."
41
+
"maxLength": 100
60
42
}
61
43
}
62
44
},
63
-
"description": "A 3D object that can be placed in a room."
45
+
"description": "A room layout with placed objects."
46
+
},
47
+
"wall": {
48
+
"type": "object",
49
+
"required": [
50
+
"height",
51
+
"thickness",
52
+
"surface"
53
+
],
54
+
"properties": {
55
+
"height": {
56
+
"type": "integer",
57
+
"description": "Wall height in millimeters."
58
+
},
59
+
"surface": {
60
+
"ref": "#surface",
61
+
"type": "ref"
62
+
},
63
+
"thickness": {
64
+
"type": "integer",
65
+
"description": "Wall thickness in millimeters."
66
+
}
67
+
},
68
+
"description": "Wall configuration."
69
+
},
70
+
"color": {
71
+
"type": "object",
72
+
"required": [
73
+
"red",
74
+
"green",
75
+
"blue"
76
+
],
77
+
"properties": {
78
+
"red": {
79
+
"type": "integer",
80
+
"maximum": 255,
81
+
"minimum": 0
82
+
},
83
+
"blue": {
84
+
"type": "integer",
85
+
"maximum": 255,
86
+
"minimum": 0
87
+
},
88
+
"green": {
89
+
"type": "integer",
90
+
"maximum": 255,
91
+
"minimum": 0
92
+
}
93
+
},
94
+
"description": "RGB color with 8-bit channels."
95
+
},
96
+
"floor": {
97
+
"type": "object",
98
+
"required": [
99
+
"surface"
100
+
],
101
+
"properties": {
102
+
"surface": {
103
+
"ref": "#surface",
104
+
"type": "ref"
105
+
}
106
+
}
107
+
},
108
+
"surface": {
109
+
"type": "object",
110
+
"required": [
111
+
"color"
112
+
],
113
+
"properties": {
114
+
"color": {
115
+
"ref": "#color",
116
+
"type": "ref"
117
+
},
118
+
"texture": {
119
+
"type": "blob",
120
+
"accept": [
121
+
"image/png",
122
+
"image/jpeg"
123
+
],
124
+
"maxSize": 1048576,
125
+
"description": "Texture image."
126
+
},
127
+
"textureTiling": {
128
+
"type": "array",
129
+
"items": {
130
+
"type": "integer"
131
+
},
132
+
"maxLength": 2,
133
+
"minLength": 2,
134
+
"description": "Texture tiling [u, v]."
135
+
}
136
+
}
137
+
},
138
+
"furnishing": {
139
+
"type": "object",
140
+
"required": [
141
+
"object",
142
+
"position",
143
+
"rotation"
144
+
],
145
+
"properties": {
146
+
"object": {
147
+
"ref": "com.atproto.repo.strongRef",
148
+
"type": "ref",
149
+
"description": "Strong reference to a blue.atroom.room.object record."
150
+
},
151
+
"position": {
152
+
"type": "array",
153
+
"items": {
154
+
"type": "integer"
155
+
},
156
+
"maxLength": 3,
157
+
"minLength": 3,
158
+
"description": "Position [x, y, z] in millimeters."
159
+
},
160
+
"rotation": {
161
+
"type": "array",
162
+
"items": {
163
+
"type": "integer"
164
+
},
165
+
"maxLength": 3,
166
+
"minLength": 3,
167
+
"description": "Euler rotation [x, y, z] in degrees."
168
+
}
169
+
},
170
+
"description": "A placed object in the room."
64
171
}
65
172
},
66
173
"$type": "com.atproto.lexicon.schema",
67
174
"lexicon": 1
68
175
}