@nice2dev/ui-graphics 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/LICENSE +21 -0
- package/README.md +339 -0
- package/dist/cjs/animation/AnimatedPerson.js +153 -0
- package/dist/cjs/animation/AnimatedPerson.js.map +1 -0
- package/dist/cjs/animation/AnimationEditor.js +106 -0
- package/dist/cjs/animation/AnimationEditor.js.map +1 -0
- package/dist/cjs/animation/Audience.js +59 -0
- package/dist/cjs/animation/Audience.js.map +1 -0
- package/dist/cjs/animation/BodyRenderer.js +33 -0
- package/dist/cjs/animation/BodyRenderer.js.map +1 -0
- package/dist/cjs/animation/animationHelper.js +272 -0
- package/dist/cjs/animation/animationHelper.js.map +1 -0
- package/dist/cjs/animation/characterTypes.js +75 -0
- package/dist/cjs/animation/characterTypes.js.map +1 -0
- package/dist/cjs/animation/choreoDSL.js +190 -0
- package/dist/cjs/animation/choreoDSL.js.map +1 -0
- package/dist/cjs/animation/choreography.js +41 -0
- package/dist/cjs/animation/choreography.js.map +1 -0
- package/dist/cjs/animation/karaokeIntegration.js +98 -0
- package/dist/cjs/animation/karaokeIntegration.js.map +1 -0
- package/dist/cjs/animation/lottieExport.js +128 -0
- package/dist/cjs/animation/lottieExport.js.map +1 -0
- package/dist/cjs/animation/motionPath.js +196 -0
- package/dist/cjs/animation/motionPath.js.map +1 -0
- package/dist/cjs/animation/physics.js +201 -0
- package/dist/cjs/animation/physics.js.map +1 -0
- package/dist/cjs/animation/rig/RigPlayer.js +63 -0
- package/dist/cjs/animation/rig/RigPlayer.js.map +1 -0
- package/dist/cjs/animation/rig/RiggedBody.js +30 -0
- package/dist/cjs/animation/rig/RiggedBody.js.map +1 -0
- package/dist/cjs/animation/rig/choreoRigBridge.js +63 -0
- package/dist/cjs/animation/rig/choreoRigBridge.js.map +1 -0
- package/dist/cjs/animation/rig/ik.js +22 -0
- package/dist/cjs/animation/rig/ik.js.map +1 -0
- package/dist/cjs/animation/rig/poseOps.js +49 -0
- package/dist/cjs/animation/rig/poseOps.js.map +1 -0
- package/dist/cjs/animation/rig/presets.js +60 -0
- package/dist/cjs/animation/rig/presets.js.map +1 -0
- package/dist/cjs/animation/rig/rigMath.js +41 -0
- package/dist/cjs/animation/rig/rigMath.js.map +1 -0
- package/dist/cjs/animation/rig/rigTypes.js +44 -0
- package/dist/cjs/animation/rig/rigTypes.js.map +1 -0
- package/dist/cjs/animation/shapes/arms.js +15 -0
- package/dist/cjs/animation/shapes/arms.js.map +1 -0
- package/dist/cjs/animation/shapes/eyes.js +52 -0
- package/dist/cjs/animation/shapes/eyes.js.map +1 -0
- package/dist/cjs/animation/shapes/hair.js +55 -0
- package/dist/cjs/animation/shapes/hair.js.map +1 -0
- package/dist/cjs/animation/shapes/heads.js +62 -0
- package/dist/cjs/animation/shapes/heads.js.map +1 -0
- package/dist/cjs/animation/shapes/headwear.js +44 -0
- package/dist/cjs/animation/shapes/headwear.js.map +1 -0
- package/dist/cjs/animation/shapes/legs.js +15 -0
- package/dist/cjs/animation/shapes/legs.js.map +1 -0
- package/dist/cjs/animation/shapes/mouths.js +53 -0
- package/dist/cjs/animation/shapes/mouths.js.map +1 -0
- package/dist/cjs/animation/shapes/noses.js +31 -0
- package/dist/cjs/animation/shapes/noses.js.map +1 -0
- package/dist/cjs/animation/shapes/outfits.js +43 -0
- package/dist/cjs/animation/shapes/outfits.js.map +1 -0
- package/dist/cjs/animation/shapes/torsos.js +13 -0
- package/dist/cjs/animation/shapes/torsos.js.map +1 -0
- package/dist/cjs/animation/spineExport.js +132 -0
- package/dist/cjs/animation/spineExport.js.map +1 -0
- package/dist/cjs/core/LocalUI.js +54 -0
- package/dist/cjs/core/LocalUI.js.map +1 -0
- package/dist/cjs/core/collaboration.js +259 -0
- package/dist/cjs/core/collaboration.js.map +1 -0
- package/dist/cjs/core/colorBlindness.js +97 -0
- package/dist/cjs/core/colorBlindness.js.map +1 -0
- package/dist/cjs/core/dragDrop.js +168 -0
- package/dist/cjs/core/dragDrop.js.map +1 -0
- package/dist/cjs/core/fixes.js +185 -0
- package/dist/cjs/core/fixes.js.map +1 -0
- package/dist/cjs/core/gridGuides.js +245 -0
- package/dist/cjs/core/gridGuides.js.map +1 -0
- package/dist/cjs/core/historyVisual.js +124 -0
- package/dist/cjs/core/historyVisual.js.map +1 -0
- package/dist/cjs/core/i18n.js +16 -0
- package/dist/cjs/core/i18n.js.map +1 -0
- package/dist/cjs/core/integrations.js +261 -0
- package/dist/cjs/core/integrations.js.map +1 -0
- package/dist/cjs/core/minimap.js +142 -0
- package/dist/cjs/core/minimap.js.map +1 -0
- package/dist/cjs/core/plugins.js +129 -0
- package/dist/cjs/core/plugins.js.map +1 -0
- package/dist/cjs/core/rtl.js +102 -0
- package/dist/cjs/core/rtl.js.map +1 -0
- package/dist/cjs/core/shortcuts.js +205 -0
- package/dist/cjs/core/shortcuts.js.map +1 -0
- package/dist/cjs/core/theme.js +171 -0
- package/dist/cjs/core/theme.js.map +1 -0
- package/dist/cjs/font/NiceFontEditor.js +193 -0
- package/dist/cjs/font/NiceFontEditor.js.map +1 -0
- package/dist/cjs/game/GameAsset2dEditor.js +371 -0
- package/dist/cjs/game/GameAsset2dEditor.js.map +1 -0
- package/dist/cjs/game/GameAsset2dEditor.module.css.js +6 -0
- package/dist/cjs/game/GameAsset2dEditor.module.css.js.map +1 -0
- package/dist/cjs/game/gameAssetTypes.js +20 -0
- package/dist/cjs/game/gameAssetTypes.js.map +1 -0
- package/dist/cjs/game/gameAssetUtils.js +475 -0
- package/dist/cjs/game/gameAssetUtils.js.map +1 -0
- package/dist/cjs/game/useGameAssetEditor.js +761 -0
- package/dist/cjs/game/useGameAssetEditor.js.map +1 -0
- package/dist/cjs/icon/NiceIconEditor.js +249 -0
- package/dist/cjs/icon/NiceIconEditor.js.map +1 -0
- package/dist/cjs/index.js +264 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nice2dev-ui/dist/index.js +32070 -0
- package/dist/cjs/nice2dev-ui/dist/index.js.map +1 -0
- package/dist/cjs/nice2dev-ui-graphics.css +1 -0
- package/dist/cjs/photo/FilterThumb.js +29 -0
- package/dist/cjs/photo/FilterThumb.js.map +1 -0
- package/dist/cjs/photo/PhotoEditor.js +20 -0
- package/dist/cjs/photo/PhotoEditor.js.map +1 -0
- package/dist/cjs/photo/PhotoEditor.module.css.js +6 -0
- package/dist/cjs/photo/PhotoEditor.module.css.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorCanvas.js +59 -0
- package/dist/cjs/photo/PhotoEditorCanvas.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorLeftPanel.js +174 -0
- package/dist/cjs/photo/PhotoEditorLeftPanel.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorToolbar.js +15 -0
- package/dist/cjs/photo/PhotoEditorToolbar.js.map +1 -0
- package/dist/cjs/photo/photoEditorActions.js +80 -0
- package/dist/cjs/photo/photoEditorActions.js.map +1 -0
- package/dist/cjs/photo/photoEditorTypes.js +40 -0
- package/dist/cjs/photo/photoEditorTypes.js.map +1 -0
- package/dist/cjs/photo/photoFilters.js +880 -0
- package/dist/cjs/photo/photoFilters.js.map +1 -0
- package/dist/cjs/photo/photoOverlays.js +651 -0
- package/dist/cjs/photo/photoOverlays.js.map +1 -0
- package/dist/cjs/photo/photoSelection.js +547 -0
- package/dist/cjs/photo/photoSelection.js.map +1 -0
- package/dist/cjs/photo/usePhotoEditor.js +640 -0
- package/dist/cjs/photo/usePhotoEditor.js.map +1 -0
- package/dist/cjs/pixel/HSVPicker.js +173 -0
- package/dist/cjs/pixel/HSVPicker.js.map +1 -0
- package/dist/cjs/pixel/PixelEditor.js +28 -0
- package/dist/cjs/pixel/PixelEditor.js.map +1 -0
- package/dist/cjs/pixel/PixelEditor.module.css.js +6 -0
- package/dist/cjs/pixel/PixelEditor.module.css.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorCanvas.js +15 -0
- package/dist/cjs/pixel/PixelEditorCanvas.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorMenuBar.js +11 -0
- package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorRightPanel.js +15 -0
- package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorStatusBar.js +15 -0
- package/dist/cjs/pixel/PixelEditorStatusBar.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorTimeline.js +11 -0
- package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorToolbar.js +16 -0
- package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -0
- package/dist/cjs/pixel/asepriteFormat.js +512 -0
- package/dist/cjs/pixel/asepriteFormat.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorExports.js +471 -0
- package/dist/cjs/pixel/pixelEditorExports.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorTypes.js +102 -0
- package/dist/cjs/pixel/pixelEditorTypes.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorUtils.js +664 -0
- package/dist/cjs/pixel/pixelEditorUtils.js.map +1 -0
- package/dist/cjs/pixel/usePixelEditor.js +1112 -0
- package/dist/cjs/pixel/usePixelEditor.js.map +1 -0
- package/dist/cjs/texture/Nice3DTexturePainter.js +236 -0
- package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -0
- package/dist/cjs/ui/NiceUIDesigner.js +191 -0
- package/dist/cjs/ui/NiceUIDesigner.js.map +1 -0
- package/dist/cjs/vector/VectorEditor.js +31 -0
- package/dist/cjs/vector/VectorEditor.js.map +1 -0
- package/dist/cjs/vector/VectorEditor.module.css.js +6 -0
- package/dist/cjs/vector/VectorEditor.module.css.js.map +1 -0
- package/dist/cjs/vector/VectorEditorMenuBar.js +16 -0
- package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -0
- package/dist/cjs/vector/VectorEditorRightPanel.js +126 -0
- package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -0
- package/dist/cjs/vector/VectorEditorShapeRenderer.js +55 -0
- package/dist/cjs/vector/VectorEditorShapeRenderer.js.map +1 -0
- package/dist/cjs/vector/VectorEditorStatusBar.js +14 -0
- package/dist/cjs/vector/VectorEditorStatusBar.js.map +1 -0
- package/dist/cjs/vector/useVectorEditor.js +613 -0
- package/dist/cjs/vector/useVectorEditor.js.map +1 -0
- package/dist/cjs/vector/vectorBooleanOps.js +511 -0
- package/dist/cjs/vector/vectorBooleanOps.js.map +1 -0
- package/dist/cjs/vector/vectorEditorExport.js +159 -0
- package/dist/cjs/vector/vectorEditorExport.js.map +1 -0
- package/dist/cjs/vector/vectorEditorImport.js +150 -0
- package/dist/cjs/vector/vectorEditorImport.js.map +1 -0
- package/dist/cjs/vector/vectorEditorTypes.js +72 -0
- package/dist/cjs/vector/vectorEditorTypes.js.map +1 -0
- package/dist/cjs/vector/vectorGradients.js +201 -0
- package/dist/cjs/vector/vectorGradients.js.map +1 -0
- package/dist/esm/animation/AnimatedPerson.js +151 -0
- package/dist/esm/animation/AnimatedPerson.js.map +1 -0
- package/dist/esm/animation/AnimationEditor.js +104 -0
- package/dist/esm/animation/AnimationEditor.js.map +1 -0
- package/dist/esm/animation/Audience.js +57 -0
- package/dist/esm/animation/Audience.js.map +1 -0
- package/dist/esm/animation/BodyRenderer.js +28 -0
- package/dist/esm/animation/BodyRenderer.js.map +1 -0
- package/dist/esm/animation/animationHelper.js +268 -0
- package/dist/esm/animation/animationHelper.js.map +1 -0
- package/dist/esm/animation/characterTypes.js +70 -0
- package/dist/esm/animation/characterTypes.js.map +1 -0
- package/dist/esm/animation/choreoDSL.js +182 -0
- package/dist/esm/animation/choreoDSL.js.map +1 -0
- package/dist/esm/animation/choreography.js +36 -0
- package/dist/esm/animation/choreography.js.map +1 -0
- package/dist/esm/animation/karaokeIntegration.js +91 -0
- package/dist/esm/animation/karaokeIntegration.js.map +1 -0
- package/dist/esm/animation/lottieExport.js +123 -0
- package/dist/esm/animation/lottieExport.js.map +1 -0
- package/dist/esm/animation/motionPath.js +185 -0
- package/dist/esm/animation/motionPath.js.map +1 -0
- package/dist/esm/animation/physics.js +192 -0
- package/dist/esm/animation/physics.js.map +1 -0
- package/dist/esm/animation/rig/RigPlayer.js +61 -0
- package/dist/esm/animation/rig/RigPlayer.js.map +1 -0
- package/dist/esm/animation/rig/RiggedBody.js +28 -0
- package/dist/esm/animation/rig/RiggedBody.js.map +1 -0
- package/dist/esm/animation/rig/choreoRigBridge.js +60 -0
- package/dist/esm/animation/rig/choreoRigBridge.js.map +1 -0
- package/dist/esm/animation/rig/ik.js +20 -0
- package/dist/esm/animation/rig/ik.js.map +1 -0
- package/dist/esm/animation/rig/poseOps.js +45 -0
- package/dist/esm/animation/rig/poseOps.js.map +1 -0
- package/dist/esm/animation/rig/presets.js +53 -0
- package/dist/esm/animation/rig/presets.js.map +1 -0
- package/dist/esm/animation/rig/rigMath.js +37 -0
- package/dist/esm/animation/rig/rigMath.js.map +1 -0
- package/dist/esm/animation/rig/rigTypes.js +40 -0
- package/dist/esm/animation/rig/rigTypes.js.map +1 -0
- package/dist/esm/animation/shapes/arms.js +13 -0
- package/dist/esm/animation/shapes/arms.js.map +1 -0
- package/dist/esm/animation/shapes/eyes.js +45 -0
- package/dist/esm/animation/shapes/eyes.js.map +1 -0
- package/dist/esm/animation/shapes/hair.js +46 -0
- package/dist/esm/animation/shapes/hair.js.map +1 -0
- package/dist/esm/animation/shapes/heads.js +52 -0
- package/dist/esm/animation/shapes/heads.js.map +1 -0
- package/dist/esm/animation/shapes/headwear.js +36 -0
- package/dist/esm/animation/shapes/headwear.js.map +1 -0
- package/dist/esm/animation/shapes/legs.js +13 -0
- package/dist/esm/animation/shapes/legs.js.map +1 -0
- package/dist/esm/animation/shapes/mouths.js +45 -0
- package/dist/esm/animation/shapes/mouths.js.map +1 -0
- package/dist/esm/animation/shapes/noses.js +23 -0
- package/dist/esm/animation/shapes/noses.js.map +1 -0
- package/dist/esm/animation/shapes/outfits.js +37 -0
- package/dist/esm/animation/shapes/outfits.js.map +1 -0
- package/dist/esm/animation/shapes/torsos.js +11 -0
- package/dist/esm/animation/shapes/torsos.js.map +1 -0
- package/dist/esm/animation/spineExport.js +128 -0
- package/dist/esm/animation/spineExport.js.map +1 -0
- package/dist/esm/core/LocalUI.js +50 -0
- package/dist/esm/core/LocalUI.js.map +1 -0
- package/dist/esm/core/collaboration.js +252 -0
- package/dist/esm/core/collaboration.js.map +1 -0
- package/dist/esm/core/colorBlindness.js +90 -0
- package/dist/esm/core/colorBlindness.js.map +1 -0
- package/dist/esm/core/dragDrop.js +165 -0
- package/dist/esm/core/dragDrop.js.map +1 -0
- package/dist/esm/core/fixes.js +179 -0
- package/dist/esm/core/fixes.js.map +1 -0
- package/dist/esm/core/gridGuides.js +232 -0
- package/dist/esm/core/gridGuides.js.map +1 -0
- package/dist/esm/core/historyVisual.js +121 -0
- package/dist/esm/core/historyVisual.js.map +1 -0
- package/dist/esm/core/i18n.js +13 -0
- package/dist/esm/core/i18n.js.map +1 -0
- package/dist/esm/core/integrations.js +254 -0
- package/dist/esm/core/integrations.js.map +1 -0
- package/dist/esm/core/minimap.js +139 -0
- package/dist/esm/core/minimap.js.map +1 -0
- package/dist/esm/core/plugins.js +124 -0
- package/dist/esm/core/plugins.js.map +1 -0
- package/dist/esm/core/rtl.js +95 -0
- package/dist/esm/core/rtl.js.map +1 -0
- package/dist/esm/core/shortcuts.js +200 -0
- package/dist/esm/core/shortcuts.js.map +1 -0
- package/dist/esm/core/theme.js +162 -0
- package/dist/esm/core/theme.js.map +1 -0
- package/dist/esm/font/NiceFontEditor.js +189 -0
- package/dist/esm/font/NiceFontEditor.js.map +1 -0
- package/dist/esm/game/GameAsset2dEditor.js +369 -0
- package/dist/esm/game/GameAsset2dEditor.js.map +1 -0
- package/dist/esm/game/GameAsset2dEditor.module.css.js +4 -0
- package/dist/esm/game/GameAsset2dEditor.module.css.js.map +1 -0
- package/dist/esm/game/gameAssetTypes.js +18 -0
- package/dist/esm/game/gameAssetTypes.js.map +1 -0
- package/dist/esm/game/gameAssetUtils.js +456 -0
- package/dist/esm/game/gameAssetUtils.js.map +1 -0
- package/dist/esm/game/useGameAssetEditor.js +759 -0
- package/dist/esm/game/useGameAssetEditor.js.map +1 -0
- package/dist/esm/icon/NiceIconEditor.js +246 -0
- package/dist/esm/icon/NiceIconEditor.js.map +1 -0
- package/dist/esm/index.js +59 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nice2dev-ui/dist/index.js +31720 -0
- package/dist/esm/nice2dev-ui/dist/index.js.map +1 -0
- package/dist/esm/nice2dev-ui-graphics.css +1 -0
- package/dist/esm/photo/FilterThumb.js +27 -0
- package/dist/esm/photo/FilterThumb.js.map +1 -0
- package/dist/esm/photo/PhotoEditor.js +18 -0
- package/dist/esm/photo/PhotoEditor.js.map +1 -0
- package/dist/esm/photo/PhotoEditor.module.css.js +4 -0
- package/dist/esm/photo/PhotoEditor.module.css.js.map +1 -0
- package/dist/esm/photo/PhotoEditorCanvas.js +57 -0
- package/dist/esm/photo/PhotoEditorCanvas.js.map +1 -0
- package/dist/esm/photo/PhotoEditorLeftPanel.js +172 -0
- package/dist/esm/photo/PhotoEditorLeftPanel.js.map +1 -0
- package/dist/esm/photo/PhotoEditorToolbar.js +13 -0
- package/dist/esm/photo/PhotoEditorToolbar.js.map +1 -0
- package/dist/esm/photo/photoEditorActions.js +75 -0
- package/dist/esm/photo/photoEditorActions.js.map +1 -0
- package/dist/esm/photo/photoEditorTypes.js +36 -0
- package/dist/esm/photo/photoEditorTypes.js.map +1 -0
- package/dist/esm/photo/photoFilters.js +871 -0
- package/dist/esm/photo/photoFilters.js.map +1 -0
- package/dist/esm/photo/photoOverlays.js +636 -0
- package/dist/esm/photo/photoOverlays.js.map +1 -0
- package/dist/esm/photo/photoSelection.js +535 -0
- package/dist/esm/photo/photoSelection.js.map +1 -0
- package/dist/esm/photo/usePhotoEditor.js +638 -0
- package/dist/esm/photo/usePhotoEditor.js.map +1 -0
- package/dist/esm/pixel/HSVPicker.js +171 -0
- package/dist/esm/pixel/HSVPicker.js.map +1 -0
- package/dist/esm/pixel/PixelEditor.js +26 -0
- package/dist/esm/pixel/PixelEditor.js.map +1 -0
- package/dist/esm/pixel/PixelEditor.module.css.js +4 -0
- package/dist/esm/pixel/PixelEditor.module.css.js.map +1 -0
- package/dist/esm/pixel/PixelEditorCanvas.js +13 -0
- package/dist/esm/pixel/PixelEditorCanvas.js.map +1 -0
- package/dist/esm/pixel/PixelEditorMenuBar.js +9 -0
- package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -0
- package/dist/esm/pixel/PixelEditorRightPanel.js +13 -0
- package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -0
- package/dist/esm/pixel/PixelEditorStatusBar.js +13 -0
- package/dist/esm/pixel/PixelEditorStatusBar.js.map +1 -0
- package/dist/esm/pixel/PixelEditorTimeline.js +9 -0
- package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -0
- package/dist/esm/pixel/PixelEditorToolbar.js +14 -0
- package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -0
- package/dist/esm/pixel/asepriteFormat.js +505 -0
- package/dist/esm/pixel/asepriteFormat.js.map +1 -0
- package/dist/esm/pixel/pixelEditorExports.js +461 -0
- package/dist/esm/pixel/pixelEditorExports.js.map +1 -0
- package/dist/esm/pixel/pixelEditorTypes.js +90 -0
- package/dist/esm/pixel/pixelEditorTypes.js.map +1 -0
- package/dist/esm/pixel/pixelEditorUtils.js +631 -0
- package/dist/esm/pixel/pixelEditorUtils.js.map +1 -0
- package/dist/esm/pixel/usePixelEditor.js +1110 -0
- package/dist/esm/pixel/usePixelEditor.js.map +1 -0
- package/dist/esm/texture/Nice3DTexturePainter.js +233 -0
- package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -0
- package/dist/esm/ui/NiceUIDesigner.js +187 -0
- package/dist/esm/ui/NiceUIDesigner.js.map +1 -0
- package/dist/esm/vector/VectorEditor.js +29 -0
- package/dist/esm/vector/VectorEditor.js.map +1 -0
- package/dist/esm/vector/VectorEditor.module.css.js +4 -0
- package/dist/esm/vector/VectorEditor.module.css.js.map +1 -0
- package/dist/esm/vector/VectorEditorMenuBar.js +14 -0
- package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -0
- package/dist/esm/vector/VectorEditorRightPanel.js +124 -0
- package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -0
- package/dist/esm/vector/VectorEditorShapeRenderer.js +53 -0
- package/dist/esm/vector/VectorEditorShapeRenderer.js.map +1 -0
- package/dist/esm/vector/VectorEditorStatusBar.js +12 -0
- package/dist/esm/vector/VectorEditorStatusBar.js.map +1 -0
- package/dist/esm/vector/useVectorEditor.js +611 -0
- package/dist/esm/vector/useVectorEditor.js.map +1 -0
- package/dist/esm/vector/vectorBooleanOps.js +507 -0
- package/dist/esm/vector/vectorBooleanOps.js.map +1 -0
- package/dist/esm/vector/vectorEditorExport.js +152 -0
- package/dist/esm/vector/vectorEditorExport.js.map +1 -0
- package/dist/esm/vector/vectorEditorImport.js +148 -0
- package/dist/esm/vector/vectorEditorImport.js.map +1 -0
- package/dist/esm/vector/vectorEditorTypes.js +63 -0
- package/dist/esm/vector/vectorEditorTypes.js.map +1 -0
- package/dist/esm/vector/vectorGradients.js +193 -0
- package/dist/esm/vector/vectorGradients.js.map +1 -0
- package/dist/types/__benchmarks__/bench.d.ts +13 -0
- package/dist/types/__tests__/setup.d.ts +4 -0
- package/dist/types/animation/AnimatedPerson.d.ts +14 -0
- package/dist/types/animation/AnimationEditor.d.ts +20 -0
- package/dist/types/animation/Audience.d.ts +11 -0
- package/dist/types/animation/BodyRenderer.d.ts +12 -0
- package/dist/types/animation/animationHelper.d.ts +28 -0
- package/dist/types/animation/characterTypes.d.ts +37 -0
- package/dist/types/animation/choreoDSL.d.ts +88 -0
- package/dist/types/animation/choreography.d.ts +8 -0
- package/dist/types/animation/karaokeIntegration.d.ts +31 -0
- package/dist/types/animation/lottieExport.d.ts +77 -0
- package/dist/types/animation/motionPath.d.ts +60 -0
- package/dist/types/animation/physics.d.ts +73 -0
- package/dist/types/animation/rig/RigPlayer.d.ts +32 -0
- package/dist/types/animation/rig/RiggedBody.d.ts +19 -0
- package/dist/types/animation/rig/choreoRigBridge.d.ts +9 -0
- package/dist/types/animation/rig/ik.d.ts +8 -0
- package/dist/types/animation/rig/poseOps.d.ts +14 -0
- package/dist/types/animation/rig/presets.d.ts +13 -0
- package/dist/types/animation/rig/rigMath.d.ts +7 -0
- package/dist/types/animation/rig/rigTypes.d.ts +38 -0
- package/dist/types/animation/shapes/arms.d.ts +10 -0
- package/dist/types/animation/shapes/eyes.d.ts +17 -0
- package/dist/types/animation/shapes/hair.d.ts +17 -0
- package/dist/types/animation/shapes/heads.d.ts +18 -0
- package/dist/types/animation/shapes/headwear.d.ts +16 -0
- package/dist/types/animation/shapes/legs.d.ts +10 -0
- package/dist/types/animation/shapes/mouths.d.ts +17 -0
- package/dist/types/animation/shapes/noses.d.ts +17 -0
- package/dist/types/animation/shapes/outfits.d.ts +14 -0
- package/dist/types/animation/shapes/torsos.d.ts +9 -0
- package/dist/types/animation/spineExport.d.ts +66 -0
- package/dist/types/core/LocalUI.d.ts +21 -0
- package/dist/types/core/collaboration.d.ts +164 -0
- package/dist/types/core/colorBlindness.d.ts +24 -0
- package/dist/types/core/dragDrop.d.ts +46 -0
- package/dist/types/core/fixes.d.ts +80 -0
- package/dist/types/core/gridGuides.d.ts +70 -0
- package/dist/types/core/historyVisual.d.ts +915 -0
- package/dist/types/core/i18n.d.ts +27 -0
- package/dist/types/core/integrations.d.ts +103 -0
- package/dist/types/core/minimap.d.ts +49 -0
- package/dist/types/core/plugins.d.ts +111 -0
- package/dist/types/core/rtl.d.ts +32 -0
- package/dist/types/core/shortcuts.d.ts +150 -0
- package/dist/types/core/theme.d.ts +78 -0
- package/dist/types/core/useGamepad.d.ts +64 -0
- package/dist/types/core/usePointerPressure.d.ts +88 -0
- package/dist/types/font/NiceFontEditor.d.ts +62 -0
- package/dist/types/game/AnimationPreviewPlayer.d.ts +29 -0
- package/dist/types/game/CollisionEditor.d.ts +101 -0
- package/dist/types/game/GameAsset2dEditor.d.ts +17 -0
- package/dist/types/game/GameAssetExportPanel.d.ts +20 -0
- package/dist/types/game/IsometricEditor.d.ts +22 -0
- package/dist/types/game/IsometricTilePanel.d.ts +18 -0
- package/dist/types/game/gameAssetExport.d.ts +160 -0
- package/dist/types/game/gameAssetTypes.d.ts +238 -0
- package/dist/types/game/gameAssetUtils.d.ts +23 -0
- package/dist/types/game/index.d.ts +8 -0
- package/dist/types/game/isometricTiles.d.ts +250 -0
- package/dist/types/game/useAnimationPreview.d.ts +63 -0
- package/dist/types/game/useCollisionEditor.d.ts +96 -0
- package/dist/types/game/useGameAssetEditor.d.ts +79 -0
- package/dist/types/game/useGameAssetExport.d.ts +82 -0
- package/dist/types/icon/NiceIconEditor.d.ts +79 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/photo/BatchProcessingPanel.d.ts +13 -0
- package/dist/types/photo/FaceDetectionPanel.d.ts +18 -0
- package/dist/types/photo/FilterThumb.d.ts +14 -0
- package/dist/types/photo/PerspectiveCorrectionPanel.d.ts +17 -0
- package/dist/types/photo/PhotoEditor.d.ts +2 -0
- package/dist/types/photo/PhotoEditorCanvas.d.ts +14 -0
- package/dist/types/photo/PhotoEditorLeftPanel.d.ts +13 -0
- package/dist/types/photo/PhotoEditorToolbar.d.ts +13 -0
- package/dist/types/photo/RawFilePanel.d.ts +14 -0
- package/dist/types/photo/StyleTransferPanel.d.ts +15 -0
- package/dist/types/photo/aiStyleTransfer.d.ts +58 -0
- package/dist/types/photo/batchProcessing.d.ts +95 -0
- package/dist/types/photo/faceDetection.d.ts +103 -0
- package/dist/types/photo/index.d.ts +17 -0
- package/dist/types/photo/perspectiveCorrection.d.ts +134 -0
- package/dist/types/photo/photoEditorActions.d.ts +40 -0
- package/dist/types/photo/photoEditorTypes.d.ts +34 -0
- package/dist/types/photo/photoFilters.d.ts +55 -0
- package/dist/types/photo/photoOverlays.d.ts +126 -0
- package/dist/types/photo/photoSelection.d.ts +56 -0
- package/dist/types/photo/rawFileSupport.d.ts +124 -0
- package/dist/types/photo/usePhotoEditor.d.ts +123 -0
- package/dist/types/pixel/HSVPicker.d.ts +11 -0
- package/dist/types/pixel/PaletteExtractorPanel.d.ts +16 -0
- package/dist/types/pixel/PixelEditor.d.ts +17 -0
- package/dist/types/pixel/PixelEditorCanvas.d.ts +10 -0
- package/dist/types/pixel/PixelEditorMenuBar.d.ts +11 -0
- package/dist/types/pixel/PixelEditorRightPanel.d.ts +11 -0
- package/dist/types/pixel/PixelEditorStatusBar.d.ts +11 -0
- package/dist/types/pixel/PixelEditorTimeline.d.ts +11 -0
- package/dist/types/pixel/PixelEditorToolbar.d.ts +11 -0
- package/dist/types/pixel/TileMapPanel.d.ts +14 -0
- package/dist/types/pixel/asepriteFormat.d.ts +62 -0
- package/dist/types/pixel/paletteExtractor.d.ts +73 -0
- package/dist/types/pixel/pixelEditorExports.d.ts +31 -0
- package/dist/types/pixel/pixelEditorTypes.d.ts +51 -0
- package/dist/types/pixel/pixelEditorUtils.d.ts +136 -0
- package/dist/types/pixel/tileMapMode.d.ts +122 -0
- package/dist/types/pixel/usePixelEditor.d.ts +114 -0
- package/dist/types/texture/Nice3DTexturePainter.d.ts +55 -0
- package/dist/types/ui/NiceUIDesigner.d.ts +43 -0
- package/dist/types/vector/PathSimplificationPanel.d.ts +15 -0
- package/dist/types/vector/PdfExportPanel.d.ts +20 -0
- package/dist/types/vector/TextOnPathPanel.d.ts +26 -0
- package/dist/types/vector/VectorEditor.d.ts +32 -0
- package/dist/types/vector/VectorEditorMenuBar.d.ts +8 -0
- package/dist/types/vector/VectorEditorRightPanel.d.ts +7 -0
- package/dist/types/vector/VectorEditorShapeRenderer.d.ts +9 -0
- package/dist/types/vector/VectorEditorStatusBar.d.ts +9 -0
- package/dist/types/vector/VectorFilterPanel.d.ts +19 -0
- package/dist/types/vector/VectorPatternPanel.d.ts +21 -0
- package/dist/types/vector/pathSimplification.d.ts +135 -0
- package/dist/types/vector/pdfExport.d.ts +65 -0
- package/dist/types/vector/textOnPath.d.ts +145 -0
- package/dist/types/vector/useVectorEditor.d.ts +90 -0
- package/dist/types/vector/vectorBooleanOps.d.ts +22 -0
- package/dist/types/vector/vectorEditorExport.d.ts +8 -0
- package/dist/types/vector/vectorEditorImport.d.ts +7 -0
- package/dist/types/vector/vectorEditorTypes.d.ts +47 -0
- package/dist/types/vector/vectorGradients.d.ts +64 -0
- package/dist/types/vector/vectorPatternFills.d.ts +101 -0
- package/dist/types/vector/vectorSvgFilters.d.ts +134 -0
- package/package.json +93 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useMemo, useEffect, useCallback } from 'react';
|
|
3
|
+
import styles from './GameAsset2dEditor.module.css.js';
|
|
4
|
+
import { useGameAssetEditor } from './useGameAssetEditor.js';
|
|
5
|
+
|
|
6
|
+
/* ────────────────────────────────────────────────────────────────
|
|
7
|
+
MENU BAR
|
|
8
|
+
──────────────────────────────────────────────────────────────── */
|
|
9
|
+
const MenuBar = ({ api }) => {
|
|
10
|
+
const fileInputRef = useRef(null);
|
|
11
|
+
return (jsxs("div", { className: styles.menuBar, children: [jsx("h3", { children: "\uD83C\uDFAE Game Asset Editor" }), jsxs("div", { className: styles.menuGroup, children: [jsx("button", { className: styles.menuBtn, onClick: () => api.newProject('New Project'), children: "\uD83D\uDCC4 New" }), jsx("button", { className: styles.menuBtn, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "\uD83D\uDCC2 Open" }), jsx("button", { className: styles.menuBtn, onClick: api.saveProject, children: "\uD83D\uDCBE Save" })] }), jsx("div", { className: styles.spacer }), jsxs("div", { className: styles.menuGroup, children: [jsx("button", { className: styles.menuBtn, onClick: api.undo, disabled: !api.canUndo, children: "\u21A9 Undo" }), jsx("button", { className: styles.menuBtn, onClick: api.redo, disabled: !api.canRedo, children: "\u21AA Redo" })] }), jsx("input", { ref: fileInputRef, type: "file", accept: ".json", style: { display: 'none' }, onChange: e => {
|
|
12
|
+
var _a;
|
|
13
|
+
const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
14
|
+
if (file)
|
|
15
|
+
api.loadProject(file);
|
|
16
|
+
e.target.value = '';
|
|
17
|
+
} })] }));
|
|
18
|
+
};
|
|
19
|
+
/* ────────────────────────────────────────────────────────────────
|
|
20
|
+
MODE TABS
|
|
21
|
+
──────────────────────────────────────────────────────────────── */
|
|
22
|
+
const ModeTabs = ({ api }) => {
|
|
23
|
+
const modes = [
|
|
24
|
+
{ id: 'tilemap', label: 'Tile Map', icon: '🗺️' },
|
|
25
|
+
{ id: 'spritesheet', label: 'Sprite Sheet', icon: '🖼️' },
|
|
26
|
+
{ id: 'animation', label: 'Animation', icon: '🎬' },
|
|
27
|
+
{ id: 'effects', label: 'Effects', icon: '✨' },
|
|
28
|
+
];
|
|
29
|
+
return (jsx("div", { className: styles.modeTabs, children: modes.map(mode => (jsxs("button", { className: `${styles.modeTab} ${api.editorState.mode === mode.id ? styles.active : ''}`, onClick: () => api.setMode(mode.id), children: [mode.icon, " ", mode.label] }, mode.id))) }));
|
|
30
|
+
};
|
|
31
|
+
/* ────────────────────────────────────────────────────────────────
|
|
32
|
+
TILE MAP TOOLBAR
|
|
33
|
+
──────────────────────────────────────────────────────────────── */
|
|
34
|
+
const TileMapToolbar = ({ api }) => {
|
|
35
|
+
const tools = [
|
|
36
|
+
{ id: 'select', icon: '⬚', label: 'Select' },
|
|
37
|
+
{ id: 'brush', icon: '✏', label: 'Brush' },
|
|
38
|
+
{ id: 'eraser', icon: '⌫', label: 'Eraser' },
|
|
39
|
+
{ id: 'fill', icon: '🪣', label: 'Fill' },
|
|
40
|
+
{ id: 'rectangle', icon: '▢', label: 'Rectangle' },
|
|
41
|
+
{ id: 'line', icon: '╱', label: 'Line' },
|
|
42
|
+
{ id: 'eyedropper', icon: '💧', label: 'Eyedropper' },
|
|
43
|
+
];
|
|
44
|
+
return (jsxs("div", { className: styles.toolbar, children: [jsx("div", { className: styles.toolGroup, children: tools.map(tool => (jsx("button", { className: `${styles.toolBtn} ${api.editorState.tileMapTool === tool.id ? styles.active : ''}`, onClick: () => api.setTileMapTool(tool.id), title: tool.label, children: tool.icon }, tool.id))) }), jsx("div", { className: styles.spacer }), jsx("button", { className: `${styles.toolBtn} ${api.editorState.showGrid ? styles.active : ''}`, onClick: api.toggleGrid, title: "Toggle Grid", children: "\u229E" }), jsx("button", { className: `${styles.toolBtn} ${api.editorState.showCollision ? styles.active : ''}`, onClick: api.toggleCollision, title: "Show Collision", children: "\u25C7" }), jsx("button", { className: `${styles.toolBtn} ${api.editorState.snapToGrid ? styles.active : ''}`, onClick: api.toggleSnap, title: "Snap to Grid", children: "\u22A1" })] }));
|
|
45
|
+
};
|
|
46
|
+
/* ────────────────────────────────────────────────────────────────
|
|
47
|
+
SPRITE SHEET TOOLBAR
|
|
48
|
+
──────────────────────────────────────────────────────────────── */
|
|
49
|
+
const SpriteSheetToolbar = ({ api }) => {
|
|
50
|
+
const [sliceWidth, setSliceWidth] = useState(16);
|
|
51
|
+
const [sliceHeight, setSliceHeight] = useState(16);
|
|
52
|
+
return (jsxs("div", { className: styles.toolbar, children: [jsxs("div", { className: styles.toolGroup, children: [jsx("button", { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'select' ? styles.active : ''}`, onClick: () => api.setSpriteSheetTool('select'), title: "Select", children: "\u2B1A" }), jsx("button", { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'slice' ? styles.active : ''}`, onClick: () => api.setSpriteSheetTool('slice'), title: "Manual Slice", children: "\u2702" })] }), jsx("div", { className: styles.spacer }), jsxs("label", { style: { fontSize: 11, color: '#8892a8' }, children: ["Frame size:", jsx("input", { type: "number", value: sliceWidth, onChange: e => setSliceWidth(+e.target.value), style: { width: 40, margin: '0 4px' }, className: styles.panelInput }), "\u00D7", jsx("input", { type: "number", value: sliceHeight, onChange: e => setSliceHeight(+e.target.value), style: { width: 40, marginLeft: 4 }, className: styles.panelInput })] }), jsx("button", { className: styles.btnSecondary, onClick: () => api.autoSlice(sliceWidth, sliceHeight), style: { marginLeft: 8 }, children: "Auto Slice" }), jsx("button", { className: styles.btnSecondary, onClick: api.detectSprites, style: { marginLeft: 4 }, children: "Detect Sprites" })] }));
|
|
53
|
+
};
|
|
54
|
+
/* ────────────────────────────────────────────────────────────────
|
|
55
|
+
TILE PALETTE (LEFT PANEL)
|
|
56
|
+
──────────────────────────────────────────────────────────────── */
|
|
57
|
+
const TilePalette = ({ api }) => {
|
|
58
|
+
const fileInputRef = useRef(null);
|
|
59
|
+
return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Tiles" }), jsx("button", { className: styles.menuBtn, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileSets.length === 0 ? (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "No tiles yet" }), jsx("button", { className: styles.btnSecondary, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Tiles" })] })) : (jsx("div", { className: styles.tilePalette, children: api.project.tileSets.map(tile => (jsx("div", { className: `${styles.tileItem} ${api.editorState.selectedTileId === tile.id ? styles.selected : ''}`, onClick: () => api.selectTile(tile.id), title: tile.name, children: jsx("img", { src: tile.thumbnail, alt: tile.name }) }, tile.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
|
|
60
|
+
var _a;
|
|
61
|
+
const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
62
|
+
if (file)
|
|
63
|
+
api.importTileSet(file);
|
|
64
|
+
e.target.value = '';
|
|
65
|
+
} })] }));
|
|
66
|
+
};
|
|
67
|
+
/* ────────────────────────────────────────────────────────────────
|
|
68
|
+
LAYERS PANEL (RIGHT PANEL)
|
|
69
|
+
──────────────────────────────────────────────────────────────── */
|
|
70
|
+
const LayersPanel = ({ api }) => {
|
|
71
|
+
const activeMap = api.project.tileMaps.find(m => m.id === api.editorState.activeTileMapId);
|
|
72
|
+
return (jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Layers" }), jsx("button", { className: styles.menuBtn, onClick: api.addLayer, disabled: !activeMap, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeMap ? (jsx("div", { className: styles.layersList, children: [...activeMap.layers].reverse().map(layer => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeLayerId === layer.id ? styles.selected : ''}`, onClick: () => api.selectLayer(layer.id), children: [jsx("button", { className: `${styles.layerVisibility} ${!layer.visible ? styles.hidden : ''}`, onClick: e => {
|
|
73
|
+
e.stopPropagation();
|
|
74
|
+
api.toggleLayerVisibility(layer.id);
|
|
75
|
+
}, children: layer.visible ? '👁' : '○' }), jsx("span", { className: styles.layerName, children: layer.name }), jsxs("span", { className: styles.layerOpacity, children: [Math.round(layer.opacity * 100), "%"] })] }, layer.id))) })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No tile map selected" }) })) }), jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Maps" }), jsx("button", { className: styles.menuBtn, onClick: () => api.createTileMap('New Map', 32, 32), children: "+ New" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileMaps.map(map => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeTileMapId === map.id ? styles.selected : ''}`, onClick: () => api.selectTileMap(map.id), children: [jsx("span", { className: styles.layerName, children: map.name }), jsxs("span", { className: styles.layerOpacity, children: [map.width, "\u00D7", map.height] })] }, map.id))) })] }));
|
|
76
|
+
};
|
|
77
|
+
/* ────────────────────────────────────────────────────────────────
|
|
78
|
+
TILE MAP CANVAS
|
|
79
|
+
──────────────────────────────────────────────────────────────── */
|
|
80
|
+
const TileMapCanvas = ({ api }) => {
|
|
81
|
+
const canvasRef = useRef(null);
|
|
82
|
+
const containerRef = useRef(null);
|
|
83
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
84
|
+
const activeMap = api.project.tileMaps.find(m => m.id === api.editorState.activeTileMapId);
|
|
85
|
+
// Render the tile map
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
var _a;
|
|
88
|
+
const canvas = canvasRef.current;
|
|
89
|
+
if (!canvas || !activeMap)
|
|
90
|
+
return;
|
|
91
|
+
const ctx = canvas.getContext('2d');
|
|
92
|
+
if (!ctx)
|
|
93
|
+
return;
|
|
94
|
+
canvas.width = activeMap.width * activeMap.tileWidth;
|
|
95
|
+
canvas.height = activeMap.height * activeMap.tileHeight;
|
|
96
|
+
// Background
|
|
97
|
+
ctx.fillStyle = activeMap.backgroundColor;
|
|
98
|
+
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
99
|
+
// Render layers
|
|
100
|
+
for (const layer of activeMap.layers.filter(l => l.visible)) {
|
|
101
|
+
ctx.globalAlpha = layer.opacity;
|
|
102
|
+
for (let y = 0; y < activeMap.height; y++) {
|
|
103
|
+
for (let x = 0; x < activeMap.width; x++) {
|
|
104
|
+
const tileId = (_a = layer.tiles[y]) === null || _a === void 0 ? void 0 : _a[x];
|
|
105
|
+
if (tileId) {
|
|
106
|
+
const tile = api.project.tileSets.find(t => t.id === tileId);
|
|
107
|
+
if (tile === null || tile === void 0 ? void 0 : tile.thumbnail) {
|
|
108
|
+
const img = new Image();
|
|
109
|
+
img.src = tile.thumbnail;
|
|
110
|
+
ctx.drawImage(img, x * activeMap.tileWidth, y * activeMap.tileHeight, activeMap.tileWidth, activeMap.tileHeight);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Grid overlay
|
|
117
|
+
if (api.editorState.showGrid) {
|
|
118
|
+
ctx.globalAlpha = 0.3;
|
|
119
|
+
ctx.strokeStyle = '#ffffff';
|
|
120
|
+
ctx.lineWidth = 1;
|
|
121
|
+
for (let x = 0; x <= activeMap.width; x++) {
|
|
122
|
+
ctx.beginPath();
|
|
123
|
+
ctx.moveTo(x * activeMap.tileWidth, 0);
|
|
124
|
+
ctx.lineTo(x * activeMap.tileWidth, canvas.height);
|
|
125
|
+
ctx.stroke();
|
|
126
|
+
}
|
|
127
|
+
for (let y = 0; y <= activeMap.height; y++) {
|
|
128
|
+
ctx.beginPath();
|
|
129
|
+
ctx.moveTo(0, y * activeMap.tileHeight);
|
|
130
|
+
ctx.lineTo(canvas.width, y * activeMap.tileHeight);
|
|
131
|
+
ctx.stroke();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
ctx.globalAlpha = 1;
|
|
135
|
+
}, [activeMap, api.project.tileSets, api.editorState.showGrid]);
|
|
136
|
+
const handleCanvasClick = useCallback((e) => {
|
|
137
|
+
if (!activeMap || !api.editorState.activeLayerId || !api.editorState.selectedTileId)
|
|
138
|
+
return;
|
|
139
|
+
const canvas = canvasRef.current;
|
|
140
|
+
if (!canvas)
|
|
141
|
+
return;
|
|
142
|
+
const rect = canvas.getBoundingClientRect();
|
|
143
|
+
const scaleX = canvas.width / rect.width;
|
|
144
|
+
const scaleY = canvas.height / rect.height;
|
|
145
|
+
const x = Math.floor((e.clientX - rect.left) * scaleX / activeMap.tileWidth);
|
|
146
|
+
const y = Math.floor((e.clientY - rect.top) * scaleY / activeMap.tileHeight);
|
|
147
|
+
if (api.editorState.tileMapTool === 'brush') {
|
|
148
|
+
api.setTile(api.editorState.activeLayerId, x, y, api.editorState.selectedTileId);
|
|
149
|
+
}
|
|
150
|
+
else if (api.editorState.tileMapTool === 'eraser') {
|
|
151
|
+
api.setTile(api.editorState.activeLayerId, x, y, null);
|
|
152
|
+
}
|
|
153
|
+
else if (api.editorState.tileMapTool === 'fill') {
|
|
154
|
+
api.fillTiles(api.editorState.activeLayerId, x, y, api.editorState.selectedTileId);
|
|
155
|
+
}
|
|
156
|
+
}, [activeMap, api]);
|
|
157
|
+
return (jsx("div", { className: styles.viewport, ref: containerRef, children: activeMap ? (jsx("canvas", { ref: canvasRef, className: styles.viewportCanvas, style: {
|
|
158
|
+
transform: `translate(-50%, -50%) scale(${api.editorState.zoom})`,
|
|
159
|
+
}, onClick: handleCanvasClick, onMouseDown: () => setIsDragging(true), onMouseUp: () => setIsDragging(false), onMouseMove: e => {
|
|
160
|
+
if (isDragging && (api.editorState.tileMapTool === 'brush' || api.editorState.tileMapTool === 'eraser')) {
|
|
161
|
+
handleCanvasClick(e);
|
|
162
|
+
}
|
|
163
|
+
} })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Create or select a tile map to start editing" }), jsx("button", { className: styles.btnPrimary, onClick: () => api.createTileMap('New Map', 32, 32), children: "Create Tile Map" })] })) }));
|
|
164
|
+
};
|
|
165
|
+
/* ────────────────────────────────────────────────────────────────
|
|
166
|
+
SPRITE SHEET CANVAS
|
|
167
|
+
──────────────────────────────────────────────────────────────── */
|
|
168
|
+
const SpriteSheetCanvas = ({ api }) => {
|
|
169
|
+
const canvasRef = useRef(null);
|
|
170
|
+
const fileInputRef = useRef(null);
|
|
171
|
+
const activeSheet = api.project.spriteSheets.find(s => s.id === api.editorState.activeSpriteSheetId);
|
|
172
|
+
// Render sprite sheet with frame overlays
|
|
173
|
+
useEffect(() => {
|
|
174
|
+
const canvas = canvasRef.current;
|
|
175
|
+
if (!canvas || !(activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.image))
|
|
176
|
+
return;
|
|
177
|
+
const ctx = canvas.getContext('2d');
|
|
178
|
+
if (!ctx)
|
|
179
|
+
return;
|
|
180
|
+
canvas.width = activeSheet.width;
|
|
181
|
+
canvas.height = activeSheet.height;
|
|
182
|
+
// Draw image
|
|
183
|
+
ctx.drawImage(activeSheet.image, 0, 0);
|
|
184
|
+
// Draw frame overlays
|
|
185
|
+
ctx.strokeStyle = '#ffd369';
|
|
186
|
+
ctx.lineWidth = 2;
|
|
187
|
+
for (const frame of activeSheet.frames) {
|
|
188
|
+
const isSelected = api.editorState.selectedFrameIds.includes(frame.id);
|
|
189
|
+
ctx.strokeStyle = isSelected ? '#ffd369' : '#4a5a7e';
|
|
190
|
+
ctx.strokeRect(frame.x, frame.y, frame.width, frame.height);
|
|
191
|
+
// Draw pivot point
|
|
192
|
+
const pivotX = frame.x + frame.width * frame.pivotX;
|
|
193
|
+
const pivotY = frame.y + frame.height * frame.pivotY;
|
|
194
|
+
ctx.fillStyle = isSelected ? '#ffd369' : '#4a5a7e';
|
|
195
|
+
ctx.beginPath();
|
|
196
|
+
ctx.arc(pivotX, pivotY, 3, 0, Math.PI * 2);
|
|
197
|
+
ctx.fill();
|
|
198
|
+
}
|
|
199
|
+
}, [activeSheet, api.editorState.selectedFrameIds]);
|
|
200
|
+
const handleFrameClick = useCallback((e) => {
|
|
201
|
+
if (!activeSheet)
|
|
202
|
+
return;
|
|
203
|
+
const canvas = canvasRef.current;
|
|
204
|
+
if (!canvas)
|
|
205
|
+
return;
|
|
206
|
+
const rect = canvas.getBoundingClientRect();
|
|
207
|
+
const scaleX = canvas.width / rect.width;
|
|
208
|
+
const scaleY = canvas.height / rect.height;
|
|
209
|
+
const x = (e.clientX - rect.left) * scaleX;
|
|
210
|
+
const y = (e.clientY - rect.top) * scaleY;
|
|
211
|
+
// Find clicked frame
|
|
212
|
+
const clickedFrame = activeSheet.frames.find(f => x >= f.x && x <= f.x + f.width && y >= f.y && y <= f.y + f.height);
|
|
213
|
+
if (clickedFrame) {
|
|
214
|
+
if (e.ctrlKey || e.metaKey) {
|
|
215
|
+
// Toggle selection
|
|
216
|
+
const newSelection = api.editorState.selectedFrameIds.includes(clickedFrame.id)
|
|
217
|
+
? api.editorState.selectedFrameIds.filter(id => id !== clickedFrame.id)
|
|
218
|
+
: [...api.editorState.selectedFrameIds, clickedFrame.id];
|
|
219
|
+
api.selectFrames(newSelection);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
api.selectFrames([clickedFrame.id]);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
api.selectFrames([]);
|
|
227
|
+
}
|
|
228
|
+
}, [activeSheet, api]);
|
|
229
|
+
return (jsx("div", { className: styles.viewport, children: activeSheet ? (jsx("canvas", { ref: canvasRef, className: styles.viewportCanvas, style: {
|
|
230
|
+
transform: `translate(-50%, -50%) scale(${api.editorState.zoom})`,
|
|
231
|
+
}, onClick: handleFrameClick })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Import a sprite sheet to start" }), jsx("button", { className: styles.btnPrimary, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Sprite Sheet" }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
|
|
232
|
+
var _a;
|
|
233
|
+
const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
234
|
+
if (file)
|
|
235
|
+
api.importSpriteSheet(file);
|
|
236
|
+
e.target.value = '';
|
|
237
|
+
} })] })) }));
|
|
238
|
+
};
|
|
239
|
+
/* ────────────────────────────────────────────────────────────────
|
|
240
|
+
SPRITE SHEETS LIST
|
|
241
|
+
──────────────────────────────────────────────────────────────── */
|
|
242
|
+
const SpriteSheetsList = ({ api }) => {
|
|
243
|
+
const fileInputRef = useRef(null);
|
|
244
|
+
return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Sprite Sheets" }), jsx("button", { className: styles.menuBtn, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Import" })] }), jsx("div", { className: styles.panelContent, children: api.project.spriteSheets.length === 0 ? (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No sprite sheets" }) })) : (jsx("div", { className: styles.layersList, children: api.project.spriteSheets.map(sheet => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeSpriteSheetId === sheet.id ? styles.selected : ''}`, onClick: () => api.selectSpriteSheet(sheet.id), children: [jsx("span", { className: styles.layerName, children: sheet.name }), jsxs("span", { className: styles.layerOpacity, children: [sheet.frames.length, " frames"] })] }, sheet.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
|
|
245
|
+
var _a;
|
|
246
|
+
const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
247
|
+
if (file)
|
|
248
|
+
api.importSpriteSheet(file);
|
|
249
|
+
e.target.value = '';
|
|
250
|
+
} })] }));
|
|
251
|
+
};
|
|
252
|
+
/* ────────────────────────────────────────────────────────────────
|
|
253
|
+
FRAMES & ANIMATIONS PANEL
|
|
254
|
+
──────────────────────────────────────────────────────────────── */
|
|
255
|
+
const FramesPanel = ({ api }) => {
|
|
256
|
+
var _a;
|
|
257
|
+
const [animName, setAnimName] = useState('');
|
|
258
|
+
const activeSheet = api.project.spriteSheets.find(s => s.id === api.editorState.activeSpriteSheetId);
|
|
259
|
+
const createAnimationFromSelection = useCallback(() => {
|
|
260
|
+
if (animName && api.editorState.selectedFrameIds.length > 0) {
|
|
261
|
+
api.createAnimation(animName, api.editorState.selectedFrameIds);
|
|
262
|
+
setAnimName('');
|
|
263
|
+
}
|
|
264
|
+
}, [animName, api]);
|
|
265
|
+
return (jsxs("div", { className: styles.rightPanel, children: [jsx("div", { className: styles.panelHeader, children: jsxs("span", { children: ["Frames (", (_a = activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.length) !== null && _a !== void 0 ? _a : 0, ")"] }) }), jsx("div", { className: styles.panelContent, style: { maxHeight: 200 }, children: activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.map(frame => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedFrameIds.includes(frame.id) ? styles.selected : ''}`, onClick: () => api.selectFrames([frame.id]), children: [jsx("span", { className: styles.layerName, children: frame.name }), jsxs("span", { className: styles.layerOpacity, children: [frame.width, "\u00D7", frame.height] })] }, frame.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Animations" }) }), jsxs("div", { className: styles.panelContent, children: [api.editorState.selectedFrameIds.length > 0 && (jsxs("div", { className: styles.panelSection, children: [jsx("input", { type: "text", className: styles.panelInput, placeholder: "Animation name...", value: animName, onChange: e => setAnimName(e.target.value) }), jsxs("button", { className: styles.btnPrimary, onClick: createAnimationFromSelection, style: { marginTop: 8, width: '100%' }, disabled: !animName, children: ["Create from ", api.editorState.selectedFrameIds.length, " frames"] })] })), activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.animations.map(anim => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerName, children: anim.name }), jsxs("span", { className: styles.layerOpacity, children: [anim.frameIds.length, "f"] }), jsx("button", { className: styles.effectRemove, onClick: () => api.removeAnimation(anim.id), children: "\u00D7" })] }, anim.id)))] })] }));
|
|
266
|
+
};
|
|
267
|
+
/* ────────────────────────────────────────────────────────────────
|
|
268
|
+
ANIMATION STATE MACHINE
|
|
269
|
+
──────────────────────────────────────────────────────────────── */
|
|
270
|
+
const AnimationStateMachineView = ({ api }) => {
|
|
271
|
+
const [newStateName, setNewStateName] = useState('');
|
|
272
|
+
const activeSM = api.project.stateMachines.find(sm => sm.id === api.editorState.activeStateMachineId);
|
|
273
|
+
// Get all animations from all sprite sheets
|
|
274
|
+
const allAnimations = useMemo(() => {
|
|
275
|
+
const result = [];
|
|
276
|
+
for (const sheet of api.project.spriteSheets) {
|
|
277
|
+
for (const anim of sheet.animations) {
|
|
278
|
+
result.push({ ...anim, sheetName: sheet.name });
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return result;
|
|
282
|
+
}, [api.project.spriteSheets]);
|
|
283
|
+
return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "State Machines" }), jsx("button", { className: styles.menuBtn, onClick: () => api.createStateMachine('New State Machine'), children: "+ New" })] }), jsx("div", { className: styles.panelContent, style: { maxHeight: 150 }, children: api.project.stateMachines.map(sm => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeStateMachineId === sm.id ? styles.selected : ''}`, onClick: () => api.selectStateMachine(sm.id), children: [jsx("span", { className: styles.layerName, children: sm.name }), jsxs("span", { className: styles.layerOpacity, children: [sm.states.length, " states"] })] }, sm.id))) }), activeSM && (jsxs(Fragment, { children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "States" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx("input", { type: "text", className: styles.panelInput, placeholder: "State name...", value: newStateName, onChange: e => setNewStateName(e.target.value) }), allAnimations.length > 0 && newStateName && (jsxs("select", { className: styles.panelInput, style: { marginTop: 4 }, onChange: e => {
|
|
284
|
+
if (e.target.value) {
|
|
285
|
+
api.addState(newStateName, e.target.value);
|
|
286
|
+
setNewStateName('');
|
|
287
|
+
}
|
|
288
|
+
}, children: [jsx("option", { value: "", children: "Select animation..." }), allAnimations.map(anim => (jsxs("option", { value: anim.id, children: [anim.sheetName, ": ", anim.name] }, anim.id)))] }))] }), activeSM.states.map(state => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedStateId === state.id ? styles.selected : ''} ${activeSM.entryStateId === state.id ? styles.entry : ''}`, onClick: () => api.selectState(state.id), children: [jsxs("span", { className: styles.layerName, children: [activeSM.entryStateId === state.id && '▶ ', state.name] }), jsx("button", { className: styles.effectRemove, onClick: e => {
|
|
289
|
+
e.stopPropagation();
|
|
290
|
+
api.removeState(state.id);
|
|
291
|
+
}, children: "\u00D7" })] }, state.id)))] })] }))] }), jsx("div", { className: styles.stateGraph, children: activeSM ? (jsxs("svg", { width: "100%", height: "100%", children: [jsx("defs", { children: jsx("marker", { id: "arrowhead", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto", children: jsx("polygon", { points: "0 0, 10 3.5, 0 7", fill: "#4a5a7e" }) }) }), activeSM.transitions.map(trans => {
|
|
292
|
+
const from = activeSM.states.find(s => s.id === trans.fromStateId);
|
|
293
|
+
const to = activeSM.states.find(s => s.id === trans.toStateId);
|
|
294
|
+
if (!from || !to)
|
|
295
|
+
return null;
|
|
296
|
+
return (jsx("line", { x1: from.position.x + 60, y1: from.position.y + 20, x2: to.position.x + 60, y2: to.position.y + 20, className: styles.transition, onClick: () => api.removeTransition(trans.id) }, trans.id));
|
|
297
|
+
}), activeSM.states.map(state => {
|
|
298
|
+
var _a, _b;
|
|
299
|
+
return (jsx("foreignObject", { x: state.position.x, y: state.position.y, width: 120, height: 50, children: jsxs("div", { className: `${styles.stateNode} ${api.editorState.selectedStateId === state.id ? styles.selected : ''} ${activeSM.entryStateId === state.id ? styles.entry : ''}`, onClick: () => api.selectState(state.id), children: [jsx("div", { className: styles.stateNodeName, children: state.name }), jsx("div", { className: styles.stateNodeAnim, children: (_b = (_a = allAnimations.find(a => a.id === state.animationId)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'No animation' })] }) }, state.id));
|
|
300
|
+
})] })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "Create a state machine to design animation flows" }) })) }), jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Parameters" }), jsx("button", { className: styles.menuBtn, onClick: () => api.addParameter('new_param', 'trigger'), disabled: !activeSM, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeSM === null || activeSM === void 0 ? void 0 : activeSM.parameters.map(param => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerOpacity, children: param.type }), jsx("span", { className: styles.layerName, children: param.name }), jsx("button", { className: styles.effectRemove, onClick: () => api.removeParameter(param.id), children: "\u00D7" })] }, param.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Transitions" }) }), jsxs("div", { className: styles.panelContent, children: [activeSM === null || activeSM === void 0 ? void 0 : activeSM.transitions.map(trans => {
|
|
301
|
+
var _a, _b;
|
|
302
|
+
const from = activeSM.states.find(s => s.id === trans.fromStateId);
|
|
303
|
+
const to = activeSM.states.find(s => s.id === trans.toStateId);
|
|
304
|
+
return (jsxs("div", { className: styles.layerItem, children: [jsxs("span", { className: styles.layerName, children: [(_a = from === null || from === void 0 ? void 0 : from.name) !== null && _a !== void 0 ? _a : '?', " \u2192 ", (_b = to === null || to === void 0 ? void 0 : to.name) !== null && _b !== void 0 ? _b : '?'] }), jsx("button", { className: styles.effectRemove, onClick: () => api.removeTransition(trans.id), children: "\u00D7" })] }, trans.id));
|
|
305
|
+
}), api.editorState.selectedStateId && (jsxs("div", { className: styles.panelSection, style: { marginTop: 12 }, children: [jsx("label", { className: styles.panelLabel, children: "Add transition to:" }), jsxs("select", { className: styles.panelInput, onChange: e => {
|
|
306
|
+
if (e.target.value && api.editorState.selectedStateId) {
|
|
307
|
+
api.addTransition(api.editorState.selectedStateId, e.target.value);
|
|
308
|
+
}
|
|
309
|
+
}, children: [jsx("option", { value: "", children: "Select target state..." }), activeSM === null || activeSM === void 0 ? void 0 : activeSM.states.filter(s => s.id !== api.editorState.selectedStateId).map(s => (jsx("option", { value: s.id, children: s.name }, s.id)))] })] }))] })] })] }));
|
|
310
|
+
};
|
|
311
|
+
/* ────────────────────────────────────────────────────────────────
|
|
312
|
+
EFFECTS PANEL
|
|
313
|
+
──────────────────────────────────────────────────────────────── */
|
|
314
|
+
const EffectsView = ({ api }) => {
|
|
315
|
+
const [currentEffects, setCurrentEffects] = useState([]);
|
|
316
|
+
const [presetName, setPresetName] = useState('');
|
|
317
|
+
const effectTypes = [
|
|
318
|
+
{ type: 'brightness', label: 'Brightness' },
|
|
319
|
+
{ type: 'contrast', label: 'Contrast' },
|
|
320
|
+
{ type: 'saturation', label: 'Saturation' },
|
|
321
|
+
{ type: 'hue-shift', label: 'Hue Shift' },
|
|
322
|
+
{ type: 'invert', label: 'Invert' },
|
|
323
|
+
{ type: 'pixelate', label: 'Pixelate' },
|
|
324
|
+
{ type: 'outline', label: 'Outline' },
|
|
325
|
+
{ type: 'tint', label: 'Tint' },
|
|
326
|
+
{ type: 'blur', label: 'Blur' },
|
|
327
|
+
{ type: 'glow', label: 'Glow' },
|
|
328
|
+
{ type: 'shadow', label: 'Shadow' },
|
|
329
|
+
{ type: 'palette-swap', label: 'Palette Swap' },
|
|
330
|
+
];
|
|
331
|
+
return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Add Effect" }) }), jsx("div", { className: styles.panelContent, children: effectTypes.map(({ type, label }) => (jsx("button", { className: styles.layerItem, onClick: () => api.addEffect(type), style: { cursor: 'pointer', border: 'none', textAlign: 'left' }, children: jsx("span", { className: styles.layerName, children: label }) }, type))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Presets" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx("input", { type: "text", className: styles.panelInput, placeholder: "Preset name...", value: presetName, onChange: e => setPresetName(e.target.value) }), jsx("button", { className: styles.btnSecondary, style: { marginTop: 4, width: '100%' }, onClick: () => {
|
|
332
|
+
if (presetName) {
|
|
333
|
+
api.saveEffectPreset(presetName);
|
|
334
|
+
setPresetName('');
|
|
335
|
+
}
|
|
336
|
+
}, disabled: !presetName, children: "Save Current Effects" })] }), api.project.effectPresets.map(preset => (jsxs("div", { className: styles.layerItem, onClick: () => api.loadEffectPreset(preset.id), style: { cursor: 'pointer' }, children: [jsx("span", { className: styles.layerName, children: preset.name }), jsxs("span", { className: styles.layerOpacity, children: [preset.effects.length, " effects"] })] }, preset.id)))] })] }), jsx("div", { className: styles.viewport, children: jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "Select a sprite or tile to preview effects" }) }) }), jsxs("div", { className: styles.rightPanel, children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Active Effects" }) }), jsx("div", { className: styles.panelContent, children: jsx("div", { className: styles.effectsList, children: jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "Add effects from the left panel" }) }) }) })] })] }));
|
|
337
|
+
};
|
|
338
|
+
/* ────────────────────────────────────────────────────────────────
|
|
339
|
+
STATUS BAR
|
|
340
|
+
──────────────────────────────────────────────────────────────── */
|
|
341
|
+
const StatusBar = ({ api }) => {
|
|
342
|
+
const activeMap = api.project.tileMaps.find(m => m.id === api.editorState.activeTileMapId);
|
|
343
|
+
const activeSheet = api.project.spriteSheets.find(s => s.id === api.editorState.activeSpriteSheetId);
|
|
344
|
+
return (jsxs("div", { className: styles.statusBar, children: [jsxs("span", { className: styles.statusItem, children: ["Mode: ", api.editorState.mode] }), api.editorState.mode === 'tilemap' && activeMap && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Map: ", activeMap.name, " (", activeMap.width, "\u00D7", activeMap.height, ")"] }), jsxs("span", { className: styles.statusItem, children: ["Tile: ", activeMap.tileWidth, "\u00D7", activeMap.tileHeight, "px"] })] })), api.editorState.mode === 'spritesheet' && activeSheet && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Sheet: ", activeSheet.name] }), jsxs("span", { className: styles.statusItem, children: ["Selected: ", api.editorState.selectedFrameIds.length, " frames"] })] })), jsxs("div", { className: styles.zoomControl, children: [jsx("button", { className: styles.zoomBtn, onClick: () => api.setZoom(api.editorState.zoom - 0.25), children: "\u2212" }), jsxs("span", { children: [Math.round(api.editorState.zoom * 100), "%"] }), jsx("button", { className: styles.zoomBtn, onClick: () => api.setZoom(api.editorState.zoom + 0.25), children: "+" }), jsx("button", { className: styles.zoomBtn, onClick: () => api.setZoom(1), children: "\u2299" })] })] }));
|
|
345
|
+
};
|
|
346
|
+
/* ────────────────────────────────────────────────────────────────
|
|
347
|
+
MAIN COMPONENT
|
|
348
|
+
──────────────────────────────────────────────────────────────── */
|
|
349
|
+
const GameAsset2dEditor = ({ className, onSave, onExport, }) => {
|
|
350
|
+
const api = useGameAssetEditor({ onSave, onExport });
|
|
351
|
+
const renderModeContent = () => {
|
|
352
|
+
switch (api.editorState.mode) {
|
|
353
|
+
case 'tilemap':
|
|
354
|
+
return (jsxs(Fragment, { children: [jsx(TileMapToolbar, { api: api }), jsxs("div", { className: styles.mainArea, children: [jsx(TilePalette, { api: api }), jsx("div", { className: styles.centerArea, children: jsx(TileMapCanvas, { api: api }) }), jsx(LayersPanel, { api: api })] })] }));
|
|
355
|
+
case 'spritesheet':
|
|
356
|
+
return (jsxs(Fragment, { children: [jsx(SpriteSheetToolbar, { api: api }), jsxs("div", { className: styles.mainArea, children: [jsx(SpriteSheetsList, { api: api }), jsx("div", { className: styles.centerArea, children: jsx(SpriteSheetCanvas, { api: api }) }), jsx(FramesPanel, { api: api })] })] }));
|
|
357
|
+
case 'animation':
|
|
358
|
+
return (jsx("div", { className: styles.mainArea, children: jsx(AnimationStateMachineView, { api: api }) }));
|
|
359
|
+
case 'effects':
|
|
360
|
+
return (jsx("div", { className: styles.mainArea, children: jsx(EffectsView, { api: api }) }));
|
|
361
|
+
default:
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
return (jsxs("div", { className: `${styles.root} ${className || ''}`, children: [jsx(MenuBar, { api: api }), jsx(ModeTabs, { api: api }), renderModeContent(), jsx(StatusBar, { api: api })] }));
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
export { GameAsset2dEditor };
|
|
369
|
+
//# sourceMappingURL=GameAsset2dEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GameAsset2dEditor.js","sources":["../../../src/game/GameAsset2dEditor.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var styles = {"root":"GameAsset2dEditor-module_root__WVJBM","menuBar":"GameAsset2dEditor-module_menuBar__WaEaU","menuGroup":"GameAsset2dEditor-module_menuGroup__EOreB","menuBtn":"GameAsset2dEditor-module_menuBtn__JYWXn","spacer":"GameAsset2dEditor-module_spacer__fPVeq","modeTabs":"GameAsset2dEditor-module_modeTabs__iKh7C","modeTab":"GameAsset2dEditor-module_modeTab__C12zt","active":"GameAsset2dEditor-module_active__DUroI","mainArea":"GameAsset2dEditor-module_mainArea__jwDUa","leftPanel":"GameAsset2dEditor-module_leftPanel__xxAg5","centerArea":"GameAsset2dEditor-module_centerArea__xr-Hn","rightPanel":"GameAsset2dEditor-module_rightPanel__YoNuc","toolbar":"GameAsset2dEditor-module_toolbar__hEC9S","toolGroup":"GameAsset2dEditor-module_toolGroup__Zbn47","toolBtn":"GameAsset2dEditor-module_toolBtn__5U7Rw","viewport":"GameAsset2dEditor-module_viewport__vEKEv","viewportCanvas":"GameAsset2dEditor-module_viewportCanvas__FJ5qA","panelHeader":"GameAsset2dEditor-module_panelHeader__xm2As","panelContent":"GameAsset2dEditor-module_panelContent__dvOGq","panelSection":"GameAsset2dEditor-module_panelSection__RQQDr","panelLabel":"GameAsset2dEditor-module_panelLabel__Ks-Wa","panelInput":"GameAsset2dEditor-module_panelInput__cxNiG","tilePalette":"GameAsset2dEditor-module_tilePalette__OpzmV","tileItem":"GameAsset2dEditor-module_tileItem__uWNS9","selected":"GameAsset2dEditor-module_selected__216IN","layersList":"GameAsset2dEditor-module_layersList__anFaG","layerItem":"GameAsset2dEditor-module_layerItem__XSGlu","layerVisibility":"GameAsset2dEditor-module_layerVisibility__RpHjV","hidden":"GameAsset2dEditor-module_hidden__mukOG","layerName":"GameAsset2dEditor-module_layerName__WBxq5","layerOpacity":"GameAsset2dEditor-module_layerOpacity__FpzL-","stateGraph":"GameAsset2dEditor-module_stateGraph__qAWlU","stateNode":"GameAsset2dEditor-module_stateNode__W9Z-g","entry":"GameAsset2dEditor-module_entry__cmA9n","stateNodeName":"GameAsset2dEditor-module_stateNodeName__TK5vs","stateNodeAnim":"GameAsset2dEditor-module_stateNodeAnim__VGwnV","transition":"GameAsset2dEditor-module_transition__FBbno","effectsList":"GameAsset2dEditor-module_effectsList__vHq4I","effectRemove":"GameAsset2dEditor-module_effectRemove__TSSdI","statusBar":"GameAsset2dEditor-module_statusBar__eOrNe","statusItem":"GameAsset2dEditor-module_statusItem__kKLHF","zoomControl":"GameAsset2dEditor-module_zoomControl__4YD9G","zoomBtn":"GameAsset2dEditor-module_zoomBtn__hxYik","btnPrimary":"GameAsset2dEditor-module_btnPrimary__Gzc25","btnSecondary":"GameAsset2dEditor-module_btnSecondary__G5nK5","emptyState":"GameAsset2dEditor-module_emptyState__3wryk","emptyStateText":"GameAsset2dEditor-module_emptyStateText__Q5V1a"};
|
|
2
|
+
|
|
3
|
+
export { styles as default };
|
|
4
|
+
//# sourceMappingURL=GameAsset2dEditor.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GameAsset2dEditor.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gameAssetTypes.ts — Types for GameAsset2dEditor
|
|
3
|
+
*
|
|
4
|
+
* Supports tile maps, sprite sheets, animations, and game asset processing.
|
|
5
|
+
*/
|
|
6
|
+
/* ────────────────────────────────────────────────────────────────
|
|
7
|
+
CONSTANTS
|
|
8
|
+
──────────────────────────────────────────────────────────────── */
|
|
9
|
+
const DEFAULT_PROJECT_SETTINGS = {
|
|
10
|
+
defaultTileWidth: 16,
|
|
11
|
+
defaultTileHeight: 16,
|
|
12
|
+
pixelsPerUnit: 16,
|
|
13
|
+
exportFormat: 'json',
|
|
14
|
+
compressImages: true,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { DEFAULT_PROJECT_SETTINGS };
|
|
18
|
+
//# sourceMappingURL=gameAssetTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gameAssetTypes.js","sources":["../../../src/game/gameAssetTypes.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;AAIG;AA0RH;;AAEmE;AA6B5D,MAAM,wBAAwB,GAAoB;AACvD,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,cAAc,EAAE,IAAI;;;;;"}
|