@aura3d/editor-runtime 1.0.6 → 1.1.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/AssetDropZone.d.ts +52 -0
- package/dist/AssetDropZone.d.ts.map +1 -0
- package/dist/AssetDropZone.js +115 -0
- package/dist/AssetDropZone.js.map +1 -0
- package/dist/CameraPathEditor.d.ts +48 -0
- package/dist/CameraPathEditor.d.ts.map +1 -0
- package/dist/CameraPathEditor.js +181 -0
- package/dist/CameraPathEditor.js.map +1 -0
- package/dist/CartoonSceneEditor.d.ts +111 -0
- package/dist/CartoonSceneEditor.d.ts.map +1 -0
- package/dist/CartoonSceneEditor.js +285 -0
- package/dist/CartoonSceneEditor.js.map +1 -0
- package/dist/CurveEditor.d.ts +38 -0
- package/dist/CurveEditor.d.ts.map +1 -0
- package/dist/CurveEditor.js +112 -0
- package/dist/CurveEditor.js.map +1 -0
- package/dist/EpisodeReviewPanel.d.ts +67 -0
- package/dist/EpisodeReviewPanel.d.ts.map +1 -0
- package/dist/EpisodeReviewPanel.js +162 -0
- package/dist/EpisodeReviewPanel.js.map +1 -0
- package/dist/KeyframeEditor.d.ts +49 -0
- package/dist/KeyframeEditor.d.ts.map +1 -0
- package/dist/KeyframeEditor.js +161 -0
- package/dist/KeyframeEditor.js.map +1 -0
- package/dist/MultiUserReviewWorkflow.d.ts +77 -0
- package/dist/MultiUserReviewWorkflow.d.ts.map +1 -0
- package/dist/MultiUserReviewWorkflow.js +162 -0
- package/dist/MultiUserReviewWorkflow.js.map +1 -0
- package/dist/NonlinearAnimationEditor.d.ts +81 -0
- package/dist/NonlinearAnimationEditor.d.ts.map +1 -0
- package/dist/NonlinearAnimationEditor.js +180 -0
- package/dist/NonlinearAnimationEditor.js.map +1 -0
- package/dist/PropertyPanel.d.ts +21 -0
- package/dist/PropertyPanel.d.ts.map +1 -0
- package/dist/PropertyPanel.js +72 -0
- package/dist/PropertyPanel.js.map +1 -0
- package/dist/RenderQueuePanel.d.ts +38 -0
- package/dist/RenderQueuePanel.d.ts.map +1 -0
- package/dist/RenderQueuePanel.js +72 -0
- package/dist/RenderQueuePanel.js.map +1 -0
- package/dist/SceneOutliner.d.ts +19 -0
- package/dist/SceneOutliner.d.ts.map +1 -0
- package/dist/SceneOutliner.js +64 -0
- package/dist/SceneOutliner.js.map +1 -0
- package/dist/TimelineEditorController.d.ts +102 -0
- package/dist/TimelineEditorController.d.ts.map +1 -0
- package/dist/TimelineEditorController.js +449 -0
- package/dist/TimelineEditorController.js.map +1 -0
- package/dist/TimelineTrackTypes.d.ts +25 -0
- package/dist/TimelineTrackTypes.d.ts.map +1 -0
- package/dist/TimelineTrackTypes.js +48 -0
- package/dist/TimelineTrackTypes.js.map +1 -0
- package/dist/TimelineUI.d.ts +27 -0
- package/dist/TimelineUI.d.ts.map +1 -0
- package/dist/TimelineUI.js +123 -0
- package/dist/TimelineUI.js.map +1 -0
- package/dist/VisualReviewDashboard.d.ts +43 -0
- package/dist/VisualReviewDashboard.d.ts.map +1 -0
- package/dist/VisualReviewDashboard.js +47 -0
- package/dist/VisualReviewDashboard.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/AssetDropZone.ts +144 -0
- package/src/CameraPathEditor.ts +223 -0
- package/src/CartoonSceneEditor.ts +368 -0
- package/src/CurveEditor.ts +152 -0
- package/src/EpisodeReviewPanel.ts +236 -0
- package/src/KeyframeEditor.ts +214 -0
- package/src/MultiUserReviewWorkflow.ts +229 -0
- package/src/NonlinearAnimationEditor.ts +262 -0
- package/src/PropertyPanel.ts +82 -0
- package/src/RenderQueuePanel.ts +106 -0
- package/src/SceneOutliner.ts +78 -0
- package/src/TimelineEditorController.ts +525 -0
- package/src/TimelineTrackTypes.ts +89 -0
- package/src/TimelineUI.ts +153 -0
- package/src/VisualReviewDashboard.ts +87 -0
- package/src/index.ts +53 -0
- package/tests/editor-runtime.test.ts +490 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { TimelineEditorController, type TimelineEditorSnapshot } from "./TimelineEditorController";
|
|
2
|
+
|
|
3
|
+
export interface TimelineUIOptions {
|
|
4
|
+
readonly document?: Document;
|
|
5
|
+
readonly className?: string;
|
|
6
|
+
readonly onRender?: (snapshot: TimelineEditorSnapshot) => void;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface TimelineUIRenderResult {
|
|
10
|
+
readonly root: HTMLElement;
|
|
11
|
+
readonly snapshot: TimelineEditorSnapshot;
|
|
12
|
+
dispose(): void;
|
|
13
|
+
render(): TimelineUIRenderResult;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class TimelineUI {
|
|
17
|
+
private readonly documentRef: Document;
|
|
18
|
+
private readonly listeners: (() => void)[] = [];
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
private readonly controller: TimelineEditorController,
|
|
22
|
+
private readonly container: HTMLElement,
|
|
23
|
+
private readonly options: TimelineUIOptions = {}
|
|
24
|
+
) {
|
|
25
|
+
this.documentRef = options.document ?? container.ownerDocument;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
render(): TimelineUIRenderResult {
|
|
29
|
+
this.dispose();
|
|
30
|
+
const snapshot = this.controller.snapshot();
|
|
31
|
+
this.container.replaceChildren();
|
|
32
|
+
this.container.className = this.options.className ?? "aura-timeline";
|
|
33
|
+
this.container.tabIndex = this.container.tabIndex >= 0 ? this.container.tabIndex : 0;
|
|
34
|
+
|
|
35
|
+
const toolbar = this.el("div", "aura-timeline__toolbar");
|
|
36
|
+
toolbar.append(
|
|
37
|
+
this.button("Play", () => {
|
|
38
|
+
this.controller.togglePlayback();
|
|
39
|
+
this.render();
|
|
40
|
+
}),
|
|
41
|
+
this.button("Start", () => {
|
|
42
|
+
this.controller.scrubTo(0);
|
|
43
|
+
this.render();
|
|
44
|
+
}),
|
|
45
|
+
this.button("End", () => {
|
|
46
|
+
this.controller.scrubTo(this.controller.timeline.duration);
|
|
47
|
+
this.render();
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const ruler = this.el("div", "aura-timeline__ruler");
|
|
52
|
+
const durationPixels = Math.max(1, this.controller.timeline.duration * snapshot.zoomPixelsPerSecond);
|
|
53
|
+
ruler.style.width = `${durationPixels}px`;
|
|
54
|
+
ruler.append(this.marker("playhead", this.controller.timeline.currentTime));
|
|
55
|
+
for (let second = 0; second <= Math.ceil(this.controller.timeline.duration); second += 1) {
|
|
56
|
+
const tick = this.marker("tick", second);
|
|
57
|
+
tick.textContent = `${second}s`;
|
|
58
|
+
ruler.append(tick);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const tracks = this.el("div", "aura-timeline__tracks");
|
|
62
|
+
for (const track of this.controller.timeline.tracks) {
|
|
63
|
+
const trackSnapshot = snapshot.tracks.find((candidate) => candidate.id === track.id);
|
|
64
|
+
const lane = this.el("div", "aura-timeline__track");
|
|
65
|
+
lane.dataset.trackId = track.id;
|
|
66
|
+
lane.dataset.trackKind = trackSnapshot?.kind ?? "generic";
|
|
67
|
+
lane.dataset.waveform = String(trackSnapshot?.kind === "dialogue" || trackSnapshot?.kind === "audio" || trackSnapshot?.kind === "sfx" || trackSnapshot?.kind === "viseme");
|
|
68
|
+
lane.style.minHeight = `${trackSnapshot?.laneHeight ?? 32}px`;
|
|
69
|
+
const label = this.el("div", "aura-timeline__track-label");
|
|
70
|
+
label.textContent = track.name;
|
|
71
|
+
const clips = this.el("div", "aura-timeline__clips");
|
|
72
|
+
clips.style.width = `${durationPixels}px`;
|
|
73
|
+
for (const clip of track.clips) {
|
|
74
|
+
const clipEl = this.el("button", "aura-timeline__clip") as HTMLButtonElement;
|
|
75
|
+
clipEl.type = "button";
|
|
76
|
+
clipEl.dataset.clipId = clip.id;
|
|
77
|
+
clipEl.textContent = clip.name;
|
|
78
|
+
clipEl.style.left = `${clip.startTime * snapshot.zoomPixelsPerSecond}px`;
|
|
79
|
+
clipEl.style.width = `${Math.max(8, clip.duration * snapshot.zoomPixelsPerSecond)}px`;
|
|
80
|
+
clipEl.style.background = trackSnapshot?.color ?? "#334155";
|
|
81
|
+
if (snapshot.selectedIds.includes(clip.id)) clipEl.dataset.selected = "true";
|
|
82
|
+
const click = (event: MouseEvent): void => {
|
|
83
|
+
if (trackSnapshot?.kind === "shot") {
|
|
84
|
+
this.controller.jumpToShot(clip.id);
|
|
85
|
+
}
|
|
86
|
+
this.controller.selectClip(clip.id, event.shiftKey);
|
|
87
|
+
this.render();
|
|
88
|
+
};
|
|
89
|
+
clipEl.addEventListener("click", click);
|
|
90
|
+
this.listeners.push(() => clipEl.removeEventListener("click", click));
|
|
91
|
+
clips.append(clipEl);
|
|
92
|
+
}
|
|
93
|
+
lane.append(label, clips);
|
|
94
|
+
tracks.append(lane);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const minimap = this.el("div", "aura-timeline__minimap");
|
|
98
|
+
minimap.style.setProperty("--aura-timeline-duration-px", `${durationPixels}px`);
|
|
99
|
+
minimap.textContent = `${snapshot.timeline.clipCount} clips`;
|
|
100
|
+
|
|
101
|
+
const keydown = (event: KeyboardEvent): void => {
|
|
102
|
+
if (this.controller.handleKeyboardShortcut(event.key)) {
|
|
103
|
+
event.preventDefault();
|
|
104
|
+
this.render();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
this.container.addEventListener("keydown", keydown);
|
|
108
|
+
this.listeners.push(() => this.container.removeEventListener("keydown", keydown));
|
|
109
|
+
|
|
110
|
+
this.container.append(toolbar, ruler, tracks, minimap);
|
|
111
|
+
this.options.onRender?.(snapshot);
|
|
112
|
+
return {
|
|
113
|
+
root: this.container,
|
|
114
|
+
snapshot,
|
|
115
|
+
dispose: () => this.dispose(),
|
|
116
|
+
render: () => this.render()
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
dispose(): void {
|
|
121
|
+
for (const dispose of this.listeners.splice(0)) dispose();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private button(label: string, onClick: () => void): HTMLButtonElement {
|
|
125
|
+
const button = this.el("button", "aura-timeline__button") as HTMLButtonElement;
|
|
126
|
+
button.type = "button";
|
|
127
|
+
button.textContent = label;
|
|
128
|
+
button.addEventListener("click", onClick);
|
|
129
|
+
this.listeners.push(() => button.removeEventListener("click", onClick));
|
|
130
|
+
return button;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private marker(kind: string, time: number): HTMLElement {
|
|
134
|
+
const marker = this.el("div", `aura-timeline__${kind}`);
|
|
135
|
+
marker.style.left = `${time * this.controller.zoomPixelsPerSecond}px`;
|
|
136
|
+
marker.dataset.time = String(time);
|
|
137
|
+
return marker;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private el(tagName: string, className: string): HTMLElement {
|
|
141
|
+
const element = this.documentRef.createElement(tagName);
|
|
142
|
+
element.className = className;
|
|
143
|
+
return element;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export function renderTimelineUI(
|
|
148
|
+
controller: TimelineEditorController,
|
|
149
|
+
container: HTMLElement,
|
|
150
|
+
options: TimelineUIOptions = {}
|
|
151
|
+
): TimelineUIRenderResult {
|
|
152
|
+
return new TimelineUI(controller, container, options).render();
|
|
153
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
EpisodeReviewManualVisemeEdit,
|
|
3
|
+
EpisodeReviewNote,
|
|
4
|
+
EpisodeReviewPanelSnapshot,
|
|
5
|
+
EpisodeReviewRejectedFrame,
|
|
6
|
+
EpisodeReviewWaveformLane
|
|
7
|
+
} from "./EpisodeReviewPanel";
|
|
8
|
+
|
|
9
|
+
export interface VisualReviewDashboardPackage {
|
|
10
|
+
readonly packageId: string;
|
|
11
|
+
readonly status: EpisodeReviewPanelSnapshot["status"];
|
|
12
|
+
readonly failedFrameCount: number;
|
|
13
|
+
readonly noteCount: number;
|
|
14
|
+
readonly waveformLaneCount: number;
|
|
15
|
+
readonly manualVisemeEditCount: number;
|
|
16
|
+
readonly approvalBlocked: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface VisualReviewDashboardSnapshot {
|
|
20
|
+
readonly kind: "visual-review-dashboard";
|
|
21
|
+
readonly packageCount: number;
|
|
22
|
+
readonly packages: readonly VisualReviewDashboardPackage[];
|
|
23
|
+
readonly failedFrames: readonly (EpisodeReviewRejectedFrame & { readonly packageId: string })[];
|
|
24
|
+
readonly reviewerNotes: readonly (EpisodeReviewNote & { readonly packageId: string })[];
|
|
25
|
+
readonly waveformLanes: readonly (EpisodeReviewWaveformLane & { readonly packageId: string })[];
|
|
26
|
+
readonly manualVisemeEdits: readonly (EpisodeReviewManualVisemeEdit & { readonly packageId: string })[];
|
|
27
|
+
readonly approvalBlockedPackageIds: readonly string[];
|
|
28
|
+
readonly evidence: {
|
|
29
|
+
readonly listsFailedFrames: boolean;
|
|
30
|
+
readonly listsReviewerNotes: boolean;
|
|
31
|
+
readonly waveformReview: boolean;
|
|
32
|
+
readonly manualVisemeEdits: boolean;
|
|
33
|
+
readonly approvalBlocking: boolean;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class VisualReviewDashboard {
|
|
38
|
+
private reviews: readonly EpisodeReviewPanelSnapshot[];
|
|
39
|
+
|
|
40
|
+
constructor(reviews: readonly EpisodeReviewPanelSnapshot[]) {
|
|
41
|
+
this.reviews = reviews.map((review) => ({ ...review }));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
setReviews(reviews: readonly EpisodeReviewPanelSnapshot[]): VisualReviewDashboardSnapshot {
|
|
45
|
+
this.reviews = reviews.map((review) => ({ ...review }));
|
|
46
|
+
return this.snapshot();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
snapshot(): VisualReviewDashboardSnapshot {
|
|
50
|
+
const packages = this.reviews.map((review) => ({
|
|
51
|
+
packageId: review.packageId,
|
|
52
|
+
status: review.status,
|
|
53
|
+
failedFrameCount: review.rejectedFrameCount,
|
|
54
|
+
noteCount: review.noteCount,
|
|
55
|
+
waveformLaneCount: review.waveformLaneCount,
|
|
56
|
+
manualVisemeEditCount: review.manualVisemeEditCount,
|
|
57
|
+
approvalBlocked: review.rejectedFrameCount > 0
|
|
58
|
+
}));
|
|
59
|
+
const failedFrames = this.reviews.flatMap((review) => review.rejectedFrames.map((frame) => ({ ...frame, packageId: review.packageId })));
|
|
60
|
+
const reviewerNotes = this.reviews.flatMap((review) => review.notes.map((note) => ({ ...note, packageId: review.packageId })));
|
|
61
|
+
const waveformLanes = this.reviews.flatMap((review) => (review.waveformLanes ?? []).map((lane) => ({ ...lane, packageId: review.packageId })));
|
|
62
|
+
const manualVisemeEdits = this.reviews.flatMap((review) => (review.manualVisemeEdits ?? []).map((edit) => ({ ...edit, packageId: review.packageId })));
|
|
63
|
+
const approvalBlockedPackageIds = packages.filter((item) => item.approvalBlocked).map((item) => item.packageId);
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
kind: "visual-review-dashboard",
|
|
67
|
+
packageCount: packages.length,
|
|
68
|
+
packages,
|
|
69
|
+
failedFrames,
|
|
70
|
+
reviewerNotes,
|
|
71
|
+
waveformLanes,
|
|
72
|
+
manualVisemeEdits,
|
|
73
|
+
approvalBlockedPackageIds,
|
|
74
|
+
evidence: {
|
|
75
|
+
listsFailedFrames: failedFrames.length > 0,
|
|
76
|
+
listsReviewerNotes: reviewerNotes.length > 0,
|
|
77
|
+
waveformReview: waveformLanes.length > 0,
|
|
78
|
+
manualVisemeEdits: manualVisemeEdits.length > 0,
|
|
79
|
+
approvalBlocking: approvalBlockedPackageIds.length > 0
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function createVisualReviewDashboard(reviews: readonly EpisodeReviewPanelSnapshot[]): VisualReviewDashboard {
|
|
86
|
+
return new VisualReviewDashboard(reviews);
|
|
87
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
export type { Command, CommandContext } from "./Command";
|
|
2
2
|
export { CommandHistory, CommandTransactionError } from "./CommandHistory";
|
|
3
|
+
export { AssetDropZone, readAssetFromDataTransfer, serializeAssetForDrag } from "./AssetDropZone";
|
|
4
|
+
export type { AssetDropPlacement, AssetDropResult, AssetDropZoneOptions, CartoonAssetCategory, CartoonEditorAssetReference } from "./AssetDropZone";
|
|
5
|
+
export { CameraPathEditor, createCameraPathEditor, readCameraPathKeyframes } from "./CameraPathEditor";
|
|
6
|
+
export type { EditorCameraPathEvidence, EditorCameraPathKeyframe, EditorCameraPathSample, EditorCameraVector3 } from "./CameraPathEditor";
|
|
7
|
+
export { CartoonSceneEditor, createCartoonSceneNode } from "./CartoonSceneEditor";
|
|
8
|
+
export type { CartoonSceneEditorOptions, CartoonSceneEditorSnapshot, CartoonSceneEpisodeSnapshot, CartoonSceneEpisodeState, CartoonSceneNode, CartoonSceneTransform } from "./CartoonSceneEditor";
|
|
9
|
+
export { CurveEditor } from "./CurveEditor";
|
|
10
|
+
export type { TimelineCurveEvidence, TimelineCurvePoint, TimelineCurveSample } from "./CurveEditor";
|
|
3
11
|
export { DiagnosticsOverlayModel } from "./DiagnosticsOverlayModel";
|
|
4
12
|
export type { EditorDiagnosticsInput, EditorDiagnosticsResource, EditorDiagnosticsSnapshot } from "./DiagnosticsOverlayModel";
|
|
5
13
|
export { EditorRuntime } from "./EditorRuntime";
|
|
6
14
|
export type { EditorMode, EditorRuntimeSnapshot } from "./EditorRuntime";
|
|
15
|
+
export { EpisodeReviewPanel, createEpisodeReviewPanel } from "./EpisodeReviewPanel";
|
|
16
|
+
export type { EpisodeReviewManualVisemeEdit, EpisodeReviewNote, EpisodeReviewPanelSnapshot, EpisodeReviewPanelState, EpisodeReviewRejectedFrame, EpisodeReviewStatus, EpisodeReviewWaveformLane } from "./EpisodeReviewPanel";
|
|
7
17
|
export { EditorStateModel, createMemoryEditorStateStorage } from "./EditorStateModel";
|
|
8
18
|
export type { EditorGridSnapSettings, EditorStateChange, EditorStateSnapshot, EditorStateStorage, EditorViewportSettings } from "./EditorStateModel";
|
|
9
19
|
export { EditorPluginHost } from "./EditorPluginHost";
|
|
@@ -22,6 +32,15 @@ export { HierarchyModel } from "./HierarchyModel";
|
|
|
22
32
|
export type { HierarchyLikeNode, HierarchyNodeDescriptor } from "./HierarchyModel";
|
|
23
33
|
export { InspectorModel } from "./InspectorModel";
|
|
24
34
|
export type { InspectorEditableValue, InspectorProperty } from "./InspectorModel";
|
|
35
|
+
export { KeyframeEditor, encodeTimelineKeyframes, readTimelineKeyframes, timelineKeyframesByProperty } from "./KeyframeEditor";
|
|
36
|
+
export type {
|
|
37
|
+
CreateTimelineKeyframeOptions,
|
|
38
|
+
PasteTimelineKeyframesOptions,
|
|
39
|
+
TimelineBezierHandle,
|
|
40
|
+
TimelineKeyframe,
|
|
41
|
+
TimelineKeyframeInterpolation,
|
|
42
|
+
TimelineKeyframeValue
|
|
43
|
+
} from "./KeyframeEditor";
|
|
25
44
|
export { sampleLocalizationAccessibilityFixture } from "./LocalizationAccessibilityFixtures";
|
|
26
45
|
export type {
|
|
27
46
|
EditorAccessibilityElementSample,
|
|
@@ -34,14 +53,40 @@ export type {
|
|
|
34
53
|
} from "./LocalizationAccessibilityFixtures";
|
|
35
54
|
export { MaterialVariantWorkflow } from "./MaterialVariantWorkflow";
|
|
36
55
|
export type { MaterialVariantRenderOptions, MaterialVariantState } from "./MaterialVariantWorkflow";
|
|
56
|
+
export { MultiUserReviewWorkflow, createMultiUserReviewWorkflow } from "./MultiUserReviewWorkflow";
|
|
57
|
+
export type {
|
|
58
|
+
MultiUserReviewWorkflowSnapshot,
|
|
59
|
+
MultiUserReviewWorkflowState,
|
|
60
|
+
ReviewDecision,
|
|
61
|
+
ReviewDecisionStatus,
|
|
62
|
+
ReviewParticipant,
|
|
63
|
+
ReviewParticipantRole,
|
|
64
|
+
ReviewThread,
|
|
65
|
+
ReviewWorkflowStatus
|
|
66
|
+
} from "./MultiUserReviewWorkflow";
|
|
67
|
+
export { NonlinearAnimationEditor, createNonlinearAnimationEditor } from "./NonlinearAnimationEditor";
|
|
68
|
+
export type {
|
|
69
|
+
NonlinearAnimationEditorSnapshot,
|
|
70
|
+
NonlinearAnimationEditorState,
|
|
71
|
+
NonlinearBinAsset,
|
|
72
|
+
NonlinearBinAssetKind,
|
|
73
|
+
NonlinearSequenceConfig,
|
|
74
|
+
NonlinearSequenceSnapshot
|
|
75
|
+
} from "./NonlinearAnimationEditor";
|
|
37
76
|
export { PickingService } from "./PickingService";
|
|
38
77
|
export type { EditorPickHit, EditorPickTarget, EditorPickingColorId, EditorPickingEvidenceSnapshot } from "./PickingService";
|
|
39
78
|
export { PlayModeBridge } from "./PlayModeBridge";
|
|
40
79
|
export type { SnapshotAdapter } from "./PlayModeBridge";
|
|
41
80
|
export { PrefabRegistry, validatePrefab } from "./PrefabRegistry";
|
|
42
81
|
export type { CreatePrefabOptions, EditorPrefab, EditorPrefabNodeBase, EditorPrefabSchemaVersion, InstantiatePrefabOptions } from "./PrefabRegistry";
|
|
82
|
+
export { PropertyPanel } from "./PropertyPanel";
|
|
83
|
+
export type { PropertyPanelField, PropertyPanelOptions } from "./PropertyPanel";
|
|
43
84
|
export { RotateGizmo } from "./RotateGizmo";
|
|
85
|
+
export { RenderQueuePanel, createRenderQueuePanel } from "./RenderQueuePanel";
|
|
86
|
+
export type { RenderQueuePanelItem, RenderQueuePanelItemStatus, RenderQueuePanelSnapshot } from "./RenderQueuePanel";
|
|
44
87
|
export { ScaleGizmo } from "./ScaleGizmo";
|
|
88
|
+
export { SceneOutliner } from "./SceneOutliner";
|
|
89
|
+
export type { SceneOutlinerItem, SceneOutlinerOptions } from "./SceneOutliner";
|
|
45
90
|
export { Selection } from "./Selection";
|
|
46
91
|
export type { SelectionChange, SelectionId, SelectionListener } from "./Selection";
|
|
47
92
|
export { createOldBranchShaderGraphFixture } from "./ShaderGraphModel";
|
|
@@ -63,6 +108,8 @@ export type {
|
|
|
63
108
|
TimelineRuntimeTargetSnapshot
|
|
64
109
|
} from "./TimelineRuntimeBridge";
|
|
65
110
|
export { TranslateGizmo } from "./TranslateGizmo";
|
|
111
|
+
export { TimelineEditorController } from "./TimelineEditorController";
|
|
112
|
+
export type { TimelineEditorClipboard, TimelineEditorControllerOptions, TimelineEditorSnapshot, TimelineRoutePlaybackBinding } from "./TimelineEditorController";
|
|
66
113
|
export { TimelineClip, TimelineModel, TimelineTrack } from "./TimelineModel";
|
|
67
114
|
export type {
|
|
68
115
|
TimelineActiveClipSnapshot,
|
|
@@ -76,6 +123,12 @@ export type {
|
|
|
76
123
|
TimelineTrackConfig,
|
|
77
124
|
TimelineTrackSnapshot
|
|
78
125
|
} from "./TimelineModel";
|
|
126
|
+
export { TIMELINE_TRACK_TYPES, createTimelineTrackConfig, timelineTrackKindFromConfig, timelineTrackTypeDefinition } from "./TimelineTrackTypes";
|
|
127
|
+
export type { CreateTimelineTrackConfigOptions, TimelineEditorTrackKind, TimelineTrackTypeDefinition } from "./TimelineTrackTypes";
|
|
128
|
+
export { TimelineUI, renderTimelineUI } from "./TimelineUI";
|
|
129
|
+
export type { TimelineUIOptions, TimelineUIRenderResult } from "./TimelineUI";
|
|
130
|
+
export { VisualReviewDashboard, createVisualReviewDashboard } from "./VisualReviewDashboard";
|
|
131
|
+
export type { VisualReviewDashboardPackage, VisualReviewDashboardSnapshot } from "./VisualReviewDashboard";
|
|
79
132
|
export { CreateNodeCommand } from "./commands/CreateNodeCommand";
|
|
80
133
|
export type { NodeContainer } from "./commands/CreateNodeCommand";
|
|
81
134
|
export { DeleteNodeCommand } from "./commands/DeleteNodeCommand";
|