@nice2dev/game-engine 0.1.0 → 1.0.3
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/CHANGELOG.md +193 -1
- package/dist/cjs/ai/BehaviorTree.js +1215 -0
- package/dist/cjs/ai/BehaviorTree.js.map +1 -0
- package/dist/cjs/ai/StateMachine.js +783 -0
- package/dist/cjs/ai/StateMachine.js.map +1 -0
- package/dist/cjs/audio/AudioBridge.js +454 -0
- package/dist/cjs/audio/AudioBridge.js.map +1 -0
- package/dist/cjs/devtools/GameplayAnalytics.js +651 -0
- package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -0
- package/dist/cjs/dialogue/DialogueSystem.js +1023 -0
- package/dist/cjs/dialogue/DialogueSystem.js.map +1 -0
- package/dist/cjs/editor/NiceGameEditor.js +569 -71
- package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
- package/dist/cjs/editor/ShaderGraph.js +1616 -0
- package/dist/cjs/editor/ShaderGraph.js.map +1 -0
- package/dist/cjs/editor/TimelineEditor.js +819 -0
- package/dist/cjs/editor/TimelineEditor.js.map +1 -0
- package/dist/cjs/engine/SaveSystemV2.js +494 -0
- package/dist/cjs/engine/SaveSystemV2.js.map +1 -0
- package/dist/cjs/export/GodotExporter.js +1102 -0
- package/dist/cjs/export/GodotExporter.js.map +1 -0
- package/dist/cjs/export/PlatformExporter.js +236 -0
- package/dist/cjs/export/PlatformExporter.js.map +1 -0
- package/dist/cjs/export/ThreeJSExporter.js +1116 -0
- package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
- package/dist/cjs/export/UnityExporter.js +1193 -0
- package/dist/cjs/export/UnityExporter.js.map +1 -0
- package/dist/cjs/export/WebExporter.js +1036 -0
- package/dist/cjs/export/WebExporter.js.map +1 -0
- package/dist/cjs/export/index.js +58 -0
- package/dist/cjs/export/index.js.map +1 -0
- package/dist/cjs/i18n/useTranslation.js +11 -11
- package/dist/cjs/import/AsepriteImporter.js +761 -0
- package/dist/cjs/import/AsepriteImporter.js.map +1 -0
- package/dist/cjs/import/DragonBonesImporter.js +499 -0
- package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
- package/dist/cjs/import/GameMakerImporter.js +559 -0
- package/dist/cjs/import/GameMakerImporter.js.map +1 -0
- package/dist/cjs/import/GodotSceneImporter.js +824 -0
- package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
- package/dist/cjs/import/LDtkImporter.js +481 -0
- package/dist/cjs/import/LDtkImporter.js.map +1 -0
- package/dist/cjs/import/Live2DImporter.js +553 -0
- package/dist/cjs/import/Live2DImporter.js.map +1 -0
- package/dist/cjs/import/NdgFormat.js +499 -0
- package/dist/cjs/import/NdgFormat.js.map +1 -0
- package/dist/cjs/import/OgmoImporter.js +529 -0
- package/dist/cjs/import/OgmoImporter.js.map +1 -0
- package/dist/cjs/import/RPGMakerImporter.js +520 -0
- package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
- package/dist/cjs/import/SceneImporter.js +449 -0
- package/dist/cjs/import/SceneImporter.js.map +1 -0
- package/dist/cjs/import/SpineImporter.js +583 -0
- package/dist/cjs/import/SpineImporter.js.map +1 -0
- package/dist/cjs/import/SpriterImporter.js +652 -0
- package/dist/cjs/import/SpriterImporter.js.map +1 -0
- package/dist/cjs/import/TiledMapImporter.js +859 -0
- package/dist/cjs/import/TiledMapImporter.js.map +1 -0
- package/dist/cjs/import/UnitySceneImporter.js +732 -0
- package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
- package/dist/cjs/import/index.js +305 -0
- package/dist/cjs/import/index.js.map +1 -0
- package/dist/cjs/index.js +291 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/input/GamepadNavigation.js +21 -21
- package/dist/cjs/input/useGamepads.js +6 -6
- package/dist/cjs/integration/IconSprite.js +281 -0
- package/dist/cjs/integration/IconSprite.js.map +1 -0
- package/dist/cjs/inventory/InventorySystem.js +930 -0
- package/dist/cjs/inventory/InventorySystem.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
- package/dist/cjs/quest/QuestSystem.js +924 -0
- package/dist/cjs/quest/QuestSystem.js.map +1 -0
- package/dist/cjs/rendering/WebGPURenderPipeline.js +658 -0
- package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -0
- package/dist/cjs/scripting/GraphToAST.js +567 -0
- package/dist/cjs/scripting/GraphToAST.js.map +1 -0
- package/dist/cjs/scripting/LanguageExporter.js +321 -0
- package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
- package/dist/cjs/scripting/ScriptAST.js +67 -0
- package/dist/cjs/scripting/ScriptAST.js.map +1 -0
- package/dist/cjs/scripting/VisualScripting2.js +1140 -0
- package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
- package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
- package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
- package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
- package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
- package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
- package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
- package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
- package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
- package/dist/cjs/systems/ParticleSystem2.js +1478 -0
- package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
- package/dist/cjs/xr/ARVR.js.map +1 -1
- package/dist/esm/ai/BehaviorTree.js +1186 -0
- package/dist/esm/ai/BehaviorTree.js.map +1 -0
- package/dist/esm/ai/StateMachine.js +767 -0
- package/dist/esm/ai/StateMachine.js.map +1 -0
- package/dist/esm/audio/AudioBridge.js +446 -0
- package/dist/esm/audio/AudioBridge.js.map +1 -0
- package/dist/esm/devtools/GameplayAnalytics.js +639 -0
- package/dist/esm/devtools/GameplayAnalytics.js.map +1 -0
- package/dist/esm/dialogue/DialogueSystem.js +1008 -0
- package/dist/esm/dialogue/DialogueSystem.js.map +1 -0
- package/dist/esm/editor/NiceGameEditor.js +556 -58
- package/dist/esm/editor/NiceGameEditor.js.map +1 -1
- package/dist/esm/editor/ShaderGraph.js +1606 -0
- package/dist/esm/editor/ShaderGraph.js.map +1 -0
- package/dist/esm/editor/TimelineEditor.js +800 -0
- package/dist/esm/editor/TimelineEditor.js.map +1 -0
- package/dist/esm/engine/SaveSystemV2.js +487 -0
- package/dist/esm/engine/SaveSystemV2.js.map +1 -0
- package/dist/esm/export/GodotExporter.js +1100 -0
- package/dist/esm/export/GodotExporter.js.map +1 -0
- package/dist/esm/export/PlatformExporter.js +230 -0
- package/dist/esm/export/PlatformExporter.js.map +1 -0
- package/dist/esm/export/ThreeJSExporter.js +1114 -0
- package/dist/esm/export/ThreeJSExporter.js.map +1 -0
- package/dist/esm/export/UnityExporter.js +1191 -0
- package/dist/esm/export/UnityExporter.js.map +1 -0
- package/dist/esm/export/WebExporter.js +1033 -0
- package/dist/esm/export/WebExporter.js.map +1 -0
- package/dist/esm/export/index.js +44 -0
- package/dist/esm/export/index.js.map +1 -0
- package/dist/esm/import/AsepriteImporter.js +759 -0
- package/dist/esm/import/AsepriteImporter.js.map +1 -0
- package/dist/esm/import/DragonBonesImporter.js +496 -0
- package/dist/esm/import/DragonBonesImporter.js.map +1 -0
- package/dist/esm/import/GameMakerImporter.js +556 -0
- package/dist/esm/import/GameMakerImporter.js.map +1 -0
- package/dist/esm/import/GodotSceneImporter.js +822 -0
- package/dist/esm/import/GodotSceneImporter.js.map +1 -0
- package/dist/esm/import/LDtkImporter.js +479 -0
- package/dist/esm/import/LDtkImporter.js.map +1 -0
- package/dist/esm/import/Live2DImporter.js +550 -0
- package/dist/esm/import/Live2DImporter.js.map +1 -0
- package/dist/esm/import/NdgFormat.js +490 -0
- package/dist/esm/import/NdgFormat.js.map +1 -0
- package/dist/esm/import/OgmoImporter.js +526 -0
- package/dist/esm/import/OgmoImporter.js.map +1 -0
- package/dist/esm/import/RPGMakerImporter.js +517 -0
- package/dist/esm/import/RPGMakerImporter.js.map +1 -0
- package/dist/esm/import/SceneImporter.js +441 -0
- package/dist/esm/import/SceneImporter.js.map +1 -0
- package/dist/esm/import/SpineImporter.js +580 -0
- package/dist/esm/import/SpineImporter.js.map +1 -0
- package/dist/esm/import/SpriterImporter.js +649 -0
- package/dist/esm/import/SpriterImporter.js.map +1 -0
- package/dist/esm/import/TiledMapImporter.js +857 -0
- package/dist/esm/import/TiledMapImporter.js.map +1 -0
- package/dist/esm/import/UnitySceneImporter.js +730 -0
- package/dist/esm/import/UnitySceneImporter.js.map +1 -0
- package/dist/esm/import/index.js +279 -0
- package/dist/esm/import/index.js.map +1 -0
- package/dist/esm/index.js +47 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integration/IconSprite.js +266 -0
- package/dist/esm/integration/IconSprite.js.map +1 -0
- package/dist/esm/inventory/InventorySystem.js +924 -0
- package/dist/esm/inventory/InventorySystem.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
- package/dist/esm/quest/QuestSystem.js +916 -0
- package/dist/esm/quest/QuestSystem.js.map +1 -0
- package/dist/esm/rendering/WebGPURenderPipeline.js +642 -0
- package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -0
- package/dist/esm/scripting/GraphToAST.js +564 -0
- package/dist/esm/scripting/GraphToAST.js.map +1 -0
- package/dist/esm/scripting/LanguageExporter.js +311 -0
- package/dist/esm/scripting/LanguageExporter.js.map +1 -0
- package/dist/esm/scripting/ScriptAST.js +52 -0
- package/dist/esm/scripting/ScriptAST.js.map +1 -0
- package/dist/esm/scripting/VisualScripting2.js +1130 -0
- package/dist/esm/scripting/VisualScripting2.js.map +1 -0
- package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
- package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
- package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
- package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
- package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/RustExporter.js +523 -0
- package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
- package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
- package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
- package/dist/esm/systems/ParticleSystem2.js +1471 -0
- package/dist/esm/systems/ParticleSystem2.js.map +1 -0
- package/dist/esm/xr/ARVR.js.map +1 -1
- package/dist/types/__tests__/setup.d.ts +1 -1
- package/dist/types/ai/BehaviorTree.d.ts +375 -0
- package/dist/types/ai/StateMachine.d.ts +296 -0
- package/dist/types/audio/AudioBridge.d.ts +199 -0
- package/dist/types/devtools/GameplayAnalytics.d.ts +279 -0
- package/dist/types/dialogue/DialogueSystem.d.ts +326 -0
- package/dist/types/dialogue/index.d.ts +2 -0
- package/dist/types/editor/NiceGameEditor.d.ts +12 -1
- package/dist/types/editor/ShaderGraph.d.ts +207 -0
- package/dist/types/editor/TimelineEditor.d.ts +393 -0
- package/dist/types/engine/SaveSystemV2.d.ts +155 -0
- package/dist/types/export/GodotExporter.d.ts +56 -0
- package/dist/types/export/PlatformExporter.d.ts +201 -0
- package/dist/types/export/ThreeJSExporter.d.ts +40 -0
- package/dist/types/export/UnityExporter.d.ts +69 -0
- package/dist/types/export/WebExporter.d.ts +58 -0
- package/dist/types/export/index.d.ts +19 -0
- package/dist/types/import/AsepriteImporter.d.ts +46 -0
- package/dist/types/import/DragonBonesImporter.d.ts +331 -0
- package/dist/types/import/GameMakerImporter.d.ts +375 -0
- package/dist/types/import/GodotSceneImporter.d.ts +34 -0
- package/dist/types/import/LDtkImporter.d.ts +177 -0
- package/dist/types/import/Live2DImporter.d.ts +237 -0
- package/dist/types/import/NdgFormat.d.ts +387 -0
- package/dist/types/import/OgmoImporter.d.ts +237 -0
- package/dist/types/import/RPGMakerImporter.d.ts +186 -0
- package/dist/types/import/SceneImporter.d.ts +276 -0
- package/dist/types/import/SpineImporter.d.ts +372 -0
- package/dist/types/import/SpriterImporter.d.ts +230 -0
- package/dist/types/import/TiledMapImporter.d.ts +57 -0
- package/dist/types/import/UnitySceneImporter.d.ts +87 -0
- package/dist/types/import/index.d.ts +59 -0
- package/dist/types/index.d.ts +46 -18
- package/dist/types/integration/IconSprite.d.ts +196 -0
- package/dist/types/inventory/InventorySystem.d.ts +336 -0
- package/dist/types/performance/WebGPUCompute.d.ts +0 -10
- package/dist/types/quest/QuestSystem.d.ts +287 -0
- package/dist/types/rendering/WebGPURenderPipeline.d.ts +255 -0
- package/dist/types/scripting/GraphToAST.d.ts +55 -0
- package/dist/types/scripting/LanguageExporter.d.ts +136 -0
- package/dist/types/scripting/ScriptAST.d.ts +312 -0
- package/dist/types/scripting/VisualScripting2.d.ts +353 -0
- package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
- package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
- package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
- package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
- package/dist/types/scripting/exporters/index.d.ts +8 -0
- package/dist/types/scripting/index.d.ts +11 -0
- package/dist/types/systems/ParticleSystem2.d.ts +646 -0
- package/package.json +7 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { EventBus } from '../core/EventBus';
|
|
2
|
+
export type SaveSlotType = 'manual' | 'auto' | 'checkpoint' | 'quick';
|
|
3
|
+
export type SaveConflictStrategy = 'local-wins' | 'remote-wins' | 'newest-wins' | 'merge' | 'prompt-user';
|
|
4
|
+
export type SaveStorageBackend = 'indexeddb' | 'localstorage' | 'filesystem' | 'cloud';
|
|
5
|
+
export type MigrationDirection = 'up' | 'down';
|
|
6
|
+
export interface SaveSlotMeta {
|
|
7
|
+
slotId: string;
|
|
8
|
+
type: SaveSlotType;
|
|
9
|
+
label: string;
|
|
10
|
+
schemaVersion: number;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
updatedAt: number;
|
|
13
|
+
playtimeMs: number;
|
|
14
|
+
/** Scene/level the player was in */
|
|
15
|
+
location: string;
|
|
16
|
+
/** Preview thumbnail (data URL) */
|
|
17
|
+
thumbnail?: string;
|
|
18
|
+
/** Compressed size in bytes */
|
|
19
|
+
sizeBytes: number;
|
|
20
|
+
/** CRC32 checksum */
|
|
21
|
+
checksum: number;
|
|
22
|
+
/** Cloud sync status */
|
|
23
|
+
cloudSynced: boolean;
|
|
24
|
+
cloudTimestamp?: number;
|
|
25
|
+
/** Custom tags for filtering */
|
|
26
|
+
tags: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface SaveData {
|
|
29
|
+
meta: SaveSlotMeta;
|
|
30
|
+
payload: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface SaveMigration {
|
|
33
|
+
fromVersion: number;
|
|
34
|
+
toVersion: number;
|
|
35
|
+
description: string;
|
|
36
|
+
/** Transform the payload from one version to the next */
|
|
37
|
+
migrate: (payload: Record<string, unknown>) => Record<string, unknown>;
|
|
38
|
+
/** Optional rollback */
|
|
39
|
+
rollback?: (payload: Record<string, unknown>) => Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
export interface CloudSyncConfig {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
endpoint?: string;
|
|
44
|
+
apiKey?: string;
|
|
45
|
+
conflictStrategy: SaveConflictStrategy;
|
|
46
|
+
syncIntervalMs: number;
|
|
47
|
+
maxCloudSlots: number;
|
|
48
|
+
}
|
|
49
|
+
export interface AutoSaveConfig {
|
|
50
|
+
enabled: boolean;
|
|
51
|
+
intervalMs: number;
|
|
52
|
+
maxAutoSaves: number;
|
|
53
|
+
/** Only auto-save when game state is "safe" (not in combat, etc.) */
|
|
54
|
+
requireSafeState: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface SaveSystemConfig {
|
|
57
|
+
schemaVersion: number;
|
|
58
|
+
storageBackend: SaveStorageBackend;
|
|
59
|
+
storageKey: string;
|
|
60
|
+
maxSlots: number;
|
|
61
|
+
compressionEnabled: boolean;
|
|
62
|
+
autoSave: AutoSaveConfig;
|
|
63
|
+
cloud: CloudSyncConfig;
|
|
64
|
+
}
|
|
65
|
+
export declare const DEFAULT_SAVE_CONFIG: SaveSystemConfig;
|
|
66
|
+
export interface SaveConflict {
|
|
67
|
+
slotId: string;
|
|
68
|
+
localMeta: SaveSlotMeta;
|
|
69
|
+
remoteMeta: SaveSlotMeta;
|
|
70
|
+
resolvedWith?: SaveConflictStrategy;
|
|
71
|
+
}
|
|
72
|
+
export interface SaveResult {
|
|
73
|
+
success: boolean;
|
|
74
|
+
slotId: string;
|
|
75
|
+
sizeBytes: number;
|
|
76
|
+
compressed: boolean;
|
|
77
|
+
error?: string;
|
|
78
|
+
}
|
|
79
|
+
/** Simple compression for JSON save data (dictionary-based) */
|
|
80
|
+
export declare function compressSaveData(json: string): Uint8Array;
|
|
81
|
+
/** Decompress save data */
|
|
82
|
+
export declare function decompressSaveData(data: Uint8Array): string;
|
|
83
|
+
export declare function crc32(data: Uint8Array): number;
|
|
84
|
+
export declare class MigrationEngine {
|
|
85
|
+
private migrations;
|
|
86
|
+
register(migration: SaveMigration): void;
|
|
87
|
+
/** Migrate payload from fromVersion to toVersion */
|
|
88
|
+
migrate(payload: Record<string, unknown>, fromVersion: number, toVersion: number): {
|
|
89
|
+
payload: Record<string, unknown>;
|
|
90
|
+
applied: string[];
|
|
91
|
+
};
|
|
92
|
+
getRegistered(): readonly SaveMigration[];
|
|
93
|
+
canMigrate(from: number, to: number): boolean;
|
|
94
|
+
}
|
|
95
|
+
export declare class SaveSystemV2 {
|
|
96
|
+
private config;
|
|
97
|
+
private migrationEngine;
|
|
98
|
+
private eventBus;
|
|
99
|
+
private slots;
|
|
100
|
+
private autoSaveTimer;
|
|
101
|
+
private autoSaveCounter;
|
|
102
|
+
private safeToSave;
|
|
103
|
+
constructor(eventBus: EventBus, config?: Partial<SaveSystemConfig>);
|
|
104
|
+
private setupEventHandlers;
|
|
105
|
+
/** Register a schema migration */
|
|
106
|
+
registerMigration(migration: SaveMigration): void;
|
|
107
|
+
/** Save game state to a slot */
|
|
108
|
+
save(slotId: string, payload: Record<string, unknown>, options?: {
|
|
109
|
+
type?: SaveSlotType;
|
|
110
|
+
label?: string;
|
|
111
|
+
location?: string;
|
|
112
|
+
thumbnail?: string;
|
|
113
|
+
tags?: string[];
|
|
114
|
+
}): SaveResult;
|
|
115
|
+
/** Load game state from a slot */
|
|
116
|
+
load(slotId: string): {
|
|
117
|
+
payload: Record<string, unknown>;
|
|
118
|
+
meta: SaveSlotMeta;
|
|
119
|
+
migrated: boolean;
|
|
120
|
+
} | null;
|
|
121
|
+
/** Delete a save slot */
|
|
122
|
+
delete(slotId: string): boolean;
|
|
123
|
+
/** List all save slot metadata (sorted by updatedAt desc) */
|
|
124
|
+
listSlots(): SaveSlotMeta[];
|
|
125
|
+
/** Get slot metadata without loading payload */
|
|
126
|
+
getSlotMeta(slotId: string): SaveSlotMeta | null;
|
|
127
|
+
/** Check if a slot exists */
|
|
128
|
+
hasSlot(slotId: string): boolean;
|
|
129
|
+
/** Start auto-save timer */
|
|
130
|
+
startAutoSave(getPayload: () => Record<string, unknown>, getLocation: () => string): void;
|
|
131
|
+
/** Stop auto-save */
|
|
132
|
+
stopAutoSave(): void;
|
|
133
|
+
/** Quick save (overwriting the single quick save slot) */
|
|
134
|
+
quickSave(payload: Record<string, unknown>, location: string): SaveResult;
|
|
135
|
+
/** Quick load */
|
|
136
|
+
quickLoad(): ReturnType<SaveSystemV2['load']>;
|
|
137
|
+
/** Sync local saves to cloud (stub — needs actual endpoint) */
|
|
138
|
+
syncToCloud(): Promise<{
|
|
139
|
+
synced: string[];
|
|
140
|
+
conflicts: SaveConflict[];
|
|
141
|
+
}>;
|
|
142
|
+
/** Resolve a cloud sync conflict */
|
|
143
|
+
resolveConflict(conflict: SaveConflict, strategy: SaveConflictStrategy): SaveSlotMeta;
|
|
144
|
+
private persistSlot;
|
|
145
|
+
private removeFromStorage;
|
|
146
|
+
/** Load all slots from storage backend */
|
|
147
|
+
loadFromStorage(): Promise<number>;
|
|
148
|
+
/** Export all saves as a downloadable blob */
|
|
149
|
+
exportAll(): Blob;
|
|
150
|
+
/** Import saves from a blob */
|
|
151
|
+
importAll(blob: Blob): Promise<number>;
|
|
152
|
+
getConfig(): Readonly<SaveSystemConfig>;
|
|
153
|
+
getMigrationEngine(): MigrationEngine;
|
|
154
|
+
destroy(): void;
|
|
155
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { PlatformExporter, type PlatformInfo, type NiceProject, type ExportOptions } from './PlatformExporter';
|
|
2
|
+
export interface GodotExportOptions {
|
|
3
|
+
/** Godot version (4.0, 4.1, 4.2, etc.) */
|
|
4
|
+
godotVersion?: string;
|
|
5
|
+
/** Use typed GDScript */
|
|
6
|
+
useTypedGDScript?: boolean;
|
|
7
|
+
/** Generate C# scripts instead of GDScript */
|
|
8
|
+
useCSharp?: boolean;
|
|
9
|
+
/** Include autoload singletons */
|
|
10
|
+
includeAutoloads?: boolean;
|
|
11
|
+
/** Renderer type */
|
|
12
|
+
renderer?: 'forward_plus' | 'mobile' | 'gl_compatibility';
|
|
13
|
+
}
|
|
14
|
+
export declare class GodotExporter extends PlatformExporter {
|
|
15
|
+
readonly platformId: "godot";
|
|
16
|
+
readonly platformInfo: PlatformInfo;
|
|
17
|
+
private gdscriptExporter;
|
|
18
|
+
private graphToAST;
|
|
19
|
+
private resourceIdCounter;
|
|
20
|
+
private uidCounter;
|
|
21
|
+
protected doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
22
|
+
private exportProjectFile;
|
|
23
|
+
private exportScripts;
|
|
24
|
+
private exportScenes;
|
|
25
|
+
private createSceneTSCN;
|
|
26
|
+
private createGodotNode;
|
|
27
|
+
private createComponentNode;
|
|
28
|
+
private createTilemapNode;
|
|
29
|
+
private exportPrefabs;
|
|
30
|
+
private createPrefabTSCN;
|
|
31
|
+
private exportResources;
|
|
32
|
+
private createMaterialTRES;
|
|
33
|
+
private createAnimationLibrary;
|
|
34
|
+
private exportTilesets;
|
|
35
|
+
private createTileSetTRES;
|
|
36
|
+
private exportAutoloads;
|
|
37
|
+
private exportEnvironment;
|
|
38
|
+
private exportAssetImports;
|
|
39
|
+
private createImportFile;
|
|
40
|
+
private getAssetPath;
|
|
41
|
+
private addScriptResource;
|
|
42
|
+
private addTextureResource;
|
|
43
|
+
private addAudioResource;
|
|
44
|
+
private addTileSetResource;
|
|
45
|
+
private serializeTSCN;
|
|
46
|
+
private serializeNodes;
|
|
47
|
+
private formatValue;
|
|
48
|
+
private hexToGodotColor;
|
|
49
|
+
private linearToDb;
|
|
50
|
+
private sanitizeName;
|
|
51
|
+
private nextResourceId;
|
|
52
|
+
private nextUID;
|
|
53
|
+
private getHorizontalAlignment;
|
|
54
|
+
private getVerticalAlignment;
|
|
55
|
+
}
|
|
56
|
+
export default GodotExporter;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import type { ScriptGraph } from '../scripting/NodeGraph';
|
|
2
|
+
export type PlatformId = 'unity' | 'godot' | 'unreal' | 'pixijs' | 'phaser' | 'threejs' | 'cocos' | 'gamemaker' | 'roblox' | 'minecraft' | 'rpgmaker' | 'construct3' | 'gdevelop' | 'defold' | 'solar2d' | 'pico8' | 'tic80' | 'web-generic';
|
|
3
|
+
export interface PlatformInfo {
|
|
4
|
+
id: PlatformId;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
icon?: string;
|
|
8
|
+
website: string;
|
|
9
|
+
features: PlatformFeature[];
|
|
10
|
+
supportedAssets: AssetType[];
|
|
11
|
+
exportFormats: string[];
|
|
12
|
+
}
|
|
13
|
+
export type PlatformFeature = '2d-rendering' | '3d-rendering' | 'physics-2d' | 'physics-3d' | 'audio' | 'networking' | 'ui-system' | 'visual-scripting' | 'tilemaps' | 'particles' | 'animation' | 'vr-ar';
|
|
14
|
+
export type AssetType = 'sprite' | 'tileset' | 'audio' | 'font' | 'script' | 'scene' | 'prefab' | 'material' | 'shader' | 'animation' | 'tilemap' | 'particleSystem' | 'texture' | 'data';
|
|
15
|
+
export interface NiceProject {
|
|
16
|
+
name: string;
|
|
17
|
+
version: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
author?: string;
|
|
20
|
+
settings: ProjectSettings;
|
|
21
|
+
scenes: NiceScene[];
|
|
22
|
+
assets: NiceAsset[];
|
|
23
|
+
scripts: ScriptGraph[];
|
|
24
|
+
prefabs: NicePrefab[];
|
|
25
|
+
}
|
|
26
|
+
export interface ProjectSettings {
|
|
27
|
+
resolution: {
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
};
|
|
31
|
+
width?: number;
|
|
32
|
+
height?: number;
|
|
33
|
+
backgroundColor: string;
|
|
34
|
+
physics: {
|
|
35
|
+
gravity: {
|
|
36
|
+
x: number;
|
|
37
|
+
y: number;
|
|
38
|
+
};
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
velocityIterations?: number;
|
|
41
|
+
positionIterations?: number;
|
|
42
|
+
timeStep?: number;
|
|
43
|
+
};
|
|
44
|
+
audio: {
|
|
45
|
+
masterVolume: number;
|
|
46
|
+
musicVolume?: number;
|
|
47
|
+
sfxVolume?: number;
|
|
48
|
+
audioChannels?: number;
|
|
49
|
+
};
|
|
50
|
+
rendering: {
|
|
51
|
+
pixelArt: boolean;
|
|
52
|
+
antialias: boolean;
|
|
53
|
+
pixelPerfect?: boolean;
|
|
54
|
+
antialiasing?: boolean;
|
|
55
|
+
vsync?: boolean;
|
|
56
|
+
backgroundColor?: string;
|
|
57
|
+
};
|
|
58
|
+
input?: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
export interface NiceScene {
|
|
61
|
+
id: string;
|
|
62
|
+
name: string;
|
|
63
|
+
entities: NiceEntity[];
|
|
64
|
+
tilemaps?: NiceTilemap[];
|
|
65
|
+
metadata?: Record<string, unknown>;
|
|
66
|
+
settings?: Record<string, unknown>;
|
|
67
|
+
}
|
|
68
|
+
export interface NiceEntity {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
type?: string;
|
|
72
|
+
position?: {
|
|
73
|
+
x: number;
|
|
74
|
+
y: number;
|
|
75
|
+
};
|
|
76
|
+
rotation?: number;
|
|
77
|
+
scale?: {
|
|
78
|
+
x: number;
|
|
79
|
+
y: number;
|
|
80
|
+
};
|
|
81
|
+
components: NiceComponent[];
|
|
82
|
+
children?: NiceEntity[];
|
|
83
|
+
prefabId?: string;
|
|
84
|
+
scriptId?: string;
|
|
85
|
+
tags?: string[];
|
|
86
|
+
active?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export interface NiceComponent {
|
|
89
|
+
type: string;
|
|
90
|
+
properties?: Record<string, unknown>;
|
|
91
|
+
data?: Record<string, unknown>;
|
|
92
|
+
}
|
|
93
|
+
export interface NiceAsset {
|
|
94
|
+
id: string;
|
|
95
|
+
type: AssetType;
|
|
96
|
+
name: string;
|
|
97
|
+
path: string;
|
|
98
|
+
metadata?: Record<string, unknown>;
|
|
99
|
+
data?: Record<string, unknown>;
|
|
100
|
+
}
|
|
101
|
+
export interface NicePrefab {
|
|
102
|
+
id: string;
|
|
103
|
+
name: string;
|
|
104
|
+
entity: NiceEntity;
|
|
105
|
+
}
|
|
106
|
+
export interface NiceTilemap {
|
|
107
|
+
id: string;
|
|
108
|
+
name: string;
|
|
109
|
+
tilesetId: string;
|
|
110
|
+
width: number;
|
|
111
|
+
height: number;
|
|
112
|
+
tileSize: number;
|
|
113
|
+
layers: TilemapLayer[];
|
|
114
|
+
}
|
|
115
|
+
export interface TilemapLayer {
|
|
116
|
+
name: string;
|
|
117
|
+
data: number[];
|
|
118
|
+
visible: boolean;
|
|
119
|
+
opacity: number;
|
|
120
|
+
}
|
|
121
|
+
export interface ExportOptions {
|
|
122
|
+
/** Target platform */
|
|
123
|
+
platform: PlatformId;
|
|
124
|
+
/** Output directory path */
|
|
125
|
+
outputDir: string;
|
|
126
|
+
/** Project name (used for folder/file naming) */
|
|
127
|
+
projectName?: string;
|
|
128
|
+
/** Whether to minify generated code */
|
|
129
|
+
minify?: boolean;
|
|
130
|
+
/** Include debug information */
|
|
131
|
+
debug?: boolean;
|
|
132
|
+
/** Platform-specific options */
|
|
133
|
+
platformOptions?: Record<string, unknown>;
|
|
134
|
+
}
|
|
135
|
+
export interface ExportResult {
|
|
136
|
+
success: boolean;
|
|
137
|
+
platform: PlatformId;
|
|
138
|
+
outputFiles: ExportedFile[];
|
|
139
|
+
errors: ExportError[];
|
|
140
|
+
warnings: ExportWarning[];
|
|
141
|
+
stats: ExportStats;
|
|
142
|
+
}
|
|
143
|
+
export interface ExportedFile {
|
|
144
|
+
path: string;
|
|
145
|
+
content: string | Uint8Array;
|
|
146
|
+
type: 'text' | 'binary';
|
|
147
|
+
}
|
|
148
|
+
export interface ExportError {
|
|
149
|
+
code: string;
|
|
150
|
+
message: string;
|
|
151
|
+
file?: string;
|
|
152
|
+
line?: number;
|
|
153
|
+
}
|
|
154
|
+
export interface ExportWarning {
|
|
155
|
+
code: string;
|
|
156
|
+
message: string;
|
|
157
|
+
suggestion?: string;
|
|
158
|
+
}
|
|
159
|
+
export interface ExportStats {
|
|
160
|
+
totalFiles: number;
|
|
161
|
+
totalSize: number;
|
|
162
|
+
duration: number;
|
|
163
|
+
assetsProcessed: number;
|
|
164
|
+
scriptsGenerated: number;
|
|
165
|
+
scenesExported: number;
|
|
166
|
+
}
|
|
167
|
+
export declare abstract class PlatformExporter {
|
|
168
|
+
abstract readonly platformId: PlatformId;
|
|
169
|
+
abstract readonly platformInfo: PlatformInfo;
|
|
170
|
+
protected errors: ExportError[];
|
|
171
|
+
protected warnings: ExportWarning[];
|
|
172
|
+
protected files: ExportedFile[];
|
|
173
|
+
/**
|
|
174
|
+
* Export a Nice2Dev project to this platform.
|
|
175
|
+
*/
|
|
176
|
+
export(project: NiceProject, options: ExportOptions): Promise<ExportResult>;
|
|
177
|
+
/**
|
|
178
|
+
* Check if this platform supports a feature.
|
|
179
|
+
*/
|
|
180
|
+
supportsFeature(feature: PlatformFeature): boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Check if this platform supports an asset type.
|
|
183
|
+
*/
|
|
184
|
+
supportsAsset(type: AssetType): boolean;
|
|
185
|
+
protected addFile(path: string, content: string | Uint8Array, type?: 'text' | 'binary'): void;
|
|
186
|
+
protected addTextFile(path: string, content: string): void;
|
|
187
|
+
protected addBinaryFile(path: string, content: Uint8Array): void;
|
|
188
|
+
protected addError(code: string, message: string, file?: string, line?: number): void;
|
|
189
|
+
protected addWarning(code: string, message: string, suggestion?: string): void;
|
|
190
|
+
protected abstract doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
191
|
+
}
|
|
192
|
+
export interface DetectionResult {
|
|
193
|
+
platform: PlatformId;
|
|
194
|
+
confidence: number;
|
|
195
|
+
reasons: string[];
|
|
196
|
+
}
|
|
197
|
+
export declare function detectBestPlatform(project: NiceProject): DetectionResult[];
|
|
198
|
+
export declare function registerPlatform(info: PlatformInfo): void;
|
|
199
|
+
export declare function getPlatformInfo(id: PlatformId): PlatformInfo | undefined;
|
|
200
|
+
export declare function getAllPlatforms(): PlatformInfo[];
|
|
201
|
+
export default PlatformExporter;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PlatformExporter, type PlatformInfo, type NiceProject, type ExportOptions } from './PlatformExporter';
|
|
2
|
+
export interface ThreeJSExportOptions {
|
|
3
|
+
/** Use TypeScript */
|
|
4
|
+
typescript?: boolean;
|
|
5
|
+
/** Bundler to use */
|
|
6
|
+
bundler?: 'vite' | 'webpack' | 'parcel' | 'none';
|
|
7
|
+
/** Include VR/AR support */
|
|
8
|
+
xr?: boolean;
|
|
9
|
+
/** Use OrbitControls by default */
|
|
10
|
+
orbitControls?: boolean;
|
|
11
|
+
/** Include post-processing */
|
|
12
|
+
postProcessing?: boolean;
|
|
13
|
+
/** Physics engine */
|
|
14
|
+
physics?: 'cannon' | 'ammo' | 'rapier' | 'none';
|
|
15
|
+
/** Three.js version */
|
|
16
|
+
version?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class ThreeJSExporter extends PlatformExporter {
|
|
19
|
+
readonly platformId: "threejs";
|
|
20
|
+
readonly platformInfo: PlatformInfo;
|
|
21
|
+
private tsExporter;
|
|
22
|
+
private graphToAST;
|
|
23
|
+
protected doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
24
|
+
private exportPackageJson;
|
|
25
|
+
private exportIndexHtml;
|
|
26
|
+
private exportMainGame;
|
|
27
|
+
private exportScenes;
|
|
28
|
+
private exportScene;
|
|
29
|
+
private generateEntityCode;
|
|
30
|
+
private generateMeshCode;
|
|
31
|
+
private generateModelCode;
|
|
32
|
+
private generateLightCode;
|
|
33
|
+
private exportScripts;
|
|
34
|
+
private exportUtilities;
|
|
35
|
+
private exportShaders;
|
|
36
|
+
private exportBundlerConfig;
|
|
37
|
+
private exportTSConfig;
|
|
38
|
+
private sanitizeName;
|
|
39
|
+
}
|
|
40
|
+
export default ThreeJSExporter;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { PlatformExporter, type PlatformInfo, type NiceProject, type ExportOptions } from './PlatformExporter';
|
|
2
|
+
export interface UnityExportOptions {
|
|
3
|
+
/** Namespace for generated C# scripts */
|
|
4
|
+
namespace?: string;
|
|
5
|
+
/** Generate assembly definition */
|
|
6
|
+
generateAsmdef?: boolean;
|
|
7
|
+
/** Unity version target */
|
|
8
|
+
unityVersion?: string;
|
|
9
|
+
/** Use Universal Render Pipeline */
|
|
10
|
+
useURP?: boolean;
|
|
11
|
+
/** Generate editor scripts */
|
|
12
|
+
generateEditor?: boolean;
|
|
13
|
+
/** Include Nice2Dev runtime */
|
|
14
|
+
includeRuntime?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class UnityExporter extends PlatformExporter {
|
|
17
|
+
readonly platformId: "unity";
|
|
18
|
+
readonly platformInfo: PlatformInfo;
|
|
19
|
+
private csharpExporter;
|
|
20
|
+
private graphToAST;
|
|
21
|
+
private guidMap;
|
|
22
|
+
private fileIdCounter;
|
|
23
|
+
protected doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
24
|
+
private exportProjectSettings;
|
|
25
|
+
private exportScripts;
|
|
26
|
+
private exportPrefabs;
|
|
27
|
+
private createPrefabYAML;
|
|
28
|
+
private exportScenes;
|
|
29
|
+
private createSceneYAML;
|
|
30
|
+
private addSceneSettings;
|
|
31
|
+
private createGameObjectHierarchy;
|
|
32
|
+
private addEntityComponents;
|
|
33
|
+
private addSpriteRenderer;
|
|
34
|
+
private addRigidbody2D;
|
|
35
|
+
private addBoxCollider2D;
|
|
36
|
+
private addCircleCollider2D;
|
|
37
|
+
private addAudioSource;
|
|
38
|
+
private addAnimator;
|
|
39
|
+
private addUIText;
|
|
40
|
+
private addUIImage;
|
|
41
|
+
private addUIButton;
|
|
42
|
+
private addParticleSystem;
|
|
43
|
+
private addScriptComponent;
|
|
44
|
+
private createTilemapGameObject;
|
|
45
|
+
private createTilemapLayer;
|
|
46
|
+
private exportMaterials;
|
|
47
|
+
private createMaterialYAML;
|
|
48
|
+
private exportAssets;
|
|
49
|
+
private exportSpriteAsset;
|
|
50
|
+
private exportAudioAsset;
|
|
51
|
+
private exportFontAsset;
|
|
52
|
+
private exportTilesetAsset;
|
|
53
|
+
private exportAnimationAsset;
|
|
54
|
+
private exportAssemblyDefinition;
|
|
55
|
+
private exportRuntimeBridge;
|
|
56
|
+
private exportPackageManifest;
|
|
57
|
+
private serializeUnityYAML;
|
|
58
|
+
private serializeYAMLObject;
|
|
59
|
+
private generateGuids;
|
|
60
|
+
private generateGUID;
|
|
61
|
+
private nextFileId;
|
|
62
|
+
private createMetaFile;
|
|
63
|
+
private createScriptMetaFile;
|
|
64
|
+
private parseColor;
|
|
65
|
+
private sanitizeFileName;
|
|
66
|
+
private toValidNamespace;
|
|
67
|
+
private getTextAlignment;
|
|
68
|
+
}
|
|
69
|
+
export default UnityExporter;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { PlatformExporter, type PlatformInfo, type NiceProject, type ExportOptions } from './PlatformExporter';
|
|
2
|
+
export interface WebExportOptions {
|
|
3
|
+
/** Target framework */
|
|
4
|
+
framework: 'pixijs' | 'phaser' | 'threejs' | 'vanilla';
|
|
5
|
+
/** Use TypeScript instead of JavaScript */
|
|
6
|
+
typescript?: boolean;
|
|
7
|
+
/** Bundler to use */
|
|
8
|
+
bundler?: 'vite' | 'webpack' | 'parcel' | 'none';
|
|
9
|
+
/** Include PWA support */
|
|
10
|
+
pwa?: boolean;
|
|
11
|
+
/** Generate responsive design */
|
|
12
|
+
responsive?: boolean;
|
|
13
|
+
/** Enable hot reload for development */
|
|
14
|
+
hotReload?: boolean;
|
|
15
|
+
/** Framework version */
|
|
16
|
+
frameworkVersion?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class PixiJSExporter extends PlatformExporter {
|
|
19
|
+
readonly platformId: "pixijs";
|
|
20
|
+
readonly platformInfo: PlatformInfo;
|
|
21
|
+
private tsExporter;
|
|
22
|
+
private graphToAST;
|
|
23
|
+
protected doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
24
|
+
private exportPackageJson;
|
|
25
|
+
private exportIndexHtml;
|
|
26
|
+
private exportMainGame;
|
|
27
|
+
private exportScenes;
|
|
28
|
+
private exportScene;
|
|
29
|
+
private generateEntityCode;
|
|
30
|
+
private exportScripts;
|
|
31
|
+
private exportAssetManifest;
|
|
32
|
+
private exportBundlerConfig;
|
|
33
|
+
private exportPWAFiles;
|
|
34
|
+
private exportUtilities;
|
|
35
|
+
private exportTSConfig;
|
|
36
|
+
private hexToNumber;
|
|
37
|
+
private sanitizeName;
|
|
38
|
+
}
|
|
39
|
+
export declare class PhaserExporter extends PlatformExporter {
|
|
40
|
+
readonly platformId: "phaser";
|
|
41
|
+
readonly platformInfo: PlatformInfo;
|
|
42
|
+
private tsExporter;
|
|
43
|
+
private graphToAST;
|
|
44
|
+
protected doExport(project: NiceProject, options: ExportOptions): Promise<void>;
|
|
45
|
+
private exportPackageJson;
|
|
46
|
+
private exportIndexHtml;
|
|
47
|
+
private exportMainGame;
|
|
48
|
+
private exportScenes;
|
|
49
|
+
private exportScene;
|
|
50
|
+
private generateEntityCode;
|
|
51
|
+
private generateTilemapCode;
|
|
52
|
+
private getUsedAssets;
|
|
53
|
+
private exportScripts;
|
|
54
|
+
private exportBundlerConfig;
|
|
55
|
+
private exportTSConfig;
|
|
56
|
+
private sanitizeName;
|
|
57
|
+
private varName;
|
|
58
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { PlatformExporter, type PlatformId, type PlatformInfo, type PlatformFeature, type AssetType, type NiceProject, type ProjectSettings, type NiceScene, type NiceEntity, type NiceComponent, type NiceAsset, type NicePrefab, type NiceTilemap, type TilemapLayer, type ExportOptions, type ExportResult, type ExportedFile, type ExportError, type ExportWarning, type ExportStats, type DetectionResult, detectBestPlatform, registerPlatform, getPlatformInfo, getAllPlatforms, } from './PlatformExporter';
|
|
2
|
+
export { UnityExporter, type UnityExportOptions } from './UnityExporter';
|
|
3
|
+
export { GodotExporter, type GodotExportOptions } from './GodotExporter';
|
|
4
|
+
export { PixiJSExporter, PhaserExporter, type WebExportOptions } from './WebExporter';
|
|
5
|
+
export { ThreeJSExporter, type ThreeJSExportOptions } from './ThreeJSExporter';
|
|
6
|
+
import type { PlatformId } from './PlatformExporter';
|
|
7
|
+
import { PlatformExporter } from './PlatformExporter';
|
|
8
|
+
/**
|
|
9
|
+
* Create an exporter instance for a given platform.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createExporter(platform: PlatformId): PlatformExporter | null;
|
|
12
|
+
/**
|
|
13
|
+
* Get list of all available exporters.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getAvailableExporters(): PlatformId[];
|
|
16
|
+
/**
|
|
17
|
+
* Check if an exporter is available for a platform.
|
|
18
|
+
*/
|
|
19
|
+
export declare function hasExporter(platform: PlatformId): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file AsepriteImporter.ts
|
|
3
|
+
* @description Import Aseprite sprite editor files (.aseprite, .ase)
|
|
4
|
+
* PRO-1.3: Scene Format Interoperability
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Aseprite binary format (.aseprite, .ase)
|
|
8
|
+
* - Aseprite JSON export format
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Layers (normal, group, reference)
|
|
12
|
+
* - Frames and animation
|
|
13
|
+
* - Tags (animation clips)
|
|
14
|
+
* - Slices (9-slice, pivot)
|
|
15
|
+
* - Palette
|
|
16
|
+
* - Cel data
|
|
17
|
+
* - Blend modes
|
|
18
|
+
*/
|
|
19
|
+
import { SceneImporter, ImportOptions, ImportResult, ParsedScene, ParsedAsset, ImportError } from './SceneImporter';
|
|
20
|
+
export declare class AsepriteImporter extends SceneImporter {
|
|
21
|
+
private aseFile;
|
|
22
|
+
constructor();
|
|
23
|
+
import(options: ImportOptions): Promise<ImportResult>;
|
|
24
|
+
parseFile(content: string | ArrayBuffer, filePath: string): Promise<ParsedScene | ParsedAsset | null>;
|
|
25
|
+
validate(sourcePath: string): Promise<ImportError[]>;
|
|
26
|
+
private parseJsonExport;
|
|
27
|
+
private parseBinaryFile;
|
|
28
|
+
private readHeader;
|
|
29
|
+
private readFrame;
|
|
30
|
+
private getFrameSize;
|
|
31
|
+
private processChunk;
|
|
32
|
+
private readLayerChunk;
|
|
33
|
+
private readCelChunk;
|
|
34
|
+
private readTagsChunk;
|
|
35
|
+
private readPaletteChunk;
|
|
36
|
+
private readSliceChunk;
|
|
37
|
+
private readExternalFilesChunk;
|
|
38
|
+
private readString;
|
|
39
|
+
private buildLayerHierarchy;
|
|
40
|
+
private createSpriteSheetFromBinary;
|
|
41
|
+
private createSpriteSheetAsset;
|
|
42
|
+
private createPaletteAsset;
|
|
43
|
+
private createSpriteScene;
|
|
44
|
+
private paletteColorToHex;
|
|
45
|
+
private readFile;
|
|
46
|
+
}
|