mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-13 06:45:17 +00:00
Update to Godot 4.4
Everything seems to be working on my end, but further testing is required. I also added static typing to some dictionaries.
This commit is contained in:
parent
f03338479f
commit
131f91e7af
392 changed files with 575 additions and 302 deletions
10
.github/workflows/dev-desktop-builds.yml
vendored
10
.github/workflows/dev-desktop-builds.yml
vendored
|
@ -15,7 +15,7 @@ concurrency:
|
|||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.3
|
||||
GODOT_VERSION: 4.4
|
||||
EXPORT_NAME: Pixelorama
|
||||
|
||||
jobs:
|
||||
|
@ -23,14 +23,14 @@ jobs:
|
|||
name: Windows Export 🗔
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Setup WINE and rcedit 🍷
|
||||
run: |
|
||||
chown root:root -R ~
|
||||
godot --headless --quit
|
||||
echo 'export/windows/wine = "/usr/bin/wine64-stable"' >> ~/.config/godot/editor_settings-4.3.tres
|
||||
echo 'export/windows/rcedit = "/opt/rcedit.exe"' >> ~/.config/godot/editor_settings-4.3.tres
|
||||
echo 'export/windows/wine = "/usr/bin/wine64-stable"' >> ~/.config/godot/editor_settings-4.4.tres
|
||||
echo 'export/windows/rcedit = "/opt/rcedit.exe"' >> ~/.config/godot/editor_settings-4.4.tres
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -59,7 +59,7 @@ jobs:
|
|||
name: Linux Export 🐧
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
|
|
4
.github/workflows/dev-web.yml
vendored
4
.github/workflows/dev-web.yml
vendored
|
@ -9,7 +9,7 @@ concurrency:
|
|||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.3
|
||||
GODOT_VERSION: 4.4
|
||||
EXPORT_NAME: Pixelorama
|
||||
|
||||
jobs:
|
||||
|
@ -17,7 +17,7 @@ jobs:
|
|||
name: Web Export 🌐
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
|
|
12
.github/workflows/release.yml
vendored
12
.github/workflows/release.yml
vendored
|
@ -5,7 +5,7 @@ on:
|
|||
branches: [ release ]
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 4.3
|
||||
GODOT_VERSION: 4.4
|
||||
EXPORT_NAME: Pixelorama
|
||||
TAG: v1.0.5
|
||||
BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }}
|
||||
|
@ -15,14 +15,14 @@ jobs:
|
|||
name: Windows Export 🗔
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Setup WINE and rcedit 🍷
|
||||
run: |
|
||||
chown root:root -R ~
|
||||
godot --headless --quit
|
||||
echo 'export/windows/wine = "/usr/bin/wine64-stable"' >> ~/.config/godot/editor_settings-4.3.tres
|
||||
echo 'export/windows/rcedit = "/opt/rcedit.exe"' >> ~/.config/godot/editor_settings-4.3.tres
|
||||
echo 'export/windows/wine = "/usr/bin/wine64-stable"' >> ~/.config/godot/editor_settings-4.4.tres
|
||||
echo 'export/windows/rcedit = "/opt/rcedit.exe"' >> ~/.config/godot/editor_settings-4.4.tres
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -74,7 +74,7 @@ jobs:
|
|||
name: Linux Export 🐧
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
|
@ -193,7 +193,7 @@ jobs:
|
|||
name: Web Export 🌐
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: docker://barichello/godot-ci:4.3
|
||||
image: docker://barichello/godot-ci:4.4
|
||||
steps:
|
||||
- name: Checkout 🛎️
|
||||
uses: actions/checkout@v4
|
||||
|
|
|
@ -54,7 +54,7 @@ You can find online Documentation for Pixelorama here: https://orama-interactive
|
|||
It's still work in progress so there are some pages missing. If you want to contribute, you can do so in [Pixelorama-Docs' GitHub Repository](https://github.com/Orama-Interactive/Pixelorama-Docs).
|
||||
|
||||
## Cloning Instructions
|
||||
Pixelorama uses Godot 4.3, so you will need to have it in order to run the project. Older versions will not work.
|
||||
Pixelorama uses Godot 4.4, so you will need to have it in order to run the project. Older versions will not work.
|
||||
As of right now, most of the code is written using GDScript, so the mono version of Godot is not required, but Pixelorama should also work with it.
|
||||
|
||||
## Features:
|
||||
|
|
1
addons/SmartSlicer/Classes/RegionUnpacker.gd.uid
Normal file
1
addons/SmartSlicer/Classes/RegionUnpacker.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b4bomkpkff35q
|
|
@ -1,8 +1,8 @@
|
|||
[gd_resource type="Resource" load_steps=2 format=2]
|
||||
[gd_resource type="Resource" script_class="AImgIOCRC32" load_steps=2 format=3 uid="uid://byrkfj6hsea5l"]
|
||||
|
||||
[ext_resource path="res://addons/aimg_io/crc32.gd" type="Script" id=1]
|
||||
[ext_resource type="Script" uid="uid://bdrwi3rt1gvr6" path="res://addons/aimg_io/crc32.gd" id="1"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource( 1 )
|
||||
script = ExtResource("1")
|
||||
reversed_polynomial = 3988292384
|
||||
mask = 4294967295
|
||||
|
|
1
addons/aimg_io/apng_exporter.gd.uid
Normal file
1
addons/aimg_io/apng_exporter.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://go3lteln7x3p
|
1
addons/aimg_io/apng_import_plugin.gd.uid
Normal file
1
addons/aimg_io/apng_import_plugin.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b3yov4wi6hi5a
|
1
addons/aimg_io/apng_importer.gd.uid
Normal file
1
addons/aimg_io/apng_importer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bon05d4xjsyqj
|
1
addons/aimg_io/apng_stream.gd.uid
Normal file
1
addons/aimg_io/apng_stream.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dtwi848n6h7ff
|
1
addons/aimg_io/base_exporter.gd.uid
Normal file
1
addons/aimg_io/base_exporter.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bdwn6srcjn2rk
|
1
addons/aimg_io/crc32.gd.uid
Normal file
1
addons/aimg_io/crc32.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bdrwi3rt1gvr6
|
1
addons/aimg_io/editor_plugin.gd.uid
Normal file
1
addons/aimg_io/editor_plugin.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://boneu1kl2wxj0
|
1
addons/aimg_io/frame.gd.uid
Normal file
1
addons/aimg_io/frame.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cdkek8njpjk20
|
1
addons/dockable_container/dockable_container.gd.uid
Normal file
1
addons/dockable_container/dockable_container.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bfi1mm158ge5l
|
1
addons/dockable_container/dockable_panel.gd.uid
Normal file
1
addons/dockable_container/dockable_panel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://xhj756ypkcs6
|
|
@ -0,0 +1 @@
|
|||
uid://dyuyvpm04q46k
|
1
addons/dockable_container/drag_n_drop_panel.gd.uid
Normal file
1
addons/dockable_container/drag_n_drop_panel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bgys5wmhq4olg
|
1
addons/dockable_container/floating_window.gd.uid
Normal file
1
addons/dockable_container/floating_window.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c6w6577okhdyc
|
|
@ -0,0 +1 @@
|
|||
uid://cobqhyqmpx0gj
|
|
@ -0,0 +1 @@
|
|||
uid://b5ryee5l6apq6
|
1
addons/dockable_container/layout.gd.uid
Normal file
1
addons/dockable_container/layout.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://icucbtatip66
|
1
addons/dockable_container/layout_node.gd.uid
Normal file
1
addons/dockable_container/layout_node.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cjcli6rgqaqjo
|
1
addons/dockable_container/layout_panel.gd.uid
Normal file
1
addons/dockable_container/layout_panel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://da67x3ua6ietw
|
1
addons/dockable_container/layout_split.gd.uid
Normal file
1
addons/dockable_container/layout_split.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bvvbi3x82xnut
|
1
addons/dockable_container/plugin.gd.uid
Normal file
1
addons/dockable_container/plugin.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dcbkpdpuf7lnj
|
1
addons/dockable_container/samples/TestScene.gd.uid
Normal file
1
addons/dockable_container/samples/TestScene.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bfkod42iqrybd
|
|
@ -1,10 +1,10 @@
|
|||
[gd_scene load_steps=16 format=3 uid="uid://drlvhuchtk6if"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/dockable_container.gd" id="1"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout.gd" id="2"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/samples/TestScene.gd" id="4"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_split.gd" id="4_yhgfb"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_panel.gd" id="5"]
|
||||
[ext_resource type="Script" uid="uid://bfi1mm158ge5l" path="res://addons/dockable_container/dockable_container.gd" id="1"]
|
||||
[ext_resource type="Script" uid="uid://icucbtatip66" path="res://addons/dockable_container/layout.gd" id="2"]
|
||||
[ext_resource type="Script" uid="uid://bfkod42iqrybd" path="res://addons/dockable_container/samples/TestScene.gd" id="4"]
|
||||
[ext_resource type="Script" uid="uid://bvvbi3x82xnut" path="res://addons/dockable_container/layout_split.gd" id="4_yhgfb"]
|
||||
[ext_resource type="Script" uid="uid://da67x3ua6ietw" path="res://addons/dockable_container/layout_panel.gd" id="5"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_8aoc2"]
|
||||
resource_name = "Tabs"
|
||||
|
@ -33,6 +33,7 @@ root = SubResource("Resource_hl8y1")
|
|||
hidden_tabs = {}
|
||||
windows = {}
|
||||
save_on_change = false
|
||||
layout_reset_path = ""
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ntwfj"]
|
||||
resource_name = "Tabs"
|
||||
|
@ -75,6 +76,7 @@ root = SubResource("Resource_jhibs")
|
|||
hidden_tabs = {}
|
||||
windows = {}
|
||||
save_on_change = false
|
||||
layout_reset_path = ""
|
||||
|
||||
[node name="SampleScene" type="VBoxContainer"]
|
||||
anchors_preset = 15
|
||||
|
|
1
addons/dockable_container/split_handle.gd.uid
Normal file
1
addons/dockable_container/split_handle.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cldhbvad7t45o
|
1
addons/gdgifexporter/converter.gd.uid
Normal file
1
addons/gdgifexporter/converter.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c5kkdbcb85w8
|
1
addons/gdgifexporter/exporter.gd.uid
Normal file
1
addons/gdgifexporter/exporter.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://xuk3fvlfrkq5
|
1
addons/gdgifexporter/gif-lzw/lsbbitpacker.gd.uid
Normal file
1
addons/gdgifexporter/gif-lzw/lsbbitpacker.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://mwhs35vnqa23
|
1
addons/gdgifexporter/gif-lzw/lsbbitunpacker.gd.uid
Normal file
1
addons/gdgifexporter/gif-lzw/lsbbitunpacker.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b1t8mm12gmwnn
|
1
addons/gdgifexporter/gif-lzw/lzw.gd.uid
Normal file
1
addons/gdgifexporter/gif-lzw/lzw.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://db3ceeoen4dv3
|
1
addons/gdgifexporter/little_endian.gd.uid
Normal file
1
addons/gdgifexporter/little_endian.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ub03h706po7j
|
1
addons/gdgifexporter/lookup_color.gdshader.uid
Normal file
1
addons/gdgifexporter/lookup_color.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ddcacjah2k3jp
|
1
addons/gdgifexporter/lookup_similar.gdshader.uid
Normal file
1
addons/gdgifexporter/lookup_similar.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://15gpp2i5y7ri
|
1
addons/gdgifexporter/quantization/median_cut.gd.uid
Normal file
1
addons/gdgifexporter/quantization/median_cut.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c422vywy2m2eb
|
1
addons/gdgifexporter/quantization/uniform.gd.uid
Normal file
1
addons/gdgifexporter/quantization/uniform.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://blh2i68spu1n2
|
1
addons/keychain/Keychain.gd.uid
Normal file
1
addons/keychain/Keychain.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dgiia2xg7fsud
|
1
addons/keychain/ShortcutEdit.gd.uid
Normal file
1
addons/keychain/ShortcutEdit.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dpciapd2x2va6
|
|
@ -1,6 +1,6 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://bq7ibhm0txl5p"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/keychain/ShortcutEdit.gd" id="1"]
|
||||
[ext_resource type="Script" uid="uid://dpciapd2x2va6" path="res://addons/keychain/ShortcutEdit.gd" id="1"]
|
||||
[ext_resource type="Texture2D" uid="uid://ca58ufal2ufd8" path="res://addons/keychain/assets/joy_button.svg" id="2"]
|
||||
[ext_resource type="Texture2D" uid="uid://c2s5rm4nec5yh" path="res://addons/keychain/assets/keyboard.svg" id="3"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb6q6om3d08cm" path="res://addons/keychain/assets/joy_axis.svg" id="4"]
|
||||
|
|
1
addons/keychain/ShortcutProfile.gd.uid
Normal file
1
addons/keychain/ShortcutProfile.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bmtkqh6xvat7
|
1
addons/keychain/ShortcutSelectorDialog.gd.uid
Normal file
1
addons/keychain/ShortcutSelectorDialog.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ji2g5biygmmd
|
|
@ -1,6 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://bfjcafe2kvx7n"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/keychain/ShortcutSelectorDialog.gd" id="1"]
|
||||
[ext_resource type="Script" uid="uid://ji2g5biygmmd" path="res://addons/keychain/ShortcutSelectorDialog.gd" id="1"]
|
||||
|
||||
[node name="ShortcutSelectorDialog" type="ConfirmationDialog"]
|
||||
size = Vector2i(417, 169)
|
||||
|
|
1
addons/keychain/plugin.gd.uid
Normal file
1
addons/keychain/plugin.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b5i56iyq6ia2e
|
|
@ -1,6 +1,6 @@
|
|||
[gd_resource type="Resource" script_class="ShortcutProfile" load_steps=2 format=3 uid="uid://df04uev1epmmo"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/keychain/ShortcutProfile.gd" id="1"]
|
||||
[ext_resource type="Script" uid="uid://bmtkqh6xvat7" path="res://addons/keychain/ShortcutProfile.gd" id="1"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1")
|
||||
|
|
|
@ -23,6 +23,7 @@ allow_system_fallback=true
|
|||
force_autohinter=false
|
||||
hinting=1
|
||||
subpixel_positioning=1
|
||||
keep_rounding_remainders=true
|
||||
oversampling=0.0
|
||||
Fallbacks=null
|
||||
fallbacks=[]
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[gd_resource type="Resource" script_class="DockableLayout" load_steps=29 format=3 uid="uid://4xtpiowddm7p"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_panel.gd" id="1_jxh43"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_split.gd" id="2_lw52w"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout.gd" id="3_4h5wj"]
|
||||
[ext_resource type="Script" uid="uid://da67x3ua6ietw" path="res://addons/dockable_container/layout_panel.gd" id="1_jxh43"]
|
||||
[ext_resource type="Script" uid="uid://bvvbi3x82xnut" path="res://addons/dockable_container/layout_split.gd" id="2_lw52w"]
|
||||
[ext_resource type="Script" uid="uid://icucbtatip66" path="res://addons/dockable_container/layout.gd" id="3_4h5wj"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_atmme"]
|
||||
resource_name = "Tabs"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
[gd_resource type="Resource" script_class="DockableLayout" load_steps=25 format=3 uid="uid://brcnmadkdaqok"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_panel.gd" id="1_t44r1"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_split.gd" id="2_rngtv"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout.gd" id="3_v86xb"]
|
||||
[ext_resource type="Script" uid="uid://da67x3ua6ietw" path="res://addons/dockable_container/layout_panel.gd" id="1_t44r1"]
|
||||
[ext_resource type="Script" uid="uid://bvvbi3x82xnut" path="res://addons/dockable_container/layout_split.gd" id="2_rngtv"]
|
||||
[ext_resource type="Script" uid="uid://icucbtatip66" path="res://addons/dockable_container/layout.gd" id="3_v86xb"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_kn4x4"]
|
||||
resource_name = "Tabs"
|
||||
|
|
|
@ -17,11 +17,11 @@ config/tags=PackedStringArray("pixelorama")
|
|||
run/main_scene="res://src/Main.tscn"
|
||||
config/use_custom_user_dir=true
|
||||
config/custom_user_dir_name="pixelorama"
|
||||
config/features=PackedStringArray("4.3")
|
||||
config/features=PackedStringArray("4.4")
|
||||
run/low_processor_mode=true
|
||||
boot_splash/bg_color=Color(0.145098, 0.145098, 0.164706, 1)
|
||||
boot_splash/image="res://assets/graphics/splash.png"
|
||||
boot_splash/use_filter=false
|
||||
boot_splash/image="res://assets/graphics/splash.png"
|
||||
config/icon="res://assets/graphics/icons/icon.png"
|
||||
config/macos_native_icon="res://assets/graphics/icons/icon.icns"
|
||||
config/windows_native_icon="res://assets/graphics/icons/icon.ico"
|
||||
|
|
1
src/Autoload/DrawingAlgos.gd.uid
Normal file
1
src/Autoload/DrawingAlgos.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://xx26ujdy2ow6
|
|
@ -26,7 +26,7 @@ var ffmpeg_formats := [
|
|||
FileFormat.MP4, FileFormat.AVI, FileFormat.OGV, FileFormat.MKV, FileFormat.WEBM
|
||||
]
|
||||
## A dictionary of [enum FileFormat] enums and their file extensions and short descriptions.
|
||||
var file_format_dictionary := {
|
||||
var file_format_dictionary: Dictionary[FileFormat, Array] = {
|
||||
FileFormat.PNG: [".png", "PNG Image"],
|
||||
FileFormat.WEBP: [".webp", "WebP Image"],
|
||||
FileFormat.JPEG: [".jpg", "JPG Image"],
|
||||
|
@ -46,9 +46,9 @@ var custom_exporter_generators := {}
|
|||
var current_tab := ExportTab.IMAGE
|
||||
## All frames and their layers processed/blended into images
|
||||
var processed_images: Array[ProcessedImage] = []
|
||||
## Dictionary of [Frame] and [Image] that contains all of the blended frames.
|
||||
## A dictionary that contains all of the blended frames.
|
||||
## Changes when [method cache_blended_frames] is called.
|
||||
var blended_frames := {}
|
||||
var blended_frames: Dictionary[Frame, Image] = {}
|
||||
var export_json := false
|
||||
var split_layers := false
|
||||
var trim_images := false
|
||||
|
|
1
src/Autoload/Export.gd.uid
Normal file
1
src/Autoload/Export.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dwe6oxkf6xwgt
|
1
src/Autoload/ExtensionsApi.gd.uid
Normal file
1
src/Autoload/ExtensionsApi.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://nutpsm57qk45
|
1
src/Autoload/Global.gd.uid
Normal file
1
src/Autoload/Global.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c61v16bx0rapv
|
1
src/Autoload/HTML5FileExchange.gd.uid
Normal file
1
src/Autoload/HTML5FileExchange.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://duc3un8okxooi
|
1
src/Autoload/Import.gd.uid
Normal file
1
src/Autoload/Import.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ca8cd1hqh7cuv
|
1
src/Autoload/OpenSave.gd.uid
Normal file
1
src/Autoload/OpenSave.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cc853sypyyen6
|
|
@ -11,10 +11,10 @@ enum NewPalettePresetType {EMPTY, FROM_CURRENT_PALETTE, FROM_CURRENT_SPRITE, FRO
|
|||
enum GetColorsFrom { CURRENT_FRAME, CURRENT_CEL, ALL_FRAMES }
|
||||
const DEFAULT_PALETTE_NAME := "Default"
|
||||
## Maximum allowed width of imported palettes.
|
||||
const MAX_IMPORT_PAL_WIDTH = 1 << 14
|
||||
const MAX_IMPORT_PAL_WIDTH := 1 << 14
|
||||
var palettes_write_path := Global.home_data_directory.path_join("Palettes")
|
||||
## All available palettes
|
||||
var palettes := {}
|
||||
var palettes: Dictionary[String, Palette] = {}
|
||||
## Currently displayed palette
|
||||
var current_palette: Palette = null
|
||||
|
||||
|
|
1
src/Autoload/Palettes.gd.uid
Normal file
1
src/Autoload/Palettes.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://doq8uff5if02l
|
1
src/Autoload/Themes.gd.uid
Normal file
1
src/Autoload/Themes.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://csvaorac4ie2q
|
|
@ -42,7 +42,7 @@ var alpha_max := 1.0
|
|||
var brush_size_min := 1
|
||||
var brush_size_max := 4
|
||||
|
||||
var tools := {
|
||||
var tools: Dictionary[String, Tool] = {
|
||||
"RectSelect":
|
||||
Tool.new(
|
||||
"RectSelect",
|
||||
|
@ -234,8 +234,8 @@ Hold %s to displace the shape's origin""",
|
|||
}
|
||||
|
||||
var _tool_button_scene := preload("res://src/UI/ToolsPanel/ToolButton.tscn")
|
||||
var _slots := {}
|
||||
var _panels := {}
|
||||
var _slots: Dictionary[MouseButton, Slot] = {}
|
||||
var _panels: Dictionary[MouseButton, Control] = {}
|
||||
var _curr_layer_type := Global.LayerTypes.PIXEL
|
||||
var _left_tools_per_layer_type := {
|
||||
Global.LayerTypes.PIXEL: "Pencil",
|
||||
|
|
1
src/Autoload/Tools.gd.uid
Normal file
1
src/Autoload/Tools.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dfb2qenp0c5d6
|
|
@ -0,0 +1 @@
|
|||
uid://71gveajmvnpc
|
1
src/Classes/AnimationTag.gd.uid
Normal file
1
src/Classes/AnimationTag.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://d234hj2s71hgh
|
1
src/Classes/Cel3DObject.gd.uid
Normal file
1
src/Classes/Cel3DObject.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bm77r8chg2r4l
|
1
src/Classes/Cels/AudioCel.gd.uid
Normal file
1
src/Classes/Cels/AudioCel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ooft6ye4pllc
|
1
src/Classes/Cels/BaseCel.gd.uid
Normal file
1
src/Classes/Cels/BaseCel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://8dwcqf3myvuo
|
1
src/Classes/Cels/Cel3D.gd.uid
Normal file
1
src/Classes/Cels/Cel3D.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bwwqtiosx8ume
|
|
@ -14,17 +14,16 @@ extends PixelCel
|
|||
## The [TileSetCustom] that this cel uses, passed down from the cel's [LayerTileMap].
|
||||
var tileset: TileSetCustom
|
||||
|
||||
var cells := {} ## Dictionary of Vector2i and Cell.
|
||||
var cells: Dictionary[Vector2i, Cell] = {} ## Dictionary that contains the data of each cell.
|
||||
var vertical_cell_min := 0 ## The minimum vertical cell.
|
||||
var vertical_cell_max := 0 ## The maximum vertical cell.
|
||||
var offset := Vector2i.ZERO ## The offset of the tilemap.
|
||||
var prev_offset := offset ## Used for undo/redo purposes.
|
||||
## Dictionary of [int] and [Array].
|
||||
## The key is the index of the tile in the tileset,
|
||||
## and the value is the coords of the tilemap tile that changed first, along with
|
||||
## its image that is being changed when manual mode is enabled.
|
||||
## Gets reset on [method update_tilemap].
|
||||
var editing_images := {}
|
||||
var editing_images: Dictionary[int, Array] = {}
|
||||
|
||||
|
||||
## An internal class of [CelTIleMap], which contains data used by individual cells of the tilemap.
|
||||
|
@ -294,7 +293,7 @@ func serialize_undo_data() -> Dictionary:
|
|||
var dict := {}
|
||||
var cell_data := {}
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
var cell := cells[cell_coords]
|
||||
cell_data[cell_coords] = cell.serialize()
|
||||
dict["cell_data"] = cell_data
|
||||
dict["tileset"] = tileset.serialize_undo_data()
|
||||
|
@ -339,7 +338,7 @@ func deserialize_undo_data(dict: Dictionary, undo_redo: UndoRedo, undo: bool) ->
|
|||
## each tile from the [member tileset] is being used.
|
||||
func find_times_used_of_tiles() -> void:
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
var cell := cells[cell_coords]
|
||||
tileset.tiles[cell.index].times_used += 1
|
||||
|
||||
|
||||
|
@ -355,7 +354,7 @@ func update_tilemap(
|
|||
) -> void:
|
||||
editing_images.clear()
|
||||
var tileset_size_before_update := tileset.tiles.size()
|
||||
for cell_coords: Vector2i in cells:
|
||||
for cell_coords in cells:
|
||||
var cell := get_cell_at(cell_coords)
|
||||
var coords := cell_coords * tileset.tile_size + offset
|
||||
var rect := Rect2i(coords, tileset.tile_size)
|
||||
|
@ -400,8 +399,8 @@ func update_tilemap(
|
|||
# Updates transparent cells that have indices higher than 0.
|
||||
# This can happen when switching to another tileset which has less tiles
|
||||
# than the previous one.
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
var coords := cell_coords * tileset.tile_size + offset
|
||||
var rect := Rect2i(coords, tileset.tile_size)
|
||||
var image_portion := source_image.get_region(rect)
|
||||
|
@ -526,8 +525,8 @@ func _handle_auto_editing_mode(
|
|||
## Re-indexes all [member cells] that are larger or equal to [param index],
|
||||
## by reducing their value by one.
|
||||
func _re_index_cells_after_index(index: int) -> void:
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
var tmp_index := cell.index
|
||||
if tmp_index >= index:
|
||||
cell.index -= 1
|
||||
|
@ -553,16 +552,16 @@ func _update_cell(cell: Cell) -> void:
|
|||
|
||||
## Calls [method _update_cell] for all [member cells].
|
||||
func update_cel_portions() -> void:
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
_update_cell(cell)
|
||||
|
||||
|
||||
## Loops through all [member cells] of the tilemap and updates their indices,
|
||||
## so they can remain mapped to the [member tileset]'s tiles.
|
||||
func re_index_all_cells(set_invisible_to_zero := false) -> void:
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
var coords := cell_coords * tileset.tile_size + offset
|
||||
var rect := Rect2i(coords, tileset.tile_size)
|
||||
var image_portion := image.get_region(rect)
|
||||
|
@ -597,7 +596,7 @@ func _resize_cells(new_size: Vector2i, reset_indices := true) -> void:
|
|||
var cell_coords := Vector2i(x, y) - offset_in_tiles
|
||||
if not cells.has(cell_coords):
|
||||
cells[cell_coords] = Cell.new()
|
||||
for cell_coords: Vector2i in cells:
|
||||
for cell_coords in cells:
|
||||
if cell_coords.y < vertical_cell_min:
|
||||
vertical_cell_min = cell_coords.y
|
||||
if cell_coords.y > vertical_cell_max:
|
||||
|
@ -606,7 +605,7 @@ func _resize_cells(new_size: Vector2i, reset_indices := true) -> void:
|
|||
horizontal_cells += 1
|
||||
if not is_zero_approx(fposmod(offset.y, tileset.tile_size.y)):
|
||||
vertical_cells += 1
|
||||
for cell_coords: Vector2i in cells:
|
||||
for cell_coords in cells:
|
||||
if reset_indices:
|
||||
cells[cell_coords] = Cell.new()
|
||||
else:
|
||||
|
@ -649,7 +648,7 @@ func _deserialize_cell_data(cell_data: Dictionary, resize: bool) -> void:
|
|||
# Overridden Methods:
|
||||
func set_content(content, texture: ImageTexture = null) -> void:
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
var cell := cells[cell_coords]
|
||||
if cell.index > 0:
|
||||
tileset.tiles[cell.index].times_used -= 1
|
||||
super.set_content(content, texture)
|
||||
|
@ -670,8 +669,8 @@ func update_texture(undo := false) -> void:
|
|||
editing_images.clear()
|
||||
return
|
||||
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
var coords := cell_coords * tileset.tile_size + offset
|
||||
var index := cell.index
|
||||
if index >= tileset.tiles.size():
|
||||
|
@ -692,8 +691,8 @@ func update_texture(undo := false) -> void:
|
|||
)
|
||||
editing_images[index] = [cell_coords, transformed_image]
|
||||
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
var coords := cell_coords * tileset.tile_size + offset
|
||||
var index := cell.index
|
||||
if index >= tileset.tiles.size():
|
||||
|
@ -720,8 +719,8 @@ func update_texture(undo := false) -> void:
|
|||
func serialize() -> Dictionary:
|
||||
var dict := super.serialize()
|
||||
var cell_data := {}
|
||||
for cell_coords: Vector2i in cells:
|
||||
var cell := cells[cell_coords] as Cell
|
||||
for cell_coords in cells:
|
||||
var cell := cells[cell_coords]
|
||||
cell_data[cell_coords] = cell.serialize()
|
||||
dict["cell_data"] = cell_data
|
||||
dict["offset"] = offset
|
||||
|
|
1
src/Classes/Cels/CelTileMap.gd.uid
Normal file
1
src/Classes/Cels/CelTileMap.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://qu538ibrkon1
|
1
src/Classes/Cels/GroupCel.gd.uid
Normal file
1
src/Classes/Cels/GroupCel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://fimiscm4wdnv
|
1
src/Classes/Cels/PixelCel.gd.uid
Normal file
1
src/Classes/Cels/PixelCel.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://g4wn4q5n5ecp
|
1
src/Classes/Drawers.gd.uid
Normal file
1
src/Classes/Drawers.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dwnsawu02ikab
|
1
src/Classes/Frame.gd.uid
Normal file
1
src/Classes/Frame.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://d1dgvksio3s6t
|
1
src/Classes/ImageEffect.gd.uid
Normal file
1
src/Classes/ImageEffect.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cix6kinxmv8q2
|
1
src/Classes/ImageExtended.gd.uid
Normal file
1
src/Classes/ImageExtended.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://obalvssgqg01
|
1
src/Classes/LayerEffect.gd.uid
Normal file
1
src/Classes/LayerEffect.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cram2krccwii3
|
1
src/Classes/Layers/AudioLayer.gd.uid
Normal file
1
src/Classes/Layers/AudioLayer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dysrj3m1c5at6
|
1
src/Classes/Layers/BaseLayer.gd.uid
Normal file
1
src/Classes/Layers/BaseLayer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bb3upnu804hk5
|
1
src/Classes/Layers/GroupLayer.gd.uid
Normal file
1
src/Classes/Layers/GroupLayer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://1abhkm1o0nyn
|
1
src/Classes/Layers/Layer3D.gd.uid
Normal file
1
src/Classes/Layers/Layer3D.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c6vbwslwgfphq
|
1
src/Classes/Layers/LayerTileMap.gd.uid
Normal file
1
src/Classes/Layers/LayerTileMap.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cq77weuveyivr
|
1
src/Classes/Layers/PixelLayer.gd.uid
Normal file
1
src/Classes/Layers/PixelLayer.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://lso3tqe4yk8b
|
1
src/Classes/ObjParse.gd.uid
Normal file
1
src/Classes/ObjParse.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://tivy8vf4s177
|
1
src/Classes/Project.gd.uid
Normal file
1
src/Classes/Project.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b0y8bmkoov1u1
|
1
src/Classes/ResourceProject.gd.uid
Normal file
1
src/Classes/ResourceProject.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://2wgdnu2slroe
|
1
src/Classes/SelectionMap.gd.uid
Normal file
1
src/Classes/SelectionMap.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://baid36rgwshrj
|
1
src/Classes/ShaderImageEffect.gd.uid
Normal file
1
src/Classes/ShaderImageEffect.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ul0idgiy5rgo
|
|
@ -43,9 +43,9 @@ static func create_ui_for_shader_uniforms(
|
|||
var uniform_data: PackedStringArray = []
|
||||
var description: String = ""
|
||||
var description_began := false
|
||||
# A Dictionary of [String] and [Control], used to group together nodes
|
||||
# A Dictionary used to group together nodes
|
||||
# under the same group_uniform. Currently only used for CurveTextures.
|
||||
var group_nodes := {}
|
||||
var group_nodes: Dictionary[String, Control] = {}
|
||||
var color_button_hbox: HBoxContainer = null # Used for RGBA buttons, if they exist.
|
||||
for line in code:
|
||||
# Management of "end" tags
|
||||
|
|
1
src/Classes/ShaderLoader.gd.uid
Normal file
1
src/Classes/ShaderLoader.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cpqpf6fa53y3k
|
1
src/Classes/SteamManager.gd.uid
Normal file
1
src/Classes/SteamManager.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://clsjv6vcrcucm
|
1
src/Classes/TileSetCustom.gd.uid
Normal file
1
src/Classes/TileSetCustom.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dkd2y552o12qq
|
1
src/Classes/Tiles.gd.uid
Normal file
1
src/Classes/Tiles.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c7e4fju2q2c6l
|
1
src/HandleExtensions.gd.uid
Normal file
1
src/HandleExtensions.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dyififbas7e2t
|
1
src/Main.gd.uid
Normal file
1
src/Main.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://dlxqc0hc51xu4
|
|
@ -1,7 +1,7 @@
|
|||
[gd_scene load_steps=19 format=3 uid="uid://dbylw5k04ulp8"]
|
||||
|
||||
[ext_resource type="Theme" uid="uid://bkb4syj8110el" path="res://assets/themes/dark/theme.tres" id="1"]
|
||||
[ext_resource type="Script" path="res://src/Main.gd" id="2"]
|
||||
[ext_resource type="Script" uid="uid://dlxqc0hc51xu4" path="res://src/Main.gd" id="2"]
|
||||
[ext_resource type="PackedScene" uid="uid://bsgwar3l6qtgv" path="res://src/UI/TopMenuContainer/TopMenuContainer.tscn" id="3"]
|
||||
[ext_resource type="PackedScene" uid="uid://c8dsi6ggkqa7a" path="res://src/UI/UI.tscn" id="4"]
|
||||
[ext_resource type="PackedScene" uid="uid://d1jyt8wleg8ft" path="res://src/UI/Buttons/PatternsPopup.tscn" id="5"]
|
||||
|
@ -13,9 +13,9 @@
|
|||
[ext_resource type="PackedScene" uid="uid://d3dt1gdlf7hox" path="res://src/UI/Timeline/LayerProperties.tscn" id="13_4dhva"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0nuukjakmai2" path="res://src/UI/Dialogs/TileModeOffsetsDialog.tscn" id="14"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6fyrnyt3663o" path="res://src/UI/Timeline/TagProperties.tscn" id="14_fw6cf"]
|
||||
[ext_resource type="Script" path="res://src/HandleExtensions.gd" id="15_v0k2h"]
|
||||
[ext_resource type="Script" uid="uid://dyififbas7e2t" path="res://src/HandleExtensions.gd" id="15_v0k2h"]
|
||||
[ext_resource type="PackedScene" uid="uid://clsp16gq4sng3" path="res://src/UI/Dialogs/ImportTagDialog.tscn" id="16_ohhks"]
|
||||
[ext_resource type="Script" path="res://src/Classes/SteamManager.gd" id="17_k1xhp"]
|
||||
[ext_resource type="Script" uid="uid://clsjv6vcrcucm" path="res://src/Classes/SteamManager.gd" id="17_k1xhp"]
|
||||
[ext_resource type="PackedScene" uid="uid://clbjfkdupw52l" path="res://src/UI/Timeline/CelProperties.tscn" id="17_ucs64"]
|
||||
[ext_resource type="PackedScene" uid="uid://clgu8wb5o6oup" path="res://src/UI/Dialogs/ExportDialog.tscn" id="39"]
|
||||
|
||||
|
|
1
src/Palette/CreatePaletteDialog.gd.uid
Normal file
1
src/Palette/CreatePaletteDialog.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://ddiwy0yrvpblt
|
|
@ -1,6 +1,6 @@
|
|||
[gd_scene load_steps=2 format=3 uid="uid://68aakj2l6ee1"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/Palette/CreatePaletteDialog.gd" id="1"]
|
||||
[ext_resource type="Script" uid="uid://ddiwy0yrvpblt" path="res://src/Palette/CreatePaletteDialog.gd" id="1"]
|
||||
|
||||
[node name="CreatePaletteDialog" type="ConfirmationDialog"]
|
||||
title = "Create a new palette"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue