@energy8platform/golem 0.2.1 → 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 (38) hide show
  1. package/README.md +28 -2
  2. package/dist/editor.css +50 -0
  3. package/dist/editor.js +1772 -1037
  4. package/dist/lib/cli.js +1575 -366
  5. package/dist/lib/cli.js.map +4 -4
  6. package/dist/lib/editor/controls-panel.d.ts +2 -0
  7. package/dist/lib/editor/stage.d.ts +1 -0
  8. package/dist/lib/editor/store.d.ts +212 -33
  9. package/dist/lib/editor-entry.js +1575 -366
  10. package/dist/lib/editor-entry.js.map +4 -4
  11. package/dist/lib/harness.js +328 -31
  12. package/dist/lib/interactive-bones.d.ts +37 -0
  13. package/dist/lib/interactive-editor.d.ts +80 -0
  14. package/dist/lib/interactive-editor.js +744 -0
  15. package/dist/lib/interactive-editor.js.map +7 -0
  16. package/dist/lib/preview/export-video.d.ts +12 -0
  17. package/dist/lib/preview/harness.d.ts +2 -0
  18. package/dist/lib/preview/render-preview.d.ts +6 -0
  19. package/dist/lib/rig-anim.d.ts +6 -3
  20. package/dist/lib/rig-check.d.ts +2 -1
  21. package/dist/lib/rig-constraints.d.ts +63 -0
  22. package/dist/lib/rig-control-qa.d.ts +319 -0
  23. package/dist/lib/rig-controls.d.ts +13 -0
  24. package/dist/lib/rig-format.d.ts +1469 -331
  25. package/dist/lib/rig-gates.d.ts +209 -0
  26. package/dist/lib/rig-mesh.d.ts +1 -0
  27. package/dist/lib/rig-motion.d.ts +22 -0
  28. package/dist/lib/rig-qa.d.ts +35 -0
  29. package/dist/lib/rig-quality.d.ts +12 -0
  30. package/dist/lib/rig-runtime.d.ts +43 -3
  31. package/dist/lib/rig-state.d.ts +3 -0
  32. package/dist/lib/rig-tools.d.ts +5 -1
  33. package/dist/lib/runtime.d.ts +3 -1
  34. package/dist/lib/runtime.js +306 -28
  35. package/dist/lib/runtime.js.map +4 -4
  36. package/dist/lib/tools.js +1557 -348
  37. package/dist/lib/tools.js.map +4 -4
  38. package/package.json +8 -2
