Skip to content

Advanced Export Options and UI Configuration Caching#19

Open
AleFeng wants to merge 17 commits intoEsotericSoftware:masterfrom
AleFeng:master
Open

Advanced Export Options and UI Configuration Caching#19
AleFeng wants to merge 17 commits intoEsotericSoftware:masterfrom
AleFeng:master

Conversation

@AleFeng
Copy link

@AleFeng AleFeng commented Mar 18, 2026

  1. Core Logic & Performance
    Recursive Visibility: Implemented effective group visibility propagation during layer traversal.
    Optimization: Combined layer collection and visibility checks into a single pass for better efficiency.

  2. UI & User Experience
    New Options Panel: Added toggles for "Ignore Group Visibility" and "Clear Old Images."
    Improved Path Selection: Simplified the output directory workflow and added a "Quick Open Folder" feature post-export.
    Layout Refinement: Polished UI spacing and element alignment for better readability.

  3. Coordinate System
    Custom Origin: Added configurable X/Y origin (0.0 to 1.0) with quick presets (Center, Top-Left, etc.).
    Integer Toggle: Added an option to round coordinate values to integers.
    Input Validation: Implemented real-time clamping for coordinate bounds.

  4. Configuration Management
    Persistent Cache: Settings are now automatically saved and restored on the next launch.
    Reset Feature: Added a "Reset Config" button to restore factory defaults.
    Error Reporting: Added a summary dialog to report any file-write failures.

AleFeng added 9 commits March 16, 2026 22:37
- Propagated group visibility downward during recursive traversal.
- Combined layer collection and effective-visibility recording into a single recursive pass to improve efficiency.
- Toggle for Ignore Group Visibility.
- export path setting for the output JSON file.
- Toggle for Clear Old Images before export.
- Simplified output path selection workflow.
- Improved overall UI layout and spacing.
- Coordinate origin is now configurable (X/Y), with range support for [0,1].
- Added a toggle to keep coordinate values as integers (drop decimal part).
- Added quick access to open the exported file location after export completion.
- Added origin coordinate preset buttons for quick setup (Center, Bottom-Center, Bottom-Left, Top-Left).
- Added real-time clamping for origin coordinate inputs, limiting values to the [0,1] range.
- Added export completion dialog warnings that list any file paths that failed to write during export.
- Added configuration caching for all export options, so settings are restored automatically on next launch.
- Added a Reset Config button to restore default values and clear cached settings.
- Update version to v1.2.
- Add configuration UI screenshots and usage guide.
- Add Chinese (ZH) README.
- Add Spine import configuration guide.
- Restructure document hierarchy for better readability.
@davidetan davidetan self-assigned this Mar 18, 2026
- Added a Known Issues regarding potential Draw Order issues in Spine when importing new layers from Aseprite.
@davidetan
Copy link
Collaborator

I am not an Aseprite expert, but I have a couple of doubts.

  1. Expressing the origin through a [0–1] range might be too imprecise. The origin is quite important for Spine, and I expect it to be especially important for pixel art. Wouldn't it be better to give the user the ability to express it in pixels?
  2. Why is it important to have the option "Use layer visibility only"? In our Photoshop script, we don't have such an option, and users have never asked for it. We do have an "Ignore hidden layers" option, though, which might be more useful.

@AleFeng
Copy link
Author

AleFeng commented Mar 18, 2026

I am not an Aseprite expert, but I have a couple of doubts.

  1. Expressing the origin through a [0–1] range might be too imprecise. The origin is quite important for Spine, and I expect it to be especially important for pixel art. Wouldn't it be better to give the user the ability to express it in pixels?
  2. Why is it important to have the option "Use layer visibility only"? In our Photoshop script, we don't have such an option, and users have never asked for it. We do have an "Ignore hidden layers" option, though, which might be more useful.

