@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,37 @@
1
+ import type { RigPlayer } from "./rig-runtime";
2
+ import type { PartTransform } from "./interactive-editor";
3
+ export interface BoneEditPatch {
4
+ format: "golem.bone-edits";
5
+ version: 1;
6
+ documentId: string;
7
+ transforms: Record<string, PartTransform>;
8
+ }
9
+ export interface InteractiveBoneEditorOptions {
10
+ player: Pick<RigPlayer, "doc" | "onBeforePose" | "refreshPose">;
11
+ documentId: string;
12
+ onChange?: (patch: BoneEditPatch) => void;
13
+ onRender?: () => void;
14
+ historyLimit?: number;
15
+ }
16
+ /** Add bone offsets after expression controls, before constraints and native skinning. */
17
+ export declare function createInteractiveBoneEditor(options: InteractiveBoneEditorOptions): {
18
+ getTransform: (id: string) => {
19
+ x: number;
20
+ y: number;
21
+ rotation: number;
22
+ scaleX: number;
23
+ scaleY: number;
24
+ };
25
+ exportPatch: () => BoneEditPatch;
26
+ validatePatch: (value: unknown) => BoneEditPatch;
27
+ readonly canUndo: boolean;
28
+ readonly canRedo: boolean;
29
+ setTransform(id: string, value: Partial<PartTransform>): void;
30
+ importPatch(value: unknown): void;
31
+ reset(id?: string): void;
32
+ setVisible(value: boolean): void;
33
+ undo(): void;
34
+ redo(): void;
35
+ dispose(): void;
36
+ };
37
+ export type InteractiveBoneEditor = ReturnType<typeof createInteractiveBoneEditor>;
@@ -0,0 +1,80 @@
1
+ import type { RigPlayer } from "./rig-runtime";
2
+ export interface EditorPoint {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export interface PartTransform {
7
+ x: number;
8
+ y: number;
9
+ rotation: number;
10
+ scaleX: number;
11
+ scaleY: number;
12
+ }
13
+ export interface InteractiveEditPatch {
14
+ format: "golem.interactive-edits";
15
+ version: 1;
16
+ documentId: string;
17
+ transforms: Record<string, PartTransform>;
18
+ }
19
+ export interface EditorGroup {
20
+ id: string;
21
+ members: readonly string[];
22
+ pivotBone?: string;
23
+ }
24
+ export type InteractivePlayer = Pick<RigPlayer, "doc" | "view" | "world" | "renderItems" | "clipPolygons" | "onAfterPose" | "refreshPose">;
25
+ export interface InteractiveEditorOptions {
26
+ player: InteractivePlayer;
27
+ /** Transparent overlay aligned with the player's rendered viewport. It is cleared by the editor. */
28
+ overlay: HTMLCanvasElement;
29
+ /** Host-defined stable rig fingerprint; mismatched patches are rejected. */
30
+ documentId: string;
31
+ groups?: readonly EditorGroup[];
32
+ /** Override when overlay backing pixels differ from the renderer's logical coordinates. */
33
+ screenToDocument?: (client: EditorPoint) => EditorPoint;
34
+ documentToOverlay?: (point: EditorPoint) => EditorPoint;
35
+ alphaFallback?: "skip" | "geometry";
36
+ onChange?: (patch: InteractiveEditPatch) => void;
37
+ onSelection?: (id: string | null) => void;
38
+ onHover?: (id: string | null) => void;
39
+ onError?: (error: Error) => void;
40
+ onGestureStart?: () => void;
41
+ /** Render the host scene after a manual refresh; never called from the pose hook. */
42
+ onRender?: () => void;
43
+ historyLimit?: number;
44
+ }
45
+ export interface EditorFrame {
46
+ id: string;
47
+ center: EditorPoint;
48
+ corners: EditorPoint[];
49
+ handles: {
50
+ name: string;
51
+ p: EditorPoint;
52
+ }[];
53
+ }
54
+ /** Embedded part editor. Source documents are never mutated; edits replay after every evaluated pose. */
55
+ export declare function createInteractiveEditor(options: InteractiveEditorOptions): {
56
+ select: (id: string | null) => void;
57
+ hitTest: (p: EditorPoint) => string | null;
58
+ getFrame: (id: string) => EditorFrame | null;
59
+ getTransform: (id: string) => {
60
+ x: number;
61
+ y: number;
62
+ rotation: number;
63
+ scaleX: number;
64
+ scaleY: number;
65
+ };
66
+ readonly selection: string | null;
67
+ readonly canUndo: boolean;
68
+ readonly canRedo: boolean;
69
+ exportPatch: () => InteractiveEditPatch;
70
+ setEnabled(value: boolean): void;
71
+ setVisible(value: boolean): void;
72
+ setTransform(id: string, value: Partial<PartTransform>): void;
73
+ reset(id?: string): void;
74
+ undo(): void;
75
+ redo(): void;
76
+ importPatch(value: unknown): void;
77
+ dispose(): void;
78
+ };
79
+ export type InteractiveEditor = ReturnType<typeof createInteractiveEditor>;
80
+ export { createInteractiveBoneEditor, type BoneEditPatch, type InteractiveBoneEditorOptions } from "./interactive-bones";