@snaptrude/plugin-core 0.3.0 → 0.5.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.
Files changed (266) hide show
  1. package/AGENTS.md +130 -48
  2. package/CHANGELOG.md +111 -0
  3. package/api-manifest.full.json +3999 -0
  4. package/api-manifest.json +3845 -0
  5. package/dist/api/core/buildings.d.ts +427 -0
  6. package/dist/api/core/buildings.d.ts.map +1 -0
  7. package/dist/api/core/comment/index.d.ts +230 -0
  8. package/dist/api/core/comment/index.d.ts.map +1 -0
  9. package/dist/api/core/geom/create/index.d.ts +247 -0
  10. package/dist/api/core/geom/create/index.d.ts.map +1 -0
  11. package/dist/api/core/geom/delete/index.d.ts +72 -0
  12. package/dist/api/core/geom/delete/index.d.ts.map +1 -0
  13. package/dist/api/core/geom/index.d.ts +24 -23
  14. package/dist/api/core/geom/index.d.ts.map +1 -1
  15. package/dist/api/core/geom/query/arc.d.ts +169 -0
  16. package/dist/api/core/geom/query/arc.d.ts.map +1 -0
  17. package/dist/api/core/geom/query/brep.d.ts +402 -0
  18. package/dist/api/core/geom/query/brep.d.ts.map +1 -0
  19. package/dist/api/core/geom/query/circle.d.ts +378 -0
  20. package/dist/api/core/geom/query/circle.d.ts.map +1 -0
  21. package/dist/api/core/geom/query/contour.d.ts +450 -0
  22. package/dist/api/core/geom/query/contour.d.ts.map +1 -0
  23. package/dist/api/core/geom/query/curve.d.ts +918 -0
  24. package/dist/api/core/geom/query/curve.d.ts.map +1 -0
  25. package/dist/api/core/geom/query/edge.d.ts +128 -0
  26. package/dist/api/core/geom/query/edge.d.ts.map +1 -0
  27. package/dist/api/core/geom/query/face.d.ts +363 -0
  28. package/dist/api/core/geom/query/face.d.ts.map +1 -0
  29. package/dist/api/core/geom/query/halfedge.d.ts +206 -0
  30. package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
  31. package/dist/api/core/geom/query/index.d.ts +61 -0
  32. package/dist/api/core/geom/query/index.d.ts.map +1 -0
  33. package/dist/api/core/geom/query/profile.d.ts +410 -0
  34. package/dist/api/core/geom/query/profile.d.ts.map +1 -0
  35. package/dist/api/core/geom/query/vertex.d.ts +187 -0
  36. package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
  37. package/dist/api/core/geom/update/contour.d.ts +272 -0
  38. package/dist/api/core/geom/update/contour.d.ts.map +1 -0
  39. package/dist/api/core/geom/update/curve.d.ts +180 -0
  40. package/dist/api/core/geom/update/curve.d.ts.map +1 -0
  41. package/dist/api/core/geom/update/index.d.ts +27 -0
  42. package/dist/api/core/geom/update/index.d.ts.map +1 -0
  43. package/dist/api/core/geom/update/profile.d.ts +329 -0
  44. package/dist/api/core/geom/update/profile.d.ts.map +1 -0
  45. package/dist/api/core/groups.d.ts +485 -0
  46. package/dist/api/core/groups.d.ts.map +1 -0
  47. package/dist/api/core/history/index.d.ts +78 -0
  48. package/dist/api/core/history/index.d.ts.map +1 -0
  49. package/dist/api/core/index.d.ts +46 -1
  50. package/dist/api/core/index.d.ts.map +1 -1
  51. package/dist/api/core/layers.d.ts +402 -0
  52. package/dist/api/core/layers.d.ts.map +1 -0
  53. package/dist/api/core/math/quat.d.ts +111 -128
  54. package/dist/api/core/math/quat.d.ts.map +1 -1
  55. package/dist/api/core/math/vec3.d.ts +120 -102
  56. package/dist/api/core/math/vec3.d.ts.map +1 -1
  57. package/dist/api/core/project/index.d.ts +399 -0
  58. package/dist/api/core/project/index.d.ts.map +1 -0
  59. package/dist/api/core/tags.d.ts +755 -0
  60. package/dist/api/core/tags.d.ts.map +1 -0
  61. package/dist/api/core/units/index.d.ts +175 -0
  62. package/dist/api/core/units/index.d.ts.map +1 -0
  63. package/dist/api/core/zoom/index.d.ts +45 -0
  64. package/dist/api/core/zoom/index.d.ts.map +1 -0
  65. package/dist/api/design/boolean/index.d.ts +168 -0
  66. package/dist/api/design/boolean/index.d.ts.map +1 -0
  67. package/dist/api/design/create/index.d.ts +828 -0
  68. package/dist/api/design/create/index.d.ts.map +1 -0
  69. package/dist/api/design/delete/index.d.ts +63 -0
  70. package/dist/api/design/delete/index.d.ts.map +1 -0
  71. package/dist/api/design/doors/index.d.ts +268 -0
  72. package/dist/api/design/doors/index.d.ts.map +1 -0
  73. package/dist/api/design/edit/index.d.ts +49 -0
  74. package/dist/api/design/edit/index.d.ts.map +1 -0
  75. package/dist/api/design/erase/index.d.ts +160 -0
  76. package/dist/api/design/erase/index.d.ts.map +1 -0
  77. package/dist/api/design/furniture/index.d.ts +123 -0
  78. package/dist/api/design/furniture/index.d.ts.map +1 -0
  79. package/dist/api/design/index.d.ts +153 -0
  80. package/dist/api/design/index.d.ts.map +1 -0
  81. package/dist/api/design/lock.d.ts +41 -0
  82. package/dist/api/design/lock.d.ts.map +1 -0
  83. package/dist/api/design/materials/index.d.ts +297 -0
  84. package/dist/api/design/materials/index.d.ts.map +1 -0
  85. package/dist/api/design/query/geometry/index.d.ts +140 -0
  86. package/dist/api/design/query/geometry/index.d.ts.map +1 -0
  87. package/dist/api/design/query/index.d.ts +1011 -0
  88. package/dist/api/design/query/index.d.ts.map +1 -0
  89. package/dist/api/design/query/spaces.d.ts +221 -0
  90. package/dist/api/design/query/spaces.d.ts.map +1 -0
  91. package/dist/api/design/selection/index.d.ts +138 -0
  92. package/dist/api/design/selection/index.d.ts.map +1 -0
  93. package/dist/api/design/shared.d.ts +38 -0
  94. package/dist/api/design/shared.d.ts.map +1 -0
  95. package/dist/api/design/transform/index.d.ts +87 -0
  96. package/dist/api/design/transform/index.d.ts.map +1 -0
  97. package/dist/api/design/update/index.d.ts +178 -0
  98. package/dist/api/design/update/index.d.ts.map +1 -0
  99. package/dist/api/design/windows/index.d.ts +189 -0
  100. package/dist/api/design/windows/index.d.ts.map +1 -0
  101. package/dist/api/entity/buildableEnvelope.d.ts +261 -0
  102. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
  103. package/dist/api/entity/department.d.ts +0 -98
  104. package/dist/api/entity/department.d.ts.map +1 -1
  105. package/dist/api/entity/index.d.ts +9 -9
  106. package/dist/api/entity/index.d.ts.map +1 -1
  107. package/dist/api/entity/referenceLine.d.ts +49 -106
  108. package/dist/api/entity/referenceLine.d.ts.map +1 -1
  109. package/dist/api/entity/space.d.ts +482 -249
  110. package/dist/api/entity/space.d.ts.map +1 -1
  111. package/dist/api/entity/story.d.ts +49 -39
  112. package/dist/api/entity/story.d.ts.map +1 -1
  113. package/dist/api/index.d.ts +17 -12
  114. package/dist/api/index.d.ts.map +1 -1
  115. package/dist/api/presentation/aiInspiration.d.ts +440 -0
  116. package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
  117. package/dist/api/presentation/diagrams.d.ts +81 -0
  118. package/dist/api/presentation/diagrams.d.ts.map +1 -0
  119. package/dist/api/presentation/import.d.ts +113 -0
  120. package/dist/api/presentation/import.d.ts.map +1 -0
  121. package/dist/api/presentation/index.d.ts +46 -0
  122. package/dist/api/presentation/index.d.ts.map +1 -0
  123. package/dist/api/presentation/sheets.d.ts +176 -0
  124. package/dist/api/presentation/sheets.d.ts.map +1 -0
  125. package/dist/api/presentation/views.d.ts +296 -0
  126. package/dist/api/presentation/views.d.ts.map +1 -0
  127. package/dist/api/program/adjacency.d.ts +155 -0
  128. package/dist/api/program/adjacency.d.ts.map +1 -0
  129. package/dist/api/program/areas.d.ts +360 -0
  130. package/dist/api/program/areas.d.ts.map +1 -0
  131. package/dist/api/program/classification.d.ts +135 -0
  132. package/dist/api/program/classification.d.ts.map +1 -0
  133. package/dist/api/program/cores.d.ts +174 -0
  134. package/dist/api/program/cores.d.ts.map +1 -0
  135. package/dist/api/program/departments.d.ts +431 -0
  136. package/dist/api/program/departments.d.ts.map +1 -0
  137. package/dist/api/program/index.d.ts +69 -0
  138. package/dist/api/program/index.d.ts.map +1 -0
  139. package/dist/api/program/layout.d.ts +63 -0
  140. package/dist/api/program/layout.d.ts.map +1 -0
  141. package/dist/api/program/metrics.d.ts +108 -0
  142. package/dist/api/program/metrics.d.ts.map +1 -0
  143. package/dist/api/program/site.d.ts +367 -0
  144. package/dist/api/program/site.d.ts.map +1 -0
  145. package/dist/api/program/spreadsheet.d.ts +2041 -0
  146. package/dist/api/program/spreadsheet.d.ts.map +1 -0
  147. package/dist/handles.d.ts +138 -0
  148. package/dist/handles.d.ts.map +1 -0
  149. package/dist/host-utils.d.ts +7 -5
  150. package/dist/host-utils.d.ts.map +1 -1
  151. package/dist/index.cjs +4001 -904
  152. package/dist/index.cjs.map +1 -1
  153. package/dist/index.d.ts +1 -0
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +3392 -870
  156. package/dist/index.js.map +1 -1
  157. package/package.json +6 -2
  158. package/scripts/generate-manifest.mjs +193 -0
  159. package/scripts/generate-manifest.test.mjs +193 -0
  160. package/src/api/core/buildings.ts +485 -0
  161. package/src/api/core/comment/index.ts +258 -0
  162. package/src/api/core/geom/create/index.ts +293 -0
  163. package/src/api/core/geom/delete/index.ts +78 -0
  164. package/src/api/core/geom/index.ts +24 -23
  165. package/src/api/core/geom/query/arc.ts +169 -0
  166. package/src/api/core/geom/query/brep.ts +444 -0
  167. package/src/api/core/geom/query/circle.ts +404 -0
  168. package/src/api/core/geom/query/contour.ts +540 -0
  169. package/src/api/core/geom/query/curve.ts +1078 -0
  170. package/src/api/core/geom/query/edge.ts +130 -0
  171. package/src/api/core/geom/query/face.ts +403 -0
  172. package/src/api/core/geom/query/halfedge.ts +210 -0
  173. package/src/api/core/geom/query/index.ts +63 -0
  174. package/src/api/core/geom/query/profile.ts +473 -0
  175. package/src/api/core/geom/query/vertex.ts +205 -0
  176. package/src/api/core/geom/update/contour.ts +315 -0
  177. package/src/api/core/geom/update/curve.ts +209 -0
  178. package/src/api/core/geom/update/index.ts +29 -0
  179. package/src/api/core/geom/update/profile.ts +377 -0
  180. package/src/api/core/groups.ts +521 -0
  181. package/src/api/core/history/index.ts +84 -0
  182. package/src/api/core/index.ts +46 -1
  183. package/src/api/core/layers.ts +333 -0
  184. package/src/api/core/math/quat.ts +112 -235
  185. package/src/api/core/math/vec3.ts +124 -159
  186. package/src/api/core/project/index.ts +418 -0
  187. package/src/api/core/tags.ts +808 -0
  188. package/src/api/core/units/index.ts +164 -0
  189. package/src/api/core/zoom/index.ts +47 -0
  190. package/src/api/design/boolean/index.ts +179 -0
  191. package/src/api/design/create/index.ts +886 -0
  192. package/src/api/design/delete/index.ts +67 -0
  193. package/src/api/design/doors/index.ts +285 -0
  194. package/src/api/design/edit/index.ts +54 -0
  195. package/src/api/design/erase/index.ts +151 -0
  196. package/src/api/design/furniture/index.ts +130 -0
  197. package/src/api/design/index.ts +162 -0
  198. package/src/api/design/lock.ts +42 -0
  199. package/src/api/design/materials/index.ts +301 -0
  200. package/src/api/design/query/geometry/index.ts +166 -0
  201. package/src/api/design/query/index.ts +937 -0
  202. package/src/api/design/query/spaces.ts +132 -0
  203. package/src/api/design/selection/index.ts +144 -0
  204. package/src/api/design/shared.ts +40 -0
  205. package/src/api/design/transform/index.ts +93 -0
  206. package/src/api/design/update/index.ts +117 -0
  207. package/src/api/design/windows/index.ts +207 -0
  208. package/src/api/entity/buildableEnvelope.ts +318 -0
  209. package/src/api/entity/department.ts +0 -113
  210. package/src/api/entity/index.ts +9 -9
  211. package/src/api/entity/referenceLine.ts +50 -38
  212. package/src/api/entity/space.ts +285 -226
  213. package/src/api/entity/story.ts +53 -42
  214. package/src/api/index.ts +17 -12
  215. package/src/api/presentation/aiInspiration.ts +362 -0
  216. package/src/api/presentation/diagrams.ts +84 -0
  217. package/src/api/presentation/import.ts +112 -0
  218. package/src/api/presentation/index.ts +48 -0
  219. package/src/api/presentation/sheets.ts +198 -0
  220. package/src/api/presentation/views.ts +303 -0
  221. package/src/api/program/adjacency.ts +164 -0
  222. package/src/api/program/areas.ts +335 -0
  223. package/src/api/program/classification.ts +138 -0
  224. package/src/api/program/cores.ts +171 -0
  225. package/src/api/program/departments.ts +465 -0
  226. package/src/api/program/index.ts +71 -0
  227. package/src/api/program/layout.ts +68 -0
  228. package/src/api/program/metrics.ts +120 -0
  229. package/src/api/program/site.ts +326 -0
  230. package/src/api/program/spreadsheet.ts +2075 -0
  231. package/src/handles.ts +148 -0
  232. package/src/host-utils.ts +10 -6
  233. package/src/index.ts +1 -0
  234. package/dist/api/core/geom/arc.d.ts +0 -81
  235. package/dist/api/core/geom/arc.d.ts.map +0 -1
  236. package/dist/api/core/geom/curve.d.ts +0 -70
  237. package/dist/api/core/geom/curve.d.ts.map +0 -1
  238. package/dist/api/core/geom/line.d.ts +0 -56
  239. package/dist/api/core/geom/line.d.ts.map +0 -1
  240. package/dist/api/core/geom/profile.d.ts +0 -121
  241. package/dist/api/core/geom/profile.d.ts.map +0 -1
  242. package/dist/api/tools/copy.d.ts +0 -59
  243. package/dist/api/tools/copy.d.ts.map +0 -1
  244. package/dist/api/tools/index.d.ts +0 -33
  245. package/dist/api/tools/index.d.ts.map +0 -1
  246. package/dist/api/tools/material.d.ts +0 -51
  247. package/dist/api/tools/material.d.ts.map +0 -1
  248. package/dist/api/tools/offset.d.ts +0 -43
  249. package/dist/api/tools/offset.d.ts.map +0 -1
  250. package/dist/api/tools/selection.d.ts +0 -48
  251. package/dist/api/tools/selection.d.ts.map +0 -1
  252. package/dist/api/tools/transform.d.ts +0 -114
  253. package/dist/api/tools/transform.d.ts.map +0 -1
  254. package/dist/api/units/index.d.ts +0 -163
  255. package/dist/api/units/index.d.ts.map +0 -1
  256. package/src/api/core/geom/arc.ts +0 -70
  257. package/src/api/core/geom/curve.ts +0 -41
  258. package/src/api/core/geom/line.ts +0 -53
  259. package/src/api/core/geom/profile.ts +0 -94
  260. package/src/api/tools/copy.ts +0 -55
  261. package/src/api/tools/index.ts +0 -39
  262. package/src/api/tools/material.ts +0 -49
  263. package/src/api/tools/offset.ts +0 -43
  264. package/src/api/tools/selection.ts +0 -51
  265. package/src/api/tools/transform.ts +0 -117
  266. package/src/api/units/index.ts +0 -163