Thanks for your feedback! I’m actually using Aseprite to create assets and Spine for 2D animations for my indie game. I came across this 'aseprite-to-spine' plugin and decided to iterate on it based on common game development workflows.

  1. Regarding the [0, 1] Origin Range:
    In game development, pivot points or anchors are frequently set to specific positions like Bottom-Center (for character feet), Center (for objects), or Top-Left/Bottom-Left (for UI elements). Standardizing these to a [0, 1] range allows for a consistent and reusable alignment logic across all assets, regardless of their individual pixel dimensions (e.g., the center is always 0.5, whereas the pixel coordinate changes based on canvas size).
    However, you're right—other artists might prefer precision based on actual pixel dimensions. I will add a 'Pixel Mode' configuration for the origin to support both workflows.

  2. Regarding 'Use layer visibility only' & 'Ignore hidden layers':
    The 'Use layer visibility only' option was a remnant from when I was fixing the previously broken Group visibility logic. After resolving that, I kept it as a toggle, but I agree it's likely redundant (and I’m happy to remove it! haha).
    The 'Ignore hidden layers' feature sounds much more practical, and I will definitely implement that as suggested.

Thanks again for the valuable insights!

@davidetan
Copy link
Collaborator

Thanks for the quick reply :)

  1. Regarding the [0, 1] origin range:
    In the Photoshop script and the Import PSD feature, we have the concept of an origin that is set using visual guides or a tag. So users are used to placing the origin visually themselves, rather than specifying a relative point without being 100% sure where the origin will end up. See the doc here. I'm not saying you have to implement this, I just want to let you know the workflow Photoshop users generally follow.
    That said, I can see that for games using Aseprite assets, it might make more sense to have fixed-size images with a specific relative origin, and then build the asset around that origin.

  2. Regarding "Use layer visibility only" and "Ignore hidden layers":
    I don't think it's that important to add "Ignore hidden layers", but if "Use layer visibility only" is not that useful for you either, I would just remove it :)

AleFeng added 4 commits March 19, 2026 00:49
- Added Normalized [0,1] and Pixel modes for origin coordinates.
- Added Sliders for Origin (X, Y) to allow more intuitive control.
- Added "Ignore Hidden Layers" toggle for more flexible exports.
- Removed redundant "Use layer visibility only" option.
- Added Image Scale option to adjust the resolution of exported images.
- Added Image Padding setting to define pixel padding around image borders.
- Added support for [origin] tag: The plugin now automatically uses the center of any layer named [origin] as the export origin.
- Added Spine Logo to the dialog header for better branding/recognition.
- Refined UI Layout: Optimized spacing and alignment of all control panels for a cleaner look.
- Update the document content to v1.3
- Code organization and optimization.
@AleFeng
Copy link
Author

AleFeng commented Mar 19, 2026

Thanks for the quick reply :)

  1. Regarding the [0, 1] origin range:
    In the Photoshop script and the Import PSD feature, we have the concept of an origin that is set using visual guides or a tag. So users are used to placing the origin visually themselves, rather than specifying a relative point without being 100% sure where the origin will end up. See the doc here. I'm not saying you have to implement this, I just want to let you know the workflow Photoshop users generally follow.
    That said, I can see that for games using Aseprite assets, it might make more sense to have fixed-size images with a specific relative origin, and then build the asset around that origin.
  2. Regarding "Use layer visibility only" and "Ignore hidden layers":
    I don't think it's that important to add "Ignore hidden layers", but if "Use layer visibility only" is not that useful for you either, I would just remove it :)

Thanks for the detailed explanation! I've updated the PR based on our discussion and added several features inspired by the Photoshop version to align the workflows.

  1. Origin & Positioning Improvements:
    Pixel Mode: A pixel mode has been added for origin setting, thus meeting the precision requirements for coordinates in Spine.

[origin] Layer Support: In Aseprite, there is no such reference line function as in Photoshop that can be utilized. I’ve implemented support for a [origin] tagged layer. The script now automatically detects this layer and uses its position as the export origin, offering a visual way to set the origin point directly in the canvas.

  1. Additional Enhancements:
    Image Settings: Added Scale and Padding configurations to give users more control over the exported texture dimensions.

UI/UX : Added the control method of Slider to the input box and reorganized the layout and typography.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants