@pascal-app/core 0.1.12 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/events/bus.d.ts +22 -2
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/scene-registry/scene-registry.d.ts +6 -1
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/scene-registry.js +11 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +17 -12
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +135 -38
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +16 -8
- package/dist/hooks/spatial-grid/spatial-grid.d.ts +3 -3
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.js +2 -2
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +5 -0
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts +6 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/wall-spatial-grid.js +35 -10
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +1 -1
- package/dist/schema/collections.d.ts +11 -0
- package/dist/schema/collections.d.ts.map +1 -0
- package/dist/schema/collections.js +2 -0
- package/dist/schema/index.d.ts +11 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +11 -6
- package/dist/schema/nodes/ceiling.d.ts +1 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +2 -0
- package/dist/schema/nodes/door.d.ts +78 -0
- package/dist/schema/nodes/door.d.ts.map +1 -0
- package/dist/schema/nodes/door.js +67 -0
- package/dist/schema/nodes/item.d.ts +245 -2
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +72 -0
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/level.js +11 -1
- package/dist/schema/nodes/roof-segment.d.ts +51 -0
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment.js +36 -0
- package/dist/schema/nodes/roof.d.ts +1 -4
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +9 -16
- package/dist/schema/nodes/site.d.ts +52 -1
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +1 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +1 -0
- package/dist/schema/nodes/window.d.ts +40 -0
- package/dist/schema/nodes/window.d.ts.map +1 -0
- package/dist/schema/nodes/window.js +38 -0
- package/dist/schema/types.d.ts +241 -6
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +6 -0
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +23 -4
- package/dist/store/use-interactive.d.ts +18 -0
- package/dist/store/use-interactive.d.ts.map +1 -0
- package/dist/store/use-interactive.js +50 -0
- package/dist/store/use-scene.d.ts +10 -1
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +180 -57
- package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
- package/dist/systems/ceiling/ceiling-system.js +20 -0
- package/dist/systems/door/door-system.d.ts +2 -0
- package/dist/systems/door/door-system.d.ts.map +1 -0
- package/dist/systems/door/door-system.js +211 -0
- package/dist/systems/item/item-system.d.ts.map +1 -1
- package/dist/systems/item/item-system.js +10 -5
- package/dist/systems/roof/roof-system.d.ts +11 -3
- package/dist/systems/roof/roof-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-system.js +705 -210
- package/dist/systems/slab/slab-system.d.ts.map +1 -1
- package/dist/systems/slab/slab-system.js +18 -3
- package/dist/systems/wall/wall-mitering.js +2 -2
- package/dist/systems/wall/wall-system.d.ts.map +1 -1
- package/dist/systems/wall/wall-system.js +11 -13
- package/dist/systems/window/window-system.d.ts +2 -0
- package/dist/systems/window/window-system.d.ts.map +1 -0
- package/dist/systems/window/window-system.js +147 -0
- package/package.json +10 -8
|
@@ -1,4 +1,143 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
declare const toggleControlSchema: z.ZodObject<{
|
|
3
|
+
kind: z.ZodLiteral<"toggle">;
|
|
4
|
+
label: z.ZodOptional<z.ZodString>;
|
|
5
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
declare const sliderControlSchema: z.ZodObject<{
|
|
8
|
+
kind: z.ZodLiteral<"slider">;
|
|
9
|
+
label: z.ZodString;
|
|
10
|
+
min: z.ZodNumber;
|
|
11
|
+
max: z.ZodNumber;
|
|
12
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
14
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
15
|
+
slider: "slider";
|
|
16
|
+
stepper: "stepper";
|
|
17
|
+
dial: "dial";
|
|
18
|
+
}>>;
|
|
19
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
declare const temperatureControlSchema: z.ZodObject<{
|
|
22
|
+
kind: z.ZodLiteral<"temperature">;
|
|
23
|
+
label: z.ZodDefault<z.ZodString>;
|
|
24
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
27
|
+
C: "C";
|
|
28
|
+
F: "F";
|
|
29
|
+
}>>;
|
|
30
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
declare const controlSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
33
|
+
kind: z.ZodLiteral<"toggle">;
|
|
34
|
+
label: z.ZodOptional<z.ZodString>;
|
|
35
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"slider">;
|
|
38
|
+
label: z.ZodString;
|
|
39
|
+
min: z.ZodNumber;
|
|
40
|
+
max: z.ZodNumber;
|
|
41
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
43
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
44
|
+
slider: "slider";
|
|
45
|
+
stepper: "stepper";
|
|
46
|
+
dial: "dial";
|
|
47
|
+
}>>;
|
|
48
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
50
|
+
kind: z.ZodLiteral<"temperature">;
|
|
51
|
+
label: z.ZodDefault<z.ZodString>;
|
|
52
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
53
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
54
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
55
|
+
C: "C";
|
|
56
|
+
F: "F";
|
|
57
|
+
}>>;
|
|
58
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
59
|
+
}, z.core.$strip>], "kind">;
|
|
60
|
+
declare const animationEffectSchema: z.ZodObject<{
|
|
61
|
+
kind: z.ZodLiteral<"animation">;
|
|
62
|
+
clips: z.ZodObject<{
|
|
63
|
+
on: z.ZodOptional<z.ZodString>;
|
|
64
|
+
off: z.ZodOptional<z.ZodString>;
|
|
65
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
declare const lightEffectSchema: z.ZodObject<{
|
|
69
|
+
kind: z.ZodLiteral<"light">;
|
|
70
|
+
color: z.ZodDefault<z.ZodString>;
|
|
71
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
72
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
declare const effectSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
76
|
+
kind: z.ZodLiteral<"animation">;
|
|
77
|
+
clips: z.ZodObject<{
|
|
78
|
+
on: z.ZodOptional<z.ZodString>;
|
|
79
|
+
off: z.ZodOptional<z.ZodString>;
|
|
80
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
83
|
+
kind: z.ZodLiteral<"light">;
|
|
84
|
+
color: z.ZodDefault<z.ZodString>;
|
|
85
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
86
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
88
|
+
}, z.core.$strip>], "kind">;
|
|
89
|
+
declare const interactiveSchema: z.ZodObject<{
|
|
90
|
+
controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
91
|
+
kind: z.ZodLiteral<"toggle">;
|
|
92
|
+
label: z.ZodOptional<z.ZodString>;
|
|
93
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
94
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
95
|
+
kind: z.ZodLiteral<"slider">;
|
|
96
|
+
label: z.ZodString;
|
|
97
|
+
min: z.ZodNumber;
|
|
98
|
+
max: z.ZodNumber;
|
|
99
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
100
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
101
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
102
|
+
slider: "slider";
|
|
103
|
+
stepper: "stepper";
|
|
104
|
+
dial: "dial";
|
|
105
|
+
}>>;
|
|
106
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
108
|
+
kind: z.ZodLiteral<"temperature">;
|
|
109
|
+
label: z.ZodDefault<z.ZodString>;
|
|
110
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
111
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
112
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
113
|
+
C: "C";
|
|
114
|
+
F: "F";
|
|
115
|
+
}>>;
|
|
116
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
117
|
+
}, z.core.$strip>], "kind">>>;
|
|
118
|
+
effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
119
|
+
kind: z.ZodLiteral<"animation">;
|
|
120
|
+
clips: z.ZodObject<{
|
|
121
|
+
on: z.ZodOptional<z.ZodString>;
|
|
122
|
+
off: z.ZodOptional<z.ZodString>;
|
|
123
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
126
|
+
kind: z.ZodLiteral<"light">;
|
|
127
|
+
color: z.ZodDefault<z.ZodString>;
|
|
128
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
129
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
130
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
131
|
+
}, z.core.$strip>], "kind">>>;
|
|
132
|
+
}, z.core.$strip>;
|
|
133
|
+
export type ToggleControl = z.infer<typeof toggleControlSchema>;
|
|
134
|
+
export type SliderControl = z.infer<typeof sliderControlSchema>;
|
|
135
|
+
export type TemperatureControl = z.infer<typeof temperatureControlSchema>;
|
|
136
|
+
export type Control = z.infer<typeof controlSchema>;
|
|
137
|
+
export type AnimationEffect = z.infer<typeof animationEffectSchema>;
|
|
138
|
+
export type LightEffect = z.infer<typeof lightEffectSchema>;
|
|
139
|
+
export type Effect = z.infer<typeof effectSchema>;
|
|
140
|
+
export type Interactive = z.infer<typeof interactiveSchema>;
|
|
2
141
|
declare const assetSchema: z.ZodObject<{
|
|
3
142
|
id: z.ZodString;
|
|
4
143
|
category: z.ZodString;
|
|
@@ -7,13 +146,61 @@ declare const assetSchema: z.ZodObject<{
|
|
|
7
146
|
src: z.ZodString;
|
|
8
147
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
9
148
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
10
|
-
ceiling: "ceiling";
|
|
11
149
|
wall: "wall";
|
|
12
150
|
"wall-side": "wall-side";
|
|
151
|
+
ceiling: "ceiling";
|
|
13
152
|
}>>;
|
|
153
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
154
|
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
15
155
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
16
156
|
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
157
|
+
surface: z.ZodOptional<z.ZodObject<{
|
|
158
|
+
height: z.ZodNumber;
|
|
159
|
+
}, z.core.$strip>>;
|
|
160
|
+
interactive: z.ZodOptional<z.ZodObject<{
|
|
161
|
+
controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
162
|
+
kind: z.ZodLiteral<"toggle">;
|
|
163
|
+
label: z.ZodOptional<z.ZodString>;
|
|
164
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
165
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
166
|
+
kind: z.ZodLiteral<"slider">;
|
|
167
|
+
label: z.ZodString;
|
|
168
|
+
min: z.ZodNumber;
|
|
169
|
+
max: z.ZodNumber;
|
|
170
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
171
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
172
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
173
|
+
slider: "slider";
|
|
174
|
+
stepper: "stepper";
|
|
175
|
+
dial: "dial";
|
|
176
|
+
}>>;
|
|
177
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
178
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
179
|
+
kind: z.ZodLiteral<"temperature">;
|
|
180
|
+
label: z.ZodDefault<z.ZodString>;
|
|
181
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
182
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
183
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
184
|
+
C: "C";
|
|
185
|
+
F: "F";
|
|
186
|
+
}>>;
|
|
187
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
188
|
+
}, z.core.$strip>], "kind">>>;
|
|
189
|
+
effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
190
|
+
kind: z.ZodLiteral<"animation">;
|
|
191
|
+
clips: z.ZodObject<{
|
|
192
|
+
on: z.ZodOptional<z.ZodString>;
|
|
193
|
+
off: z.ZodOptional<z.ZodString>;
|
|
194
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
195
|
+
}, z.core.$strip>;
|
|
196
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
197
|
+
kind: z.ZodLiteral<"light">;
|
|
198
|
+
color: z.ZodDefault<z.ZodString>;
|
|
199
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
200
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
201
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
202
|
+
}, z.core.$strip>], "kind">>>;
|
|
203
|
+
}, z.core.$strip>>;
|
|
17
204
|
}, z.core.$strip>;
|
|
18
205
|
export type AssetInput = z.input<typeof assetSchema>;
|
|
19
206
|
export type Asset = z.infer<typeof assetSchema>;
|
|
@@ -37,12 +224,15 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
37
224
|
type: z.ZodDefault<z.ZodLiteral<"item">>;
|
|
38
225
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
39
226
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
227
|
+
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
40
228
|
side: z.ZodOptional<z.ZodEnum<{
|
|
41
229
|
front: "front";
|
|
42
230
|
back: "back";
|
|
43
231
|
}>>;
|
|
232
|
+
children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
|
|
44
233
|
wallId: z.ZodOptional<z.ZodString>;
|
|
45
234
|
wallT: z.ZodOptional<z.ZodNumber>;
|
|
235
|
+
collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
|
|
46
236
|
asset: z.ZodObject<{
|
|
47
237
|
id: z.ZodString;
|
|
48
238
|
category: z.ZodString;
|
|
@@ -51,15 +241,68 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
51
241
|
src: z.ZodString;
|
|
52
242
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
53
243
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
54
|
-
ceiling: "ceiling";
|
|
55
244
|
wall: "wall";
|
|
56
245
|
"wall-side": "wall-side";
|
|
246
|
+
ceiling: "ceiling";
|
|
57
247
|
}>>;
|
|
248
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
58
249
|
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
59
250
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
60
251
|
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
252
|
+
surface: z.ZodOptional<z.ZodObject<{
|
|
253
|
+
height: z.ZodNumber;
|
|
254
|
+
}, z.core.$strip>>;
|
|
255
|
+
interactive: z.ZodOptional<z.ZodObject<{
|
|
256
|
+
controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
257
|
+
kind: z.ZodLiteral<"toggle">;
|
|
258
|
+
label: z.ZodOptional<z.ZodString>;
|
|
259
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
260
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
261
|
+
kind: z.ZodLiteral<"slider">;
|
|
262
|
+
label: z.ZodString;
|
|
263
|
+
min: z.ZodNumber;
|
|
264
|
+
max: z.ZodNumber;
|
|
265
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
266
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
267
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
268
|
+
slider: "slider";
|
|
269
|
+
stepper: "stepper";
|
|
270
|
+
dial: "dial";
|
|
271
|
+
}>>;
|
|
272
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
273
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
274
|
+
kind: z.ZodLiteral<"temperature">;
|
|
275
|
+
label: z.ZodDefault<z.ZodString>;
|
|
276
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
277
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
278
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
279
|
+
C: "C";
|
|
280
|
+
F: "F";
|
|
281
|
+
}>>;
|
|
282
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
283
|
+
}, z.core.$strip>], "kind">>>;
|
|
284
|
+
effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
285
|
+
kind: z.ZodLiteral<"animation">;
|
|
286
|
+
clips: z.ZodObject<{
|
|
287
|
+
on: z.ZodOptional<z.ZodString>;
|
|
288
|
+
off: z.ZodOptional<z.ZodString>;
|
|
289
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
290
|
+
}, z.core.$strip>;
|
|
291
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
292
|
+
kind: z.ZodLiteral<"light">;
|
|
293
|
+
color: z.ZodDefault<z.ZodString>;
|
|
294
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
295
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
297
|
+
}, z.core.$strip>], "kind">>>;
|
|
298
|
+
}, z.core.$strip>>;
|
|
61
299
|
}, z.core.$strip>;
|
|
62
300
|
}, z.core.$strip>;
|
|
63
301
|
export type ItemNode = z.infer<typeof ItemNode>;
|
|
302
|
+
/**
|
|
303
|
+
* Returns the effective world-space dimensions of an item after applying its scale.
|
|
304
|
+
* Use this everywhere item.asset.dimensions is used for spatial calculations.
|
|
305
|
+
*/
|
|
306
|
+
export declare function getScaledDimensions(item: ItemNode): [number, number, number];
|
|
64
307
|
export {};
|
|
65
308
|
//# sourceMappingURL=item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,QAAA,MAAM,mBAAmB;;;;iBAIvB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;iBASvB,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAO5B,CAAA;AAEF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAIjB,CAAA;AAIF,QAAA,MAAM,qBAAqB;;;;;;;iBAOzB,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;;;iBAMrB,CAAA;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;2BAA2E,CAAA;AAI7F,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBf,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI5E"}
|
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
import dedent from 'dedent';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
// --- Control descriptors ---
|
|
5
|
+
const toggleControlSchema = z.object({
|
|
6
|
+
kind: z.literal('toggle'),
|
|
7
|
+
label: z.string().optional(),
|
|
8
|
+
default: z.boolean().optional(),
|
|
9
|
+
});
|
|
10
|
+
const sliderControlSchema = z.object({
|
|
11
|
+
kind: z.literal('slider'),
|
|
12
|
+
label: z.string(),
|
|
13
|
+
min: z.number(),
|
|
14
|
+
max: z.number(),
|
|
15
|
+
step: z.number().default(1),
|
|
16
|
+
unit: z.string().optional(),
|
|
17
|
+
displayMode: z.enum(['slider', 'stepper', 'dial']).default('slider'),
|
|
18
|
+
default: z.number().optional(),
|
|
19
|
+
});
|
|
20
|
+
const temperatureControlSchema = z.object({
|
|
21
|
+
kind: z.literal('temperature'),
|
|
22
|
+
label: z.string().default('Temperature'),
|
|
23
|
+
min: z.number().default(16),
|
|
24
|
+
max: z.number().default(30),
|
|
25
|
+
unit: z.enum(['C', 'F']).default('C'),
|
|
26
|
+
default: z.number().optional(),
|
|
27
|
+
});
|
|
28
|
+
const controlSchema = z.discriminatedUnion('kind', [
|
|
29
|
+
toggleControlSchema,
|
|
30
|
+
sliderControlSchema,
|
|
31
|
+
temperatureControlSchema,
|
|
32
|
+
]);
|
|
33
|
+
// --- Effect descriptors ---
|
|
34
|
+
const animationEffectSchema = z.object({
|
|
35
|
+
kind: z.literal('animation'),
|
|
36
|
+
clips: z.object({
|
|
37
|
+
on: z.string().optional(),
|
|
38
|
+
off: z.string().optional(),
|
|
39
|
+
loop: z.string().optional(),
|
|
40
|
+
}),
|
|
41
|
+
});
|
|
42
|
+
const lightEffectSchema = z.object({
|
|
43
|
+
kind: z.literal('light'),
|
|
44
|
+
color: z.string().default('#ffffff'),
|
|
45
|
+
intensityRange: z.tuple([z.number(), z.number()]),
|
|
46
|
+
distance: z.number().optional(),
|
|
47
|
+
offset: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
48
|
+
});
|
|
49
|
+
const effectSchema = z.discriminatedUnion('kind', [animationEffectSchema, lightEffectSchema]);
|
|
50
|
+
// --- Interactive descriptor ---
|
|
51
|
+
const interactiveSchema = z.object({
|
|
52
|
+
controls: z.array(controlSchema).default([]),
|
|
53
|
+
effects: z.array(effectSchema).default([]),
|
|
54
|
+
});
|
|
4
55
|
const assetSchema = z.object({
|
|
5
56
|
id: z.string(),
|
|
6
57
|
category: z.string(),
|
|
@@ -9,20 +60,31 @@ const assetSchema = z.object({
|
|
|
9
60
|
src: z.string(),
|
|
10
61
|
dimensions: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]), // [w, h, d]
|
|
11
62
|
attachTo: z.enum(['wall', 'wall-side', 'ceiling']).optional(),
|
|
63
|
+
tags: z.array(z.string()).optional(),
|
|
12
64
|
// These are "Corrective" transforms to normalize the GLB
|
|
13
65
|
offset: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
14
66
|
rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
15
67
|
scale: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]),
|
|
68
|
+
surface: z
|
|
69
|
+
.object({
|
|
70
|
+
height: z.number(), // where things rest
|
|
71
|
+
})
|
|
72
|
+
.optional(), // undefined = can't place things on it
|
|
73
|
+
interactive: interactiveSchema.optional(),
|
|
16
74
|
});
|
|
17
75
|
export const ItemNode = BaseNode.extend({
|
|
18
76
|
id: objectId('item'),
|
|
19
77
|
type: nodeType('item'),
|
|
20
78
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
21
79
|
rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
80
|
+
scale: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]),
|
|
22
81
|
side: z.enum(['front', 'back']).optional(),
|
|
82
|
+
children: z.array(objectId('item')).default([]),
|
|
23
83
|
// Wall attachment properties (only used when asset.attachTo is "wall" or "wall-side")
|
|
24
84
|
wallId: z.string().optional(),
|
|
25
85
|
wallT: z.number().optional(), // 0-1 parametric position along wall
|
|
86
|
+
// Denormalized references to collections this node belongs to
|
|
87
|
+
collectionIds: z.array(z.custom()).optional(),
|
|
26
88
|
asset: assetSchema,
|
|
27
89
|
}).describe(dedent `Item node - used to represent a item in the building
|
|
28
90
|
- position: position in level coordinate system (or parent coordinate system if attached)
|
|
@@ -35,4 +97,14 @@ export const ItemNode = BaseNode.extend({
|
|
|
35
97
|
- offset: corrective position offset for the model
|
|
36
98
|
- rotation: corrective rotation for the model
|
|
37
99
|
- scale: corrective scale for the model
|
|
100
|
+
- tags: tags associated with the item
|
|
38
101
|
`);
|
|
102
|
+
/**
|
|
103
|
+
* Returns the effective world-space dimensions of an item after applying its scale.
|
|
104
|
+
* Use this everywhere item.asset.dimensions is used for spatial calculations.
|
|
105
|
+
*/
|
|
106
|
+
export function getScaledDimensions(item) {
|
|
107
|
+
const [w, h, d] = item.asset.dimensions;
|
|
108
|
+
const [sx, sy, sz] = item.scale;
|
|
109
|
+
return [w * sx, h * sy, d * sz];
|
|
110
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;iBAwBrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
|
|
@@ -11,7 +11,17 @@ import { ZoneNode } from './zone';
|
|
|
11
11
|
export const LevelNode = BaseNode.extend({
|
|
12
12
|
id: objectId('level'),
|
|
13
13
|
type: nodeType('level'),
|
|
14
|
-
children: z
|
|
14
|
+
children: z
|
|
15
|
+
.array(z.union([
|
|
16
|
+
WallNode.shape.id,
|
|
17
|
+
ZoneNode.shape.id,
|
|
18
|
+
SlabNode.shape.id,
|
|
19
|
+
CeilingNode.shape.id,
|
|
20
|
+
RoofNode.shape.id,
|
|
21
|
+
ScanNode.shape.id,
|
|
22
|
+
GuideNode.shape.id,
|
|
23
|
+
]))
|
|
24
|
+
.default([]),
|
|
15
25
|
// Specific props
|
|
16
26
|
level: z.number().default(0),
|
|
17
27
|
}).describe(dedent `
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const RoofType: z.ZodEnum<{
|
|
3
|
+
hip: "hip";
|
|
4
|
+
gable: "gable";
|
|
5
|
+
shed: "shed";
|
|
6
|
+
gambrel: "gambrel";
|
|
7
|
+
dutch: "dutch";
|
|
8
|
+
mansard: "mansard";
|
|
9
|
+
flat: "flat";
|
|
10
|
+
}>;
|
|
11
|
+
export type RoofType = z.infer<typeof RoofType>;
|
|
12
|
+
export declare const RoofSegmentNode: z.ZodObject<{
|
|
13
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
14
|
+
name: z.ZodOptional<z.ZodString>;
|
|
15
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
16
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
17
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
18
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
19
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
20
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
21
|
+
perspective: "perspective";
|
|
22
|
+
orthographic: "orthographic";
|
|
23
|
+
}>>;
|
|
24
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
28
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>;
|
|
29
|
+
type: z.ZodDefault<z.ZodLiteral<"roof-segment">>;
|
|
30
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
31
|
+
rotation: z.ZodDefault<z.ZodNumber>;
|
|
32
|
+
roofType: z.ZodDefault<z.ZodEnum<{
|
|
33
|
+
hip: "hip";
|
|
34
|
+
gable: "gable";
|
|
35
|
+
shed: "shed";
|
|
36
|
+
gambrel: "gambrel";
|
|
37
|
+
dutch: "dutch";
|
|
38
|
+
mansard: "mansard";
|
|
39
|
+
flat: "flat";
|
|
40
|
+
}>>;
|
|
41
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
depth: z.ZodDefault<z.ZodNumber>;
|
|
43
|
+
wallHeight: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
roofHeight: z.ZodDefault<z.ZodNumber>;
|
|
45
|
+
wallThickness: z.ZodDefault<z.ZodNumber>;
|
|
46
|
+
deckThickness: z.ZodDefault<z.ZodNumber>;
|
|
47
|
+
overhang: z.ZodDefault<z.ZodNumber>;
|
|
48
|
+
shingleThickness: z.ZodDefault<z.ZodNumber>;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
export type RoofSegmentNode = z.infer<typeof RoofSegmentNode>;
|
|
51
|
+
//# sourceMappingURL=roof-segment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roof-segment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof-segment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;EAA0E,CAAA;AAE/F,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
export const RoofType = z.enum(['hip', 'gable', 'shed', 'gambrel', 'dutch', 'mansard', 'flat']);
|
|
5
|
+
export const RoofSegmentNode = BaseNode.extend({
|
|
6
|
+
id: objectId('rseg'),
|
|
7
|
+
type: nodeType('roof-segment'),
|
|
8
|
+
// Position relative to parent roof group
|
|
9
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
10
|
+
// Rotation around Y axis in radians
|
|
11
|
+
rotation: z.number().default(0),
|
|
12
|
+
// Roof shape type
|
|
13
|
+
roofType: RoofType.default('gable'),
|
|
14
|
+
// Footprint dimensions
|
|
15
|
+
width: z.number().default(8),
|
|
16
|
+
depth: z.number().default(6),
|
|
17
|
+
// Vertical dimensions
|
|
18
|
+
wallHeight: z.number().default(0.5),
|
|
19
|
+
roofHeight: z.number().default(2.5),
|
|
20
|
+
// Structure thicknesses
|
|
21
|
+
wallThickness: z.number().default(0.1),
|
|
22
|
+
deckThickness: z.number().default(0.1),
|
|
23
|
+
overhang: z.number().default(0.3),
|
|
24
|
+
shingleThickness: z.number().default(0.05),
|
|
25
|
+
}).describe(dedent `
|
|
26
|
+
Roof segment node - an individual roof module within a roof group.
|
|
27
|
+
Each segment generates a complete architectural volume (walls + roof).
|
|
28
|
+
Multiple segments can be combined to form complex roof shapes.
|
|
29
|
+
- roofType: hip, gable, shed, gambrel, dutch, mansard, flat
|
|
30
|
+
- width/depth: footprint dimensions
|
|
31
|
+
- wallHeight: height of walls below the roof
|
|
32
|
+
- roofHeight: height of the roof peak above the walls
|
|
33
|
+
- wallThickness/deckThickness: structural thicknesses
|
|
34
|
+
- overhang: eave overhang distance
|
|
35
|
+
- shingleThickness: outer shingle layer thickness
|
|
36
|
+
`);
|
|
@@ -19,10 +19,7 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
19
19
|
type: z.ZodDefault<z.ZodLiteral<"roof">>;
|
|
20
20
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
21
21
|
rotation: z.ZodDefault<z.ZodNumber>;
|
|
22
|
-
|
|
23
|
-
height: z.ZodDefault<z.ZodNumber>;
|
|
24
|
-
leftWidth: z.ZodDefault<z.ZodNumber>;
|
|
25
|
-
rightWidth: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>>>;
|
|
26
23
|
}, z.core.$strip>;
|
|
27
24
|
export type RoofNode = z.infer<typeof RoofNode>;
|
|
28
25
|
//# sourceMappingURL=roof.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roof.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"roof.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;iBAkBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import dedent from 'dedent';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { RoofSegmentNode } from './roof-segment';
|
|
4
5
|
export const RoofNode = BaseNode.extend({
|
|
5
6
|
id: objectId('roof'),
|
|
6
7
|
type: nodeType('roof'),
|
|
7
|
-
// Position of the roof center
|
|
8
|
+
// Position of the roof group center
|
|
8
9
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
9
10
|
// Rotation around Y axis in radians
|
|
10
11
|
rotation: z.number().default(0),
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
// Height of the roof peak from the base
|
|
14
|
-
height: z.number().default(1.5),
|
|
15
|
-
// Width of the left slope (in meters, measured horizontally from ridge)
|
|
16
|
-
leftWidth: z.number().default(1.5),
|
|
17
|
-
// Width of the right slope (in meters, measured horizontally from ridge)
|
|
18
|
-
rightWidth: z.number().default(1.5),
|
|
12
|
+
// Child roof segment IDs
|
|
13
|
+
children: z.array(RoofSegmentNode.shape.id).default([]),
|
|
19
14
|
}).describe(dedent `
|
|
20
|
-
Roof node -
|
|
21
|
-
|
|
15
|
+
Roof node - a container for roof segments.
|
|
16
|
+
Acts as a group that holds one or more RoofSegmentNodes.
|
|
17
|
+
When not being edited, segments are visually combined into a single solid.
|
|
18
|
+
- position: center position of the roof group
|
|
22
19
|
- rotation: rotation around Y axis
|
|
23
|
-
-
|
|
24
|
-
- height: height of the roof peak
|
|
25
|
-
- leftWidth: horizontal width of the left slope (from ridge to eave)
|
|
26
|
-
- rightWidth: horizontal width of the right slope (from ridge to eave)
|
|
27
|
-
Total width = leftWidth + rightWidth
|
|
20
|
+
- children: array of RoofSegmentNode IDs
|
|
28
21
|
`);
|
|
@@ -62,12 +62,15 @@ export declare const SiteNode: z.ZodObject<{
|
|
|
62
62
|
type: z.ZodDefault<z.ZodLiteral<"item">>;
|
|
63
63
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
64
64
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
65
|
+
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
65
66
|
side: z.ZodOptional<z.ZodEnum<{
|
|
66
67
|
front: "front";
|
|
67
68
|
back: "back";
|
|
68
69
|
}>>;
|
|
70
|
+
children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
|
|
69
71
|
wallId: z.ZodOptional<z.ZodString>;
|
|
70
72
|
wallT: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
|
|
71
74
|
asset: z.ZodObject<{
|
|
72
75
|
id: z.ZodString;
|
|
73
76
|
category: z.ZodString;
|
|
@@ -76,13 +79,61 @@ export declare const SiteNode: z.ZodObject<{
|
|
|
76
79
|
src: z.ZodString;
|
|
77
80
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
78
81
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
79
|
-
ceiling: "ceiling";
|
|
80
82
|
wall: "wall";
|
|
81
83
|
"wall-side": "wall-side";
|
|
84
|
+
ceiling: "ceiling";
|
|
82
85
|
}>>;
|
|
86
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
87
|
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
84
88
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
85
89
|
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
90
|
+
surface: z.ZodOptional<z.ZodObject<{
|
|
91
|
+
height: z.ZodNumber;
|
|
92
|
+
}, z.core.$strip>>;
|
|
93
|
+
interactive: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
95
|
+
kind: z.ZodLiteral<"toggle">;
|
|
96
|
+
label: z.ZodOptional<z.ZodString>;
|
|
97
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
98
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
99
|
+
kind: z.ZodLiteral<"slider">;
|
|
100
|
+
label: z.ZodString;
|
|
101
|
+
min: z.ZodNumber;
|
|
102
|
+
max: z.ZodNumber;
|
|
103
|
+
step: z.ZodDefault<z.ZodNumber>;
|
|
104
|
+
unit: z.ZodOptional<z.ZodString>;
|
|
105
|
+
displayMode: z.ZodDefault<z.ZodEnum<{
|
|
106
|
+
slider: "slider";
|
|
107
|
+
stepper: "stepper";
|
|
108
|
+
dial: "dial";
|
|
109
|
+
}>>;
|
|
110
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
112
|
+
kind: z.ZodLiteral<"temperature">;
|
|
113
|
+
label: z.ZodDefault<z.ZodString>;
|
|
114
|
+
min: z.ZodDefault<z.ZodNumber>;
|
|
115
|
+
max: z.ZodDefault<z.ZodNumber>;
|
|
116
|
+
unit: z.ZodDefault<z.ZodEnum<{
|
|
117
|
+
C: "C";
|
|
118
|
+
F: "F";
|
|
119
|
+
}>>;
|
|
120
|
+
default: z.ZodOptional<z.ZodNumber>;
|
|
121
|
+
}, z.core.$strip>], "kind">>>;
|
|
122
|
+
effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
123
|
+
kind: z.ZodLiteral<"animation">;
|
|
124
|
+
clips: z.ZodObject<{
|
|
125
|
+
on: z.ZodOptional<z.ZodString>;
|
|
126
|
+
off: z.ZodOptional<z.ZodString>;
|
|
127
|
+
loop: z.ZodOptional<z.ZodString>;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
130
|
+
kind: z.ZodLiteral<"light">;
|
|
131
|
+
color: z.ZodDefault<z.ZodString>;
|
|
132
|
+
intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
133
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
135
|
+
}, z.core.$strip>], "kind">>>;
|
|
136
|
+
}, z.core.$strip>>;
|
|
86
137
|
}, z.core.$strip>;
|
|
87
138
|
}, z.core.$strip>], "type">>>;
|
|
88
139
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
|