@@ -1,51 +0,0 @@
1
- import * as z from "zod";
2
- import { PluginApiReturn } from "../../types";
3
- /**
4
- * Apply materials to the current user selection in the Snaptrude editor or passed component ids if any.
5
- *
6
- * Accessed via `snaptrude.tools.material`.
7
- */
8
- export declare abstract class PluginMaterialApi {
9
- constructor();
10
- /**
11
- * Apply materials to the current user selection in the Snaptrude editor or passed component ids if any.
12
- *
13
- * @param args - An object containing:
14
- * - {@linkcode PluginMaterialArgs.materialName args.materialName} — Material to apply
15
- * - {@linkcode PluginMaterialArgs.componentIds args.componentIds} — Array of component
16
- * ID strings to apply materials to if provided, if not provided, the current user selection will be used
17
- */
18
- abstract apply({ materialName, componentIds, }: PluginMaterialArgs): PluginApiReturn<void>;
19
- }
20
- declare enum DEFAULT_MATERIALS {
21
- GLASS = "glass",
22
- WOOD = "wood",
23
- METAL = "metal",
24
- STONE = "stone",
25
- TILES = "tiles",
26
- CONCRETE = "concrete",
27
- BRICK = "brick"
28
- }
29
- /**
30
- * Arguments for {@linkcode PluginMaterialApi.apply}.
31
- *
32
- * | Property | Type | Description |
33
- * |---|---|---|
34
- * | `materialName` | `DEFAULT_MATERIALS` | Material to apply |
35
- * | `componentIds` | `string[]` | Component IDs to apply materials to if provided |
36
- */
37
- export declare const PluginMaterialArgs: z.ZodObject<{
38
- materialName: z.ZodEnum<{
39
- glass: DEFAULT_MATERIALS.GLASS;
40
- wood: DEFAULT_MATERIALS.WOOD;
41
- metal: DEFAULT_MATERIALS.METAL;
42
- stone: DEFAULT_MATERIALS.STONE;
43
- tiles: DEFAULT_MATERIALS.TILES;
44
- concrete: DEFAULT_MATERIALS.CONCRETE;
45
- brick: DEFAULT_MATERIALS.BRICK;
46
- }>;
47
- componentIds: z.ZodArray<z.ZodString>;
48
- }, z.core.$strip>;
49
- export type PluginMaterialArgs = z.infer<typeof PluginMaterialArgs>;
50
- export {};
51
- //# sourceMappingURL=material.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../../../src/api/tools/material.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;GAIG;AACH,8BAAsB,iBAAiB;;IAGrC;;;;;;;OAOG;aACa,KAAK,CAAC,EACpB,YAAY,EACZ,YAAY,GACb,EAAE,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAAC;CAC9C;AAED,aAAK,iBAAiB;IACpB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAG7B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
@@ -1,43 +0,0 @@
1
- import * as z from "zod";
2
- import type { ComponentId } from "../../types";
3
- /**
4
- * Arguments for `snaptrude.tools.offset`.
5
- *
6
- * Runs Snaptrude's offset/split operation on the top profile of a scene
7
- * component. A positive distance offsets outward from the selected profile;
8
- * a negative distance offsets inward. If `profilePickPoint` is omitted, the
9
- * outer top profile is used. If `profilePickPoint` is provided, the nearest top
10
- * contour profile to that point is used, matching the interactive offset tool's
11
- * pick behavior.
12
- *
13
- * | Property | Type | Description |
14
- * |---|---|---|
15
- * | `componentId` | `string` | Component ID to offset |
16
- * | `distance` | `number` | Signed offset distance in Snaptrude units |
17
- * | `profilePickPoint` | {@linkcode PVec3} | Optional point used to choose a top contour profile |
18
- */
19
- export declare const PluginOffsetArgs: z.ZodObject<{
20
- componentId: z.ZodString;
21
- distance: z.ZodNumber;
22
- profilePickPoint: z.ZodOptional<z.ZodObject<{
23
- x: z.ZodNumber;
24
- y: z.ZodNumber;
25
- z: z.ZodNumber;
26
- }, z.core.$strip>>;
27
- }, z.core.$strip>;
28
- export type PluginOffsetArgs = z.infer<typeof PluginOffsetArgs>;
29
- /**
30
- * Result of `snaptrude.tools.offset`.
31
- *
32
- * `createdIds` are the components created by the offset operation. `deletedIds`
33
- * are components removed by split-style offsets.
34
- */
35
- export declare const PluginOffsetResult: z.ZodObject<{
36
- createdIds: z.ZodArray<z.ZodString>;
37
- deletedIds: z.ZodArray<z.ZodString>;
38
- }, z.core.$strip>;
39
- export type PluginOffsetResult = {
40
- createdIds: ComponentId[];
41
- deletedIds: ComponentId[];
42
- };
43
- //# sourceMappingURL=offset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offset.d.ts","sourceRoot":"","sources":["../../../src/api/tools/offset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;iBAI3B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,EAAE,CAAA;IACzB,UAAU,EAAE,WAAW,EAAE,CAAA;CAC1B,CAAA"}
@@ -1,48 +0,0 @@
1
- import * as z from "zod";
2
- import { PluginApiReturn } from "../../types";
3
- /**
4
- * Query the current user selection in the Snaptrude editor.
5
- *
6
- * Accessed via `snaptrude.tools.selection`.
7
- */
8
- export declare abstract class PluginSelectionApi {
9
- constructor();
10
- /**
11
- * Get the IDs of all currently selected components.
12
- *
13
- * Returns the component IDs from the editor's active selection stack.
14
- * If nothing is selected, returns an empty array.
15
- *
16
- * The returned IDs can be used with {@linkcode PluginTransformApi.move},
17
- * {@linkcode PluginTransformApi.rotate}, or entity query methods like
18
- * {@linkcode PluginSpaceApi.get}.
19
- *
20
- * @returns A {@linkcode PluginSelectionGetResult} with a `selected` array
21
- * of component ID strings
22
- *
23
- * # Example
24
- * ```ts
25
- * const { selected } = await snaptrude.tools.selection.get()
26
- * if (selected.length > 0) {
27
- * // Move selected components 5 units along X
28
- * await snaptrude.tools.transform.move({
29
- * componentIds: selected,
30
- * displacement: snaptrude.core.math.vec3.new(5, 0, 0),
31
- * })
32
- * }
33
- * ```
34
- */
35
- abstract get(): PluginApiReturn<PluginSelectionGetResult>;
36
- }
37
- /**
38
- * Result of {@linkcode PluginSelectionApi.get}.
39
- *
40
- * | Property | Type | Description |
41
- * |---|---|---|
42
- * | `selected` | `string[]` | Component IDs of the current selection |
43
- */
44
- export declare const PluginSelectionGetResult: z.ZodObject<{
45
- selected: z.ZodArray<z.ZodString>;
46
- }, z.core.$strip>;
47
- export type PluginSelectionGetResult = z.infer<typeof PluginSelectionGetResult>;
48
- //# sourceMappingURL=selection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/api/tools/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;GAIG;AACH,8BAAsB,kBAAkB;;IAGtC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;aACa,GAAG,IAAI,eAAe,CAAC,wBAAwB,CAAC;CACjE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB;;iBAEnC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
@@ -1,114 +0,0 @@
1
- import * as z from "zod";
2
- import { PluginApiReturn } from "../../types";
3
- /**
4
- * Transform operations — move and rotate scene components.
5
- *
6
- * All transform methods accept an array of component IDs and apply the
7
- * transformation to each. Operations are recorded in Snaptrude's
8
- * command system for undo/redo support.
9
- *
10
- * Accessed via `snaptrude.tools.transform`.
11
- */
12
- export declare abstract class PluginTransformApi {
13
- constructor();
14
- /**
15
- * Translate components by a displacement vector.
16
- *
17
- * Each component's position is offset by the given
18
- * {@linkcode PluginMoveArgs.displacement displacement} vector.
19
- * This operation is undoable.
20
- *
21
- * @param args - An object containing:
22
- * - {@linkcode PluginMoveArgs.componentIds args.componentIds} — Array of component
23
- * ID strings to move
24
- * - {@linkcode PluginMoveArgs.displacement args.displacement} — Translation vector
25
- * as a {@linkcode PVec3} in Babylon units
26
- * @throws If any component ID is not found in the scene
27
- *
28
- * # Example
29
- * ```ts
30
- * const { vec3 } = snaptrude.core.math
31
- *
32
- * // Move a space 10 units along the X axis
33
- * await snaptrude.tools.transform.move({
34
- * componentIds: ["some-space-id"],
35
- * displacement: vec3.new(10, 0, 0),
36
- * })
37
- * ```
38
- */
39
- abstract move({ componentIds, displacement, }: PluginMoveArgs): PluginApiReturn<void>;
40
- /**
41
- * Rotate components around an axis through a pivot point.
42
- *
43
- * Each component is rotated by {@linkcode PluginRotateArgs.angle angle}
44
- * radians around the {@linkcode PluginRotateArgs.axis axis} vector,
45
- * pivoting about the {@linkcode PluginRotateArgs.pivot pivot} point.
46
- * This operation is undoable.
47
- *
48
- * @param args - An object containing:
49
- * - {@linkcode PluginRotateArgs.componentIds args.componentIds} — Array of component
50
- * ID strings to rotate
51
- * - {@linkcode PluginRotateArgs.angle args.angle} — Rotation angle in **radians**
52
- * - {@linkcode PluginRotateArgs.axis args.axis} — Rotation axis as a {@linkcode PVec3}
53
- * - {@linkcode PluginRotateArgs.pivot args.pivot} — Pivot point as a {@linkcode PVec3}
54
- * in Babylon units
55
- * @throws If any component ID is not found in the scene
56
- *
57
- * # Example
58
- * ```ts
59
- * const { vec3 } = snaptrude.core.math
60
- *
61
- * // Rotate a space 45° around the Y axis at the origin
62
- * await snaptrude.tools.transform.rotate({
63
- * componentIds: ["some-space-id"],
64
- * angle: Math.PI / 4,
65
- * axis: vec3.new(0, 1, 0),
66
- * pivot: vec3.new(0, 0, 0),
67
- * })
68
- * ```
69
- */
70
- abstract rotate({ componentIds, angle, axis, pivot, }: PluginRotateArgs): PluginApiReturn<void>;
71
- }
72
- /**
73
- * Arguments for {@linkcode PluginTransformApi.move}.
74
- *
75
- * | Property | Type | Description |
76
- * |---|---|---|
77
- * | `componentIds` | `string[]` | Component IDs to move |
78
- * | `displacement` | {@linkcode PVec3} | Translation vector in Babylon units |
79
- */
80
- export declare const PluginMoveArgs: z.ZodObject<{
81
- componentIds: z.ZodArray<z.ZodString>;
82
- displacement: z.ZodObject<{
83
- x: z.ZodNumber;
84
- y: z.ZodNumber;
85
- z: z.ZodNumber;
86
- }, z.core.$strip>;
87
- }, z.core.$strip>;
88
- export type PluginMoveArgs = z.infer<typeof PluginMoveArgs>;
89
- /**
90
- * Arguments for {@linkcode PluginTransformApi.rotate}.
91
- *
92
- * | Property | Type | Description |
93
- * |---|---|---|
94
- * | `componentIds` | `string[]` | Component IDs to rotate |
95
- * | `angle` | `number` | Rotation angle in radians |
96
- * | `axis` | {@linkcode PVec3} | Rotation axis direction |
97
- * | `pivot` | {@linkcode PVec3} | Pivot point in Babylon units |
98
- */
99
- export declare const PluginRotateArgs: z.ZodObject<{
100
- componentIds: z.ZodArray<z.ZodString>;
101
- angle: z.ZodNumber;
102
- axis: z.ZodObject<{
103
- x: z.ZodNumber;
104
- y: z.ZodNumber;
105
- z: z.ZodNumber;
106
- }, z.core.$strip>;
107
- pivot: z.ZodObject<{
108
- x: z.ZodNumber;
109
- y: z.ZodNumber;
110
- z: z.ZodNumber;
111
- }, z.core.$strip>;
112
- }, z.core.$strip>;
113
- export type PluginRotateArgs = z.infer<typeof PluginRotateArgs>;
114
- //# sourceMappingURL=transform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../src/api/tools/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C;;;;;;;;GAQG;AACH,8BAAsB,kBAAkB;;IAGtC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;aACa,IAAI,CAAC,EACnB,YAAY,EACZ,YAAY,GACb,EAAE,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;aACa,MAAM,CAAC,EACrB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,KAAK,GACN,EAAE,gBAAgB,GAAG,eAAe,CAAC,IAAI,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;iBAGzB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAK3B,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
@@ -1,163 +0,0 @@
1
- import * as z from "zod";
2
- import { PluginApiReturn } from "../../types";
3
- /**
4
- * Unit conversion between real-world units and Snaptrude's internal
5
- * (Babylon) coordinate system.
6
- *
7
- * Snaptrude uses an internal unit system (Babylon units) for all
8
- * coordinates and dimensions. Use these methods to convert between
9
- * real-world measurements and Babylon units.
10
- *
11
- * Accessed via `snaptrude.units`.
12
- */
13
- export declare abstract class PluginUnitsApi {
14
- constructor();
15
- /**
16
- * Convert a value from a real-world unit to Snaptrude's internal (Babylon) units.
17
- *
18
- * Use this when you have a measurement in real-world units (e.g. meters, feet)
19
- * and need to convert it to the coordinate system used by Snaptrude internally.
20
- *
21
- * @param args - An object containing:
22
- * - {@linkcode PluginUnitsConvertFromArgs.unit args.unit} — The source unit
23
- * to convert from. See {@linkcode PUnitType} for supported values.
24
- * - {@linkcode PluginUnitsConvertFromArgs.value args.value} — The numeric
25
- * value in the source unit
26
- * - {@linkcode PluginUnitsConvertFromArgs.degree args.degree} — (Optional)
27
- * Degree of the unit: 1 for length, 2 for area, 3 for volume. Defaults to 1
28
- * @returns A {@linkcode PluginUnitsConvertFromResult} containing the converted
29
- * `value` in Babylon units
30
- *
31
- * # Example
32
- * ```ts
33
- * // Convert 5 meters to Babylon units for use in API calls
34
- * const result = await snaptrude.units.convertFrom({ unit: "meters", value: 5 })
35
- * const { spaceId } = await snaptrude.entity.space.createRectangular({
36
- * position: snaptrude.core.math.vec3.new(0, 0, 0),
37
- * dimensions: { width: result.value, height: result.value, depth: result.value },
38
- * })
39
- * ```
40
- */
41
- abstract convertFrom(args: PluginUnitsConvertFromArgs): PluginApiReturn<PluginUnitsConvertFromResult>;
42
- /**
43
- * Convert a value from Snaptrude's internal (Babylon) units to a real-world unit.
44
- *
45
- * Use this when you have a value in Snaptrude's internal coordinate system
46
- * and need to express it in real-world units (e.g. meters, feet).
47
- *
48
- * @param args - An object containing:
49
- * - {@linkcode PluginUnitsConvertToArgs.unit args.unit} — The target unit
50
- * to convert to. See {@linkcode PUnitType} for supported values.
51
- * - {@linkcode PluginUnitsConvertToArgs.value args.value} — The numeric
52
- * value in Babylon units
53
- * - {@linkcode PluginUnitsConvertToArgs.degree args.degree} — (Optional)
54
- * Degree of the unit: 1 for length, 2 for area, 3 for volume. Defaults to 1
55
- * @returns A {@linkcode PluginUnitsConvertToResult} containing the converted
56
- * `value` in the target unit
57
- *
58
- * # Example
59
- * ```ts
60
- * // Get a space's area in square meters
61
- * const info = await snaptrude.entity.space.get({
62
- * spaceId: "some-id",
63
- * properties: ["area"],
64
- * })
65
- * const areaInMeters = await snaptrude.units.convertTo({
66
- * unit: "meters",
67
- * value: info.area!,
68
- * degree: 2,
69
- * })
70
- * ```
71
- */
72
- abstract convertTo(args: PluginUnitsConvertToArgs): PluginApiReturn<PluginUnitsConvertToResult>;
73
- }
74
- /**
75
- * Supported unit types for conversion.
76
- *
77
- * - `meters` — Metric meters
78
- * - `feet-inches` — Imperial feet (1 foot = 12 inches)
79
- * - `inches` — Imperial inches
80
- * - `centimeters` — Metric centimeters
81
- * - `millimeters` — Metric millimeters
82
- * - `kilometers` — Metric kilometers
83
- * - `miles` — Imperial miles
84
- */
85
- export declare const PUnitType: z.ZodEnum<{
86
- meters: "meters";
87
- "feet-inches": "feet-inches";
88
- inches: "inches";
89
- centimeters: "centimeters";
90
- millimeters: "millimeters";
91
- kilometers: "kilometers";
92
- miles: "miles";
93
- }>;
94
- export type PUnitType = z.infer<typeof PUnitType>;
95
- /**
96
- * Arguments for {@linkcode PluginUnitsApi.convertFrom}.
97
- *
98
- * | Property | Type | Description |
99
- * |---|---|---|
100
- * | `unit` | {@linkcode PUnitType} | Source real-world unit |
101
- * | `value` | `number` | Numeric value in the source unit |
102
- * | `degree` | `1 \| 2 \| 3` | (Optional) Degree of the unit (e.g. 1 for length, 2 for area, 3 for volume). Defaults to 1 |
103
- */
104
- export declare const PluginUnitsConvertFromArgs: z.ZodObject<{
105
- unit: z.ZodEnum<{
106
- meters: "meters";
107
- "feet-inches": "feet-inches";
108
- inches: "inches";
109
- centimeters: "centimeters";
110
- millimeters: "millimeters";
111
- kilometers: "kilometers";
112
- miles: "miles";
113
- }>;
114
- value: z.ZodNumber;
115
- degree: z.ZodOptional<z.ZodNumber>;
116
- }, z.core.$strip>;
117
- export type PluginUnitsConvertFromArgs = z.infer<typeof PluginUnitsConvertFromArgs>;
118
- /**
119
- * Result of {@linkcode PluginUnitsApi.convertFrom}.
120
- *
121
- * | Property | Type | Description |
122
- * |---|---|---|
123
- * | `value` | `number` | The converted value in Babylon units |
124
- */
125
- export declare const PluginUnitsConvertFromResult: z.ZodObject<{
126
- value: z.ZodNumber;
127
- }, z.core.$strip>;
128
- export type PluginUnitsConvertFromResult = z.infer<typeof PluginUnitsConvertFromResult>;
129
- /**
130
- * Arguments for {@linkcode PluginUnitsApi.convertTo}.
131
- *
132
- * | Property | Type | Description |
133
- * |---|---|---|
134
- * | `unit` | {@linkcode PUnitType} | Target real-world unit |
135
- * | `value` | `number` | Numeric value in Babylon units |
136
- * | `degree` | `1 \| 2 \| 3` | (Optional) Degree of the unit (e.g. 1 for length, 2 for area, 3 for volume). Defaults to 1 |
137
- */
138
- export declare const PluginUnitsConvertToArgs: z.ZodObject<{
139
- unit: z.ZodEnum<{
140
- meters: "meters";
141
- "feet-inches": "feet-inches";
142
- inches: "inches";
143
- centimeters: "centimeters";
144
- millimeters: "millimeters";
145
- kilometers: "kilometers";
146
- miles: "miles";
147
- }>;
148
- value: z.ZodNumber;
149
- degree: z.ZodOptional<z.ZodNumber>;
150
- }, z.core.$strip>;
151
- export type PluginUnitsConvertToArgs = z.infer<typeof PluginUnitsConvertToArgs>;
152
- /**
153
- * Result of {@linkcode PluginUnitsApi.convertTo}.
154
- *
155
- * | Property | Type | Description |
156
- * |---|---|---|
157
- * | `value` | `number` | The converted value in the target unit |
158
- */
159
- export declare const PluginUnitsConvertToResult: z.ZodObject<{
160
- value: z.ZodNumber;
161
- }, z.core.$strip>;
162
- export type PluginUnitsConvertToResult = z.infer<typeof PluginUnitsConvertToResult>;
163
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/units/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;;;;GASG;AACH,8BAAsB,cAAc;;IAGlC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;aACa,WAAW,CACzB,IAAI,EAAE,0BAA0B,GAC/B,eAAe,CAAC,4BAA4B,CAAC;IAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;aACa,SAAS,CACvB,IAAI,EAAE,wBAAwB,GAC7B,eAAe,CAAC,0BAA0B,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS;;;;;;;;EAQpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAIrC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEnF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAA;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;iBAInC,CAAA;AAEF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;iBAErC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -1,70 +0,0 @@
1
- import * as z from "zod"
2
- import { PVec3 } from "../math/vec3"
3
-
4
- /**
5
- * Arc construction.
6
- *
7
- * A {@linkcode PArc} represents a circular arc in 3D space, defined by
8
- * start/end points, a centre, and a rotation axis. Arcs can be wrapped
9
- * as a {@linkcode PCurve} and combined into a {@linkcode PProfile}.
10
- *
11
- * Accessed via `snaptrude.core.geom.arc`.
12
- */
13
- export abstract class PluginArcApi {
14
- constructor() {}
15
-
16
- /**
17
- * Create a new arc from start, end, centre, and axis.
18
- *
19
- * The arc sweeps from {@linkcode startPoint} to {@linkcode endPoint}
20
- * along the circle centred at {@linkcode centrePoint}, in the
21
- * direction determined by the right-hand rule around {@linkcode axis}.
22
- *
23
- * @param startPoint - The start point as a {@linkcode PVec3}
24
- * @param endPoint - The end point as a {@linkcode PVec3}
25
- * @param centrePoint - The centre of the arc's circle as a {@linkcode PVec3}
26
- * @param axis - The arc's rotation axis as a {@linkcode PVec3}
27
- * (perpendicular to the arc's plane)
28
- * @returns A new {@linkcode PArc}
29
- *
30
- * # Example
31
- * ```ts
32
- * const { vec3 } = snaptrude.core.math
33
- * const { arc } = snaptrude.core.geom
34
- *
35
- * // Quarter-circle arc on the XZ plane
36
- * const a = arc.new(
37
- * vec3.new(1, 0, 0), // start
38
- * vec3.new(0, 0, 1), // end
39
- * vec3.new(0, 0, 0), // centre
40
- * vec3.new(0, 1, 0), // Y-up axis
41
- * )
42
- * ```
43
- */
44
- new(startPoint: PVec3, endPoint: PVec3, centrePoint: PVec3, axis: PVec3): PArc {
45
- return { curveType: "Arc", startPoint, endPoint, centrePoint, axis }
46
- }
47
- }
48
-
49
- /**
50
- * A circular arc defined by start, end, centre, and axis.
51
- *
52
- * Discriminated by `curveType: "Arc"` within the {@linkcode PCurve} union.
53
- *
54
- * | Property | Type | Description |
55
- * |---|---|---|
56
- * | `curveType` | `"Arc"` | Discriminator tag |
57
- * | `startPoint` | {@linkcode PVec3} | Start point of the arc |
58
- * | `endPoint` | {@linkcode PVec3} | End point of the arc |
59
- * | `centrePoint` | {@linkcode PVec3} | Centre of the arc's circle |
60
- * | `axis` | {@linkcode PVec3} | Rotation axis (normal to the arc's plane) |
61
- */
62
- export const PArc = z.object({
63
- curveType: z.literal("Arc"),
64
- startPoint: PVec3,
65
- endPoint: PVec3,
66
- centrePoint: PVec3,
67
- axis: PVec3,
68
- })
69
-
70
- export type PArc = z.infer<typeof PArc>
@@ -1,41 +0,0 @@
1
- import * as z from "zod"
2
- import { PLine } from "./line"
3
- import { PArc } from "./arc"
4
-
5
- /**
6
- * Unified curve wrapper — either a {@linkcode PLine} or a {@linkcode PArc}.
7
- *
8
- * Use this to build heterogeneous curve lists (mixing lines and arcs)
9
- * when constructing a {@linkcode PProfile}.
10
- *
11
- * Accessed via `snaptrude.core.geom.curve`.
12
- */
13
- export abstract class PluginCurveApi {
14
- constructor() {}
15
-
16
- /**
17
- * Wrap a {@linkcode PLine} or {@linkcode PArc} as a {@linkcode PCurve}.
18
- *
19
- * This is an identity operation — it simply returns the input unchanged.
20
- * It exists for type-level clarity when building mixed curve lists.
21
- *
22
- * @param curve - A {@linkcode PLine} or {@linkcode PArc} to wrap
23
- * @returns The same value typed as {@linkcode PCurve}
24
- */
25
- new(curve: PLine | PArc): PCurve {
26
- return curve
27
- }
28
- }
29
-
30
- /**
31
- * A discriminated union of {@linkcode PLine} and {@linkcode PArc}.
32
- *
33
- * Discriminated on the `curveType` field:
34
- * - `"Line"` → {@linkcode PLine}
35
- * - `"Arc"` → {@linkcode PArc}
36
- *
37
- * Use `curve.curveType` to narrow the type in a switch or if-statement.
38
- */
39
- export const PCurve = z.discriminatedUnion("curveType", [PLine, PArc])
40
-
41
- export type PCurve = z.infer<typeof PCurve>
@@ -1,53 +0,0 @@
1
- import * as z from "zod"
2
- import { PVec3 } from "../math/vec3"
3
-
4
- /**
5
- * Line segment construction.
6
- *
7
- * A {@linkcode PLine} is the simplest curve primitive — a straight
8
- * segment between two 3D points. Lines can be wrapped as a
9
- * {@linkcode PCurve} and combined into a {@linkcode PProfile}.
10
- *
11
- * Accessed via `snaptrude.core.geom.line`.
12
- */
13
- export abstract class PluginLineApi {
14
- constructor() {}
15
-
16
- /**
17
- * Create a new line segment between two points.
18
- *
19
- * @param startPoint - The start point as a {@linkcode PVec3}
20
- * @param endPoint - The end point as a {@linkcode PVec3}
21
- * @returns A new {@linkcode PLine}
22
- *
23
- * # Example
24
- * ```ts
25
- * const { vec3 } = snaptrude.core.math
26
- * const { line } = snaptrude.core.geom
27
- *
28
- * const edge = line.new(vec3.new(0, 0, 0), vec3.new(5, 0, 0))
29
- * ```
30
- */
31
- new(startPoint: PVec3, endPoint: PVec3): PLine {
32
- return { curveType: "Line", startPoint, endPoint }
33
- }
34
- }
35
-
36
- /**
37
- * A line segment defined by a start and end point.
38
- *
39
- * Discriminated by `curveType: "Line"` within the {@linkcode PCurve} union.
40
- *
41
- * | Property | Type | Description |
42
- * |---|---|---|
43
- * | `curveType` | `"Line"` | Discriminator tag |
44
- * | `startPoint` | {@linkcode PVec3} | Start point of the segment |
45
- * | `endPoint` | {@linkcode PVec3} | End point of the segment |
46
- */
47
- export const PLine = z.object({
48
- curveType: z.literal("Line"),
49
- startPoint: PVec3,
50
- endPoint: PVec3,
51
- })
52
-
53
- export type PLine = z.infer<typeof PLine>