@mavonengine/editor 0.0.7 → 0.0.9
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/Editor/UI/ActivityBar.d.ts +1 -1
- package/dist/Editor/UI/Assets/AssetStats.d.ts +3 -3
- package/dist/Editor/UI/Assets/Assets.d.ts +1 -1
- package/dist/Editor/UI/Assets/AudioPlayer.d.ts +1 -1
- package/dist/Editor/UI/Assets/ModelViewer.d.ts +3 -3
- package/dist/Editor/UI/Assets/ParticleViewer.d.ts +3 -3
- package/dist/Editor/UI/Assets/TextureViewer.d.ts +5 -4
- package/dist/Editor/UI/CanvasPanel.d.ts +1 -1
- package/dist/Editor/UI/CanvasToolbar.d.ts +1 -1
- package/dist/Editor/UI/Controllers/ControllerDebug.d.ts +1 -0
- package/dist/Editor/UI/Controllers/GamepadDiagram.d.ts +5 -0
- package/dist/Editor/UI/Controllers/useGamepads.d.ts +6 -0
- package/dist/Editor/UI/DockArea.d.ts +17 -0
- package/dist/Editor/UI/Editor.d.ts +1 -1
- package/dist/Editor/UI/PanelHeader.d.ts +1 -1
- package/dist/Editor/UI/PropertiesPanel.d.ts +1 -1
- package/dist/Editor/UI/SceneExplorer.d.ts +1 -1
- package/dist/Editor/UI/ScenePanel.d.ts +1 -0
- package/dist/Editor/UI/ShadeModeButtons.d.ts +1 -1
- package/dist/Editor/UI/StatusBar.d.ts +1 -1
- package/dist/Editor/UI/TabBar.d.ts +1 -1
- package/dist/Editor/UI/Window.d.ts +1 -1
- package/dist/Editor/builtinPrefabs.d.ts +4 -0
- package/dist/Editor/demoScene.d.ts +7 -0
- package/dist/Editor/panels.d.ts +22 -0
- package/dist/Editor/recordPrefabUsage.d.ts +7 -0
- package/dist/Editor.css +2 -1
- package/dist/Editor.d.ts +29 -5
- package/dist/Editor.mjs +1654 -9
- package/dist/global-l94NfB94.mjs +22 -0
- package/dist/mount-CnirMLg0.mjs +35603 -0
- package/dist/panels-BqmX3eap.mjs +45 -0
- package/package.json +20 -20
- package/dist/Editor-BZKTiLdQ.mjs +0 -1329
- package/dist/mount-DicE86w2.mjs +0 -40697
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function ActivityBar(): import("react
|
|
1
|
+
export default function ActivityBar(): import("react").JSX.Element;
|
|
@@ -2,7 +2,7 @@ interface Stat {
|
|
|
2
2
|
label: string;
|
|
3
3
|
value: string;
|
|
4
4
|
}
|
|
5
|
-
declare const _default: ({ stats }: {
|
|
6
|
-
stats: Stat[];
|
|
7
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
8
5
|
export default _default;
|
|
6
|
+
declare function _default({ stats }: {
|
|
7
|
+
stats: Stat[];
|
|
8
|
+
}): import("react").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AnimationClip, Object3D } from 'three';
|
|
2
|
-
|
|
2
|
+
export default _default;
|
|
3
|
+
declare function _default({ model, animations }: {
|
|
3
4
|
model: Object3D;
|
|
4
5
|
animations?: AnimationClip[];
|
|
5
|
-
})
|
|
6
|
-
export default _default;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CubeTexture, Texture } from 'three';
|
|
2
|
-
export
|
|
3
|
-
declare
|
|
4
|
-
texture: Texture | CubeTexture;
|
|
5
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export type RawImage = HTMLImageElement | HTMLCanvasElement | ImageBitmap;
|
|
3
|
+
export declare function getTextureUrl(texture: Texture<RawImage> | CubeTexture<HTMLImageElement>): string;
|
|
6
4
|
export default _default;
|
|
5
|
+
declare function _default({ texture }: {
|
|
6
|
+
texture: Texture<RawImage> | CubeTexture<HTMLImageElement>;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function ControllerDebug(): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GamepadState } from '@mavonengine/core/GamepadManager';
|
|
2
|
+
/**
|
|
3
|
+
* Connected controllers from the running game.
|
|
4
|
+
* Re-renders on connect / disconnect, and every animation frame when `live` is set.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useGamepads(live?: boolean): GamepadState[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EditorPanelLocation } from '@mavonengine/core/Types/IEditor';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export interface BuiltinPanel {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
element: ReactNode;
|
|
7
|
+
/** Wrap in the padded, scrolling panel body. Default true */
|
|
8
|
+
padded?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* One dock of the editor (left, bottom or right): its built-in panels and the custom ones registered for it, as tabs.
|
|
12
|
+
* Built-in panels stay mounted while hidden so they keep their state; custom panels mount when their tab is shown.
|
|
13
|
+
*/
|
|
14
|
+
export default function DockArea({ location, builtins }: {
|
|
15
|
+
location: EditorPanelLocation;
|
|
16
|
+
builtins: BuiltinPanel[];
|
|
17
|
+
}): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function PropertiesPanel(): import("react
|
|
1
|
+
export default function PropertiesPanel(): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function SceneExplorer(): import("react
|
|
1
|
+
export default function SceneExplorer(): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function ScenePanel(): import("react").JSX.Element;
|
|
@@ -6,5 +6,5 @@ interface Props {
|
|
|
6
6
|
activeClass: string;
|
|
7
7
|
size?: number;
|
|
8
8
|
}
|
|
9
|
-
export default function ShadeModeButtons({ shadeMode, onChange, btnClass, activeClass, size }: Props): import("react
|
|
9
|
+
export default function ShadeModeButtons({ shadeMode, onChange, btnClass, activeClass, size }: Props): import("react").JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function StatusBar(): import("react
|
|
1
|
+
export default function StatusBar(): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function TabBar(): import("react
|
|
1
|
+
export default function TabBar(): import("react").JSX.Element;
|
|
@@ -11,5 +11,5 @@ interface Props {
|
|
|
11
11
|
storageKey?: string;
|
|
12
12
|
onClose(): void;
|
|
13
13
|
}
|
|
14
|
-
declare const _default: ({ title, children, defaultX, defaultY, defaultWidth, defaultHeight, minWidth, minHeight, storageKey, onClose }: Props) => import("react").ReactPortal;
|
|
15
14
|
export default _default;
|
|
15
|
+
declare function _default({ title, children, defaultX, defaultY, defaultWidth, defaultHeight, minWidth, minHeight, storageKey, onClose }: Props): import("react").ReactPortal;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SceneData } from '@mavonengine/core/Scene/types';
|
|
2
|
+
/** The scene the editor opens and saves when the game loaded none */
|
|
3
|
+
export declare const DEFAULT_SCENE_NAME = "main";
|
|
4
|
+
/**
|
|
5
|
+
* Some shapes on a ground plane, to have something to look at in a new project
|
|
6
|
+
*/
|
|
7
|
+
export declare function demoScene(): SceneData;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EditorPanel, EditorPanelLocation } from '@mavonengine/core/Types/IEditor';
|
|
2
|
+
import type IEditor from '@mavonengine/core/Types/IEditor';
|
|
3
|
+
import type { ComponentType } from 'react';
|
|
4
|
+
export type { EditorPanelLocation };
|
|
5
|
+
/**
|
|
6
|
+
* A panel for the editor. Same as core's `EditorPanel`, with `component` typed as a React component.
|
|
7
|
+
*/
|
|
8
|
+
export interface EditorPanelDefinition extends Omit<EditorPanel, 'component'> {
|
|
9
|
+
component?: ComponentType<{
|
|
10
|
+
editor: IEditor;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Dock a panel in the editor. Works before the editor boots too, e.g. next to `Editor.registerListener()`.
|
|
15
|
+
* Returns a function that removes it again.
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerEditorPanel(panel: EditorPanelDefinition | EditorPanel): () => void;
|
|
18
|
+
export declare function unregisterEditorPanel(id: string): void;
|
|
19
|
+
/** Every registered panel, for `useSyncExternalStore` */
|
|
20
|
+
export declare function getEditorPanels(): EditorPanelDefinition[];
|
|
21
|
+
export declare function subscribeEditorPanels(listener: () => void): () => void;
|
|
22
|
+
export declare function panelsAt(all: EditorPanelDefinition[], location: EditorPanelLocation): EditorPanelDefinition[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tell the dev server that the project uses a plugin prefab, so its assets ship in the release.
|
|
3
|
+
* The server adds it to the plugin's `prefabs` in mavonengine.json. Sent once per prefab per session.
|
|
4
|
+
*/
|
|
5
|
+
export declare function recordPrefabUsage(plugin: string, prefab: string, fetchFn?: typeof fetch): Promise<void>;
|
|
6
|
+
/** For tests */
|
|
7
|
+
export declare function resetRecordedPrefabs(): void;
|
package/dist/Editor.css
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
:root{--bg-primary: #1A1A1A;--bg-secondary: #222222;--bg-panel: #2A2A2A;--bg-input: #1E1E1E;--bg-viewport: #111111;--bg-header: #1A1A1A;--bg-toolbar: #252525;--bg-hover: #333333;--bg-selected: #2C3E50;--bg-active: #3A3A3A;--bg-statusbar: #007ACC;--text-primary: #E0E0E0;--text-secondary: #888888;--text-muted: #666666;--text-label: #AAAAAA;--text-bright: #FFFFFF;--border-primary: #333333;--border-subtle: #2A2A2A;--border-active: #555555;--accent-blue: #007ACC;--accent-green: #4EC9B0;--accent-orange: #CE9178;--accent-yellow: #DCDCAA;--accent-red: #F44747;--accent-purple: #C586C0;--icon-default: #AAAAAA;--icon-active: #FFFFFF;--icon-accent: #007ACC;--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Space Mono", "SF Mono", "Fira Code", monospace;--font-size-xs: 10px;--font-size-sm: 11px;--font-size-md: 12px;--font-size-lg: 13px;--font-size-xl: 14px;--font-size-title: 16px;--spacing-xs: 2px;--spacing-sm: 4px;--spacing-md: 8px;--spacing-lg: 12px;--spacing-xl: 16px;--spacing-2xl: 24px;--radius-none: 0px;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 6px}html,body,#root,#ui{height:100%;margin:0;overflow:hidden}*{box-sizing:border-box}[data-panel-resize-handle-id]{background-color:var(--border-primary);transition:background-color .15s ease}[data-panel-resize-handle-id]:hover,[data-panel-resize-handle-id][data-resize-handle-active]{background-color:var(--accent-blue)}._activityBar_4dnwm_1{width:40px;min-width:40px;height:100%;background-color:var(--bg-header);display:flex;flex-direction:column;align-items:center;padding:var(--spacing-md) 0;gap:var(--spacing-xs);border-right:1px solid var(--border-primary)}._icon_4dnwm_14{width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--radius-sm);transition:background-color .1s ease}._icon_4dnwm_14:hover{background-color:var(--bg-hover)}._icon_4dnwm_14._active_4dnwm_29{background-color:var(--accent-blue)}._icon_4dnwm_14 svg{width:16px;height:16px}._window_ybolb_1{background-color:var(--bg-secondary)!important;border:1px solid var(--border-primary)!important;border-radius:var(--radius-md)!important;color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-lg);display:flex!important;flex-direction:column!important;overflow:hidden!important;z-index:1000;box-shadow:0 8px 32px #0009!important}._handle_ybolb_15{height:28px;min-height:28px;background-color:var(--bg-header);border-bottom:1px solid var(--border-primary);border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:grab;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:flex-end;padding:0 var(--spacing-md)}._handle_ybolb_15:active{cursor:grabbing}._title_ybolb_33{flex:1;font-size:var(--font-size-md);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 var(--spacing-md);-webkit-user-select:none;user-select:none}._body_ybolb_44{flex:1;overflow:auto;padding:var(--spacing-lg);min-height:0}._close_ybolb_51{background:none;border:none;color:var(--text-muted);font-size:var(--font-size-xl);cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);line-height:1;flex-shrink:0}._close_ybolb_51:hover{color:var(--text-primary);background-color:var(--bg-hover)}._assetsPanel_5ux7f_1{display:flex;flex-direction:column;flex:1;overflow:hidden}._toolbar_5ux7f_8{display:flex;align-items:center;gap:var(--spacing-md);padding:0 var(--spacing-md);height:24px;flex-shrink:0}._searchWrapper_5ux7f_17{flex:1;position:relative;display:flex;align-items:center}._search_5ux7f_17{width:100%;height:20px;padding:0 20px 0 var(--spacing-md);background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-xs);outline:none;box-sizing:border-box}._search_5ux7f_17::placeholder{color:var(--text-muted)}._search_5ux7f_17:focus{border-color:var(--accent-blue)}._searchClear_5ux7f_46{position:absolute;right:4px;background:none;border:none;color:var(--text-muted);font-size:10px;cursor:pointer;padding:0;line-height:1;display:flex;align-items:center}._searchClear_5ux7f_46:hover{color:var(--text-primary)}._categorySelect_5ux7f_64{height:20px;padding:0 var(--spacing-sm);background-color:var(--bg-active);border:none;border-radius:9px;color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-xs);outline:none;cursor:pointer;flex-shrink:0}._categorySelect_5ux7f_64:focus{border-color:var(--accent-blue)}._assets_5ux7f_1{flex:1;overflow:auto;padding:var(--spacing-lg);display:flex;flex-wrap:wrap;gap:var(--spacing-lg);align-content:flex-start;align-items:flex-start}._assetRow_5ux7f_93{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--font-size-xs);color:var(--text-secondary);cursor:grab;max-width:80px;word-break:break-word;text-align:center}._assetRow_5ux7f_93:hover{background-color:var(--bg-hover)}._assetRow_5ux7f_93 img{width:64px;height:64px;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-color:var(--bg-input)}._texturePreview_5ux7f_122{width:64px;height:64px;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-image:linear-gradient(45deg,#2a2a2a 25%,transparent 25%),linear-gradient(-45deg,#2a2a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a2a 75%),linear-gradient(-45deg,transparent 75%,#2a2a2a 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0;background-color:var(--bg-input)}._assetIcon_5ux7f_138{width:64px;height:64px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-color:var(--bg-input);cursor:grab}._assetIcon_5ux7f_138 svg{width:24px;height:24px;color:var(--text-muted)}._stats_1gd9h_1{display:flex;flex-direction:column;gap:var(--spacing-md);flex-shrink:0;width:90px;border-left:1px solid var(--border-primary);padding:0 var(--spacing-lg);justify-content:center}._stat_1gd9h_1{display:flex;flex-direction:column;gap:1px}._label_1gd9h_18{font-family:var(--font-ui);font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}._value_1gd9h_26{font-family:var(--font-mono);font-size:var(--font-size-md);color:var(--text-primary);font-variant-numeric:tabular-nums}._player_nqeb9_1{display:flex;flex-direction:row;gap:0;height:100%}._main_nqeb9_8{display:flex;flex-direction:column;gap:var(--spacing-lg);flex:1;min-width:0}._waveform_nqeb9_16{flex:1;min-height:0}._controls_nqeb9_21{display:flex;align-items:center;gap:var(--spacing-md);flex-shrink:0}._playButton_nqeb9_28{background:none;border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-xl);cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0}._playButton_nqeb9_28:hover{background-color:var(--bg-hover)}._time_nqeb9_47{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-muted);font-variant-numeric:tabular-nums}._wrapper_65zj4_1{position:relative;display:flex;flex-direction:column;width:100%;height:100%}._canvas_65zj4_9{width:100%;height:100%;background-color:var(--bg-viewport)}._toolbar_65zj4_15{display:flex;align-items:center;height:32px;padding:0 var(--spacing-md);gap:var(--spacing-sm);background-color:var(--bg-toolbar);border-bottom:1px solid var(--border-primary);flex-shrink:0}._toolBtn_65zj4_26{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:none;color:var(--icon-default);cursor:pointer;transition:background-color .1s ease,color .1s ease;padding:0}._toolBtn_65zj4_26:hover{background-color:var(--bg-hover);color:var(--icon-active)}._toolBtn_65zj4_26._active_65zj4_46{background-color:var(--accent-blue);color:var(--icon-active)}._separator_65zj4_51{width:1px;height:16px;background-color:var(--border-primary);flex-shrink:0}._toolbarRight_65zj4_58{position:absolute;top:2px;right:var(--spacing-md);display:flex;gap:var(--spacing-sm);z-index:10;pointer-events:all;align-items:flex-start}._overlayDropdown_65zj4_69{position:absolute;top:calc(100% + 6px);right:0;background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-lg);min-width:180px;z-index:20;display:flex;flex-direction:column;gap:var(--spacing-sm);font-family:var(--font-ui);font-size:var(--font-size-lg)}._overlaySection_65zj4_86{font-size:var(--font-size-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:6px;margin-bottom:2px}._overlaySection_65zj4_86:first-child{margin-top:0}._overlayRow_65zj4_99{display:flex;align-items:center;gap:var(--spacing-md);font-size:var(--font-size-lg);color:var(--text-primary);cursor:pointer;padding:2px 0;-webkit-user-select:none;user-select:none}._overlayRow_65zj4_99:hover{color:var(--text-bright)}._overlayRow_65zj4_99 input[type=checkbox]{accent-color:var(--accent-blue);width:14px;height:14px;cursor:pointer;flex-shrink:0}._viewer_8mn40_1{display:flex;flex-direction:row;height:100%;max-height:100%;overflow:hidden}._canvasWrapper_8mn40_9{position:relative;flex:1;min-width:0;min-height:0}._toolbar_8mn40_16{position:absolute;top:var(--spacing-md);left:var(--spacing-md);display:flex;gap:var(--spacing-sm);background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-sm);z-index:10}._animBar_8mn40_29{position:absolute;bottom:30px;left:var(--spacing-md);z-index:10;display:flex;align-items:center;gap:var(--spacing-md);background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md)}._scrubber_8mn40_43{position:absolute;bottom:0;left:0;width:100%;height:20px;z-index:10;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;cursor:pointer;margin:0;padding:0}._scrubber_8mn40_43::-webkit-slider-runnable-track{background:var(--bg-panel);border-top:1px solid var(--border-primary);height:4px}._scrubber_8mn40_43::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--accent-blue);cursor:pointer;margin-top:-4px}._scrubber_8mn40_43::-moz-range-track{background:var(--bg-panel);border-top:1px solid var(--border-primary);height:4px}._scrubber_8mn40_43::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent-blue);cursor:pointer;border:none}._animSelect_8mn40_89{background:none;border:none;color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-md);cursor:pointer;outline:none;max-width:200px}._animSelect_8mn40_89:hover{border-color:var(--border-active)}._animLoopLabel_8mn40_104{display:flex;align-items:center;gap:5px;color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-md);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}._viewer_76hio_1{display:flex;flex-direction:row;height:100%;max-height:100%;overflow:hidden}._imageWrapper_76hio_9{flex:1;min-width:0;min-height:0;position:relative;overflow:hidden;background-image:linear-gradient(45deg,#2a2a2a 25%,transparent 25%),linear-gradient(-45deg,#2a2a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a2a 75%),linear-gradient(-45deg,transparent 75%,#2a2a2a 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:var(--bg-input)}._zoomInner_76hio_25{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0;display:flex;align-items:center;justify-content:center}._image_76hio_9{max-width:100%;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}._zoomReset_76hio_42{position:absolute;bottom:var(--spacing-md);right:var(--spacing-md);background:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono);padding:2px 6px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}._zoomReset_76hio_42:hover{background:var(--bg-hover)}._cubeCross_76hio_62{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,1fr);gap:2px;width:100%;height:100%;padding:var(--spacing-md);box-sizing:border-box;-webkit-user-select:none;user-select:none;pointer-events:none}._cubeFace_76hio_75{position:relative;background-image:linear-gradient(45deg,#2a2a2a 25%,transparent 25%),linear-gradient(-45deg,#2a2a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2a2a2a 75%),linear-gradient(-45deg,transparent 75%,#2a2a2a 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:var(--bg-input);overflow:hidden}._cubeFace_76hio_75 img{width:100%;height:100%;object-fit:contain;display:block}._faceLabel_76hio_95{position:absolute;bottom:3px;left:4px;font-size:9px;font-family:var(--font-mono);color:#ffffffa6;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.8)}._cubeEmpty_76hio_106{background:transparent}._noPreview_76hio_110{color:var(--text-muted);font-size:var(--font-size-md);font-family:var(--font-ui);-webkit-user-select:none;user-select:none}._root_ngf3k_1{display:flex;flex-direction:column;height:100%;background-color:var(--bg-primary)}._main_ngf3k_8{display:flex;flex:1;overflow:hidden}._editor_ngf3k_14{flex:1;height:100%;background-color:var(--bg-primary)}._panel_ngf3k_20{font-family:var(--font-ui);font-size:var(--font-size-lg);color:var(--text-primary);background-color:var(--bg-secondary)}._panelContent_ngf3k_27{display:flex;flex-direction:column;height:100%;overflow:hidden}._panelBody_ngf3k_34{flex:1;overflow:auto;padding:var(--spacing-md)}._middleGroup_ngf3k_40{flex:1}._panelHeader_25fch_1{height:28px;min-height:28px;display:flex;align-items:center;padding:0 var(--spacing-md);background-color:var(--bg-header);font-family:var(--font-ui);font-size:var(--font-size-xs);font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none}._container_1jjbp_1{display:flex;flex-direction:column;gap:4px}._nameRow_1jjbp_8{display:flex;align-items:center;height:32px;padding:0 12px;gap:8px;background-color:var(--bg-panel);border-bottom:1px solid var(--border-primary)}._nameIcon_1jjbp_18{width:16px;height:16px;flex-shrink:0}._nameText_1jjbp_24{font-family:var(--font-ui);font-size:var(--font-size-xl);font-weight:600;color:var(--text-bright)}._sectionHeader_1jjbp_32{display:flex;align-items:center;height:24px;padding:0 8px;gap:4px;cursor:pointer;-webkit-user-select:none;user-select:none}._sectionHeader_1jjbp_32:hover{background-color:var(--bg-hover)}._sectionArrow_1jjbp_46{width:10px;height:10px;flex-shrink:0;color:var(--text-secondary);transition:transform .1s ease}._sectionArrow_1jjbp_46._collapsed_1jjbp_54{transform:rotate(-90deg)}._sectionTitle_1jjbp_58{font-family:var(--font-ui);font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}._divider_1jjbp_66{height:1px;background-color:var(--border-primary);margin:0}._propertyRow3_1jjbp_73{display:flex;align-items:center;height:24px;padding:0 8px;gap:8px}._propertyLabel_1jjbp_81{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);width:60px;flex-shrink:0}._valueInput_1jjbp_89{width:52px;height:20px;padding:0 6px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);outline:none;box-sizing:border-box}._valueInput_1jjbp_89:focus{border-color:var(--accent-blue)}._checkboxRow_1jjbp_108{display:flex;align-items:center;height:24px;padding:0 8px;gap:6px}._checkbox_1jjbp_108{width:14px;height:14px;accent-color:var(--accent-blue);cursor:pointer;flex-shrink:0}._checkboxLabel_1jjbp_124{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer}._propertyRow_1jjbp_73{display:flex;align-items:center;height:24px;padding:0 8px;gap:8px}._propertyLabelWide_1jjbp_140{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);width:80px;flex-shrink:0}._valueDisplay_1jjbp_148{display:flex;align-items:center;height:20px;padding:0 6px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);min-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._valueInputWide_1jjbp_165{flex:1;height:20px;padding:0 6px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);outline:none;box-sizing:border-box}._valueInputWide_1jjbp_165:focus{border-color:var(--accent-blue)}._sliderRow_1jjbp_184{display:flex;align-items:center;height:24px;padding:0 8px;gap:8px}._sliderTrack_1jjbp_192{flex:1;height:4px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:2px;position:relative;cursor:pointer}._sliderFill_1jjbp_202{position:absolute;top:0;left:0;height:100%;background-color:var(--accent-blue);border-radius:2px;pointer-events:none}._sliderThumb_1jjbp_212{position:absolute;top:50%;width:10px;height:10px;background-color:var(--text-bright);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 1px 3px #0006}._sliderInput_1jjbp_224{width:48px;height:20px;padding:0 4px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);outline:none;box-sizing:border-box;text-align:right}._sliderInput_1jjbp_224:focus{border-color:var(--accent-blue)}._draggableInput_1jjbp_244{width:52px;height:20px;padding:0 6px;background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);outline:none;box-sizing:border-box;cursor:ew-resize}._draggableInput_1jjbp_244:focus{border-color:var(--accent-blue);cursor:text}._empty_1jjbp_265{padding:16px 8px;color:var(--text-muted);font-family:var(--font-ui);font-size:var(--font-size-md);font-style:italic}._colorInput_1jjbp_274{width:32px;height:20px;padding:1px 2px;border:1px solid var(--border-primary);border-radius:var(--radius-sm);background-color:var(--bg-input);cursor:pointer;box-sizing:border-box}._prefabSection_1jjbp_286{display:flex;flex-direction:column;gap:4px}._container_1n3qk_1{font-family:var(--font-ui);font-size:var(--font-size-md);-webkit-user-select:none;user-select:none;padding:var(--spacing-sm) 0}._row_1n3qk_8{display:flex;align-items:center;height:24px;cursor:pointer;gap:var(--spacing-sm);border-radius:var(--radius-sm);padding-right:var(--spacing-md)}._row_1n3qk_8:hover{background-color:var(--bg-hover)}._selected_1n3qk_22,._selected_1n3qk_22:hover{background-color:var(--bg-selected)}._arrow_1n3qk_30{width:12px;font-size:10px;color:var(--text-secondary);cursor:pointer;flex-shrink:0;text-align:center}._typeIcon_1n3qk_39{width:14px;height:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center}._typeIcon_1n3qk_39 svg{width:14px;height:14px}._name_1n3qk_53{color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-md)}._empty_1n3qk_61{padding:var(--spacing-md);color:var(--text-muted);font-style:italic;font-family:var(--font-ui);font-size:var(--font-size-md)}._statusBar_1ffi6_1{height:22px;min-height:22px;background-color:var(--bg-statusbar);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-md);font-size:var(--font-size-xs);color:var(--text-bright)}._section_1ffi6_13{display:flex;gap:var(--spacing-xl);align-items:center}._stat_1ffi6_1{display:flex;gap:var(--spacing-sm);font-family:var(--font-mono)}._statLabel_1ffi6_25{opacity:.7;font-family:var(--font-mono)}._branch_1ffi6_30{font-family:var(--font-ui);font-weight:500}._engineName_1ffi6_35{font-family:var(--font-ui);font-weight:600}
|
|
1
|
+
:root{--bg-primary:#1a1a1a;--bg-secondary:#222;--bg-panel:#2a2a2a;--bg-input:#1e1e1e;--bg-viewport:#111;--bg-header:#1a1a1a;--bg-toolbar:#252525;--bg-hover:#333;--bg-selected:#2c3e50;--bg-active:#3a3a3a;--bg-statusbar:#007acc;--text-primary:#e0e0e0;--text-secondary:#888;--text-muted:#666;--text-label:#aaa;--text-bright:#fff;--border-primary:#333;--border-subtle:#2a2a2a;--border-active:#555;--accent-blue:#007acc;--accent-green:#4ec9b0;--accent-orange:#ce9178;--accent-yellow:#dcdcaa;--accent-red:#f44747;--accent-purple:#c586c0;--icon-default:#aaa;--icon-active:#fff;--icon-accent:#007acc;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Space Mono", "SF Mono", "Fira Code", monospace;--font-size-xs:10px;--font-size-sm:11px;--font-size-md:12px;--font-size-lg:13px;--font-size-xl:14px;--font-size-title:16px;--spacing-xs:2px;--spacing-sm:4px;--spacing-md:8px;--spacing-lg:12px;--spacing-xl:16px;--spacing-2xl:24px;--radius-none:0px;--radius-sm:2px;--radius-md:4px;--radius-lg:6px}html,body,#root,#ui{height:100%;margin:0;overflow:hidden}*{box-sizing:border-box}[data-panel-resize-handle-id]{background-color:var(--border-primary);transition:background-color .15s}[data-panel-resize-handle-id]:hover,[data-panel-resize-handle-id][data-resize-handle-active]{background-color:var(--accent-blue)}._activityBar_4dnwm_1{background-color:var(--bg-header);width:40px;min-width:40px;height:100%;padding:var(--spacing-md) 0;align-items:center;gap:var(--spacing-xs);border-right:1px solid var(--border-primary);flex-direction:column;display:flex}._icon_4dnwm_14{cursor:pointer;border-radius:var(--radius-sm);justify-content:center;align-items:center;width:28px;height:28px;transition:background-color .1s;display:flex}._icon_4dnwm_14:hover{background-color:var(--bg-hover)}._icon_4dnwm_14._active_4dnwm_29{background-color:var(--accent-blue)}._icon_4dnwm_14 svg{width:16px;height:16px}._window_ybolb_1{color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-lg);z-index:1000;background-color:var(--bg-secondary)!important;border:1px solid var(--border-primary)!important;border-radius:var(--radius-md)!important;flex-direction:column!important;display:flex!important;overflow:hidden!important;box-shadow:0 8px 32px #0009!important}._handle_ybolb_15{background-color:var(--bg-header);border-bottom:1px solid var(--border-primary);border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:grab;-webkit-user-select:none;user-select:none;height:28px;min-height:28px;padding:0 var(--spacing-md);justify-content:flex-end;align-items:center;display:flex}._handle_ybolb_15:active{cursor:grabbing}._title_ybolb_33{font-size:var(--font-size-md);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;padding:0 var(--spacing-md);-webkit-user-select:none;user-select:none;flex:1;overflow:hidden}._body_ybolb_44{padding:var(--spacing-lg);flex:1;min-height:0;overflow:auto}._close_ybolb_51{color:var(--text-muted);font-size:var(--font-size-xl);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:2px 6px;line-height:1}._close_ybolb_51:hover{color:var(--text-primary);background-color:var(--bg-hover)}._assetsPanel_5ux7f_1{flex-direction:column;flex:1;display:flex;overflow:hidden}._toolbar_5ux7f_8{align-items:center;gap:var(--spacing-md);padding:0 var(--spacing-md);flex-shrink:0;height:24px;display:flex}._searchWrapper_5ux7f_17{flex:1;align-items:center;display:flex;position:relative}._search_5ux7f_17{width:100%;height:20px;padding:0 20px 0 var(--spacing-md);background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-xs);box-sizing:border-box;outline:none}._search_5ux7f_17::placeholder{color:var(--text-muted)}._search_5ux7f_17:focus{border-color:var(--accent-blue)}._searchClear_5ux7f_46{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:10px;line-height:1;display:flex;position:absolute;right:4px}._searchClear_5ux7f_46:hover{color:var(--text-primary)}._categorySelect_5ux7f_64{height:20px;padding:0 var(--spacing-sm);background-color:var(--bg-active);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-xs);cursor:pointer;border:none;border-radius:9px;outline:none;flex-shrink:0}._categorySelect_5ux7f_64:focus{border-color:var(--accent-blue)}._assets_5ux7f_1{padding:var(--spacing-lg);gap:var(--spacing-lg);flex-wrap:wrap;flex:1;align-content:flex-start;align-items:flex-start;display:flex;overflow:auto}._assetRow_5ux7f_93{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--font-size-xs);color:var(--text-secondary);cursor:grab;word-break:break-word;text-align:center;flex-direction:column;max-width:80px;display:flex}._assetRow_5ux7f_93:hover{background-color:var(--bg-hover)}._assetRow_5ux7f_93 img{object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-color:var(--bg-input);width:64px;height:64px}._texturePreview_5ux7f_122{object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-image:linear-gradient(45deg,#2a2a2a 25%,#0000 25%),linear-gradient(-45deg,#2a2a2a 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#2a2a2a 75%),linear-gradient(-45deg,#0000 75%,#2a2a2a 75%);background-position:0 0,0 4px,4px -4px,-4px 0;background-size:8px 8px;background-color:var(--bg-input);width:64px;height:64px}._assetIcon_5ux7f_138{border-radius:var(--radius-sm);border:1px solid var(--border-primary);background-color:var(--bg-input);cursor:grab;justify-content:center;align-items:center;width:64px;height:64px;display:flex}._assetIcon_5ux7f_138 svg{width:24px;height:24px;color:var(--text-muted)}._stats_1gd9h_1{gap:var(--spacing-md);border-left:1px solid var(--border-primary);width:90px;padding:0 var(--spacing-lg);flex-direction:column;flex-shrink:0;justify-content:center;display:flex}._stat_1gd9h_1{flex-direction:column;gap:1px;display:flex}._label_1gd9h_18{font-family:var(--font-ui);font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}._value_1gd9h_26{font-family:var(--font-mono);font-size:var(--font-size-md);color:var(--text-primary);font-variant-numeric:tabular-nums}._player_nqeb9_1{flex-direction:row;gap:0;height:100%;display:flex}._main_nqeb9_8{gap:var(--spacing-lg);flex-direction:column;flex:1;min-width:0;display:flex}._waveform_nqeb9_16{flex:1;min-height:0}._controls_nqeb9_21{align-items:center;gap:var(--spacing-md);flex-shrink:0;display:flex}._playButton_nqeb9_28{border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-xl);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}._playButton_nqeb9_28:hover{background-color:var(--bg-hover)}._time_nqeb9_47{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-muted);font-variant-numeric:tabular-nums}._wrapper_65zj4_1{flex-direction:column;width:100%;height:100%;display:flex;position:relative}._canvas_65zj4_9{background-color:var(--bg-viewport);width:100%;height:100%}._toolbar_65zj4_15{height:32px;padding:0 var(--spacing-md);align-items:center;gap:var(--spacing-sm);background-color:var(--bg-toolbar);border-bottom:1px solid var(--border-primary);flex-shrink:0;display:flex}._toolBtn_65zj4_26{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--icon-default);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:background-color .1s,color .1s;display:flex}._toolBtn_65zj4_26:hover{background-color:var(--bg-hover);color:var(--icon-active)}._toolBtn_65zj4_26._active_65zj4_46{background-color:var(--accent-blue);color:var(--icon-active)}._separator_65zj4_51{background-color:var(--border-primary);flex-shrink:0;width:1px;height:16px}._toolbarRight_65zj4_58{top:2px;right:var(--spacing-md);gap:var(--spacing-sm);z-index:10;pointer-events:all;align-items:flex-start;display:flex;position:absolute}._overlayDropdown_65zj4_69{background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-lg);z-index:20;gap:var(--spacing-sm);min-width:180px;font-family:var(--font-ui);font-size:var(--font-size-lg);flex-direction:column;display:flex;position:absolute;top:calc(100% + 6px);right:0}._overlaySection_65zj4_86{font-size:var(--font-size-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:6px;margin-bottom:2px}._overlaySection_65zj4_86:first-child{margin-top:0}._overlayRow_65zj4_99{align-items:center;gap:var(--spacing-md);font-size:var(--font-size-lg);color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 0;display:flex}._overlayRow_65zj4_99:hover{color:var(--text-bright)}._overlayRow_65zj4_99 input[type=checkbox]{accent-color:var(--accent-blue);cursor:pointer;flex-shrink:0;width:14px;height:14px}._viewer_8mn40_1{flex-direction:row;height:100%;max-height:100%;display:flex;overflow:hidden}._canvasWrapper_8mn40_9{flex:1;min-width:0;min-height:0;position:relative}._toolbar_8mn40_16{top:var(--spacing-md);left:var(--spacing-md);gap:var(--spacing-sm);background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-sm);z-index:10;display:flex;position:absolute}._animBar_8mn40_29{bottom:30px;left:var(--spacing-md);z-index:10;align-items:center;gap:var(--spacing-md);background-color:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);display:flex;position:absolute}._scrubber_8mn40_43{z-index:10;appearance:none;cursor:pointer;background:0 0;width:100%;height:20px;margin:0;padding:0;position:absolute;bottom:0;left:0}._scrubber_8mn40_43::-webkit-slider-runnable-track{background:var(--bg-panel);border-top:1px solid var(--border-primary);height:4px}._scrubber_8mn40_43::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-blue);cursor:pointer;border-radius:50%;width:12px;height:12px;margin-top:-4px}._scrubber_8mn40_43::-moz-range-track{background:var(--bg-panel);border-top:1px solid var(--border-primary);height:4px}._scrubber_8mn40_43::-moz-range-thumb{background:var(--accent-blue);cursor:pointer;border:none;border-radius:50%;width:12px;height:12px}._animSelect_8mn40_89{color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-md);cursor:pointer;background:0 0;border:none;outline:none;max-width:200px}._animSelect_8mn40_89:hover{border-color:var(--border-active)}._animLoopLabel_8mn40_104{color:var(--text-primary);font-family:var(--font-ui);font-size:var(--font-size-md);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;align-items:center;gap:5px;display:flex}._viewer_76hio_1{flex-direction:row;height:100%;max-height:100%;display:flex;overflow:hidden}._imageWrapper_76hio_9{background-image:linear-gradient(45deg,#2a2a2a 25%,#0000 25%),linear-gradient(-45deg,#2a2a2a 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#2a2a2a 75%),linear-gradient(-45deg,#0000 75%,#2a2a2a 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;background-color:var(--bg-input);flex:1;min-width:0;min-height:0;position:relative;overflow:hidden}._zoomInner_76hio_25{transform-origin:0 0;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._image_76hio_9{object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none;max-width:100%;max-height:100%}._zoomReset_76hio_42{bottom:var(--spacing-md);right:var(--spacing-md);background:var(--bg-panel);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono);cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none;padding:2px 6px;position:absolute}._zoomReset_76hio_42:hover{background:var(--bg-hover)}._cubeCross_76hio_62{width:100%;height:100%;padding:var(--spacing-md);box-sizing:border-box;-webkit-user-select:none;user-select:none;pointer-events:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(4,1fr);gap:2px;display:grid}._cubeFace_76hio_75{background-image:linear-gradient(45deg,#2a2a2a 25%,#0000 25%),linear-gradient(-45deg,#2a2a2a 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#2a2a2a 75%),linear-gradient(-45deg,#0000 75%,#2a2a2a 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;background-color:var(--bg-input);position:relative;overflow:hidden}._cubeFace_76hio_75 img{object-fit:contain;width:100%;height:100%;display:block}._faceLabel_76hio_95{font-size:9px;font-family:var(--font-mono);color:#ffffffa6;pointer-events:none;text-shadow:0 1px 2px #000c;position:absolute;bottom:3px;left:4px}._cubeEmpty_76hio_106{background:0 0}._noPreview_76hio_110{color:var(--text-muted);font-size:var(--font-size-md);font-family:var(--font-ui);-webkit-user-select:none;user-select:none}._tabs_19fdz_1{background-color:var(--bg-header);scrollbar-width:none;align-items:stretch;height:28px;min-height:28px;display:flex;overflow-x:auto}._tab_19fdz_1{padding:0 var(--spacing-md);font-family:var(--font-ui);font-size:var(--font-size-xs);letter-spacing:2px;text-transform:uppercase;color:var(--text-muted);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-top:1px solid #0000;align-items:center;font-weight:600;display:flex}._tab_19fdz_1:hover{color:var(--text-secondary)}._active_19fdz_33{color:var(--text-bright);background-color:var(--bg-secondary);border-top-color:var(--accent-blue)}._unpadded_19fdz_39{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}._mounted_19fdz_47{height:100%}._error_19fdz_51{gap:var(--spacing-md);color:var(--accent-red);font-size:var(--font-size-md);flex-direction:column;display:flex}._error_19fdz_51 button{align-self:flex-start}._root_ngf3k_1{background-color:var(--bg-primary);flex-direction:column;height:100%;display:flex}._main_ngf3k_8{flex:1;display:flex;overflow:hidden}._editor_ngf3k_14{background-color:var(--bg-primary);flex:1;height:100%}._panel_ngf3k_20{font-family:var(--font-ui);font-size:var(--font-size-lg);color:var(--text-primary);background-color:var(--bg-secondary)}._panelContent_ngf3k_27{flex-direction:column;height:100%;display:flex;overflow:hidden}._panelBody_ngf3k_34{padding:var(--spacing-md);flex:1;overflow:auto}._middleGroup_ngf3k_40{flex:1}._panelHeader_25fch_1{height:28px;min-height:28px;padding:0 var(--spacing-md);background-color:var(--bg-header);font-family:var(--font-ui);font-size:var(--font-size-xs);letter-spacing:2px;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;font-weight:600;display:flex}._container_1jjbp_1{flex-direction:column;gap:4px;display:flex}._nameRow_1jjbp_8{background-color:var(--bg-panel);border-bottom:1px solid var(--border-primary);align-items:center;gap:8px;height:32px;padding:0 12px;display:flex}._nameIcon_1jjbp_18{flex-shrink:0;width:16px;height:16px}._nameText_1jjbp_24{font-family:var(--font-ui);font-size:var(--font-size-xl);color:var(--text-bright);font-weight:600}._sectionHeader_1jjbp_32{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;height:24px;padding:0 8px;display:flex}._sectionHeader_1jjbp_32:hover{background-color:var(--bg-hover)}._sectionArrow_1jjbp_46{width:10px;height:10px;color:var(--text-secondary);flex-shrink:0;transition:transform .1s}._sectionArrow_1jjbp_46._collapsed_1jjbp_54{transform:rotate(-90deg)}._sectionTitle_1jjbp_58{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-primary);font-weight:600}._divider_1jjbp_66{background-color:var(--border-primary);height:1px;margin:0}._propertyRow3_1jjbp_73{align-items:center;gap:8px;height:24px;padding:0 8px;display:flex}._propertyLabel_1jjbp_81{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);flex-shrink:0;width:60px}._valueInput_1jjbp_89{background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);width:52px;height:20px;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);box-sizing:border-box;outline:none;padding:0 6px}._valueInput_1jjbp_89:focus{border-color:var(--accent-blue)}._checkboxRow_1jjbp_108{align-items:center;gap:6px;height:24px;padding:0 8px;display:flex}._checkbox_1jjbp_108{width:14px;height:14px;accent-color:var(--accent-blue);cursor:pointer;flex-shrink:0}._checkboxLabel_1jjbp_124{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer}._propertyRow_1jjbp_73{align-items:center;gap:8px;height:24px;padding:0 8px;display:flex}._propertyLabelWide_1jjbp_140{font-family:var(--font-ui);font-size:var(--font-size-sm);color:var(--text-secondary);flex-shrink:0;width:80px}._valueDisplay_1jjbp_148{background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);height:20px;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;min-width:60px;padding:0 6px;display:flex;overflow:hidden}._valueInputWide_1jjbp_165{background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);height:20px;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);box-sizing:border-box;outline:none;flex:1;padding:0 6px}._valueInputWide_1jjbp_165:focus{border-color:var(--accent-blue)}._sliderRow_1jjbp_184{align-items:center;gap:8px;height:24px;padding:0 8px;display:flex}._sliderTrack_1jjbp_192{background-color:var(--bg-input);border:1px solid var(--border-primary);cursor:pointer;border-radius:2px;flex:1;height:4px;position:relative}._sliderFill_1jjbp_202{background-color:var(--accent-blue);pointer-events:none;border-radius:2px;height:100%;position:absolute;top:0;left:0}._sliderThumb_1jjbp_212{background-color:var(--text-bright);pointer-events:none;border-radius:50%;width:10px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 1px 3px #0006}._sliderInput_1jjbp_224{background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);width:48px;height:20px;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);box-sizing:border-box;text-align:right;outline:none;padding:0 4px}._sliderInput_1jjbp_224:focus{border-color:var(--accent-blue)}._draggableInput_1jjbp_244{background-color:var(--bg-input);border:1px solid var(--border-primary);border-radius:var(--radius-sm);width:52px;height:20px;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);box-sizing:border-box;cursor:ew-resize;outline:none;padding:0 6px}._draggableInput_1jjbp_244:focus{border-color:var(--accent-blue);cursor:text}._empty_1jjbp_265{color:var(--text-muted);font-family:var(--font-ui);font-size:var(--font-size-md);padding:16px 8px;font-style:italic}._colorInput_1jjbp_274{border:1px solid var(--border-primary);border-radius:var(--radius-sm);background-color:var(--bg-input);cursor:pointer;box-sizing:border-box;width:32px;height:20px;padding:1px 2px}._prefabSection_1jjbp_286{flex-direction:column;gap:4px;display:flex}._container_7ns3c_1{font-family:var(--font-ui);font-size:var(--font-size-md);-webkit-user-select:none;user-select:none;padding:var(--spacing-sm) 0}._row_7ns3c_8{cursor:pointer;align-items:center;gap:var(--spacing-sm);border-radius:var(--radius-sm);height:24px;padding-right:var(--spacing-md);display:flex}._row_7ns3c_8:hover{background-color:var(--bg-hover)}._selected_7ns3c_22,._selected_7ns3c_22:hover{background-color:var(--bg-selected)}._arrow_7ns3c_30{width:12px;color:var(--text-secondary);cursor:pointer;text-align:center;flex-shrink:0;font-size:10px}._typeIcon_7ns3c_39{flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:flex}._typeIcon_7ns3c_39 svg{width:14px;height:14px}._name_7ns3c_53{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-md);overflow:hidden}._empty_7ns3c_61{padding:var(--spacing-md);color:var(--text-muted);font-style:italic;font-family:var(--font-ui);font-size:var(--font-size-md)}._runtime_7ns3c_69{color:var(--text-muted);font-style:italic}._container_z6ti4_1{font-family:var(--font-ui);font-size:var(--font-size-md);-webkit-user-select:none;user-select:none}._empty_z6ti4_7,._hint_z6ti4_8{color:var(--text-muted);font-size:var(--font-size-sm);padding:var(--spacing-sm) var(--spacing-md)}._header_z6ti4_14{justify-content:space-between;align-items:center;gap:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--border-subtle);display:flex}._title_z6ti4_23{align-items:baseline;gap:var(--spacing-sm);flex-wrap:wrap;min-width:0;display:flex}._sceneName_z6ti4_31{color:var(--text-bright);font-weight:600}._dirty_z6ti4_36{color:var(--accent-orange);font-size:10px}._file_z6ti4_41{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs)}._saveButton_z6ti4_47,._removeButton_z6ti4_48{background-color:var(--bg-input);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);padding:2px var(--spacing-md);font-family:var(--font-ui);font-size:var(--font-size-sm);cursor:pointer}._saveButton_z6ti4_47:hover:not(:disabled),._removeButton_z6ti4_48:hover{border-color:var(--accent-blue);color:var(--text-bright)}._saveButton_z6ti4_47:disabled{opacity:.6;cursor:default}._removeButton_z6ti4_48{margin-top:var(--spacing-sm);align-self:flex-start}._error_z6ti4_75{color:var(--accent-red);font-size:var(--font-size-sm);padding:var(--spacing-sm) 0}._section_z6ti4_81{color:var(--text-secondary);font-size:var(--font-size-xs);letter-spacing:1px;text-transform:uppercase;padding:var(--spacing-lg) 0 var(--spacing-sm);font-weight:600}._clickable_z6ti4_90{cursor:pointer}._row_z6ti4_94{align-items:center;gap:var(--spacing-sm);height:24px;padding:0 var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;display:flex}._row_z6ti4_94:hover{background-color:var(--bg-hover)}._selected_z6ti4_108,._selected_z6ti4_108:hover{background-color:var(--bg-selected)}._liveRow_z6ti4_113 ._name_z6ti4_113{color:var(--text-secondary)}._arrow_z6ti4_117{width:12px;color:var(--text-secondary);text-align:center;flex-shrink:0;font-size:10px}._liveDot_z6ti4_125{background-color:var(--accent-green);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin:0 3px}._name_z6ti4_113{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._type_z6ti4_141{color:var(--text-muted);font-size:var(--font-size-xs);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;overflow:hidden}._badge_z6ti4_150{color:var(--accent-purple);border:1px solid var(--accent-purple);border-radius:var(--radius-sm);text-transform:uppercase;flex-shrink:0;padding:0 3px;font-size:9px}._details_z6ti4_160{gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md) var(--spacing-md) 28px;-webkit-user-select:text;user-select:text;flex-direction:column;display:flex}._field_z6ti4_168{align-items:center;gap:var(--spacing-md);font-size:var(--font-size-sm);display:flex}._field_z6ti4_168>span{width:80px;color:var(--text-label);flex-shrink:0}._field_z6ti4_168 code{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._field_z6ti4_168 input:not([type=checkbox]):not([type=color]){background-color:var(--bg-input);min-width:0;color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);padding:2px var(--spacing-sm);font-family:var(--font-mono);font-size:var(--font-size-xs);flex:1}._field_z6ti4_168 input[type=color]{background:0 0;border:none;width:28px;height:18px;padding:0}._root_t4wh3_1{gap:var(--spacing-lg);font-size:var(--font-size-md);flex-direction:column;display:flex}._empty_t4wh3_8{color:var(--text-secondary);text-align:center;padding:var(--spacing-2xl) var(--spacing-lg);line-height:1.5}._card_t4wh3_15{gap:var(--spacing-md);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--border-primary);flex-direction:column;display:flex}._cardHeader_t4wh3_23{align-items:center;gap:var(--spacing-md);min-width:0;display:flex}._badge_t4wh3_30{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;background-color:var(--accent-blue);color:var(--text-bright);border-radius:var(--radius-sm);flex-shrink:0;padding:1px 6px}._gamepadId_t4wh3_41{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}._meta_t4wh3_49{color:var(--text-muted);font-family:var(--font-mono);flex-shrink:0}._button_t4wh3_55{background-color:var(--bg-active);border:1px solid var(--border-active);color:var(--text-primary);border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:var(--font-size-sm);padding:2px var(--spacing-md);cursor:pointer;flex-shrink:0}._button_t4wh3_55:hover{background-color:var(--bg-hover)}._warning_t4wh3_71{color:var(--accent-yellow);font-size:var(--font-size-sm)}._diagram_t4wh3_76{align-self:center;width:100%;max-width:360px}._body_t4wh3_82{fill:var(--bg-panel);stroke:var(--border-primary)}._part_t4wh3_87{fill:var(--bg-hover);stroke:var(--border-active);stroke-width:1px}._pressed_t4wh3_93{fill:var(--accent-blue);stroke:var(--text-bright)}._fill_t4wh3_98{fill:var(--text-muted)}._fillPressed_t4wh3_102{fill:var(--accent-blue)}._deadzone_t4wh3_106{fill:none;stroke:var(--accent-orange);stroke-dasharray:2 2}._rawDot_t4wh3_112{fill:var(--text-secondary)}._stickDot_t4wh3_116{fill:var(--accent-green)}._tinyLabel_t4wh3_120,._faceLabel_t4wh3_121{fill:var(--text-primary);font-family:var(--font-ui);text-anchor:middle;pointer-events:none}._tinyLabel_t4wh3_120{font-size:7px}._faceLabel_t4wh3_121{font-size:8px;font-weight:600}._sticks_t4wh3_137{font-family:var(--font-mono);color:var(--text-label);justify-content:space-around;display:flex}._sectionTitle_t4wh3_144{font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}._rows_t4wh3_151{gap:var(--spacing-xs);flex-direction:column;display:flex}._row_t4wh3_151{align-items:center;gap:var(--spacing-md);color:var(--text-label);grid-template-columns:110px 1fr 48px;display:grid}._rowPressed_t4wh3_165{color:var(--text-bright)}._rowLabel_t4wh3_169{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._rowValue_t4wh3_175{font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums}._bar_t4wh3_181{background-color:var(--bg-input);border-radius:var(--radius-sm);height:6px;position:relative;overflow:hidden}._barCenter_t4wh3_189{background-color:var(--border-active);width:1px;position:absolute;top:0;bottom:0;left:50%}._barFill_t4wh3_198{background-color:var(--accent-blue);position:absolute;top:0;bottom:0}._log_t4wh3_205{font-family:var(--font-mono);font-size:var(--font-size-sm);gap:var(--spacing-xs);color:var(--text-label);flex-direction:column;display:flex}._logEmpty_t4wh3_214{color:var(--text-muted)}._logEntry_t4wh3_218{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._logTime_t4wh3_224{color:var(--text-muted);margin-right:var(--spacing-md)}._statusBar_6wjbc_1{background-color:var(--bg-statusbar);height:22px;min-height:22px;padding:0 var(--spacing-md);font-size:var(--font-size-xs);color:var(--text-bright);justify-content:space-between;align-items:center;display:flex}._section_6wjbc_13{gap:var(--spacing-xl);align-items:center;display:flex}._stat_6wjbc_1{gap:var(--spacing-sm);font-family:var(--font-mono);display:flex}._statLabel_6wjbc_25{opacity:.7;font-family:var(--font-mono)}._branch_6wjbc_30{font-family:var(--font-ui);font-weight:500}._engineName_6wjbc_35{font-family:var(--font-ui);font-weight:600}._statButton_6wjbc_40{color:inherit;font-size:inherit;padding:0 var(--spacing-sm);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;align-items:center;height:18px}._statButton_6wjbc_40:hover{background-color:#ffffff26}
|
|
2
|
+
/*$vite$:1*/
|
package/dist/Editor.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Object3DEventMap } from 'three';
|
|
3
|
-
import type { TransformControlsMode } from 'three/examples/jsm/Addons.js';
|
|
1
|
+
import type { EditorPanel } from '@mavonengine/core/Types/IEditor';
|
|
4
2
|
import type IEditor from '@mavonengine/core/Types/IEditor';
|
|
5
3
|
import type GameObjectInterface from '@mavonengine/core/World/GameObjectInterface';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import type { Root } from 'react-dom/client';
|
|
5
|
+
import type { Object3DEventMap } from 'three';
|
|
6
|
+
import type { TransformControlsMode } from 'three/examples/jsm/controls/TransformControls.js';
|
|
7
|
+
import type { EditorPanelDefinition } from './Editor/panels';
|
|
8
8
|
import EditorHelper from '@mavonengine/core/Editor/EditorHelper';
|
|
9
9
|
import EventEmitter from '@mavonengine/core/Utils/EventEmitter';
|
|
10
|
+
import { Object3D } from 'three';
|
|
11
|
+
import { FlyControls } from 'three/examples/jsm/controls/FlyControls.js';
|
|
12
|
+
import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
|
|
13
|
+
import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';
|
|
14
|
+
export type { EditorPanelDefinition, EditorPanelLocation } from './Editor/panels';
|
|
15
|
+
export { registerEditorPanel, unregisterEditorPanel } from './Editor/panels';
|
|
10
16
|
export type ShadeMode = 'solid' | 'flat' | 'wireframe';
|
|
11
17
|
export default class Editor extends EventEmitter implements IEditor, GameObjectInterface {
|
|
12
18
|
flyControls: FlyControls;
|
|
@@ -22,8 +28,14 @@ export default class Editor extends EventEmitter implements IEditor, GameObjectI
|
|
|
22
28
|
private helpers;
|
|
23
29
|
private lightHelpers;
|
|
24
30
|
private _showHelpers;
|
|
31
|
+
private abort;
|
|
32
|
+
private saving?;
|
|
25
33
|
availableAssetCategories: string[];
|
|
26
34
|
activeAssetCategory: 'Object' | '_texture' | 'CubeTexture' | 'AudioBuffer' | 'Font';
|
|
35
|
+
/**
|
|
36
|
+
* Dock a custom panel in the editor, before or after it booted. Same as `editor.addPanel()`
|
|
37
|
+
*/
|
|
38
|
+
static registerPanel(panel: EditorPanelDefinition | EditorPanel): () => void;
|
|
27
39
|
/**
|
|
28
40
|
* The editor should only be instantiated when button is pressed
|
|
29
41
|
*/
|
|
@@ -39,6 +51,18 @@ export default class Editor extends EventEmitter implements IEditor, GameObjectI
|
|
|
39
51
|
selectObject(object: Object3D): void;
|
|
40
52
|
private handleCanvasClick;
|
|
41
53
|
private handleHelperTool;
|
|
54
|
+
addPanel(panel: EditorPanelDefinition | EditorPanel): () => void;
|
|
55
|
+
removePanel(id: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* Save the active scene to `scenes/<name>.json` through the dev server.
|
|
58
|
+
* Triggers `sceneSaved` ({ name, file }) or `sceneSaveFailed` ({ name, error }).
|
|
59
|
+
*/
|
|
60
|
+
saveScene(fetchFn?: typeof fetch): Promise<boolean>;
|
|
61
|
+
/** Without a scene loaded by the game, open `scenes/main.json`, or a demo scene when there is none yet */
|
|
62
|
+
private openDefaultScene;
|
|
63
|
+
private watchScene;
|
|
64
|
+
/** The old way, for games that don't use scenes: start from an empty world */
|
|
65
|
+
private clearGame;
|
|
42
66
|
addHelper(helper: EditorHelper): void;
|
|
43
67
|
removeHelper(helper: EditorHelper): void;
|
|
44
68
|
addLightHelper(helper: Object3D): void;
|