@@ -0,0 +1,319 @@
1
+ import { type RigDocument } from "./rig-format";
2
+ import { type ControlCase } from "./rig-controls";
3
+ export declare function checkControlCases(doc: RigDocument, cases: ControlCase[]): {
4
+ passed: boolean;
5
+ errors: {
6
+ case: number;
7
+ subject: string;
8
+ message: string;
9
+ }[];
10
+ effects: {
11
+ id: string;
12
+ geometryOrOpacityChanged: boolean;
13
+ }[];
14
+ scope: string;
15
+ };
16
+ export declare function makeControlSweep(doc: RigDocument, probes: Record<string, number[]>): {
17
+ cases: {
18
+ values: {
19
+ [x: string]: number;
20
+ };
21
+ label: string;
22
+ }[];
23
+ doc: {
24
+ path: {
25
+ rotation: number;
26
+ id: string;
27
+ order: number;
28
+ bones: string[];
29
+ target: string;
30
+ mixRotate: number;
31
+ mixX: number;
32
+ mixY: number;
33
+ positionMode: "fixed" | "percent";
34
+ spacingMode: "length" | "fixed" | "percent" | "proportional";
35
+ rotateMode: "tangent" | "chain" | "chainScale";
36
+ position: number;
37
+ spacing: number;
38
+ }[];
39
+ transform: {
40
+ x: number;
41
+ y: number;
42
+ rotation: number;
43
+ scaleX: number;
44
+ scaleY: number;
45
+ shearY: number;
46
+ id: string;
47
+ order: number;
48
+ bones: string[];
49
+ target: string;
50
+ local: boolean;
51
+ relative: boolean;
52
+ mixRotate: number;
53
+ mixX: number;
54
+ mixY: number;
55
+ mixScaleX: number;
56
+ mixScaleY: number;
57
+ mixShearY: number;
58
+ }[];
59
+ bones: {
60
+ length: number;
61
+ id: string;
62
+ transform: {
63
+ x: number;
64
+ y: number;
65
+ rotation: number;
66
+ scaleX: number;
67
+ scaleY: number;
68
+ shearX: number;
69
+ shearY: number;
70
+ };
71
+ inherit: "normal" | "onlyTranslation" | "noRotationOrReflection" | "noScale" | "noScaleOrReflection";
72
+ parent?: string | undefined;
73
+ role?: string | undefined;
74
+ color?: string | undefined;
75
+ }[];
76
+ ik: {
77
+ id: string;
78
+ order: number;
79
+ bones: string[];
80
+ target: string;
81
+ mix: number;
82
+ softness: number;
83
+ bendPositive: boolean;
84
+ compress: boolean;
85
+ stretch: boolean;
86
+ uniform: boolean;
87
+ iterations?: number | undefined;
88
+ tolerance?: number | undefined;
89
+ }[];
90
+ format: "energy8.rig";
91
+ version: 2;
92
+ meta: {
93
+ width: number;
94
+ height: number;
95
+ name: string;
96
+ notes?: string | undefined;
97
+ reference?: {
98
+ x: number;
99
+ y: number;
100
+ src: string;
101
+ opacity: number;
102
+ scale: number;
103
+ } | undefined;
104
+ };
105
+ assets: {
106
+ id: string;
107
+ src: string;
108
+ width: number;
109
+ height: number;
110
+ rotate: 0 | 90;
111
+ frame?: [number, number, number, number] | undefined;
112
+ trim?: [number, number] | undefined;
113
+ origin?: {
114
+ inpainted: boolean;
115
+ sourceImage?: string | undefined;
116
+ bboxSpace?: "source" | "document" | undefined;
117
+ bbox?: [number, number, number, number] | undefined;
118
+ prompt?: string | undefined;
119
+ } | undefined;
120
+ }[];
121
+ slots: {
122
+ id: string;
123
+ color: string;
124
+ bone: string;
125
+ alpha: number;
126
+ z: number;
127
+ blend: "normal" | "add" | "multiply" | "screen";
128
+ clip?: string | undefined;
129
+ attachment?: string | undefined;
130
+ }[];
131
+ attachments: ({
132
+ x: number;
133
+ y: number;
134
+ type: "region";
135
+ rotation: number;
136
+ scaleX: number;
137
+ scaleY: number;
138
+ id: string;
139
+ slot: string;
140
+ asset: string;
141
+ width?: number | undefined;
142
+ height?: number | undefined;
143
+ } | {
144
+ type: "mesh";
145
+ id: string;
146
+ slot: string;
147
+ asset: string;
148
+ uvs: number[];
149
+ triangles: number[];
150
+ hull: number;
151
+ width?: number | undefined;
152
+ height?: number | undefined;
153
+ vertices?: number[] | undefined;
154
+ weights?: {
155
+ x: number;
156
+ y: number;
157
+ bone: string;
158
+ w: number;
159
+ }[][] | undefined;
160
+ } | {
161
+ type: "path";
162
+ id: string;
163
+ slot: string;
164
+ lengths: number[];
165
+ closed: boolean;
166
+ constantSpeed: boolean;
167
+ vertices?: number[] | undefined;
168
+ weights?: {
169
+ x: number;
170
+ y: number;
171
+ bone: string;
172
+ w: number;
173
+ }[][] | undefined;
174
+ })[];
175
+ animations: {
176
+ id: string;
177
+ duration: number;
178
+ loop: boolean;
179
+ tracks: ({
180
+ keys: {
181
+ t: number;
182
+ v: string | number | number[] | string[] | null;
183
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
184
+ bezier: [number, number, number, number];
185
+ };
186
+ }[];
187
+ id: string;
188
+ target: "control";
189
+ prop: "value";
190
+ interpolation?: "segment" | "pchip" | undefined;
191
+ } | {
192
+ keys: {
193
+ t: number;
194
+ v: string | number | number[] | string[] | null;
195
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
196
+ bezier: [number, number, number, number];
197
+ };
198
+ }[];
199
+ id: string;
200
+ target: "bone";
201
+ prop: "x" | "y" | "rotation" | "scaleX" | "scaleY" | "shearX" | "shearY";
202
+ interpolation?: "segment" | "pchip" | undefined;
203
+ } | {
204
+ keys: {
205
+ t: number;
206
+ v: string | number | number[] | string[] | null;
207
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
208
+ bezier: [number, number, number, number];
209
+ };
210
+ }[];
211
+ id: string;
212
+ target: "slot";
213
+ prop: "color" | "attachment" | "alpha" | "z";
214
+ interpolation?: "segment" | "pchip" | undefined;
215
+ } | {
216
+ keys: {
217
+ t: number;
218
+ v: string | number | number[] | string[] | null;
219
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
220
+ bezier: [number, number, number, number];
221
+ };
222
+ }[];
223
+ id: string;
224
+ target: "deform";
225
+ prop: string;
226
+ interpolation?: "segment" | "pchip" | undefined;
227
+ } | {
228
+ keys: {
229
+ t: number;
230
+ v: string | number | number[] | string[] | null;
231
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
232
+ bezier: [number, number, number, number];
233
+ };
234
+ }[];
235
+ id: string;
236
+ target: "ik";
237
+ prop: "mix" | "softness" | "bendPositive" | "compress" | "stretch";
238
+ interpolation?: "segment" | "pchip" | undefined;
239
+ } | {
240
+ keys: {
241
+ t: number;
242
+ v: string | number | number[] | string[] | null;
243
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
244
+ bezier: [number, number, number, number];
245
+ };
246
+ }[];
247
+ id: string;
248
+ target: "transform";
249
+ prop: "x" | "y" | "rotation" | "scaleX" | "scaleY" | "shearY" | "mixRotate" | "mixX" | "mixY" | "mixScaleX" | "mixScaleY" | "mixShearY";
250
+ interpolation?: "segment" | "pchip" | undefined;
251
+ } | {
252
+ keys: {
253
+ t: number;
254
+ v: string | number | number[] | string[] | null;
255
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
256
+ bezier: [number, number, number, number];
257
+ };
258
+ }[];
259
+ id: string;
260
+ target: "path";
261
+ prop: "mixRotate" | "mixX" | "mixY" | "position" | "spacing";
262
+ interpolation?: "segment" | "pchip" | undefined;
263
+ } | {
264
+ keys: {
265
+ t: number;
266
+ v: string | number | number[] | string[] | null;
267
+ ease: "linear" | "step" | "ease_in" | "ease_out" | "ease_in_out" | "minimum_jerk" | "back_out" | "elastic_out" | {
268
+ bezier: [number, number, number, number];
269
+ };
270
+ }[];
271
+ id: string;
272
+ target: "drawOrder";
273
+ prop: "order";
274
+ interpolation?: "segment" | "pchip" | undefined;
275
+ })[];
276
+ events: {
277
+ t: number;
278
+ name: string;
279
+ payload?: Record<string, unknown> | undefined;
280
+ }[];
281
+ preset?: {
282
+ params: Record<string, unknown>;
283
+ name: string;
284
+ } | undefined;
285
+ }[];
286
+ controls?: {
287
+ id: string;
288
+ min: number;
289
+ max: number;
290
+ default: number;
291
+ label?: string | undefined;
292
+ }[] | undefined;
293
+ controlBindings?: {
294
+ id: string;
295
+ axes: {
296
+ keys: number[];
297
+ control: string;
298
+ }[];
299
+ channels: ({
300
+ values: (number | number[])[];
301
+ id: string;
302
+ target: "bone";
303
+ prop: "x" | "y" | "rotation" | "scaleX" | "scaleY" | "shearX" | "shearY";
304
+ } | {
305
+ values: (number | number[])[];
306
+ id: string;
307
+ target: "slot";
308
+ prop: "alpha";
309
+ } | {
310
+ values: (number | number[])[];
311
+ id: string;
312
+ target: "deform";
313
+ prop: "vertices";
314
+ })[];
315
+ }[] | undefined;
316
+ };
317
+ animation: string;
318
+ times: number[];
319
+ };
@@ -0,0 +1,13 @@
1
+ /** Semantic control grids; pure math shared by the editor, renderer and validation tools. */
2
+ import type { ControlBinding, RigDocument } from "./rig-format";
3
+ import type { Pose } from "./rig-anim";
4
+ export declare function controlPose(doc: RigDocument, values: Record<string, number>): Pose;
5
+ export declare function sampleBinding(binding: ControlBinding, values: number[]): (number | number[])[];
6
+ /** Bindings own absolute output channels. They are resolved before constraints and never mutate input. */
7
+ export declare function resolveControls(doc: RigDocument, input: Pose): Pose;
8
+ export interface ControlCase {
9
+ label: string;
10
+ values: Record<string, number>;
11
+ }
12
+ /** Bounded cartesian grid. Explicit probes make coverage reproducible rather than pretending to test all poses. */
13
+ export declare function controlCases(doc: RigDocument, probes: Record<string, number[]>): ControlCase[];