From 24846eae10c7340a4e7f103b15494ea8338700a9 Mon Sep 17 00:00:00 2001 From: David Capello Date: Mon, 10 Apr 2023 17:44:22 -0300 Subject: [PATCH] Add z-index property to cels (fix aseprite/Attachment-System#88) * Now a Cel has a z-index property to change the order of layers per frame * A new doc::RenderPlan class can calculate the order of cels to be rendered * z-index is saved as a int16_t in the .aseprite files * This new field can be set/get from Lua with Cel.zIndex --- data/extensions/aseprite-theme/dark/sheet.png | Bin 16859 -> 16908 bytes data/extensions/aseprite-theme/dark/theme.xml | 6 + data/extensions/aseprite-theme/sheet.png | Bin 16126 -> 16194 bytes data/extensions/aseprite-theme/theme.xml | 6 + data/strings/en.ini | 1 + data/widgets/cel_properties.xml | 14 +- docs/ase-file-specs.md | 6 +- src/app/CMakeLists.txt | 1 + src/app/cmd/set_cel_zindex.cpp | 52 +++ src/app/cmd/set_cel_zindex.h | 39 ++ src/app/color_picker.cpp | 16 +- src/app/commands/cmd_cel_properties.cpp | 51 ++- src/app/doc_exporter.cpp | 17 +- src/app/doc_observer.h | 1 + src/app/file/ase_format.cpp | 3 +- src/app/render/shader_renderer.cpp | 26 +- src/app/render/shader_renderer.h | 14 +- src/app/script/cel_class.cpp | 18 + src/app/ui/timeline/timeline.cpp | 5 + src/app/util/cel_ops.cpp | 5 +- src/dio/aseprite_decoder.cpp | 7 +- src/doc/CMakeLists.txt | 1 + src/doc/cel.cpp | 12 +- src/doc/cel.h | 5 +- src/doc/cel_io.cpp | 9 +- src/doc/render_plan.cpp | 92 +++++ src/doc/render_plan.h | 42 ++ src/doc/render_plan_tests.cpp | 98 +++++ src/doc/sprite.cpp | 26 +- src/doc/sprite.h | 9 +- src/render/CMakeLists.txt | 2 +- src/render/render.cpp | 358 +++++++++--------- src/render/render.h | 5 +- src/render/render_tests.cpp | 2 +- tests/scripts/cel.lua | 9 + 35 files changed, 713 insertions(+), 245 deletions(-) create mode 100644 src/app/cmd/set_cel_zindex.cpp create mode 100644 src/app/cmd/set_cel_zindex.h create mode 100644 src/doc/render_plan.cpp create mode 100644 src/doc/render_plan.h create mode 100644 src/doc/render_plan_tests.cpp diff --git a/data/extensions/aseprite-theme/dark/sheet.png b/data/extensions/aseprite-theme/dark/sheet.png index f92d9ebf1e361ce51d13eee333c9dedaf32e852f..26907dd686066aea8ff95050b084bedba92be99e 100644 GIT binary patch literal 16908 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 literal 16859 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%0AhO6M>ddD6ur*APogFh!kO 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 + @@ -446,6 +447,8 @@ + + + +