init
4
.editorconfig
Normal file
@@ -0,0 +1,4 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
||||
18
.gitignore
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
/android/
|
||||
.nomedia
|
||||
|
||||
# Godot-specific ignores
|
||||
.import/
|
||||
export.cfg
|
||||
export_credentials.cfg
|
||||
*.tmp
|
||||
|
||||
# Imported translations (automatically generated from CSV files)
|
||||
*.translation
|
||||
|
||||
# Mono-specific ignores
|
||||
.mono/
|
||||
data_*/
|
||||
mono_crash.*.json
|
||||
1
addons/ez_tiles/ColorPick.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="m8 1c-1.108 0-2 .892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1-1.7305v-5h1v-2h-1v-2c0-1.108-.892-2-2-2zm-1 6h2v5a1 1 0 0 1 -1 1 1 1 0 0 1 -1-1z"/></svg>
|
||||
|
After Width: | Height: | Size: 260 B |
43
addons/ez_tiles/ColorPick.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://caun3agmbmgps"
|
||||
path="res://.godot/imported/ColorPick.svg-3d1404ee7ad6e6f63eea544098a69601.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ColorPick.svg"
|
||||
dest_files=["res://.godot/imported/ColorPick.svg-3d1404ee7ad6e6f63eea544098a69601.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/Edit.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="m7 1c-.554 0-1 .446-1 1v2h4v-2c0-.554-.446-1-1-1zm-1 4v7l2 3 2-3v-7zm1 1h1v5h-1z"/></svg>
|
||||
|
After Width: | Height: | Size: 176 B |
43
addons/ez_tiles/Edit.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dwo07c1odx7ob"
|
||||
path="res://.godot/imported/Edit.svg-82304c6fcb6a1b25af7fee4a258df268.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/Edit.svg"
|
||||
dest_files=["res://.godot/imported/Edit.svg-82304c6fcb6a1b25af7fee4a258df268.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
21
addons/ez_tiles/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 René and Chris van der Ark
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
29
addons/ez_tiles/README.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# EZ Tiles plugin for Godot 4.3
|
||||
|
||||
This plugin attempts to make it easy to start drawing terrains with tilesheets via a basic Tileset importer and TileMapLayer nodes.
|
||||
|
||||
For a complete showcase, please take a look at these youtube explainers.
|
||||
|
||||
## Basic introduction to EZ Tiles
|
||||
|
||||
[](https://youtu.be/cvx-chwh1Ds)
|
||||
|
||||
## Top down RPG tiles with EZ Tiles
|
||||
|
||||
[](https://youtu.be/gBNtqvF5T_Y)
|
||||
|
||||
## Importer Features
|
||||
|
||||
- importing tilesheets in a preset format to automatically generate connected terrains (4 sides)
|
||||
|
||||

|
||||
|
||||
- a couple of preset collision polygons to use with these templates
|
||||
- generation of a navigation layer
|
||||
|
||||
## Drawing Features
|
||||
|
||||
- Square and circle brush
|
||||
- Draggable area draw
|
||||
- Stamps (fast copy/paste)
|
||||
- Several modes of terrain-connecting
|
||||
1
addons/ez_tiles/Remove.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="m5 1v1h-4v2h14v-2h-4v-1zm-3 4v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-8zm1 2h2v6h-2zm4 0h2v6h-2zm4 0h2v6h-2z"/></svg>
|
||||
|
After Width: | Height: | Size: 197 B |
43
addons/ez_tiles/Remove.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://smg4iofcineo"
|
||||
path="res://.godot/imported/Remove.svg-a5d55465b9350d5f0321a6a209a66676.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/Remove.svg"
|
||||
dest_files=["res://.godot/imported/Remove.svg-a5d55465b9350d5f0321a6a209a66676.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/Save.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="M3 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4l-3-3h-1v6H3zm1 0v5h3V1zm4 8a1 1 0 0 1 0 4 1 1 0 0 1 0-4z"/></svg>
|
||||
|
After Width: | Height: | Size: 207 B |
43
addons/ez_tiles/Save.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cxl4w251e8xgf"
|
||||
path="res://.godot/imported/Save.svg-cccadde19daf996f4fd509bf2315f230.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/Save.svg"
|
||||
dest_files=["res://.godot/imported/Save.svg-cccadde19daf996f4fd509bf2315f230.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/ZoomLess.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><circle cx="8" cy="8" r="8" fill-opacity=".4"/><path fill="#e0e0e0" d="M8 1a7 7 0 0 0 0 14A7 7 0 0 0 8 1zM4 7h8v2H4z"/></svg>
|
||||
|
After Width: | Height: | Size: 188 B |
43
addons/ez_tiles/ZoomLess.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://njliaygubc5c"
|
||||
path="res://.godot/imported/ZoomLess.svg-1ac10bf8c27b37875d4fb511a1a711f8.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ZoomLess.svg"
|
||||
dest_files=["res://.godot/imported/ZoomLess.svg-1ac10bf8c27b37875d4fb511a1a711f8.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/ZoomMore.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><circle cx="8" cy="8" r="8" fill-opacity=".4"/><path fill="#e0e0e0" d="M8 1a7 7 0 0 0 0 14A7 7 0 0 0 8 1zM7 4h2v3h3v2H9v3H7V9H4V7h3z"/></g></svg>
|
||||
|
After Width: | Height: | Size: 275 B |
43
addons/ez_tiles/ZoomMore.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bvwx6xu0hp7mv"
|
||||
path="res://.godot/imported/ZoomMore.svg-1d933b2c818365668806650c495f37a9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ZoomMore.svg"
|
||||
dest_files=["res://.godot/imported/ZoomMore.svg-1d933b2c818365668806650c495f37a9.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
100
addons/ez_tiles/collision_polygon_templates/cactus.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://ywxhlehtt18d"]
|
||||
|
||||
[node name="Cactus" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0.210938, 0.09375, 0.0390625, 0.289063, 0, 0.71875, 0, 0.882813, 0.078125, 1, 0.289063, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0.226563, 0.132813, 0.0703125, 0.359375, 0, 0.640625, 0, 0.820313, 0.0859375, 0.992188, 0.304688, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 0.25, 0, 0, 1, 0, 1, 0.242188)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0.53125, 0.460938, 0.476563, 0.171875, 0.625, 0, 0.765625, 0.0390625, 0.835938, 0.328125, 1, 0.414063, 1, 0.734375, 0.703125, 0.625)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 0.71875, 0, 0.398438, 1, 0.390625, 1, 0.71875)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 0.703125, 0, 0.390625, 0.195313, 0.34375, 0.226563, 0.03125, 0.382813, 0.015625, 0.515625, 0.164063, 0.523438, 0.445313, 0.296875, 0.640625)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://cxnhqxx237lix"]
|
||||
|
||||
[node name="Rounded Corners (Inverse)" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0.03125, 0.734375, 0.15625, 0.476563, 0.3125, 0.273438, 0.515625, 0.125, 0.773438, 0.03125, 1, 0, 0, 0)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(1, 0, 0, 0, 0.273438, 0.0390625, 0.5, 0.125, 0.71875, 0.289063, 0.859375, 0.484375, 0.953125, 0.695313, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 1, 1, 1, 0, 0.960938, 0.257813, 0.867188, 0.492188, 0.726563, 0.703125, 0.523438, 0.867188, 0.28125, 0.960938)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0.28125, 0.71875, 0.140625, 0.507813, 0.046875, 0.304688, 0, 0, 0, 1, 1, 1, 1, 1, 0.703125, 0.953125, 0.492188, 0.859375)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
100
addons/ez_tiles/collision_polygon_templates/rectangles.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://bdtlwd7f6ojk0"]
|
||||
|
||||
[node name="Rectangles" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
100
addons/ez_tiles/collision_polygon_templates/rounded_corners.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://cm4063l3dfehn"]
|
||||
|
||||
[node name="Rounded Corners" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0.140209, 0.880727, 0.0546875, 0.75, 0, 0.515625, 0.0326076, 0.30961, 0.125, 0.15625, 0.3125, 0.03125, 0.5, 0, 0.671875, 0.03125, 0.835938, 0.125, 0.960938, 0.28125, 1, 0.507813, 0.945313, 0.710938, 0.84375, 0.859375, 0.695313, 0.96875, 0.507813, 1, 0.30575, 0.971775)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0.140209, 0.880727, 0.0546875, 0.75, 0, 0.515625, 0, 0, 1, 0, 1, 0.507813, 0.945313, 0.710938, 0.84375, 0.859375, 0.695313, 0.96875, 0.507813, 1, 0.30575, 0.971775)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0.515625, 0.015625, 0.328125, 0.125, 0.15625, 0.3125, 0.03125, 0.5, 0, 0.671875, 0.03125, 0.835938, 0.125, 0.960938, 0.28125, 1, 0.507813, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0.117188, 0.8125, 0.0234375, 0.65625, 0, 0.492188, 0.0390625, 0.28125, 0.148438, 0.132813, 0.34375, 0.0234375, 0.515625, 0, 1, 0, 1, 1, 1, 1, 0.523438, 1, 0.304688, 0.953125)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 0.554688, 0, 0.820313, 0.09375, 0.960938, 0.296875, 1, 0.460938, 0.96875, 0.671875, 0.804688, 0.90625, 0.5625, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0.03125, 0.734375, 0.15625, 0.476563, 0.3125, 0.273438, 0.515625, 0.125, 0.773438, 0.03125, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 0.273438, 0.0390625, 0.5, 0.125, 0.71875, 0.289063, 0.859375, 0.484375, 0.953125, 0.695313, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 0.960938, 0.257813, 0.867188, 0.492188, 0.726563, 0.703125, 0.523438, 0.867188, 0.28125, 0.960938)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0.28125, 0.71875, 0.140625, 0.507813, 0.046875, 0.304688, 0, 0, 1, 0, 1, 1, 1, 1, 0.703125, 0.953125, 0.492188, 0.859375)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
100
addons/ez_tiles/collision_polygon_templates/slopes.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://lfnyjmnayoqe"]
|
||||
|
||||
[node name="Sloped (All Corners)" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
100
addons/ez_tiles/collision_polygon_templates/slopes_bottom.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://ckfu3f4u350bg"]
|
||||
|
||||
[node name="Sloped (Bottom Corners)" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
100
addons/ez_tiles/collision_polygon_templates/slopes_top.tscn
Normal file
@@ -0,0 +1,100 @@
|
||||
[gd_scene format=3 uid="uid://3gmoem8hi2hi"]
|
||||
|
||||
[node name="Sloped (Top Corners)" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
101
addons/ez_tiles/collision_polygon_templates/tree.tscn
Normal file
@@ -0,0 +1,101 @@
|
||||
[gd_scene format=3 uid="uid://bp35luh5na8o7"]
|
||||
|
||||
[node name="Tree" type="Node2D"]
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="MC" type="Polygon2D" parent="."]
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VT" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0.492188, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="VB" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 2)
|
||||
polygon = PackedVector2Array(0.1875, 0.820313, 0, 0, 1, 0, 0.8125, 0.570313)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HL" type="Polygon2D" parent="."]
|
||||
position = Vector2(0, 3)
|
||||
polygon = PackedVector2Array(0.478268, 0.299531, 0, 0, 1, 0, 1, 0, 0.992188, 0.398438)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HM" type="Polygon2D" parent="."]
|
||||
position = Vector2(1, 3)
|
||||
polygon = PackedVector2Array(0.0078125, 0.421875, 0, 0, 1, 0, 1, 0.421875)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="HR" type="Polygon2D" parent="."]
|
||||
position = Vector2(2, 3)
|
||||
scale = Vector2(1, 1.1)
|
||||
polygon = PackedVector2Array(0, 0.411932, 0, 0, 1, 0, 0.78125, 0.191761)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 2)
|
||||
polygon = PackedVector2Array(0, 1, 1, 1, 1, 0, 0, 0)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 2)
|
||||
polygon = PackedVector2Array(1, 0, 0, 0, 0, 1, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 0)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="LM" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="CM" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="RM" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 1)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TL" type="Polygon2D" parent="."]
|
||||
position = Vector2(3, 0)
|
||||
polygon = PackedVector2Array(0, 1, 1, 1, 1, 0, 0.960938, 0.257813, 0.867188, 0.492188, 0.726563, 0.703125, 0.523438, 0.867188, 0.28125, 0.960938)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="BC" type="Polygon2D" parent="."]
|
||||
position = Vector2(4, 2)
|
||||
polygon = PackedVector2Array(0, 1, 0, 0, 1, 0, 1, 1, 1, 1)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
|
||||
[node name="TR" type="Polygon2D" parent="."]
|
||||
position = Vector2(5, 0)
|
||||
polygon = PackedVector2Array(0.28125, 0.71875, 0.140625, 0.507813, 0.046875, 0.304688, 0, 0, 0, 1, 1, 1, 1, 1, 0.703125, 0.953125, 0.492188, 0.859375)
|
||||
metadata/_edit_vertical_guides_ = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
|
||||
metadata/_edit_horizontal_guides_ = [1.0, 1.0, 2.0, 3.0, 4.0]
|
||||
BIN
addons/ez_tiles/examples/15x15/big_brick.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
40
addons/ez_tiles/examples/15x15/big_brick.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dyf2x07bqc1kw"
|
||||
path="res://.godot/imported/big_brick.png-7cbdd1461a54cb96eda7d75f06bf46e5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/big_brick.png"
|
||||
dest_files=["res://.godot/imported/big_brick.png-7cbdd1461a54cb96eda7d75f06bf46e5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/brick_face.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
40
addons/ez_tiles/examples/15x15/brick_face.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bm3oo83wmpa7t"
|
||||
path="res://.godot/imported/brick_face.png-be3d3f48b608d1194504c80b008847cb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/brick_face.png"
|
||||
dest_files=["res://.godot/imported/brick_face.png-be3d3f48b608d1194504c80b008847cb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/cactus.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
40
addons/ez_tiles/examples/15x15/cactus.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://qylofri7a3j"
|
||||
path="res://.godot/imported/cactus.png-fb8308c83545f74973ca4d97df5fc871.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/cactus.png"
|
||||
dest_files=["res://.godot/imported/cactus.png-fb8308c83545f74973ca4d97df5fc871.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/gold_tiles.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
40
addons/ez_tiles/examples/15x15/gold_tiles.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://7ab600twsy17"
|
||||
path="res://.godot/imported/gold_tiles.png-22f1bb38d765445d923d8f50d6c55c69.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/gold_tiles.png"
|
||||
dest_files=["res://.godot/imported/gold_tiles.png-22f1bb38d765445d923d8f50d6c55c69.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/grass_and_dirt.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
40
addons/ez_tiles/examples/15x15/grass_and_dirt.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://qkgb300aqju0"
|
||||
path="res://.godot/imported/grass_and_dirt.png-eda66079d258f21e83b1bbc5af195e0a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/grass_and_dirt.png"
|
||||
dest_files=["res://.godot/imported/grass_and_dirt.png-eda66079d258f21e83b1bbc5af195e0a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/mossy_bricks.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
40
addons/ez_tiles/examples/15x15/mossy_bricks.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cx74c55pt4kvk"
|
||||
path="res://.godot/imported/mossy_bricks.png-7a9818dfc7df3a554d452059d576c7f4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/mossy_bricks.png"
|
||||
dest_files=["res://.godot/imported/mossy_bricks.png-7a9818dfc7df3a554d452059d576c7f4.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/sand.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
40
addons/ez_tiles/examples/15x15/sand.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dudbsnchdio2u"
|
||||
path="res://.godot/imported/sand.png-25261f855efcdb39571b9c5a648b68d0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/sand.png"
|
||||
dest_files=["res://.godot/imported/sand.png-25261f855efcdb39571b9c5a648b68d0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/spikes.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
40
addons/ez_tiles/examples/15x15/spikes.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b66j5q5i4ltpn"
|
||||
path="res://.godot/imported/spikes.png-a03d129e27aef364b1e1648c5710269d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/spikes.png"
|
||||
dest_files=["res://.godot/imported/spikes.png-a03d129e27aef364b1e1648c5710269d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/stonewall.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
40
addons/ez_tiles/examples/15x15/stonewall.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b4ibyc7vv0cqd"
|
||||
path="res://.godot/imported/stonewall.png-165313e5941503a3dd613b03b79bddd7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/stonewall.png"
|
||||
dest_files=["res://.godot/imported/stonewall.png-165313e5941503a3dd613b03b79bddd7.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/15x15/tree_trunk.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
40
addons/ez_tiles/examples/15x15/tree_trunk.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://f0usrkn63hv0"
|
||||
path="res://.godot/imported/tree_trunk.png-9704d95a015e91b197256a3aedfee62d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/15x15/tree_trunk.png"
|
||||
dest_files=["res://.godot/imported/tree_trunk.png-9704d95a015e91b197256a3aedfee62d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c0t85l7oiep61"
|
||||
path="res://.godot/imported/tinyworlds-tileset-floating-dirt-isles.png-dd7c959e0deee039b2957f496e6c51b4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/tinyworlds-tileset-floating-dirt-isles.png"
|
||||
dest_files=["res://.godot/imported/tinyworlds-tileset-floating-dirt-isles.png-dd7c959e0deee039b2957f496e6c51b4.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/16x16/zelda_like_dark_grass.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://jhqreh71nv5o"
|
||||
path="res://.godot/imported/zelda_like_dark_grass.png-e14eb21d78bf0a5e0209525e40e749cd.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/zelda_like_dark_grass.png"
|
||||
dest_files=["res://.godot/imported/zelda_like_dark_grass.png-e14eb21d78bf0a5e0209525e40e749cd.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/16x16/zelda_like_grass.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
40
addons/ez_tiles/examples/16x16/zelda_like_grass.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://csqilhkvhxmne"
|
||||
path="res://.godot/imported/zelda_like_grass.png-b6f4304517edfc28d7e02e2179aabf56.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/zelda_like_grass.png"
|
||||
dest_files=["res://.godot/imported/zelda_like_grass.png-b6f4304517edfc28d7e02e2179aabf56.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/16x16/zelda_like_grass_over_water.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://h6xbr61ix6j7"
|
||||
path="res://.godot/imported/zelda_like_grass_over_water.png-b6a3af1682cd313c336783e0d4d2199d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/zelda_like_grass_over_water.png"
|
||||
dest_files=["res://.godot/imported/zelda_like_grass_over_water.png-b6a3af1682cd313c336783e0d4d2199d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/16x16/zelda_like_hedge.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
40
addons/ez_tiles/examples/16x16/zelda_like_hedge.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://4aivnuxpkvr"
|
||||
path="res://.godot/imported/zelda_like_hedge.png-d907887aa9483a2398bba354eaa4abcb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/zelda_like_hedge.png"
|
||||
dest_files=["res://.godot/imported/zelda_like_hedge.png-d907887aa9483a2398bba354eaa4abcb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
addons/ez_tiles/examples/16x16/zelda_like_water.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
40
addons/ez_tiles/examples/16x16/zelda_like_water.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://chx0bemo6hrf"
|
||||
path="res://.godot/imported/zelda_like_water.png-3df6072f89452b6e6aa2ff950499ee5e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/zelda_like_water.png"
|
||||
dest_files=["res://.godot/imported/zelda_like_water.png-3df6072f89452b6e6aa2ff950499ee5e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
34
addons/ez_tiles/examples/64x64/plains_1.png.import
Normal file
@@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d152uhcg8kesn"
|
||||
path="res://.godot/imported/plains_1.png-2fe6d3bbe2dc7c593788d82833fc8c5a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/16x16/plains_1.png"
|
||||
dest_files=["res://.godot/imported/plains_1.png-2fe6d3bbe2dc7c593788d82833fc8c5a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
114
addons/ez_tiles/examples/64x64/plains_1.svg
Normal file
@@ -0,0 +1,114 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
width="384"
|
||||
height="256"
|
||||
viewBox="0 0 384 256"
|
||||
id="svg19"
|
||||
sodipodi:docname="plains_1.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs19" />
|
||||
<sodipodi:namedview
|
||||
id="namedview19"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="1.2219078"
|
||||
inkscape:cx="-4.9103541"
|
||||
inkscape:cy="5.3195502"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1094"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg19"
|
||||
showgrid="true">
|
||||
<inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="0"
|
||||
originy="0"
|
||||
spacingx="0.99999999"
|
||||
spacingy="1"
|
||||
empcolor="#e50000"
|
||||
empopacity="0.48627451"
|
||||
color="#0099e5"
|
||||
opacity="0.14901961"
|
||||
empspacing="64"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<rect
|
||||
style="fill:#642700;fill-opacity:1;stroke-width:5.74983;stroke-linecap:square;stroke-miterlimit:80;stroke-dashoffset:127.298;paint-order:markers fill stroke"
|
||||
id="rect1"
|
||||
width="57.528324"
|
||||
height="60.617859"
|
||||
x="2.9739425"
|
||||
y="3.4721446" />
|
||||
<path
|
||||
id="path1"
|
||||
style="mix-blend-mode:normal;fill:#642700;fill-opacity:1;fill-rule:nonzero;stroke-width:4.00033;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 256.18491,0 v 0.44534871 l -63.10279,63.73174829 0.0156,63.231703 63.08717,63.90755 h 63.90757 L 383.79295,127.61585 384,63.700495 h -0.4141 L 320.2995,0.41409617 V 0 Z"
|
||||
sodipodi:nodetypes="cccccccccccc" />
|
||||
<path
|
||||
id="path2"
|
||||
style="mix-blend-mode:normal;fill:#642700;fill-opacity:1;fill-rule:nonzero;stroke-width:4.00033;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 95.859368,3.2971433 63.98163,64.043058 63.89944,128.3767 l 31.491127,57.4978 32.641253,-58.04037 0.0224,-63.75288 z"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
d="m 377.75018,127.14488 -58.84184,59.2659 H 256.74901 L 197.73262,126.96905 V 64.713421"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="10.6718"
|
||||
stroke-linecap="round"
|
||||
id="path13"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
d="M 198.00517,63.997555 256.96069,5.3359353 h 62.27946 l 59.13049,58.8356977 v 61.620827"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="10.6718"
|
||||
stroke-linecap="round"
|
||||
id="path14"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
id="path15"
|
||||
style="mix-blend-mode:normal;fill:#642700;fill-opacity:1;fill-rule:nonzero;stroke-width:4.00033;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 3.1174458,194.96117 v 60.84871 H 65.091236 v 0.30471 h 61.419064 0.92976 61.41125 v -60.8487 H 127.44006 126.5103 65.458454 v -0.30472 z" />
|
||||
<path
|
||||
d="M 5.3359128,197.50781 H 186.46472"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="10.6718"
|
||||
stroke-linecap="round"
|
||||
id="path18"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
d="M 5.1299622,5.001772 H 58.931855"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="6.04268"
|
||||
stroke-linecap="round"
|
||||
id="path18-8"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-width:10.2029;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
d="M 5.1299622,5.001772 H 58.931855"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="6.04268"
|
||||
stroke-linecap="round"
|
||||
id="path3"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-width:10.2029;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
43
addons/ez_tiles/examples/64x64/plains_1.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://82nd1ajjv633"
|
||||
path="res://.godot/imported/plains_1.svg-5e57b110d812f8b73a3f571ca1f55b4c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/64x64/plains_1.svg"
|
||||
dest_files=["res://.godot/imported/plains_1.svg-5e57b110d812f8b73a3f571ca1f55b4c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
136
addons/ez_tiles/examples/64x64/plains_2.svg
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
width="384.00049"
|
||||
height="256"
|
||||
viewBox="0 0 384.0005 255.99999"
|
||||
id="svg21"
|
||||
sodipodi:docname="plains_2.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs21" />
|
||||
<sodipodi:namedview
|
||||
id="namedview21"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1.7335071"
|
||||
inkscape:cx="112.48873"
|
||||
inkscape:cy="36.054079"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1094"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg21">
|
||||
<inkscape:grid
|
||||
id="grid21"
|
||||
units="px"
|
||||
originx="-1.8224732e-06"
|
||||
originy="0.036258534"
|
||||
spacingx="1"
|
||||
spacingy="0.99999997"
|
||||
empcolor="#e50000"
|
||||
empopacity="0.58039216"
|
||||
color="#0099e5"
|
||||
opacity="0.14901961"
|
||||
empspacing="64"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
id="path1"
|
||||
style="mix-blend-mode:normal;fill:#cc9978;fill-opacity:1;fill-rule:nonzero;stroke-width:3.87287;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 198.12432,0.36362926 -0.0108,63.67645574 -0.59357,63.668645 58.29571,64.45222 63.7283,-0.28833 56.80278,-63.75001 0.16485,-64.082533 -0.0292,-63.67645574 h -59.90471 -58.32914 z"
|
||||
sodipodi:nodetypes="ccccccccccc" />
|
||||
<path
|
||||
id="path2"
|
||||
style="mix-blend-mode:normal;fill:#cc9978;fill-opacity:1;fill-rule:nonzero;stroke-width:3.99833;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 68.460763,0.96043996 0.179605,64.08253604 0.179604,61.411784 v 59.97488 l 54.500788,-0.40774 -0.40773,-57.96652 0.22812,-66.090898 -0.17962,-61.41177662 z"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
id="path2-4"
|
||||
style="mix-blend-mode:normal;fill:#cc9978;fill-opacity:1;fill-rule:nonzero;stroke-width:2.16565;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 4.2877142,7.6737973 0.179605,18.8001337 0.179604,18.016606 V 62.085588 L 59.147714,61.965971 58.739984,44.960116 58.968104,25.570782 58.788484,7.5541786 Z"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
d="m 256.49689,5.0876426 h 62.24832"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="9.99581"
|
||||
stroke-linecap="round"
|
||||
id="path9"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
id="path10"
|
||||
style="mix-blend-mode:normal;fill:#cc9978;fill-opacity:1;fill-rule:nonzero;stroke-width:3.99833;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="m 2.7800838,195.23514 v 60.81827 l 61.9506142,0.1523 61.845192,0.15229 h 61.853 v -60.8183 h -61.853 l -61.485967,-0.1523 z"
|
||||
sodipodi:nodetypes="ccccccccc" />
|
||||
<path
|
||||
d="M 4.9979048,197.77503 H 186.03616"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="9.99581"
|
||||
stroke-linecap="round"
|
||||
id="path13"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
d="m 319.86184,5.29151 h 59.26211"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="9.75311"
|
||||
stroke-linecap="round"
|
||||
id="path15"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<path
|
||||
d="m 196.69605,5.1897043 c 25.10338,0 41.83513,0 62.54051,0"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="10.0192"
|
||||
stroke-linecap="round"
|
||||
id="path17"
|
||||
sodipodi:nodetypes="cc"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||
<g
|
||||
id="g19"
|
||||
transform="matrix(3.9414296,0,0,3.9983253,-755.26761,-591.38618)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0">
|
||||
<path
|
||||
d="m 209.1463,149.32931 h 13.63105"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="2.5"
|
||||
stroke-linecap="round"
|
||||
id="path19"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
id="g3"
|
||||
transform="matrix(3.9983253,0,0,3.9983253,-831.03517,-591.28421)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0">
|
||||
<path
|
||||
d="M 209.11468,149.32931 H 222.4009"
|
||||
data-paper-data="{"index":null}"
|
||||
fill="none"
|
||||
stroke="#006903"
|
||||
stroke-width="2.46818"
|
||||
stroke-linecap="round"
|
||||
id="path3"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
43
addons/ez_tiles/examples/64x64/plains_2.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bbr3esj1mxpl0"
|
||||
path="res://.godot/imported/plains_2.svg-b406f7a8bb22df8238488c2c4608aec9.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/64x64/plains_2.svg"
|
||||
dest_files=["res://.godot/imported/plains_2.svg-b406f7a8bb22df8238488c2c4608aec9.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
523
addons/ez_tiles/examples/64x64/spikes.svg
Normal file
@@ -0,0 +1,523 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
width="384"
|
||||
height="256"
|
||||
viewBox="0 0 383.99999 256.00001"
|
||||
id="svg456"
|
||||
sodipodi:docname="spikes.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xml:space="preserve"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||
id="namedview458"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="true"
|
||||
showguides="true"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="149.90664"
|
||||
inkscape:cy="118.44038"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1094"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg456"><inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="0"
|
||||
originy="0"
|
||||
spacingx="0.99999997"
|
||||
spacingy="1"
|
||||
empcolor="#e50000"
|
||||
empopacity="1"
|
||||
color="#0099e5"
|
||||
opacity="0.14901961"
|
||||
empspacing="16"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" /></sodipodi:namedview><defs
|
||||
id="defs356"><linearGradient
|
||||
id="linearGradient1"
|
||||
inkscape:collect="always"><stop
|
||||
style="stop-color:#a1a1a1;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop1" /><stop
|
||||
style="stop-color:#e9e9e9;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
x1="232.53928"
|
||||
y1="197.96335"
|
||||
x2="232.53928"
|
||||
y2="204.48351"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-1"
|
||||
gradientTransform="matrix(4.0931083,0,0,4.3257316,-791.29698,-647.99079)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop231" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop233" /></linearGradient><linearGradient
|
||||
x1="217.53928"
|
||||
y1="197.96335"
|
||||
x2="217.53928"
|
||||
y2="204.48351"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-2"
|
||||
gradientTransform="matrix(4.3257316,0,0,4.3257316,-843.64398,-647.99079)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop236" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop238" /></linearGradient><linearGradient
|
||||
x1="202.53928"
|
||||
y1="197.96335"
|
||||
x2="202.53928"
|
||||
y2="204.48351"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-3"
|
||||
gradientTransform="matrix(4.3257316,0,0,4.3257316,-843.64398,-647.99079)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop241" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop243" /></linearGradient><linearGradient
|
||||
x1="225.15257"
|
||||
y1="204.71323"
|
||||
x2="232.61542"
|
||||
y2="204.71323"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-4"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop246" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop248" /></linearGradient><linearGradient
|
||||
x1="232.7382"
|
||||
y1="204.71953"
|
||||
x2="240.18665"
|
||||
y2="204.71953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-5"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop251" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop253" /></linearGradient><linearGradient
|
||||
x1="225.15257"
|
||||
y1="198.29657"
|
||||
x2="232.61542"
|
||||
y2="198.29657"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-6"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop256" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop258" /></linearGradient><linearGradient
|
||||
x1="232.7382"
|
||||
y1="198.29027"
|
||||
x2="240.18665"
|
||||
y2="198.29027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-7"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop261" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop263" /></linearGradient><linearGradient
|
||||
x1="210.15257"
|
||||
y1="204.71323"
|
||||
x2="217.61542"
|
||||
y2="204.71323"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-8"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop266" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop268" /></linearGradient><linearGradient
|
||||
x1="217.7382"
|
||||
y1="204.71953"
|
||||
x2="225.18665"
|
||||
y2="204.71953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-9"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop271" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop273" /></linearGradient><linearGradient
|
||||
x1="210.15257"
|
||||
y1="198.29657"
|
||||
x2="217.61542"
|
||||
y2="198.29657"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-10"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop276" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop278" /></linearGradient><linearGradient
|
||||
x1="217.7382"
|
||||
y1="198.29027"
|
||||
x2="225.18665"
|
||||
y2="198.29027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-11"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop281" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop283" /></linearGradient><linearGradient
|
||||
x1="195.15257"
|
||||
y1="204.71323"
|
||||
x2="202.61542"
|
||||
y2="204.71323"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-12"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop286" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop288" /></linearGradient><linearGradient
|
||||
x1="202.7382"
|
||||
y1="204.71953"
|
||||
x2="210.18665"
|
||||
y2="204.71953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-13"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop291" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop293" /></linearGradient><linearGradient
|
||||
x1="195.15257"
|
||||
y1="198.29657"
|
||||
x2="202.61542"
|
||||
y2="198.29657"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-14"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop296" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop298" /></linearGradient><linearGradient
|
||||
x1="202.7382"
|
||||
y1="198.29027"
|
||||
x2="210.18665"
|
||||
y2="198.29027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-15"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop301" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop303" /></linearGradient><linearGradient
|
||||
x1="217.64825"
|
||||
y1="180.61667"
|
||||
x2="218.05481"
|
||||
y2="165.75507"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-16"
|
||||
gradientTransform="matrix(1.0007802,0,0,1.0009012,-195.20477,-150.74151)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop306" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop308"
|
||||
style="stop-color:#d3d3d3;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="254.37347"
|
||||
y1="173.2084"
|
||||
x2="240.2834"
|
||||
y2="173.25858"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-17"
|
||||
gradientTransform="matrix(4.5324391,0,0,4.5324391,-896.30437,-688.33392)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop311" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop313"
|
||||
style="stop-color:#e2e2e2;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="269.44952"
|
||||
y1="173.68042"
|
||||
x2="282.18533"
|
||||
y2="173.06766"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-18"
|
||||
gradientTransform="matrix(1.083279,0,0,1.083279,-209.73905,-162.7404)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop316" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop318"
|
||||
style="stop-color:#d1d1d1;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="261.31177"
|
||||
y1="152.03796"
|
||||
x2="261.31177"
|
||||
y2="165.66718"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-19"
|
||||
gradientTransform="matrix(1.083279,0,0,1.083279,-209.93054,-163.02764)"><stop
|
||||
offset="0"
|
||||
stop-color="#ffffff"
|
||||
id="stop321"
|
||||
style="stop-color:#eaeaea;stop-opacity:1;" /><stop
|
||||
offset="1"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop323"
|
||||
style="stop-color:#a1a1a1;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="217.61385"
|
||||
y1="166.09712"
|
||||
x2="217.42195"
|
||||
y2="154.62973"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-20"
|
||||
gradientTransform="matrix(1.0791616,0,0,1.206416,-210.19407,-184.18733)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop326" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop328"
|
||||
style="stop-color:#e0e0e0;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="218.68964"
|
||||
y1="180.496"
|
||||
x2="217.59315"
|
||||
y2="191.96985"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-21"
|
||||
gradientTransform="matrix(1.0750154,0,0,1.1584143,-209.5846,-176.58093)"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop331" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop333"
|
||||
style="stop-color:#aeaeae;stop-opacity:1;" /></linearGradient><linearGradient
|
||||
x1="195.15257"
|
||||
y1="204.71323"
|
||||
x2="202.61542"
|
||||
y2="204.71323"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-22"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop336" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop338" /></linearGradient><linearGradient
|
||||
x1="202.7382"
|
||||
y1="204.71953"
|
||||
x2="210.18665"
|
||||
y2="204.71953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-23"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop341" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop343" /></linearGradient><linearGradient
|
||||
x1="210.15257"
|
||||
y1="204.71323"
|
||||
x2="217.61542"
|
||||
y2="204.71323"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-24"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop346" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop348" /></linearGradient><linearGradient
|
||||
x1="217.7382"
|
||||
y1="204.71953"
|
||||
x2="225.18665"
|
||||
y2="204.71953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="color-25"><stop
|
||||
offset="0"
|
||||
stop-color="#a1a1a1"
|
||||
id="stop351" /><stop
|
||||
offset="1"
|
||||
stop-color="#ffffff"
|
||||
id="stop353" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1"
|
||||
id="linearGradient2"
|
||||
x1="24.303877"
|
||||
y1="14.966226"
|
||||
x2="28.175701"
|
||||
y2="5.5409727"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(3.9931833,0,0,3.9931833,0,0.7144139)" /></defs><g
|
||||
data-paper-data="{"index":null}"
|
||||
fill="#a1a1a1"
|
||||
id="g362"
|
||||
transform="matrix(4.3257314,0,0,4.3257314,-833.50542,-648.45952)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
id="path358"
|
||||
d="m 266.53953,179.60442 -0.0497,14.57182 4.11496,-4.02994 9.46265,2.76533 -2.68006,-9.4102 3.92873,-3.84629 z"
|
||||
style="stroke-width:0.488459" /></g><g
|
||||
data-paper-data="{"index":null}"
|
||||
fill="#ffffff"
|
||||
id="g368"
|
||||
transform="matrix(4.2260352,0,0,4.2260352,-817.07064,-643.52778)"
|
||||
style="mix-blend-mode:normal;fill:#c5c5c5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 284.0652,167.45938 -15.10358,0.13582 0.13562,-15.20798 z"
|
||||
id="path364"
|
||||
style="fill:#c5c5c5;fill-opacity:1"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
d="m 282.89083,153.78518 -3.90107,13.52862 -9.57058,-9.63717 z"
|
||||
id="path366"
|
||||
style="fill:#c5c5c5;fill-opacity:1" /></g><g
|
||||
data-paper-data="{"index":null}"
|
||||
fill="#ffffff"
|
||||
id="g374"
|
||||
transform="matrix(4.3257314,0,0,4.3257314,-852.12939,-658.22366)"
|
||||
style="mix-blend-mode:normal;fill:#c5c5c5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 256.09569,152.10953 -0.0215,14.99966 -15.05066,-0.0317 z"
|
||||
id="path370"
|
||||
style="fill:#c5c5c5;fill-opacity:1"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
d="m 255.73707,157.39657 -9.63717,9.57057 -3.80718,-13.55535 z"
|
||||
id="path372"
|
||||
style="fill:#c5c5c5;fill-opacity:1" /></g><g
|
||||
fill="#a1a1a1"
|
||||
id="g380"
|
||||
transform="matrix(4.3257314,0,0,4.3257314,-847.29369,-650.08167)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
id="path376"
|
||||
d="m 240.22972,179.93224 3.88274,3.90922 -2.73381,9.47564 9.43683,-2.72497 4.12572,4.09276 -0.01,-14.70146 z"
|
||||
style="stroke-width:0.489436"
|
||||
sodipodi:nodetypes="ccccccc" /></g><path
|
||||
d="m 129.77193,208.3455 h 61.47909 v 28.20442 h -61.47909 z"
|
||||
fill="url(#color-1)"
|
||||
id="path382"
|
||||
style="mix-blend-mode:normal;fill:url(#color-1);fill-rule:nonzero;stroke:none;stroke-width:2.1039;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" /><path
|
||||
d="m 64.885963,208.3455 h 64.973127 v 28.20442 H 64.885963 Z"
|
||||
fill="url(#color-2)"
|
||||
id="path384"
|
||||
style="mix-blend-mode:normal;fill:url(#color-2);fill-rule:nonzero;stroke:none;stroke-width:2.16286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" /><path
|
||||
d="m 0,208.3455 h 64.97313 v 28.20442 H 0 Z"
|
||||
fill="url(#color-3)"
|
||||
id="path386"
|
||||
style="mix-blend-mode:normal;fill:url(#color-3);fill-rule:nonzero;stroke:none;stroke-width:2.16286;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0" /><g
|
||||
id="g392"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 228.91663,207.98032 -3.76405,-6.53417 h 7.46283 z"
|
||||
fill="url(#color-4)"
|
||||
id="path388"
|
||||
style="fill:url(#color-4)" /><path
|
||||
d="m 236.49499,207.98032 -3.75679,-6.52157 h 7.44845 z"
|
||||
fill="url(#color-5)"
|
||||
id="path390"
|
||||
style="fill:url(#color-5)" /></g><g
|
||||
data-paper-data="{"index":null}"
|
||||
id="g398"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 232.61541,201.56365 h -7.46283 l 3.76405,-6.53417 z"
|
||||
fill="url(#color-6)"
|
||||
id="path394"
|
||||
style="fill:url(#color-6)" /><path
|
||||
d="m 240.18664,201.55106 h -7.44845 l 3.75679,-6.52157 z"
|
||||
fill="url(#color-7)"
|
||||
id="path396"
|
||||
style="fill:url(#color-7)" /></g><g
|
||||
data-paper-data="{"index":null}"
|
||||
id="g410"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 217.61541,201.56365 h -7.46283 l 3.76405,-6.53417 z"
|
||||
fill="url(#color-10)"
|
||||
id="path406"
|
||||
style="fill:url(#color-10)" /><path
|
||||
d="m 225.18664,201.55106 h -7.44845 l 3.75679,-6.52157 z"
|
||||
fill="url(#color-11)"
|
||||
id="path408"
|
||||
style="fill:url(#color-11)" /></g><g
|
||||
id="g416"
|
||||
transform="matrix(4.3257314,0,0,4.3257314,-843.64387,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 198.91663,207.98032 -3.76405,-6.53417 h 7.46283 z"
|
||||
fill="url(#color-12)"
|
||||
id="path412"
|
||||
style="fill:url(#color-12)" /><path
|
||||
d="m 206.49499,207.98032 -3.75679,-6.52157 h 7.44845 z"
|
||||
fill="url(#color-13)"
|
||||
id="path414"
|
||||
style="fill:url(#color-13)" /></g><g
|
||||
data-paper-data="{"index":null}"
|
||||
id="g422"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 202.61541,201.56365 h -7.46283 l 3.76405,-6.53417 z"
|
||||
fill="url(#color-14)"
|
||||
id="path418"
|
||||
style="fill:url(#color-14)" /><path
|
||||
d="m 210.18664,201.55106 h -7.44845 l 3.75679,-6.52157 z"
|
||||
fill="url(#color-15)"
|
||||
id="path420"
|
||||
style="fill:url(#color-15)" /></g><path
|
||||
id="path424"
|
||||
style="mix-blend-mode:normal;fill:url(#linearGradient2);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.1862;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 96.904883,0.89379556 C 89.398014,24.462209 81.971293,49.021336 64.054715,64.457162 l -0.06241,65.754938 c 16.077873,17.11923 26.318826,38.25134 31.750482,62.68985 7.090223,-21.47815 13.011973,-43.1408 32.319823,-62.68985 L 127.59468,64.308974 C 110.06009,47.173271 101.99523,25.017076 96.904883,0.89379556 Z"
|
||||
sodipodi:nodetypes="ccccccc" /><path
|
||||
id="path426"
|
||||
style="mix-blend-mode:normal;fill:url(#color-17);fill-rule:nonzero;stroke:none;stroke-width:2.26622;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"
|
||||
d="M 289.23966,1.5475226 255.64319,64.58319 192.46831,96.529047 255.81786,128.43173 288.0874,192.11546 319.34547,128.62472 384.00071,97.060396 319.65028,64.752517 Z"
|
||||
sodipodi:nodetypes="ccccccccc" /><g
|
||||
id="g444"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 198.91663,207.98032 -3.76405,-6.53417 h 7.46283 z"
|
||||
fill="url(#color-22)"
|
||||
id="path440"
|
||||
style="fill:url(#color-22)" /><path
|
||||
d="m 206.49499,207.98032 -3.75679,-6.52157 h 7.44845 z"
|
||||
fill="url(#color-23)"
|
||||
id="path442"
|
||||
style="fill:url(#color-23)" /></g><g
|
||||
id="g450"
|
||||
transform="matrix(4.2481451,0,0,4.3257314,-828.50268,-647.99069)"
|
||||
style="mix-blend-mode:normal;fill-rule:nonzero;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0"><path
|
||||
d="m 213.91663,207.98032 -3.76405,-6.53417 h 7.46283 z"
|
||||
fill="url(#color-24)"
|
||||
id="path446"
|
||||
style="fill:url(#color-24)" /><path
|
||||
d="m 221.49499,207.98032 -3.75679,-6.52157 h 7.44845 z"
|
||||
fill="url(#color-25)"
|
||||
id="path448"
|
||||
style="fill:url(#color-25)" /></g></svg>
|
||||
|
After Width: | Height: | Size: 20 KiB |
43
addons/ez_tiles/examples/64x64/spikes.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dxc264vu06a4x"
|
||||
path="res://.godot/imported/spikes.svg-b0aa9d0afa9f87737835a3d0db5b9908.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/examples/64x64/spikes.svg"
|
||||
dest_files=["res://.godot/imported/spikes.svg-b0aa9d0afa9f87737835a3d0db5b9908.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
51
addons/ez_tiles/exclamation-warning-triangle-icon.svg
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
shape-rendering="geometricPrecision"
|
||||
text-rendering="geometricPrecision"
|
||||
image-rendering="optimizeQuality"
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
viewBox="0 0 16 16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="exclamation-warning-triangle-icon.svg"
|
||||
width="16"
|
||||
height="16"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="20.387171"
|
||||
inkscape:cx="11.232554"
|
||||
inkscape:cy="16.113074"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1094"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1"
|
||||
showguides="false" />
|
||||
<path
|
||||
id="path2"
|
||||
style="opacity:1;fill:#605b00;fill-opacity:1;stroke-width:6;stroke-linecap:square;stroke-miterlimit:80;stroke-dashoffset:127.298;paint-order:markers fill stroke"
|
||||
inkscape:transform-center-x="0.001516452"
|
||||
inkscape:transform-center-y="-2.7319362"
|
||||
d="m 15.377315,13.6115 c -2.287554,0.993096 -4.823787,0.867134 -7.2364566,1.29721 L 0.73272457,13.777923 C 0.52522035,10.993544 2.5093341,9.0614603 3.409006,6.7076493 4.9708537,4.6048819 6.6034079,1.4768751 8.0473064,1.084364 c 1.9652326,1.3678055 3.2790156,3.6662537 4.8299526,5.6259113 0.95991,2.2313765 2.204672,4.3073787 2.500056,6.9012247 z"
|
||||
sodipodi:nodetypes="ccccccc" />
|
||||
<path
|
||||
d="M 9.1493665,0.60446211 C 9.537211,0.83102512 9.891962,1.1945571 10.181775,1.6954958 l 0.03031,0.056656 0.03494,0.060656 5.44295,9.4525202 c 1.053503,1.762723 -0.03759,3.555446 -2.067942,3.530414 v 0.0038 H 2.3945396 c -0.027969,0 -0.055625,-0.0012 -0.083032,-0.0035 -1.84700398,-0.02497 -2.69616204,-1.718597 -1.93466038,-3.339132 0.0263125,-0.05641 0.0567501,-0.108594 0.0880001,-0.162532 l 5.55460548,-9.6016767 -0.00165,-10e-4 C 6.3059229,1.1983384 6.6652049,0.83361882 7.0618934,0.60399336 7.7165199,0.22518001 8.4953649,0.22249251 9.1493665,0.60446211 Z M 8.0887704,10.919047 c 0.407501,0 0.7378766,0.330345 0.7378766,0.737877 0,0.407532 -0.3303756,0.737908 -0.7378766,0.737908 -0.407532,0 -0.737908,-0.330376 -0.737908,-0.737908 0,-0.407532 0.330376,-0.737877 0.737908,-0.737877 z m 0.55122,-1.1055966 c -0.02481,0.6220646 -1.078315,0.6228456 -1.10244,-1.87e-4 C 7.4309879,8.7473858 7.1585184,6.3275993 7.1671434,5.3260348 7.1760134,5.017472 7.4318004,4.834659 7.7589884,4.76494 7.8599574,4.7435 7.9708949,4.73294 8.0826454,4.733095 8.1949894,4.733345 8.3061769,4.74441 8.4072399,4.76594 8.745303,4.837909 9.0106475,5.0281905 9.0106475,5.3423788 l -0.00135,0.031405 z m -7.3669845,2.0624116 5.602137,-9.68374 c 0.679314,-1.1628465 1.757035,-1.19653408 2.4492551,0 l 5.509325,9.567708 c 0.536783,0.883908 0.313751,2.06988 -1.21169,2.046505 H 2.3945396 C 1.3627561,13.82996 0.74325477,13.003364 1.2730059,11.875862 Z"
|
||||
id="path1"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0312501" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
43
addons/ez_tiles/exclamation-warning-triangle-icon.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cfrwoh80yb3se"
|
||||
path="res://.godot/imported/exclamation-warning-triangle-icon.svg-5a6d8876361b1164bbf2243119cc81cb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/exclamation-warning-triangle-icon.svg"
|
||||
dest_files=["res://.godot/imported/exclamation-warning-triangle-icon.svg-5a6d8876361b1164bbf2243119cc81cb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
212
addons/ez_tiles/ez_tiles.gd
Normal file
@@ -0,0 +1,212 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
class_name EZTiles
|
||||
|
||||
# importer
|
||||
var dock : EZTilesDock
|
||||
var alert_dialog : AcceptDialog
|
||||
|
||||
# draw
|
||||
var selection : EditorSelection
|
||||
var draw_dock : EZTilesDrawDock
|
||||
var select_2D_viewport_button : Button
|
||||
var select_mode_button : Button
|
||||
var prev_tile_pos := Vector2i.ZERO
|
||||
var lmb_is_down_outside_2d_viewport := false
|
||||
var hint_polygon : Polygon2D
|
||||
var prev_pos := Vector2i.ZERO
|
||||
|
||||
func _enter_tree() -> void:
|
||||
# importer
|
||||
dock = preload("res://addons/ez_tiles/ez_tiles_dock.tscn").instantiate()
|
||||
add_control_to_bottom_panel(dock as Control, "EZ Tiles")
|
||||
dock.request_tile_map_layer.connect(create_tile_map_layer_for_tile_set)
|
||||
alert_dialog = AcceptDialog.new()
|
||||
EditorInterface.get_base_control().add_child(alert_dialog)
|
||||
# draw
|
||||
draw_dock = preload("res://addons/ez_tiles/ez_tiles_draw/ez_tiles_draw_dock.tscn").instantiate()
|
||||
selection = EditorInterface.get_selection()
|
||||
selection.selection_changed.connect(handle_selected_node)
|
||||
add_control_to_bottom_panel(draw_dock as Control, "EZ Tiles Draw")
|
||||
handle_selected_node()
|
||||
select_2D_viewport_button = EditorInterface.get_base_control().find_child("2D", true, false)
|
||||
draw_dock.undo_redo = get_undo_redo()
|
||||
|
||||
# IMPORTER
|
||||
func create_tile_map_layer_for_tile_set(tile_set : TileSet) -> void:
|
||||
var root := EditorInterface.get_edited_scene_root()
|
||||
if is_instance_valid(root) and root is Node2D:
|
||||
var tile_map_layer := TileMapLayer.new()
|
||||
tile_map_layer.tile_set = tile_set
|
||||
tile_map_layer.name = "EZTilesTileMapLayer"
|
||||
root.add_child(tile_map_layer, true)
|
||||
tile_map_layer.set_owner(root)
|
||||
tile_map_layer.set_meta("_is_ez_tiles_generated", true)
|
||||
EditorInterface.edit_node(tile_map_layer)
|
||||
else:
|
||||
alert_dialog.title = "Warning!"
|
||||
alert_dialog.dialog_text = """Cannot create TileMapLayer for this scene.
|
||||
Please try again when editing a Node2D scene."""
|
||||
alert_dialog.popup_centered()
|
||||
|
||||
# DRAW
|
||||
func _handles(object: Object) -> bool:
|
||||
return is_instance_valid(object) and object is TileMapLayer
|
||||
|
||||
|
||||
func _dump_interface(n : Node, max_d : int = 2, d : int = 0) -> void:
|
||||
if n.name.contains("Dialog") or n.name.contains("Popup"):
|
||||
return
|
||||
print(n.name.lpad(d + n.name.length(), "-") + " (%d)" % [n.get_child_count()])
|
||||
for c in n.get_children():
|
||||
if d < max_d:
|
||||
_dump_interface(c, max_d, d + 1)
|
||||
|
||||
|
||||
func _get_select_mode_button() -> Button:
|
||||
if is_instance_valid(select_mode_button):
|
||||
return select_mode_button
|
||||
else:
|
||||
select_mode_button = (
|
||||
EditorInterface.get_editor_viewport_2d().find_parent("*CanvasItemEditor*")
|
||||
.find_child("*Button*", true, false)
|
||||
)
|
||||
return select_mode_button
|
||||
|
||||
|
||||
func _tile_pos_from_mouse_pos() -> Vector2i:
|
||||
if not is_instance_valid(draw_dock.under_edit):
|
||||
return Vector2i.ZERO
|
||||
var mouse_pos := EditorInterface.get_editor_viewport_2d().get_mouse_position()
|
||||
var cursor_pos_on_tilemaplayer := (mouse_pos - draw_dock.under_edit.global_position).rotated(-draw_dock.under_edit.global_rotation)
|
||||
|
||||
var tile_pos := Vector2i(cursor_pos_on_tilemaplayer / (Vector2(draw_dock.under_edit.tile_set.tile_size) * draw_dock.under_edit.global_scale))
|
||||
if cursor_pos_on_tilemaplayer.x < 0:
|
||||
tile_pos.x -= 1
|
||||
if cursor_pos_on_tilemaplayer.y < 0:
|
||||
tile_pos.y -= 1
|
||||
return tile_pos
|
||||
|
||||
|
||||
func _tile_pos_to_overlay_pos(tile_pos : Vector2i) -> Vector2:
|
||||
if not(draw_dock.visible and is_instance_valid(draw_dock.under_edit) and _get_select_mode_button().button_pressed):
|
||||
return Vector2i.ZERO
|
||||
return (
|
||||
(
|
||||
(
|
||||
(Vector2(tile_pos) * (Vector2(draw_dock.under_edit.tile_set.tile_size) * draw_dock.under_edit.global_scale)).rotated(draw_dock.under_edit.global_rotation) + draw_dock.under_edit.global_position
|
||||
) * EditorInterface.get_editor_viewport_2d().get_final_transform().get_scale()
|
||||
) + EditorInterface.get_editor_viewport_2d().get_final_transform().get_origin()
|
||||
)
|
||||
|
||||
|
||||
func _forward_canvas_draw_over_viewport(overlay):
|
||||
if lmb_is_down_outside_2d_viewport:
|
||||
return
|
||||
|
||||
var viewport_2d := EditorInterface.get_editor_viewport_2d()
|
||||
var g_mouse_pos = (
|
||||
EditorInterface.get_base_control().get_global_mouse_position()
|
||||
- viewport_2d.get_parent().global_position
|
||||
)
|
||||
if not viewport_2d.get_visible_rect().has_point(g_mouse_pos):
|
||||
return
|
||||
|
||||
var fill := Color(1.0, 0.0, 0.0, 0.2) if draw_dock.rmb_is_down or draw_dock.using_eraser else Color(Color.WHITE, 0.2)
|
||||
var stroke := Color.RED if draw_dock.rmb_is_down or draw_dock.using_eraser else Color.WHITE
|
||||
var draw_rect := draw_dock.get_draw_rect(_tile_pos_from_mouse_pos())
|
||||
var tl_corner := _tile_pos_to_overlay_pos(draw_rect.position)
|
||||
var tr_corner := _tile_pos_to_overlay_pos(draw_rect.position + draw_rect.size * Vector2i.RIGHT)
|
||||
var br_corner := _tile_pos_to_overlay_pos(draw_rect.position + draw_rect.size)
|
||||
var bl_corner := _tile_pos_to_overlay_pos(draw_rect.position + draw_rect.size * Vector2i.DOWN)
|
||||
overlay.draw_polyline(PackedVector2Array([tl_corner, tr_corner, br_corner, bl_corner, tl_corner]), stroke, 0.5, true)
|
||||
|
||||
if draw_dock.rmb_is_down or draw_dock.using_eraser:
|
||||
overlay.draw_polygon(PackedVector2Array([tl_corner, tr_corner, br_corner, bl_corner, tl_corner]), [fill])
|
||||
if draw_dock.drag_mode == EZTilesDrawDock.DragMode.BRUSH:
|
||||
var draw_area := draw_dock.get_draw_area(_tile_pos_from_mouse_pos())
|
||||
for tile in draw_area:
|
||||
var tl := _tile_pos_to_overlay_pos(tile)
|
||||
var tr := _tile_pos_to_overlay_pos(tile + Vector2i.RIGHT)
|
||||
var br := _tile_pos_to_overlay_pos(tile + Vector2i.ONE)
|
||||
var bl := _tile_pos_to_overlay_pos(tile + Vector2i.DOWN)
|
||||
overlay.draw_polygon(PackedVector2Array([tl, tr, br, bl]), [fill])
|
||||
else:
|
||||
var draw_area := draw_dock.get_draw_area(_tile_pos_from_mouse_pos())
|
||||
for tile in draw_area:
|
||||
var tl := _tile_pos_to_overlay_pos(tile)
|
||||
var tr := _tile_pos_to_overlay_pos(tile + Vector2i.RIGHT)
|
||||
var br := _tile_pos_to_overlay_pos(tile + Vector2i.ONE)
|
||||
var bl := _tile_pos_to_overlay_pos(tile + Vector2i.DOWN)
|
||||
overlay.draw_polygon(PackedVector2Array([tl, tr, br, bl]), [fill])
|
||||
|
||||
|
||||
|
||||
func _input(_event) -> void:
|
||||
update_overlays()
|
||||
|
||||
if is_instance_valid(draw_dock.under_edit) and select_2D_viewport_button.button_pressed and _get_select_mode_button().button_pressed and draw_dock.visible:
|
||||
var viewport_2d := EditorInterface.get_editor_viewport_2d()
|
||||
var g_mouse_pos = (
|
||||
EditorInterface.get_base_control().get_global_mouse_position()
|
||||
- viewport_2d.get_parent().global_position
|
||||
)
|
||||
|
||||
if ((viewport_2d.get_visible_rect().has_point(g_mouse_pos)
|
||||
and not lmb_is_down_outside_2d_viewport
|
||||
and not (g_mouse_pos.x <= 164 and g_mouse_pos.y <= 40))
|
||||
or draw_dock.lmb_is_down or draw_dock.rmb_is_down):
|
||||
|
||||
var tile_pos := _tile_pos_from_mouse_pos()
|
||||
if (Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT)
|
||||
and not draw_dock.lmb_is_down
|
||||
and not lmb_is_down_outside_2d_viewport):
|
||||
draw_dock.handle_mouse_down(MOUSE_BUTTON_LEFT, tile_pos)
|
||||
|
||||
if Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT) and not draw_dock.rmb_is_down:
|
||||
draw_dock.handle_mouse_down(MOUSE_BUTTON_RIGHT, tile_pos)
|
||||
|
||||
if draw_dock.lmb_is_down and not Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
|
||||
draw_dock.handle_mouse_up(MOUSE_BUTTON_LEFT, tile_pos)
|
||||
|
||||
if draw_dock.rmb_is_down and not Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
|
||||
draw_dock.handle_mouse_up(MOUSE_BUTTON_RIGHT, tile_pos)
|
||||
|
||||
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT) and draw_dock.lmb_is_down:
|
||||
viewport_2d.set_input_as_handled()
|
||||
elif Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
|
||||
viewport_2d.set_input_as_handled()
|
||||
|
||||
if Input.is_key_pressed(KEY_CTRL):
|
||||
draw_dock._place_back_remembered_cells()
|
||||
draw_dock.suppress_preview = true
|
||||
else:
|
||||
draw_dock.suppress_preview = false
|
||||
|
||||
if not draw_dock.viewport_has_mouse:
|
||||
draw_dock.handle_mouse_entered()
|
||||
if prev_pos != tile_pos:
|
||||
draw_dock.handle_mouse_move(tile_pos)
|
||||
prev_pos = tile_pos
|
||||
else:
|
||||
lmb_is_down_outside_2d_viewport = Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT)
|
||||
if draw_dock.viewport_has_mouse:
|
||||
draw_dock.handle_mouse_out()
|
||||
|
||||
|
||||
func handle_selected_node():
|
||||
var selected_node : Node = selection.get_selected_nodes().pop_back()
|
||||
if is_instance_valid(selected_node) and selected_node is TileMapLayer and is_instance_valid(selected_node.tile_set):
|
||||
draw_dock.activate(selected_node)
|
||||
if selected_node.has_meta("_is_ez_tiles_generated"):
|
||||
await get_tree().create_timer(0.5).timeout
|
||||
make_bottom_panel_item_visible(draw_dock)
|
||||
else:
|
||||
draw_dock.deactivate()
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
remove_control_from_bottom_panel(dock)
|
||||
dock.free()
|
||||
remove_control_from_bottom_panel(draw_dock)
|
||||
draw_dock.free()
|
||||
1
addons/ez_tiles/ez_tiles.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://brinsj5s31qgh
|
||||
408
addons/ez_tiles/ez_tiles_dock.gd
Normal file
@@ -0,0 +1,408 @@
|
||||
@tool
|
||||
class_name EZTilesDock
|
||||
|
||||
extends HBoxContainer
|
||||
|
||||
signal request_tile_map_layer(tile_set : TileSet)
|
||||
|
||||
enum CollisionType {
|
||||
RECT,
|
||||
TOP_SLOPES,
|
||||
NONE,
|
||||
ALL_SLOPES,
|
||||
BOTTOM_SLOPES,
|
||||
ROUNDED,
|
||||
INVERSE_ROUNDED,
|
||||
TREE,
|
||||
CACTUS,
|
||||
NAVIGABLE
|
||||
}
|
||||
|
||||
var collision_previews := {}
|
||||
var num_regex := RegEx.new()
|
||||
var images_container : ImagesContainer
|
||||
var x_size_input : EditorSpinSlider
|
||||
var y_size_input : EditorSpinSlider
|
||||
var generate_template_button : Button
|
||||
var generate_tileset_button : Button
|
||||
var generate_tilemaplayer_button : Button
|
||||
var overlay_texture_rect : TextureRect
|
||||
var preview_texture_rect : TextureRect
|
||||
var guide_texture_rect : TextureRect
|
||||
var reset_zoom_button : Button
|
||||
var resource_map : Dictionary = {}
|
||||
var collision_type_map : Dictionary = {}
|
||||
var zoom := 1.0
|
||||
var save_template_file_dialog : EditorFileDialog
|
||||
var save_tile_set_file_dialog : EditorFileDialog
|
||||
var hint_color := Color(0, 0, 0, 0.702)
|
||||
var collision_layer_color := Color(1.0, 0.0, 0.0, 0.4)
|
||||
|
||||
func _enter_tree() -> void:
|
||||
num_regex.compile("^\\d+\\.?\\d*$")
|
||||
images_container = find_child("ImagesContainer")
|
||||
x_size_input = EditorSpinSlider.new()
|
||||
y_size_input = EditorSpinSlider.new()
|
||||
x_size_input.value = 16
|
||||
y_size_input.value = 16
|
||||
x_size_input.min_value = 2
|
||||
x_size_input.max_value = 2048
|
||||
y_size_input.min_value = 2
|
||||
y_size_input.max_value = 2048
|
||||
find_child("XSizeInputContainer").add_child(x_size_input)
|
||||
find_child("YSizeInputContainer").add_child(y_size_input)
|
||||
generate_template_button = find_child("GenerateTemplateButton")
|
||||
generate_tileset_button = find_child("GenerateTileSetButton")
|
||||
generate_tilemaplayer_button = find_child("GenerateTileMapLayerButton")
|
||||
overlay_texture_rect = find_child("OverlayTextureRect")
|
||||
preview_texture_rect = find_child("PreviewTextureRect")
|
||||
guide_texture_rect = find_child("GuideTextureRect")
|
||||
reset_zoom_button = find_child("ResetZoomButton")
|
||||
preview_texture_rect.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
|
||||
overlay_texture_rect.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
|
||||
save_template_file_dialog = EditorFileDialog.new()
|
||||
save_template_file_dialog.add_filter("*.png", "PNG image")
|
||||
save_template_file_dialog.file_mode = EditorFileDialog.FILE_MODE_SAVE_FILE
|
||||
save_template_file_dialog.file_selected.connect(_on_save_template_file_selected)
|
||||
EditorInterface.get_base_control().add_child(save_template_file_dialog)
|
||||
save_tile_set_file_dialog = EditorFileDialog.new()
|
||||
save_tile_set_file_dialog.add_filter("*.tres,*.res", "Resource file")
|
||||
save_tile_set_file_dialog.file_mode = EditorFileDialog.FILE_MODE_SAVE_FILE
|
||||
save_tile_set_file_dialog.file_selected.connect(_on_save_tile_set_file_selected)
|
||||
EditorInterface.get_base_control().add_child(save_tile_set_file_dialog)
|
||||
collision_previews[CollisionType.RECT] = preview_texture_rect.find_child("Rectangles")
|
||||
collision_previews[CollisionType.ALL_SLOPES] = preview_texture_rect.find_child("Sloped (All Corners)")
|
||||
collision_previews[CollisionType.BOTTOM_SLOPES] = preview_texture_rect.find_child("Sloped (Bottom Corners)")
|
||||
collision_previews[CollisionType.TOP_SLOPES] = preview_texture_rect.find_child("Sloped (Top Corners)")
|
||||
collision_previews[CollisionType.ROUNDED] = preview_texture_rect.find_child("Rounded Corners")
|
||||
collision_previews[CollisionType.INVERSE_ROUNDED] = preview_texture_rect.find_child("Rounded Corners (Inverse)")
|
||||
collision_previews[CollisionType.TREE] = preview_texture_rect.find_child("Tree")
|
||||
collision_previews[CollisionType.CACTUS] = preview_texture_rect.find_child("Cactus")
|
||||
x_size_input.value_changed.connect(func(n): handle_tilesize_update())
|
||||
y_size_input.value_changed.connect(func(n): handle_tilesize_update())
|
||||
handle_tilesize_update()
|
||||
|
||||
|
||||
func _on_file_menu_load_files(files : PackedStringArray) -> void:
|
||||
load_files(files)
|
||||
|
||||
|
||||
func _on_images_container_drop_files(files: PackedStringArray) -> void:
|
||||
load_files(files)
|
||||
|
||||
|
||||
func _on_preview_panel_container_drop_files(files: PackedStringArray) -> void:
|
||||
load_files(files)
|
||||
|
||||
|
||||
func validate_size(actual : Vector2) -> String:
|
||||
var tile_size = Vector2i(
|
||||
x_size_input.value,
|
||||
y_size_input.value
|
||||
)
|
||||
if not tile_size:
|
||||
return ""
|
||||
|
||||
var expected = Vector2i(
|
||||
x_size_input.value * 6,
|
||||
y_size_input.value * 4
|
||||
)
|
||||
if expected.x != actual.x or expected.y != actual.y:
|
||||
return """
|
||||
Invalid size detected for %dx%d tiles!
|
||||
Expected size = %dx%d pixels
|
||||
Actual size = %dx%d pixels
|
||||
""" % [tile_size.x, tile_size.y, expected.x, expected.y, actual.x, actual.y]
|
||||
return ""
|
||||
|
||||
|
||||
func load_files(files : PackedStringArray):
|
||||
for file in files:
|
||||
var im := ResourceLoader.load(file, "Image")
|
||||
if im is CompressedTexture2D and not resource_map.has(im.get_rid()):
|
||||
var detected_size = im.get_size()
|
||||
var validation := ""
|
||||
if not resource_map.is_empty():
|
||||
validation = validate_size(detected_size)
|
||||
images_container.add_file(im, validation)
|
||||
if resource_map.is_empty():
|
||||
var tile_size := Vector2(float(detected_size.x) / 6.0, float(detected_size.y) / 4.0)
|
||||
x_size_input.value = tile_size.x
|
||||
y_size_input.value = tile_size.y
|
||||
x_size_input.read_only = true
|
||||
y_size_input.read_only = true
|
||||
generate_tileset_button.disabled = false
|
||||
generate_tilemaplayer_button.disabled = false
|
||||
handle_tilesize_update()
|
||||
|
||||
resource_map[im.get_rid()] = im
|
||||
collision_type_map[im.get_rid()] = CollisionType.NONE
|
||||
preview_texture_rect.texture = im
|
||||
_show_collision_preview(im.get_rid())
|
||||
|
||||
|
||||
func _show_collision_preview(resource_id : RID) -> void:
|
||||
for c : Node in collision_previews.values():
|
||||
c.hide()
|
||||
if collision_type_map.has(resource_id) and collision_previews.has(collision_type_map[resource_id]):
|
||||
collision_previews[collision_type_map[resource_id]].show()
|
||||
|
||||
|
||||
func _on_images_container_terrain_list_collision_type_selected(
|
||||
resource_id: RID, type_id: EZTilesDock.CollisionType) -> void:
|
||||
collision_type_map[resource_id] = type_id
|
||||
_on_images_container_terrain_list_entry_selected(resource_id)
|
||||
|
||||
|
||||
func _on_images_container_terrain_list_entry_removed(removed_resource_id : RID) -> void:
|
||||
resource_map.erase(removed_resource_id)
|
||||
collision_type_map.erase(removed_resource_id)
|
||||
if preview_texture_rect.texture and preview_texture_rect.texture.get_rid() == removed_resource_id:
|
||||
preview_texture_rect.texture = null
|
||||
|
||||
if resource_map.size() == 0:
|
||||
x_size_input.value = 16
|
||||
y_size_input.value = 16
|
||||
x_size_input.read_only = false
|
||||
y_size_input.read_only = false
|
||||
generate_tileset_button.disabled = true
|
||||
generate_tilemaplayer_button.disabled = true
|
||||
handle_tilesize_update()
|
||||
for c : Node2D in collision_previews.values():
|
||||
c.hide()
|
||||
|
||||
|
||||
func _redraw_overlay_texture() -> void:
|
||||
var tile_size := Vector2i(x_size_input.value, y_size_input.value)
|
||||
var new_template_overlay := Image.create_empty(tile_size.x * 6, tile_size.y * 4, false, Image.FORMAT_RGBA8)
|
||||
for y in range(new_template_overlay.get_height()):
|
||||
for x in range(new_template_overlay.get_width()):
|
||||
if (
|
||||
(x >= tile_size.x * 2 and y < tile_size.y * 3 and x < tile_size.x * 3) or
|
||||
(x < tile_size.x and y >= tile_size.y and y < tile_size.y * 3) or
|
||||
(x >= tile_size.x * 3 and y >= tile_size.y * 3)
|
||||
):
|
||||
new_template_overlay.set_pixel(x, y, hint_color)
|
||||
overlay_texture_rect.texture = ImageTexture.create_from_image(new_template_overlay)
|
||||
guide_texture_rect.modulate = hint_color
|
||||
for c : Node2D in collision_previews.values():
|
||||
c.modulate = collision_layer_color
|
||||
|
||||
func handle_tilesize_update() -> void:
|
||||
generate_template_button.disabled = false
|
||||
_redraw_overlay_texture()
|
||||
resize_texture_rects(1)
|
||||
|
||||
|
||||
func resize_texture_rects(new_zoom : float):
|
||||
zoom = new_zoom
|
||||
var new_size := Vector2(
|
||||
float(x_size_input.value) * 6 * zoom,
|
||||
float(y_size_input.value) * 4 * zoom
|
||||
)
|
||||
preview_texture_rect.custom_minimum_size = new_size
|
||||
overlay_texture_rect.custom_minimum_size = new_size
|
||||
guide_texture_rect.custom_minimum_size = new_size
|
||||
reset_zoom_button.text = str(zoom * 100) + "%"
|
||||
for c : Node2D in collision_previews.values():
|
||||
c.scale = Vector2(float(x_size_input.value), float(y_size_input.value)) * zoom
|
||||
|
||||
|
||||
func _on_images_container_terrain_list_entry_selected(resource_id: RID) -> void:
|
||||
preview_texture_rect.texture = resource_map[resource_id]
|
||||
_show_collision_preview(resource_id)
|
||||
|
||||
|
||||
func _on_preview_panel_container_gui_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseButton:
|
||||
if event.button_index == MOUSE_BUTTON_WHEEL_UP and event.pressed:
|
||||
resize_texture_rects(zoom + 0.25)
|
||||
if event.button_index == MOUSE_BUTTON_WHEEL_DOWN and event.pressed:
|
||||
resize_texture_rects(zoom - 0.25)
|
||||
|
||||
|
||||
func _on_zoom_out_button_pressed() -> void:
|
||||
resize_texture_rects(zoom - 0.25)
|
||||
|
||||
|
||||
func _on_reset_zoom_button_pressed() -> void:
|
||||
resize_texture_rects(1)
|
||||
|
||||
|
||||
func _on_zoom_in_button_pressed() -> void:
|
||||
resize_texture_rects(zoom + 0.25)
|
||||
|
||||
|
||||
func _on_generate_template_button_pressed() -> void:
|
||||
save_template_file_dialog.set_current_path(
|
||||
"res://template_%dx%d.png" % [x_size_input.value, y_size_input.value])
|
||||
save_template_file_dialog.popup_file_dialog()
|
||||
|
||||
|
||||
func _on_save_template_file_selected(path : String) -> void:
|
||||
var export_image := Image.create_empty(overlay_texture_rect.texture.get_size().x, overlay_texture_rect.texture.get_size().y, false, Image.FORMAT_RGBA8)
|
||||
var overlay_image := overlay_texture_rect.texture.get_image()
|
||||
var guide_image := guide_texture_rect.texture.get_image()
|
||||
var tile_size := Vector2(float(x_size_input.value), float(y_size_input.value))
|
||||
|
||||
for x in range(overlay_image.get_size().x):
|
||||
for y in range(overlay_image.get_size().y):
|
||||
if overlay_image.get_pixel(x, y).a > 0.0:
|
||||
export_image.set_pixel(x, y, hint_color)
|
||||
elif guide_image.get_pixel(int((x / tile_size.x) * 256), int((y / tile_size.y) * 256)).a > 0.0:
|
||||
export_image.set_pixel(x, y, hint_color)
|
||||
export_image.save_png(path)
|
||||
EditorInterface.get_resource_filesystem().scan()
|
||||
|
||||
|
||||
func _on_color_picker_button_color_changed(color: Color) -> void:
|
||||
hint_color = color
|
||||
_redraw_overlay_texture()
|
||||
|
||||
|
||||
func _on_collision_layer_color_picker_button_color_changed(color: Color) -> void:
|
||||
collision_layer_color = color
|
||||
for c : Node2D in collision_previews.values():
|
||||
c.modulate = collision_layer_color
|
||||
|
||||
|
||||
func _on_generate_tile_set_button_pressed() -> void:
|
||||
save_tile_set_file_dialog.set_current_path("res://tile_set.tres")
|
||||
save_tile_set_file_dialog.popup_file_dialog()
|
||||
|
||||
|
||||
func _on_save_tile_set_file_selected(path : String) -> void:
|
||||
var tile_set := generate_tileset()
|
||||
ResourceSaver.save(tile_set, path)
|
||||
EditorInterface.get_resource_filesystem().scan()
|
||||
|
||||
|
||||
func _on_generate_tile_map_layer_button_pressed() -> void:
|
||||
var tile_set := generate_tileset()
|
||||
request_tile_map_layer.emit(tile_set)
|
||||
|
||||
|
||||
func generate_tileset() -> TileSet:
|
||||
var raw_intel := images_container.gather_data()
|
||||
var tile_set := TileSet.new()
|
||||
var physics_layer_added := false
|
||||
var nav_layer_added := false
|
||||
tile_set.add_terrain_set()
|
||||
tile_set.set_terrain_set_mode(0, TileSet.TERRAIN_MODE_MATCH_SIDES)
|
||||
tile_set.tile_size = Vector2i(x_size_input.value, y_size_input.value)
|
||||
|
||||
for terrain_id in range(raw_intel.size()):
|
||||
tile_set.add_terrain(0, terrain_id)
|
||||
tile_set.set_terrain_name(0, terrain_id, raw_intel[terrain_id]["terrain_name"])
|
||||
if raw_intel[terrain_id]["layer_type"] != CollisionType.NONE and not physics_layer_added:
|
||||
tile_set.add_physics_layer()
|
||||
physics_layer_added = true
|
||||
if raw_intel[terrain_id]["layer_type"] == CollisionType.NAVIGABLE and not nav_layer_added:
|
||||
tile_set.add_navigation_layer()
|
||||
nav_layer_added = true
|
||||
|
||||
for terrain_id in range(raw_intel.size()):
|
||||
var atlas_source := TileSetAtlasSource.new()
|
||||
atlas_source.texture_region_size = tile_set.tile_size
|
||||
atlas_source.texture = raw_intel[terrain_id]["texture_resource"]
|
||||
tile_set.add_source(atlas_source)
|
||||
var created_tiles : Array[TileData] = []
|
||||
# row
|
||||
created_tiles.append(create_tile(atlas_source, terrain_id, Vector2i(0,0), _get_collision_polygon_for_tile("MC", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_single_neighbour_tile(atlas_source, terrain_id, Vector2i(1,0), raw_intel.size(), TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, _get_collision_polygon_for_tile("VT", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(3,0), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE], _get_collision_polygon_for_tile("TL", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_triple_neighbour_tile(atlas_source, terrain_id, Vector2i(4,0), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE, TileSet.CELL_NEIGHBOR_LEFT_SIDE], _get_collision_polygon_for_tile("TM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(5,0), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_LEFT_SIDE], _get_collision_polygon_for_tile("TR", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
|
||||
# row
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(1,1), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_TOP_SIDE], _get_collision_polygon_for_tile("VM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_triple_neighbour_tile(atlas_source, terrain_id, Vector2i(3,1), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE, TileSet.CELL_NEIGHBOR_TOP_SIDE], _get_collision_polygon_for_tile("LM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_all_sides_neighbour_tile(atlas_source, terrain_id, Vector2i(4,1), raw_intel.size(), _get_collision_polygon_for_tile("CM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_triple_neighbour_tile(atlas_source, terrain_id, Vector2i(5,1), raw_intel.size(), [TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, TileSet.CELL_NEIGHBOR_LEFT_SIDE, TileSet.CELL_NEIGHBOR_TOP_SIDE], _get_collision_polygon_for_tile("RM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
|
||||
# row
|
||||
created_tiles.append(create_single_neighbour_tile(atlas_source, terrain_id, Vector2i(1,2), raw_intel.size(), TileSet.CELL_NEIGHBOR_TOP_SIDE, _get_collision_polygon_for_tile("VB", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(3,2), raw_intel.size(), [TileSet.CELL_NEIGHBOR_TOP_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE], _get_collision_polygon_for_tile("BL", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_triple_neighbour_tile(atlas_source, terrain_id, Vector2i(4,2), raw_intel.size(), [TileSet.CELL_NEIGHBOR_TOP_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE, TileSet.CELL_NEIGHBOR_LEFT_SIDE], _get_collision_polygon_for_tile("BC", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(5,2), raw_intel.size(), [TileSet.CELL_NEIGHBOR_TOP_SIDE, TileSet.CELL_NEIGHBOR_LEFT_SIDE], _get_collision_polygon_for_tile("BR", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
|
||||
# row
|
||||
created_tiles.append(create_single_neighbour_tile(atlas_source, terrain_id, Vector2i(0,3), raw_intel.size(), TileSet.CELL_NEIGHBOR_RIGHT_SIDE, _get_collision_polygon_for_tile("HL", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_dual_neighbour_tile(atlas_source, terrain_id, Vector2i(1,3), raw_intel.size(), [TileSet.CELL_NEIGHBOR_LEFT_SIDE, TileSet.CELL_NEIGHBOR_RIGHT_SIDE], _get_collision_polygon_for_tile("HM", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
created_tiles.append(create_single_neighbour_tile(atlas_source, terrain_id, Vector2i(2,3), raw_intel.size(), TileSet.CELL_NEIGHBOR_LEFT_SIDE, _get_collision_polygon_for_tile("HR", atlas_source.texture.get_rid(), tile_set.tile_size)))
|
||||
if raw_intel[terrain_id]["layer_type"] == CollisionType.NAVIGABLE:
|
||||
for tile_data : TileData in created_tiles:
|
||||
tile_data.set_navigation_polygon(0, _get_new_navigation_rect(Vector2(tile_set.tile_size)))
|
||||
return tile_set
|
||||
|
||||
|
||||
func _get_new_navigation_rect(tile_size : Vector2) -> NavigationPolygon:
|
||||
var new_navigation_mesh = NavigationPolygon.new()
|
||||
var new_vertices = PackedVector2Array([
|
||||
Vector2(-0.5, -0.5) * tile_size,
|
||||
Vector2(0.5, -0.5) * tile_size,
|
||||
Vector2(0.5, 0.5) * tile_size,
|
||||
Vector2(-0.5, 0.5) * tile_size
|
||||
])
|
||||
new_navigation_mesh.vertices = new_vertices
|
||||
var new_polygon_indices = PackedInt32Array([0, 1, 2, 3])
|
||||
new_navigation_mesh.add_polygon(new_polygon_indices)
|
||||
return new_navigation_mesh
|
||||
|
||||
|
||||
func _get_collision_polygon_for_tile(node_name : String, resource_id : RID, tile_size : Vector2) -> PackedVector2Array:
|
||||
#print(resource_id, collision_type_map.has(resource_id))
|
||||
if not collision_type_map.has(resource_id):
|
||||
return PackedVector2Array([])
|
||||
|
||||
if not collision_previews.has(collision_type_map[resource_id]):
|
||||
return PackedVector2Array([])
|
||||
var polygon_node : Polygon2D = collision_previews[collision_type_map[resource_id]].find_child(node_name)
|
||||
if is_instance_valid(polygon_node):
|
||||
var poly_points : Array[Vector2] = []
|
||||
for point : Vector2 in polygon_node.polygon:
|
||||
poly_points.append((point - Vector2(0.5, 0.5)) * tile_size)
|
||||
return PackedVector2Array(poly_points)
|
||||
return PackedVector2Array([])
|
||||
|
||||
|
||||
func create_tile(atlas_source : TileSetAtlasSource, terrain_id : int, at_pos : Vector2i, collision_polygon_points : PackedVector2Array) -> TileData:
|
||||
atlas_source.create_tile(at_pos)
|
||||
var new_tile := atlas_source.get_tile_data(at_pos, 0)
|
||||
new_tile.terrain_set = 0
|
||||
new_tile.terrain = terrain_id
|
||||
if not collision_polygon_points.is_empty():
|
||||
new_tile.add_collision_polygon(0)
|
||||
new_tile.set_collision_polygon_points(0, 0, PackedVector2Array(collision_polygon_points))
|
||||
return new_tile
|
||||
|
||||
|
||||
func create_single_neighbour_tile(atlas_source : TileSetAtlasSource, terrain_id : int, at_pos : Vector2i, num_terrains : int, neighbour : int, collision_polygon_points : PackedVector2Array) -> TileData:
|
||||
var new_tile := create_tile(atlas_source, terrain_id, at_pos, collision_polygon_points)
|
||||
new_tile.set_terrain_peering_bit(neighbour, terrain_id)
|
||||
return new_tile
|
||||
|
||||
|
||||
func create_dual_neighbour_tile(atlas_source : TileSetAtlasSource, terrain_id : int, at_pos : Vector2i, num_terrains : int, neighbours : Array[int], collision_polygon_points : PackedVector2Array) -> TileData:
|
||||
var new_tile := create_tile(atlas_source, terrain_id, at_pos, collision_polygon_points)
|
||||
new_tile.set_terrain_peering_bit(neighbours[0], terrain_id)
|
||||
new_tile.set_terrain_peering_bit(neighbours[1], terrain_id)
|
||||
return new_tile
|
||||
|
||||
|
||||
func create_triple_neighbour_tile(atlas_source : TileSetAtlasSource, terrain_id : int, at_pos : Vector2i, num_terrains : int, neighbours : Array[int], collision_polygon_points : PackedVector2Array) -> TileData:
|
||||
var new_tile := create_tile(atlas_source, terrain_id, at_pos, collision_polygon_points)
|
||||
new_tile.set_terrain_peering_bit(neighbours[0], terrain_id)
|
||||
new_tile.set_terrain_peering_bit(neighbours[1], terrain_id)
|
||||
new_tile.set_terrain_peering_bit(neighbours[2], terrain_id)
|
||||
return new_tile
|
||||
|
||||
|
||||
func create_all_sides_neighbour_tile(atlas_source : TileSetAtlasSource, terrain_id : int, at_pos : Vector2i, num_terrains : int, collision_polygon_points : PackedVector2Array) -> TileData:
|
||||
var new_tile := create_tile(atlas_source, terrain_id, at_pos, collision_polygon_points)
|
||||
new_tile.set_terrain_peering_bit(TileSet.CELL_NEIGHBOR_RIGHT_SIDE, terrain_id)
|
||||
new_tile.set_terrain_peering_bit(TileSet.CELL_NEIGHBOR_BOTTOM_SIDE, terrain_id)
|
||||
new_tile.set_terrain_peering_bit(TileSet.CELL_NEIGHBOR_LEFT_SIDE, terrain_id)
|
||||
new_tile.set_terrain_peering_bit(TileSet.CELL_NEIGHBOR_TOP_SIDE, terrain_id)
|
||||
return new_tile
|
||||
|
||||
1
addons/ez_tiles/ez_tiles_dock.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dlwkkly71ed7v
|
||||
211
addons/ez_tiles/ez_tiles_dock.tscn
Normal file
@@ -0,0 +1,211 @@
|
||||
[gd_scene load_steps=22 format=3 uid="uid://ci7u5r1qc0aob"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/ez_tiles_dock.gd" id="1_xlstp"]
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/load_files_button.gd" id="2_8dh4w"]
|
||||
[ext_resource type="PackedScene" uid="uid://1u5mrsioaaon" path="res://addons/ez_tiles/images_container.tscn" id="3_vxumx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cxl4w251e8xgf" path="res://addons/ez_tiles/Save.svg" id="4_2smhm"]
|
||||
[ext_resource type="Texture2D" uid="uid://njliaygubc5c" path="res://addons/ez_tiles/ZoomLess.svg" id="4_k6fm5"]
|
||||
[ext_resource type="Texture2D" uid="uid://bvwx6xu0hp7mv" path="res://addons/ez_tiles/ZoomMore.svg" id="5_0phj1"]
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/preview_panel_container.gd" id="6_3jtbs"]
|
||||
[ext_resource type="Texture2D" uid="uid://d4a0dorx8awbg" path="res://addons/ez_tiles/guide.png" id="9_umpsr"]
|
||||
[ext_resource type="PackedScene" uid="uid://cxnhqxx237lix" path="res://addons/ez_tiles/collision_polygon_templates/inverse_rounded_corners.tscn" id="9_wk7qe"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdtlwd7f6ojk0" path="res://addons/ez_tiles/collision_polygon_templates/rectangles.tscn" id="10_fyd7t"]
|
||||
[ext_resource type="PackedScene" uid="uid://cm4063l3dfehn" path="res://addons/ez_tiles/collision_polygon_templates/rounded_corners.tscn" id="11_cnbjd"]
|
||||
[ext_resource type="PackedScene" uid="uid://lfnyjmnayoqe" path="res://addons/ez_tiles/collision_polygon_templates/slopes.tscn" id="12_x4rcv"]
|
||||
[ext_resource type="PackedScene" uid="uid://ckfu3f4u350bg" path="res://addons/ez_tiles/collision_polygon_templates/slopes_bottom.tscn" id="13_3furq"]
|
||||
[ext_resource type="PackedScene" uid="uid://3gmoem8hi2hi" path="res://addons/ez_tiles/collision_polygon_templates/slopes_top.tscn" id="14_djl3r"]
|
||||
[ext_resource type="PackedScene" uid="uid://ywxhlehtt18d" path="res://addons/ez_tiles/collision_polygon_templates/cactus.tscn" id="15_ll5rq"]
|
||||
[ext_resource type="PackedScene" uid="uid://bp35luh5na8o7" path="res://addons/ez_tiles/collision_polygon_templates/tree.tscn" id="16_02naq"]
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_2svd6"]
|
||||
font_color = Color(0.619608, 0.619608, 0.619608, 1)
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_wkbrg"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3l5ec"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ikc07"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fl86h"]
|
||||
bg_color = Color(0.12549, 0.145098, 0.172549, 1)
|
||||
|
||||
[node name="EZTilesDock" type="HBoxContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_xlstp")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="LoadFilesButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
text = "Import Images"
|
||||
script = ExtResource("2_8dh4w")
|
||||
|
||||
[node name="GenerateTileSetButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Save TileSet"
|
||||
|
||||
[node name="GenerateTileMapLayerButton" type="Button" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Create TileMapLayer"
|
||||
|
||||
[node name="ImagesContainer" parent="VBoxContainer" instance=ExtResource("3_vxumx")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer2"]
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TileSizeLabel" type="Label" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "The tile size is determined automatically from the first image you import. As you can see in the template below, EZ Tiles expects a 6 by 4 grid; the tiles do not have to be square."
|
||||
mouse_filter = 0
|
||||
text = "Tile Size* "
|
||||
label_settings = SubResource("LabelSettings_2svd6")
|
||||
|
||||
[node name="XSizeInputContainer" type="PanelContainer" parent="VBoxContainer2/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(84, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
|
||||
[node name="YSizeInputContainer" type="PanelContainer" parent="VBoxContainer2/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(84, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
|
||||
[node name="HintColorLabel" type="Label" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_filter = 0
|
||||
text = "Hint colors: "
|
||||
label_settings = SubResource("LabelSettings_2svd6")
|
||||
|
||||
[node name="ColorPickerButton" type="ColorPickerButton" parent="VBoxContainer2/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(40, 0)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Overlay Color"
|
||||
color = Color(0, 0, 0, 0.701961)
|
||||
|
||||
[node name="CollisionLayerColorPickerButton" type="ColorPickerButton" parent="VBoxContainer2/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(40, 0)
|
||||
layout_mode = 2
|
||||
tooltip_text = "Collision Polygon color"
|
||||
color = Color(1, 0, 0, 0.392157)
|
||||
|
||||
[node name="GenerateTemplateButton" type="Button" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
disabled = true
|
||||
text = "Save template"
|
||||
icon = ExtResource("4_2smhm")
|
||||
|
||||
[node name="ZoomPreviewLabel" type="Label" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Zoom Preview: "
|
||||
label_settings = SubResource("LabelSettings_2svd6")
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="ZoomOutButton" type="Button" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/normal = SubResource("StyleBoxEmpty_wkbrg")
|
||||
icon = ExtResource("4_k6fm5")
|
||||
|
||||
[node name="ResetZoomButton" type="Button" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/normal = SubResource("StyleBoxEmpty_3l5ec")
|
||||
text = "100%"
|
||||
|
||||
[node name="ZoomInButton" type="Button" parent="VBoxContainer2/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/normal = SubResource("StyleBoxEmpty_ikc07")
|
||||
icon = ExtResource("5_0phj1")
|
||||
|
||||
[node name="PreviewScrollContainer" type="ScrollContainer" parent="VBoxContainer2"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_fl86h")
|
||||
|
||||
[node name="PreviewPanelContainer" type="CenterContainer" parent="VBoxContainer2/PreviewScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource("6_3jtbs")
|
||||
|
||||
[node name="PreviewTextureRect" type="TextureRect" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer"]
|
||||
texture_filter = 1
|
||||
layout_mode = 2
|
||||
expand_mode = 3
|
||||
|
||||
[node name="Rounded Corners (Inverse)" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("9_wk7qe")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Rectangles" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("10_fyd7t")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Rounded Corners" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("11_cnbjd")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Sloped (All Corners)" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("12_x4rcv")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Sloped (Bottom Corners)" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("13_3furq")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Sloped (Top Corners)" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("14_djl3r")]
|
||||
visible = false
|
||||
modulate = Color(0.970763, 0, 0.452533, 0.42)
|
||||
|
||||
[node name="Cactus" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("15_ll5rq")]
|
||||
visible = false
|
||||
|
||||
[node name="Tree" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer/PreviewTextureRect" instance=ExtResource("16_02naq")]
|
||||
visible = false
|
||||
|
||||
[node name="OverlayTextureRect" type="TextureRect" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer"]
|
||||
texture_filter = 1
|
||||
layout_mode = 2
|
||||
expand_mode = 3
|
||||
|
||||
[node name="GuideTextureRect" type="TextureRect" parent="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer"]
|
||||
modulate = Color(1, 1, 1, 0.701961)
|
||||
texture_filter = 1
|
||||
layout_mode = 2
|
||||
texture = ExtResource("9_umpsr")
|
||||
expand_mode = 3
|
||||
|
||||
[connection signal="load_files" from="VBoxContainer/HBoxContainer/LoadFilesButton" to="." method="_on_file_menu_load_files"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/LoadFilesButton" to="VBoxContainer/HBoxContainer/LoadFilesButton" method="_on_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/GenerateTileSetButton" to="." method="_on_generate_tile_set_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/GenerateTileMapLayerButton" to="." method="_on_generate_tile_map_layer_button_pressed"]
|
||||
[connection signal="drop_files" from="VBoxContainer/ImagesContainer" to="." method="_on_images_container_drop_files"]
|
||||
[connection signal="terrain_list_collision_type_selected" from="VBoxContainer/ImagesContainer" to="." method="_on_images_container_terrain_list_collision_type_selected"]
|
||||
[connection signal="terrain_list_entry_removed" from="VBoxContainer/ImagesContainer" to="." method="_on_images_container_terrain_list_entry_removed"]
|
||||
[connection signal="terrain_list_entry_selected" from="VBoxContainer/ImagesContainer" to="." method="_on_images_container_terrain_list_entry_selected"]
|
||||
[connection signal="color_changed" from="VBoxContainer2/HBoxContainer/ColorPickerButton" to="." method="_on_color_picker_button_color_changed"]
|
||||
[connection signal="color_changed" from="VBoxContainer2/HBoxContainer/CollisionLayerColorPickerButton" to="." method="_on_collision_layer_color_picker_button_color_changed"]
|
||||
[connection signal="pressed" from="VBoxContainer2/HBoxContainer/GenerateTemplateButton" to="." method="_on_generate_template_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer2/HBoxContainer/ZoomOutButton" to="." method="_on_zoom_out_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer2/HBoxContainer/ResetZoomButton" to="." method="_on_reset_zoom_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer2/HBoxContainer/ZoomInButton" to="." method="_on_zoom_in_button_pressed"]
|
||||
[connection signal="gui_input" from="VBoxContainer2/PreviewScrollContainer" to="." method="_on_preview_panel_container_gui_input"]
|
||||
[connection signal="drop_files" from="VBoxContainer2/PreviewScrollContainer/PreviewPanelContainer" to="." method="_on_preview_panel_container_drop_files"]
|
||||
381
addons/ez_tiles/ez_tiles_draw/area_draw.gd
Normal file
@@ -0,0 +1,381 @@
|
||||
@tool
|
||||
extends Control
|
||||
class_name AreaDraw
|
||||
|
||||
signal connect_mode_toggled(toggled : bool)
|
||||
|
||||
enum Shape {
|
||||
RECTANGLE,
|
||||
SLOPE_TL,
|
||||
SLOPE_TR,
|
||||
SLOPE_BR,
|
||||
SLOPE_BL,
|
||||
HARD_RECTANGLE,
|
||||
HILL_TOP,
|
||||
HILL_BOTTOM,
|
||||
HILL_RIGHT,
|
||||
HILL_LEFT,
|
||||
ISLAND,
|
||||
RECTANGLE_BASIC
|
||||
}
|
||||
var shape := Shape.RECTANGLE_BASIC
|
||||
var preview_container : GridContainer
|
||||
|
||||
const TL := Vector2i(3, 0)
|
||||
const TR := Vector2i(5, 0)
|
||||
const TM := Vector2i(4, 0)
|
||||
const BL := Vector2i(3, 2)
|
||||
const BR := Vector2i(5, 2)
|
||||
const BM := Vector2i(4, 2)
|
||||
const LM := Vector2i(3, 1)
|
||||
const RM := Vector2i(5, 1)
|
||||
const CM := Vector2i(4, 1)
|
||||
const XX := null
|
||||
|
||||
const SHAPE_MAP := {
|
||||
Shape.RECTANGLE_BASIC: [
|
||||
[CM, CM, CM, CM, CM],
|
||||
[CM, CM, CM, CM, CM],
|
||||
[CM, CM, CM, CM, CM],
|
||||
[CM, CM, CM, CM, CM],
|
||||
[CM, CM, CM, CM, CM],
|
||||
],
|
||||
Shape.RECTANGLE: [
|
||||
[TL, TM, TM, TM, TR],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[BL, BM, BM, BM, BR],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.SLOPE_TL: [
|
||||
[XX, XX, XX, TL, TM],
|
||||
[XX, XX, TL, CM, CM],
|
||||
[XX, TL, CM, CM, CM],
|
||||
[TL, CM, CM, CM, CM],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.SLOPE_TR: [
|
||||
[TM, TR, XX, XX, XX],
|
||||
[CM, CM, TR, XX, XX],
|
||||
[CM, CM, CM, TR, XX],
|
||||
[CM, CM, CM, CM, TR],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.SLOPE_BR: [
|
||||
[CM, CM, CM, CM, BR],
|
||||
[CM, CM, CM, BR, XX],
|
||||
[CM, CM, BR, XX, XX],
|
||||
[BM, BR, XX, XX, XX],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.SLOPE_BL: [
|
||||
[BL, CM, CM, CM, CM],
|
||||
[XX, BL, CM, CM, CM],
|
||||
[XX, XX, BL, CM, CM],
|
||||
[XX, XX, XX, BL, BM],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.HARD_RECTANGLE: [
|
||||
[TM, TM, TM, TM, TM],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[BM, BM, BM, BM, BM],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.HILL_TOP: [
|
||||
[XX, TL, TM, TR, XX],
|
||||
[TL, CM, CM, CM, TR],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.HILL_BOTTOM: [
|
||||
[LM, CM, CM, CM, RM],
|
||||
[LM, CM, CM, CM, RM],
|
||||
[BL, CM, CM, CM, BR],
|
||||
[XX, BL, BM, BR, XX],
|
||||
[XX, XX, XX, XX, XX],
|
||||
],
|
||||
Shape.HILL_LEFT: [
|
||||
[XX, TL, TM, TM, TM],
|
||||
[TL, CM, CM, CM, CM],
|
||||
[LM, CM, CM, CM, CM],
|
||||
[BL, CM, CM, CM, CM],
|
||||
[XX, BL, BM, BM, BM],
|
||||
],
|
||||
Shape.HILL_RIGHT: [
|
||||
[TM, TM, TM, TR, XX],
|
||||
[CM, CM, CM, CM, TR],
|
||||
[CM, CM, CM, CM, RM],
|
||||
[CM, CM, CM, CM, BR],
|
||||
[BM, BM, BM, BR, XX],
|
||||
],
|
||||
Shape.ISLAND: [
|
||||
[XX, TL, TM, TR, XX],
|
||||
[TL, CM, CM, CM, TR],
|
||||
[CM, CM, CM, CM, RM],
|
||||
[BL, CM, CM, CM, BR],
|
||||
[XX, BL, BM, BR, XX],
|
||||
],
|
||||
}
|
||||
|
||||
var cur_terrain_texture : Texture2D
|
||||
var cur_tile_size : Vector2i
|
||||
var connect_terrains_button : Button
|
||||
var tile_button : Button
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
preview_container = find_child("PreviewGridContainer")
|
||||
connect_terrains_button = find_child("ConnectTerrainsButton")
|
||||
tile_button = find_child("TileButton1")
|
||||
|
||||
|
||||
func _get_empty_tex(tile_size : Vector2i) -> Texture2D:
|
||||
var plc_tex := GradientTexture2D.new()
|
||||
plc_tex.width = tile_size.x
|
||||
plc_tex.height = tile_size.y
|
||||
plc_tex.gradient = Gradient.new()
|
||||
plc_tex.gradient.colors = [Color.TRANSPARENT]
|
||||
return plc_tex
|
||||
|
||||
|
||||
func update_grid_preview(terrain_texture : Texture2D = cur_terrain_texture, tile_size : Vector2i = cur_tile_size):
|
||||
tile_button.icon = AtlasTexture.new()
|
||||
tile_button.icon.atlas = terrain_texture
|
||||
tile_button.icon.region = Rect2i(CM * tile_size, tile_size)
|
||||
cur_terrain_texture = terrain_texture
|
||||
cur_tile_size = tile_size
|
||||
var i := 0
|
||||
for y in range(SHAPE_MAP[shape].size()):
|
||||
for x in range(SHAPE_MAP[shape][y].size()):
|
||||
var tex_rect : TextureRect = preview_container.get_child(i)
|
||||
i += 1
|
||||
if not is_instance_valid(tex_rect):
|
||||
continue
|
||||
if SHAPE_MAP[shape][y][x] == null:
|
||||
tex_rect.texture = _get_empty_tex(tile_size)
|
||||
continue
|
||||
var atlas_texture : AtlasTexture = tex_rect.texture if tex_rect.texture is AtlasTexture else AtlasTexture.new()
|
||||
atlas_texture.atlas = terrain_texture
|
||||
atlas_texture.region = Rect2i(SHAPE_MAP[shape][y][x] * tile_size, tile_size)
|
||||
tex_rect.texture = atlas_texture
|
||||
|
||||
|
||||
static func get_cells_rectangle_basic(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var cells := {}
|
||||
for x in range(p1.x, p2.x + 1):
|
||||
for y in range(p1.y, p2.y + 1):
|
||||
cells[Vector2i(x, y)] = CM
|
||||
return cells
|
||||
|
||||
|
||||
static func get_cells_rectangle(p1 : Vector2i, p2 : Vector2i, soft := false) -> Dictionary:
|
||||
var cells := {}
|
||||
for x in range(p1.x, p2.x + 1):
|
||||
for y in range(p1.y, p2.y + 1):
|
||||
if x == p1.x and y == p1.y and soft:
|
||||
cells[Vector2i(x, y)] = TL
|
||||
elif x == p2.x and y == p1.y and soft:
|
||||
cells[Vector2i(x, y)] = TR
|
||||
elif x == p1.x and y == p2.y and soft:
|
||||
cells[Vector2i(x, y)] = BL
|
||||
elif x == p2.x and y == p2.y and soft:
|
||||
cells[Vector2i(x, y)] = BR
|
||||
elif x == p2.x and y > p1.y and y < p2.y:
|
||||
cells[Vector2i(x, y)] = RM
|
||||
elif x == p1.x and y > p1.y and y < p2.y:
|
||||
cells[Vector2i(x, y)] = LM
|
||||
elif y == p2.y:
|
||||
cells[Vector2i(x, y)] = BM
|
||||
elif y == p1.y:
|
||||
cells[Vector2i(x, y)] = TM
|
||||
else:
|
||||
cells[Vector2i(x, y)] = CM
|
||||
return cells
|
||||
|
||||
|
||||
static func get_cells_slope_tl(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var cells := {}
|
||||
var width := p2.x - p1.x + 1
|
||||
var height := p2.y - p1.y + 1
|
||||
var sq_siz := min(width, height)
|
||||
for y : int in range(sq_siz):
|
||||
var range_start = sq_siz - y - 1 if sq_siz - y - 1 > 0 else 0
|
||||
for x in range(range_start, sq_siz):
|
||||
cells[Vector2i(p1.x + x, p1.y + y)] = TL if x == range_start else CM
|
||||
if width > sq_siz:
|
||||
for x in range(sq_siz, width):
|
||||
for y in range(height):
|
||||
cells[Vector2i(p1.x + x, p1.y + y)] = TM if y == 0 else CM
|
||||
else:
|
||||
for y in range(sq_siz, height):
|
||||
for x in range(width):
|
||||
cells[Vector2i(p1.x + x, p1.y + y)] = LM if x == 0 else CM
|
||||
return cells
|
||||
|
||||
static func get_cells_slope_tr(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var cells := {}
|
||||
var width := p2.x - p1.x + 1
|
||||
var height := p2.y - p1.y + 1
|
||||
var sq_siz := min(width, height)
|
||||
for y : int in range(sq_siz):
|
||||
var range_start = sq_siz - y - 1 if sq_siz - y - 1 > 0 else 0
|
||||
for x in range(range_start, sq_siz):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + y)] = TR if x == range_start else CM
|
||||
if width > sq_siz:
|
||||
for x in range(sq_siz, width):
|
||||
for y in range(height):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + y)] = TM if y == 0 else CM
|
||||
else:
|
||||
for y in range(sq_siz, height):
|
||||
for x in range(width):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + y)] = RM if x == 0 else CM
|
||||
return cells
|
||||
|
||||
static func get_cells_slope_bl(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var cells := {}
|
||||
var width := p2.x - p1.x + 1
|
||||
var height := p2.y - p1.y + 1
|
||||
var sq_siz := min(width, height)
|
||||
for y : int in range(sq_siz):
|
||||
var range_start = sq_siz - y - 1 if sq_siz - y - 1 > 0 else 0
|
||||
for x in range(range_start, sq_siz):
|
||||
cells[Vector2i(p1.x + x, p1.y + (height - y - 1))] = BL if x == range_start else CM
|
||||
if width > sq_siz:
|
||||
for x in range(sq_siz, width):
|
||||
for y in range(height):
|
||||
cells[Vector2i(p1.x + x, p1.y + (height - y - 1))] = BM if y == 0 else CM
|
||||
else:
|
||||
for y in range(sq_siz, height):
|
||||
for x in range(width):
|
||||
cells[Vector2i(p1.x + x, p1.y + (height - y - 1))] = LM if x == 0 else CM
|
||||
return cells
|
||||
|
||||
static func get_cells_slope_br(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var cells := {}
|
||||
var width := p2.x - p1.x + 1
|
||||
var height := p2.y - p1.y + 1
|
||||
var sq_siz := min(width, height)
|
||||
for y : int in range(sq_siz):
|
||||
var range_start = sq_siz - y - 1 if sq_siz - y - 1 > 0 else 0
|
||||
for x in range(range_start, sq_siz):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + (height - y - 1))] = BR if x == range_start else CM
|
||||
if width > sq_siz:
|
||||
for x in range(sq_siz, width):
|
||||
for y in range(height):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + (height - y - 1))] = BM if y == 0 else CM
|
||||
else:
|
||||
for y in range(sq_siz, height):
|
||||
for x in range(width):
|
||||
cells[Vector2i(p1.x + (width-x-1), p1.y + (height - y - 1))] = RM if x == 0 else CM
|
||||
return cells
|
||||
|
||||
static func get_cells_hill_top(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var width := p2.x - p1.x
|
||||
var height := p2.y - p1.y
|
||||
var out = get_cells_slope_tl(p1, p1 + Vector2i(ceil(width / 2.0) - 1, height))
|
||||
out.merge(get_cells_slope_tr(p1 + Vector2i(ceil(width / 2.0), 0), p2))
|
||||
return out
|
||||
|
||||
|
||||
static func get_cells_hill_bottom(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var width := p2.x - p1.x
|
||||
var height := p2.y - p1.y
|
||||
var out = get_cells_slope_bl(p1, p1 + Vector2i(ceil(width / 2.0) - 1, height))
|
||||
out.merge(get_cells_slope_br(p1 + Vector2i(ceil(width / 2.0), 0), p2))
|
||||
return out
|
||||
|
||||
static func get_cells_hill_left(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var width := p2.x - p1.x
|
||||
var height := p2.y - p1.y
|
||||
var out = get_cells_slope_tl(p1, p1 + Vector2i(width, ceil(height / 2.0) - 1))
|
||||
out.merge(get_cells_slope_bl(p1 + Vector2i(0, ceil(height / 2.0)), p2))
|
||||
return out
|
||||
|
||||
|
||||
static func get_cells_hill_right(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var width := p2.x - p1.x
|
||||
var height := p2.y - p1.y
|
||||
var out = get_cells_slope_tr(p1, p1 + Vector2i(width, ceil(height / 2.0) - 1))
|
||||
out.merge(get_cells_slope_br(p1 + Vector2i(0, ceil(height / 2.0)), p2))
|
||||
return out
|
||||
|
||||
|
||||
static func get_cells_island(p1 : Vector2i, p2 : Vector2i) -> Dictionary:
|
||||
var width := p2.x - p1.x
|
||||
var height := p2.y - p1.y
|
||||
var out = get_cells_slope_tl(p1, p1 + Vector2i(ceil(width / 2.0) - 1, ceil(height / 2.0) - 1))
|
||||
out.merge(get_cells_slope_tr(p1 + Vector2i(ceil(width / 2.0), 0), Vector2i(p2.x, p1.y + ceil(height / 2.0) - 1)))
|
||||
out.merge(get_cells_slope_bl(p1 + Vector2i(0, ceil(height / 2.0)), Vector2i(p1.x + ceil(width / 2.0) - 1, p2.y)))
|
||||
out.merge(get_cells_slope_br(p1 + Vector2i(ceil(width / 2.0), ceil(height / 2.0)), p2), true)
|
||||
return out
|
||||
|
||||
|
||||
|
||||
func _on_connect_terrains_button_pressed() -> void:
|
||||
connect_mode_toggled.emit(true)
|
||||
|
||||
|
||||
func _on_tile_button_1_pressed() -> void:
|
||||
connect_mode_toggled.emit(false)
|
||||
|
||||
|
||||
func _on_rectangles_button_pressed() -> void:
|
||||
shape = Shape.RECTANGLE
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_slopes_tl_button_pressed() -> void:
|
||||
shape = Shape.SLOPE_TL
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_slopes_tr_button_pressed() -> void:
|
||||
shape = Shape.SLOPE_TR
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_slopes_br_button_pressed() -> void:
|
||||
shape = Shape.SLOPE_BR
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_slopes_bl_button_pressed() -> void:
|
||||
shape = Shape.SLOPE_BL
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_hard_rectangles_button_pressed() -> void:
|
||||
shape = Shape.HARD_RECTANGLE
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_hill_top_button_pressed() -> void:
|
||||
shape = Shape.HILL_TOP
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_hill_bottom_button_pressed() -> void:
|
||||
shape = Shape.HILL_BOTTOM
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_hill_left_button_pressed() -> void:
|
||||
shape = Shape.HILL_LEFT
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_hill_right_button_pressed() -> void:
|
||||
shape = Shape.HILL_RIGHT
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_island_button_pressed() -> void:
|
||||
shape = Shape.ISLAND
|
||||
update_grid_preview()
|
||||
|
||||
|
||||
func _on_rectangles_basic_button_pressed() -> void:
|
||||
shape = Shape.RECTANGLE_BASIC
|
||||
update_grid_preview()
|
||||
1
addons/ez_tiles/ez_tiles_draw/area_draw.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b87n11kajm34
|
||||
389
addons/ez_tiles/ez_tiles_draw/area_draw.tscn
Normal file
@@ -0,0 +1,389 @@
|
||||
[gd_scene load_steps=18 format=3 uid="uid://bitqwiwmn3s0r"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/ez_tiles_draw/area_draw.gd" id="1_ee3lv"]
|
||||
[ext_resource type="Texture2D" uid="uid://dooqg3fapf15x" path="res://addons/ez_tiles/ez_tiles_draw/icons/Rectangle.svg" id="2_0c16j"]
|
||||
[ext_resource type="Texture2D" uid="uid://xetkyyw6y8ff" path="res://addons/ez_tiles/ez_tiles_draw/icons/RectangleSoft.svg" id="2_lfgj6"]
|
||||
[ext_resource type="Texture2D" uid="uid://behgjlyeldpdv" path="res://addons/ez_tiles/ez_tiles_draw/icons/SlopeTL.svg" id="3_j68q8"]
|
||||
[ext_resource type="Texture2D" uid="uid://dbjof7q6tq4d6" path="res://addons/ez_tiles/ez_tiles_draw/icons/SlopeTR.svg" id="4_703fo"]
|
||||
[ext_resource type="Texture2D" uid="uid://7crpolmxjj2r" path="res://addons/ez_tiles/ez_tiles_draw/icons/SlopeBR.svg" id="5_f5qx1"]
|
||||
[ext_resource type="Texture2D" uid="uid://clpg11r4kdy8v" path="res://addons/ez_tiles/ez_tiles_draw/icons/SlopeBL.svg" id="6_r38ls"]
|
||||
[ext_resource type="Texture2D" uid="uid://c7u17hgk6jvet" path="res://addons/ez_tiles/ez_tiles_draw/icons/TerrainConnect.svg" id="8_05x1s"]
|
||||
[ext_resource type="Texture2D" uid="uid://cri2mdk3hr6s1" path="res://addons/ez_tiles/ez_tiles_draw/icons/HillT.svg" id="8_trf31"]
|
||||
[ext_resource type="Texture2D" uid="uid://dntkx0h8qim1n" path="res://addons/ez_tiles/ez_tiles_draw/icons/HillB.svg" id="9_abenc"]
|
||||
[ext_resource type="Texture2D" uid="uid://dpmrju1gvdr16" path="res://addons/ez_tiles/ez_tiles_draw/icons/HillL.svg" id="10_dsu38"]
|
||||
[ext_resource type="Texture2D" uid="uid://dv855gccwqgu" path="res://addons/ez_tiles/ez_tiles_draw/icons/HillR.svg" id="11_nyydi"]
|
||||
[ext_resource type="Texture2D" uid="uid://frudvs8p10ea" path="res://addons/ez_tiles/ez_tiles_draw/icons/Island.svg" id="12_qvlkp"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_51lt4"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 10.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 10.0
|
||||
bg_color = Color(0.211765, 0.239216, 0.290196, 1)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ehgjy"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 10.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 10.0
|
||||
bg_color = Color(0.12549, 0.145098, 0.172549, 1)
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_82nql"]
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_3cdnu"]
|
||||
|
||||
[node name="AreaDraw" type="PanelContainer"]
|
||||
clip_children = 2
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_51lt4")
|
||||
script = ExtResource("1_ee3lv")
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Panel2" type="Panel" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_stretch_ratio = 0.3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_ehgjy")
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="HBoxContainer/Panel2"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Panel2/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="RectanglesBasicButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_pressed = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Rectangle"
|
||||
icon = ExtResource("2_0c16j")
|
||||
alignment = 0
|
||||
|
||||
[node name="RectanglesButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Rectangle (Soft)"
|
||||
icon = ExtResource("2_lfgj6")
|
||||
alignment = 0
|
||||
|
||||
[node name="HardRectanglesButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Rectangle (Hard)"
|
||||
icon = ExtResource("2_0c16j")
|
||||
alignment = 0
|
||||
|
||||
[node name="SlopesTLButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Slope (Top Left)"
|
||||
icon = ExtResource("3_j68q8")
|
||||
alignment = 0
|
||||
|
||||
[node name="SlopesTRButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Slope (Top Right)"
|
||||
icon = ExtResource("4_703fo")
|
||||
alignment = 0
|
||||
|
||||
[node name="SlopesBRButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Slope (Bottom Right)"
|
||||
icon = ExtResource("5_f5qx1")
|
||||
alignment = 0
|
||||
|
||||
[node name="SlopesBLButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Slope (Bottom Left)"
|
||||
icon = ExtResource("6_r38ls")
|
||||
alignment = 0
|
||||
|
||||
[node name="HillTopButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Hill (Top)"
|
||||
icon = ExtResource("8_trf31")
|
||||
alignment = 0
|
||||
|
||||
[node name="HillBottomButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Hill (Bottom)"
|
||||
icon = ExtResource("9_abenc")
|
||||
alignment = 0
|
||||
|
||||
[node name="HillLeftButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Hill (Left)"
|
||||
icon = ExtResource("10_dsu38")
|
||||
alignment = 0
|
||||
|
||||
[node name="HillRightButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Hill (Right)"
|
||||
icon = ExtResource("11_nyydi")
|
||||
alignment = 0
|
||||
|
||||
[node name="IslandButton" type="Button" parent="HBoxContainer/Panel2/ScrollContainer/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_82nql")
|
||||
text = "Island"
|
||||
icon = ExtResource("12_qvlkp")
|
||||
alignment = 0
|
||||
|
||||
[node name="Panel" type="Panel" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_ehgjy")
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="HBoxContainer/Panel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="PreviewGridContainer" type="GridContainer" parent="HBoxContainer/Panel/ScrollContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 6
|
||||
size_flags_vertical = 6
|
||||
theme_override_constants/h_separation = 0
|
||||
theme_override_constants/v_separation = 0
|
||||
columns = 5
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect2" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect3" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect4" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect5" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect6" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect7" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect8" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect9" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect10" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect11" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect12" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect13" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect14" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect15" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect16" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect17" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect18" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect19" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect20" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect21" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect22" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect23" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect24" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="TextureRect25" type="TextureRect" parent="HBoxContainer/Panel/ScrollContainer/PreviewGridContainer"]
|
||||
custom_minimum_size = Vector2(32, 32)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 8
|
||||
size_flags_vertical = 8
|
||||
|
||||
[node name="HFlowContainer" type="HFlowContainer" parent="HBoxContainer/Panel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 10
|
||||
anchor_right = 1.0
|
||||
offset_bottom = 84.0
|
||||
grow_horizontal = 2
|
||||
theme_override_constants/h_separation = 5
|
||||
|
||||
[node name="ConnectTerrainsButton" type="Button" parent="HBoxContainer/Panel/HFlowContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_3cdnu")
|
||||
icon = ExtResource("8_05x1s")
|
||||
|
||||
[node name="TileButton1" type="Button" parent="HBoxContainer/Panel/HFlowContainer"]
|
||||
custom_minimum_size = Vector2(40, 40)
|
||||
layout_mode = 2
|
||||
theme_override_colors/icon_normal_color = Color(0.556863, 0.556863, 0.556863, 1)
|
||||
theme_override_colors/icon_pressed_color = Color(1, 1, 1, 1)
|
||||
theme_override_colors/icon_hover_color = Color(1, 1, 1, 1)
|
||||
toggle_mode = true
|
||||
button_pressed = true
|
||||
button_group = SubResource("ButtonGroup_3cdnu")
|
||||
flat = true
|
||||
icon_alignment = 1
|
||||
expand_icon = true
|
||||
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/RectanglesBasicButton" to="." method="_on_rectangles_basic_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/RectanglesButton" to="." method="_on_rectangles_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/HardRectanglesButton" to="." method="_on_hard_rectangles_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/SlopesTLButton" to="." method="_on_slopes_tl_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/SlopesTRButton" to="." method="_on_slopes_tr_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/SlopesBRButton" to="." method="_on_slopes_br_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/SlopesBLButton" to="." method="_on_slopes_bl_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/HillTopButton" to="." method="_on_hill_top_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/HillBottomButton" to="." method="_on_hill_bottom_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/HillLeftButton" to="." method="_on_hill_left_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/HillRightButton" to="." method="_on_hill_right_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel2/ScrollContainer/VBoxContainer/IslandButton" to="." method="_on_island_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel/HFlowContainer/ConnectTerrainsButton" to="." method="_on_connect_terrains_button_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/Panel/HFlowContainer/TileButton1" to="." method="_on_tile_button_1_pressed"]
|
||||
64
addons/ez_tiles/ez_tiles_draw/brush_draw.gd
Normal file
@@ -0,0 +1,64 @@
|
||||
@tool
|
||||
extends PanelContainer
|
||||
class_name BrushDraw
|
||||
|
||||
var brush_size : int = 1
|
||||
var TileButtonScene : PackedScene
|
||||
|
||||
enum BrushShape {CIRCLE, SQUARE}
|
||||
signal connect_mode_toggled(toggled : bool)
|
||||
|
||||
var tile_coords := Vector2i.ZERO
|
||||
var connect_terrains_button : Button
|
||||
var brush_shape := BrushShape.SQUARE
|
||||
var button_container : Control
|
||||
var first_tile_button : Button
|
||||
|
||||
func _enter_tree() -> void:
|
||||
TileButtonScene = preload("res://addons/ez_tiles/ez_tiles_draw/tile_button.tscn")
|
||||
connect_terrains_button = find_child("ConnectTerrainsButton")
|
||||
connect_terrains_button.pressed.connect(func(): connect_mode_toggled.emit(true))
|
||||
button_container = find_child("TileButtonContainer")
|
||||
|
||||
|
||||
func _on_tile_button_pressed(coords : Vector2i):
|
||||
tile_coords = coords
|
||||
connect_mode_toggled.emit(false)
|
||||
|
||||
|
||||
func _on_range_slider_with_line_edit_value_changed(value: int) -> void:
|
||||
brush_size = value
|
||||
|
||||
|
||||
func update_tile_buttons(tileset_source : TileSetAtlasSource, tile_size : Vector2i):
|
||||
first_tile_button = null
|
||||
for c in button_container.get_children():
|
||||
if c is TileButton:
|
||||
c.queue_free()
|
||||
|
||||
var terrain_texture := tileset_source.texture
|
||||
for idx in range(tileset_source.get_tiles_count()):
|
||||
var pos := tileset_source.get_tile_id(idx)
|
||||
var tile_button : TileButton = TileButtonScene.instantiate()
|
||||
tile_button.clicked.connect(_on_tile_button_pressed)
|
||||
tile_button.coords = pos
|
||||
var texture := AtlasTexture.new()
|
||||
tile_button.icon = texture
|
||||
tile_button.icon.atlas = terrain_texture
|
||||
tile_button.icon.region = Rect2i(pos * tile_size, tile_size)
|
||||
button_container.add_child(tile_button)
|
||||
if not is_instance_valid(first_tile_button):
|
||||
first_tile_button = tile_button
|
||||
first_tile_button.button_pressed = true
|
||||
|
||||
|
||||
func toggle_off_connected_brush() -> void:
|
||||
if is_instance_valid(first_tile_button):
|
||||
first_tile_button.button_pressed = true
|
||||
|
||||
func _on_brush_shape_square_button_pressed() -> void:
|
||||
brush_shape = BrushShape.SQUARE
|
||||
|
||||
|
||||
func _on_brush_shape_circle_button_pressed() -> void:
|
||||
brush_shape = BrushShape.CIRCLE
|
||||
1
addons/ez_tiles/ez_tiles_draw/brush_draw.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dap4bbli16fp6
|
||||
110
addons/ez_tiles/ez_tiles_draw/brush_draw.tscn
Normal file
@@ -0,0 +1,110 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://is8n20fchd2q"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/ez_tiles_draw/brush_draw.gd" id="1_qrfye"]
|
||||
[ext_resource type="PackedScene" uid="uid://chi7cp6qp6vki" path="res://addons/ez_tiles/ez_tiles_draw/range_slider_with_line_edit.tscn" id="2_g17n4"]
|
||||
[ext_resource type="Texture2D" uid="uid://bps21xe8h1m2p" path="res://addons/ez_tiles/ez_tiles_draw/icons/Square.svg" id="3_eksbm"]
|
||||
[ext_resource type="Texture2D" uid="uid://c7u17hgk6jvet" path="res://addons/ez_tiles/ez_tiles_draw/icons/TerrainConnect.svg" id="3_lefkq"]
|
||||
[ext_resource type="Texture2D" uid="uid://bb3xfpcrmc8gc" path="res://addons/ez_tiles/ez_tiles_draw/icons/Circle.svg" id="4_04hac"]
|
||||
[ext_resource type="ButtonGroup" uid="uid://dtpx52d0n4ff1" path="res://addons/ez_tiles/ez_tiles_draw/brush_tile_button_group.tres" id="5_wkw32"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gwowe"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 10.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 10.0
|
||||
bg_color = Color(0.211765, 0.239216, 0.290196, 1)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qgks4"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 2.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 2.0
|
||||
bg_color = Color(0.12549, 0.145098, 0.172549, 1)
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_461xu"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r4hko"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 10.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 10.0
|
||||
bg_color = Color(0.12549, 0.145098, 0.172549, 1)
|
||||
|
||||
[node name="BrushDraw" type="PanelContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_gwowe")
|
||||
script = ExtResource("1_qrfye")
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"]
|
||||
custom_minimum_size = Vector2(0, 40)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_qgks4")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/PanelContainer"]
|
||||
custom_minimum_size = Vector2(0, 35)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 0
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/PanelContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Brush Size"
|
||||
|
||||
[node name="RangeSliderWithLineEdit" parent="VBoxContainer/PanelContainer/HBoxContainer" instance=ExtResource("2_g17n4")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label2" type="Label" parent="VBoxContainer/PanelContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Shape"
|
||||
|
||||
[node name="BrushShapeSquareButton" type="Button" parent="VBoxContainer/PanelContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(32, 0)
|
||||
layout_mode = 2
|
||||
toggle_mode = true
|
||||
button_pressed = true
|
||||
button_group = SubResource("ButtonGroup_461xu")
|
||||
icon = ExtResource("3_eksbm")
|
||||
icon_alignment = 1
|
||||
|
||||
[node name="BrushShapeCircleButton" type="Button" parent="VBoxContainer/PanelContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(32, 0)
|
||||
layout_mode = 2
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_461xu")
|
||||
icon = ExtResource("4_04hac")
|
||||
icon_alignment = 1
|
||||
|
||||
[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="PanelContainer2" type="PanelContainer" parent="VBoxContainer/ScrollContainer"]
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_r4hko")
|
||||
|
||||
[node name="TileButtonContainer" type="HFlowContainer" parent="VBoxContainer/ScrollContainer/PanelContainer2"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 5
|
||||
|
||||
[node name="ConnectTerrainsButton" type="Button" parent="VBoxContainer/ScrollContainer/PanelContainer2/TileButtonContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 0
|
||||
toggle_mode = true
|
||||
button_group = ExtResource("5_wkw32")
|
||||
icon = ExtResource("3_lefkq")
|
||||
|
||||
[connection signal="value_changed" from="VBoxContainer/PanelContainer/HBoxContainer/RangeSliderWithLineEdit" to="." method="_on_range_slider_with_line_edit_value_changed"]
|
||||
[connection signal="pressed" from="VBoxContainer/PanelContainer/HBoxContainer/BrushShapeSquareButton" to="." method="_on_brush_shape_square_button_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/PanelContainer/HBoxContainer/BrushShapeCircleButton" to="." method="_on_brush_shape_circle_button_pressed"]
|
||||
@@ -0,0 +1,5 @@
|
||||
[gd_resource type="ButtonGroup" format=3 uid="uid://dtpx52d0n4ff1"]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = false
|
||||
allow_unpress = true
|
||||
694
addons/ez_tiles/ez_tiles_draw/ez_tiles_draw_dock.gd
Normal file
@@ -0,0 +1,694 @@
|
||||
@tool
|
||||
extends Control
|
||||
class_name EZTilesDrawDock
|
||||
|
||||
enum NeighbourMode {OVERWRITE, PEERING_BIT, INCLUSIVE, EXCLUSIVE}
|
||||
enum DragMode {BRUSH, AREA, STAMP, SNAPSHOT}
|
||||
|
||||
const EZ_TILE_CUSTOM_META := "_is_ez_tiles_generated"
|
||||
|
||||
var StampScene : PackedScene
|
||||
var StampTileScene : PackedScene
|
||||
var TerrainPickerEntryScene : PackedScene
|
||||
var under_edit : TileMapLayer = null
|
||||
var hint_label : Label
|
||||
var main_container : Control
|
||||
var default_editor_check_button : Button
|
||||
var terrain_list_container : VBoxContainer
|
||||
var drag_start := Vector2i.ZERO
|
||||
var drag_mode := DragMode.BRUSH
|
||||
|
||||
var remembered_cells := {}
|
||||
var viewport_has_mouse := false
|
||||
var lmb_is_down := false
|
||||
var rmb_is_down := false
|
||||
var current_terrain_id := 0
|
||||
var neighbour_mode := NeighbourMode.OVERWRITE
|
||||
var suppress_preview := false
|
||||
var using_eraser := false
|
||||
var undo_redo : EditorUndoRedoManager
|
||||
|
||||
var area_draw_tab : AreaDraw
|
||||
var brush_tab : BrushDraw
|
||||
var stamp_tab : StampTab
|
||||
|
||||
var area_draw_toggle_button : Button
|
||||
var brush_draw_toggle_button : Button
|
||||
var stamp_draw_toggle_button : Button
|
||||
var select_snap_shot_button : Button
|
||||
var eraser_button : Button
|
||||
|
||||
var connect_toggle_button : Button
|
||||
var connect_icon_connected : Texture2D
|
||||
var connect_icon_disconnected : Texture2D
|
||||
var neighbor_mode_option_button : OptionButton
|
||||
|
||||
const EZ_NEIGHBOUR_MAP := {
|
||||
"....O...." : Vector2i.ZERO,
|
||||
"....OX..." : Vector2i(0,3),
|
||||
"....O..X." : Vector2i(1,0),
|
||||
".X..O..X." : Vector2i(1,1),
|
||||
".X..O...." : Vector2i(1,2),
|
||||
"...XOX..." : Vector2i(1,3),
|
||||
"...XO...." : Vector2i(2,3),
|
||||
"....OX.X." : Vector2i(3,0),
|
||||
".X..OX.X." : Vector2i(3,1),
|
||||
".X..OX..." : Vector2i(3,2),
|
||||
"...XOX.X." : Vector2i(4,0),
|
||||
".X.XOX.X." : Vector2i(4,1),
|
||||
".X.XOX..." : Vector2i(4,2),
|
||||
"...XO..X." : Vector2i(5,0),
|
||||
".X.XO..X." : Vector2i(5,1),
|
||||
".X.XO...." : Vector2i(5,2)
|
||||
}
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
StampScene = preload("res://addons/ez_tiles/ez_tiles_draw/stamp.tscn")
|
||||
StampTileScene = preload("res://addons/ez_tiles/ez_tiles_draw/stamp_tile.tscn")
|
||||
TerrainPickerEntryScene = preload("res://addons/ez_tiles/ez_tiles_draw/terrain_picker_entry.tscn")
|
||||
hint_label = find_child("HintLabel")
|
||||
main_container = find_child("MainVBoxContainer")
|
||||
default_editor_check_button = find_child("DefaultEditorCheckButton")
|
||||
terrain_list_container = find_child("TerrainListVboxContainer")
|
||||
area_draw_tab = find_child("Area Draw")
|
||||
brush_tab = find_child("Brush Draw")
|
||||
stamp_tab = find_child("Stamp")
|
||||
area_draw_toggle_button = find_child("AreaDrawButton")
|
||||
brush_draw_toggle_button = find_child("BrushDrawButton")
|
||||
stamp_draw_toggle_button = find_child("StampDrawButton")
|
||||
select_snap_shot_button = find_child("SelectSnapShotButton")
|
||||
eraser_button = find_child("EraserButton")
|
||||
connect_toggle_button = find_child("ConnectingToggle")
|
||||
connect_icon_disconnected = preload("res://addons/ez_tiles/ez_tiles_draw/icons/Connect1.svg")
|
||||
connect_icon_connected = preload("res://addons/ez_tiles/ez_tiles_draw/icons/Connect2.svg")
|
||||
neighbor_mode_option_button = find_child("NeighbourModeOptionButton")
|
||||
|
||||
|
||||
func activate(node : TileMapLayer):
|
||||
current_terrain_id = 0
|
||||
remembered_cells = {}
|
||||
under_edit = node
|
||||
hint_label.hide()
|
||||
main_container.show()
|
||||
|
||||
for child in terrain_list_container.get_children():
|
||||
if is_instance_valid(child):
|
||||
child.queue_free()
|
||||
|
||||
if under_edit.tile_set.get_terrain_sets_count() > 0:
|
||||
for terrain_id in range(under_edit.tile_set.get_terrains_count(0)):
|
||||
var entry : TerrainPickerEntry = TerrainPickerEntryScene.instantiate()
|
||||
entry.terrain_name = under_edit.tile_set.get_terrain_name(0, terrain_id)
|
||||
entry.texture_resource = _get_first_texture_for_terrain(terrain_id)
|
||||
entry.terrain_id = terrain_id
|
||||
entry.selected.connect(_on_terrain_selected)
|
||||
terrain_list_container.add_child(entry)
|
||||
area_draw_tab.update_grid_preview(
|
||||
_get_first_texture_for_terrain(current_terrain_id),
|
||||
under_edit.tile_set.tile_size)
|
||||
|
||||
brush_tab.update_tile_buttons(
|
||||
_get_first_tileset_source_for_terrain(current_terrain_id),
|
||||
under_edit.tile_set.tile_size)
|
||||
|
||||
if under_edit.has_meta(EZ_TILE_CUSTOM_META):
|
||||
default_editor_check_button.button_pressed = true
|
||||
else:
|
||||
default_editor_check_button.button_pressed = false
|
||||
|
||||
stamp_tab.show_stamps_for_tile_map_layer(under_edit)
|
||||
|
||||
|
||||
func _get_first_source_id_for_terrain(terrain_id : int) -> int:
|
||||
for i in range(under_edit.tile_set.get_source_count()):
|
||||
var source_id := under_edit.tile_set.get_source_id(i)
|
||||
var source : TileSetAtlasSource = under_edit.tile_set.get_source(source_id)
|
||||
if source.get_tiles_count() > 0:
|
||||
for j in source.get_tiles_count():
|
||||
var tile_data = source.get_tile_data(source.get_tile_id(j), 0)
|
||||
if tile_data.terrain == terrain_id:
|
||||
return source_id
|
||||
printerr("Terrain %d not found in tile set sources: " % terrain_id)
|
||||
return terrain_id # assume equal in case of inconsistent data
|
||||
|
||||
|
||||
func _get_first_texture_for_terrain(terrain_id : int) -> Texture2D:
|
||||
var source := _get_first_tileset_source_for_terrain(terrain_id)
|
||||
if is_instance_valid(source):
|
||||
return source.texture
|
||||
return null
|
||||
|
||||
|
||||
func _get_first_tileset_source_for_terrain(terrain_id : int) -> TileSetAtlasSource:
|
||||
for i in range(under_edit.tile_set.get_source_count()):
|
||||
var source_id := under_edit.tile_set.get_source_id(i)
|
||||
var source : TileSetAtlasSource = under_edit.tile_set.get_source(source_id)
|
||||
if source.get_tiles_count() > 0:
|
||||
for j in source.get_tiles_count():
|
||||
var tile_data = source.get_tile_data(source.get_tile_id(j), 0)
|
||||
if tile_data.terrain == terrain_id:
|
||||
return source
|
||||
printerr("Terrain %d not found in tile set sources: " % terrain_id)
|
||||
return null
|
||||
|
||||
|
||||
func deactivate():
|
||||
under_edit = null
|
||||
hint_label.show()
|
||||
main_container.hide()
|
||||
|
||||
|
||||
func _on_terrain_selected(id : int) -> void:
|
||||
current_terrain_id = id
|
||||
area_draw_tab.update_grid_preview(
|
||||
_get_first_texture_for_terrain(id), under_edit.tile_set.tile_size)
|
||||
brush_tab.update_tile_buttons(
|
||||
_get_first_tileset_source_for_terrain(id), under_edit.tile_set.tile_size)
|
||||
if neighbour_mode != NeighbourMode.OVERWRITE:
|
||||
brush_tab.connect_terrains_button.button_pressed = true
|
||||
|
||||
if stamp_tab.visible:
|
||||
brush_tab.show()
|
||||
|
||||
|
||||
func _place_back_remembered_cells() -> void:
|
||||
for prev_pos in remembered_cells.keys():
|
||||
if remembered_cells[prev_pos][0] > -1:
|
||||
under_edit.set_cell(prev_pos, remembered_cells[prev_pos][0], remembered_cells[prev_pos][1])
|
||||
else:
|
||||
under_edit.erase_cell(prev_pos)
|
||||
remembered_cells.clear()
|
||||
|
||||
|
||||
func _remember_cell(tile_pos : Vector2i) -> void:
|
||||
if under_edit.get_cell_source_id(tile_pos) > -1:
|
||||
remembered_cells[tile_pos] = [under_edit.get_cell_source_id(tile_pos), under_edit.get_cell_atlas_coords(tile_pos)]
|
||||
else:
|
||||
remembered_cells[tile_pos] = [-1, Vector2i.ZERO]
|
||||
|
||||
|
||||
func _take_snapshot(drag_end : Vector2i) -> void:
|
||||
var stamp : Stamp = StampScene.instantiate()
|
||||
var from_x := drag_start.x if drag_start.x < drag_end.x else drag_end.x
|
||||
var to_x := drag_start.x if drag_start.x > drag_end.x else drag_end.x
|
||||
var from_y := drag_start.y if drag_start.y < drag_end.y else drag_end.y
|
||||
var to_y := drag_start.y if drag_start.y > drag_end.y else drag_end.y
|
||||
stamp.stamp_size = Vector2i(to_x - from_x + 1, to_y - from_y + 1)
|
||||
var stamp_tile_size := Vector2(under_edit.tile_set.tile_size)
|
||||
while (stamp.stamp_size.x * stamp_tile_size.x) > 512:
|
||||
stamp_tile_size *= 0.5
|
||||
|
||||
for y in range(from_y, to_y + 1):
|
||||
for x in range(from_x, to_x + 1):
|
||||
var tile_pos := Vector2i(x, y)
|
||||
var stamp_tile : TextureRect = StampTileScene.instantiate()
|
||||
stamp_tile.custom_minimum_size = Vector2i(stamp_tile_size)
|
||||
if under_edit.get_cell_source_id(tile_pos) > -1:
|
||||
stamp.stamp_cell_data[Vector2i(x - from_x, y - from_y)] = [under_edit.get_cell_source_id(tile_pos), under_edit.get_cell_atlas_coords(tile_pos)]
|
||||
stamp_tile.texture = AtlasTexture.new()
|
||||
stamp_tile.texture.atlas = under_edit.tile_set.get_source(under_edit.get_cell_source_id(tile_pos)).texture
|
||||
stamp_tile.texture.region = Rect2i(
|
||||
under_edit.get_cell_atlas_coords(tile_pos) * under_edit.tile_set.tile_size,
|
||||
under_edit.tile_set.tile_size)
|
||||
else:
|
||||
stamp.stamp_cell_data[Vector2i(x - from_x, y - from_y)] = [-1, Vector2i.ZERO]
|
||||
stamp.tile_textures.append(stamp_tile)
|
||||
stamp.tile_map_layer_under_edit = under_edit
|
||||
stamp_tab.add_stamp(stamp)
|
||||
|
||||
|
||||
func _grow_cells(area_cells : Array, diagonal := false, base_dir := Vector2i.ZERO) -> Array:
|
||||
var expanded_region := {}
|
||||
for cell in area_cells:
|
||||
if cell not in expanded_region:
|
||||
expanded_region[cell] = true
|
||||
for neighour in _get_neighbors(cell, diagonal, base_dir):
|
||||
if neighour not in expanded_region:
|
||||
expanded_region[neighour] = true
|
||||
return expanded_region.keys()
|
||||
|
||||
func _straighten_line_direction(from : Vector2i, to : Vector2i) -> Vector2:
|
||||
var angle := fmod(rad_to_deg(Vector2(from).angle_to_point(Vector2(to))), 360)
|
||||
if angle < 0:
|
||||
angle += 360
|
||||
match(snappedi(angle, 45)):
|
||||
45:
|
||||
return Vector2(0.7071, 0.7071)
|
||||
90:
|
||||
return Vector2.DOWN
|
||||
135:
|
||||
return Vector2(-0.7071, 0.7071)
|
||||
180:
|
||||
return Vector2.LEFT
|
||||
225:
|
||||
return Vector2(-0.7071, -0.7071)
|
||||
270:
|
||||
return Vector2.UP
|
||||
315:
|
||||
return Vector2(0.7071, -0.7071)
|
||||
0, 360, _:
|
||||
return Vector2.RIGHT
|
||||
|
||||
func _get_brush_sized_line(from : Vector2i, cell : Dictionary) -> Dictionary:
|
||||
var to := cell.keys()[0] as Vector2i
|
||||
var direction = _straighten_line_direction(from, to)
|
||||
var cur := Vector2(from)
|
||||
var out := {}
|
||||
for _i in range(floor(from.distance_to(to))):
|
||||
cur += direction
|
||||
out.merge(_get_brush_for_cell({Vector2i(cur.floor()): cell.values()[0]}))
|
||||
return out
|
||||
|
||||
|
||||
func _get_brush_for_cell(cell : Dictionary) -> Dictionary:
|
||||
if brush_tab.brush_size == 1:
|
||||
return cell
|
||||
|
||||
var out := Dictionary()
|
||||
var cur_keys := []
|
||||
if brush_tab.brush_shape == BrushDraw.BrushShape.SQUARE:
|
||||
var middle : Vector2i = cell.keys()[0] + Vector2i.ONE
|
||||
for x in range(middle.x - ceil(brush_tab.brush_size / 2.0), middle.x + floor(brush_tab.brush_size / 2.0)):
|
||||
for y in range(middle.y - ceil(brush_tab.brush_size / 2.0), middle.y + floor(brush_tab.brush_size / 2.0)):
|
||||
cur_keys.append(Vector2i(x, y))
|
||||
elif brush_tab.brush_shape == BrushDraw.BrushShape.CIRCLE:
|
||||
var m : Vector2i = cell.keys()[0]
|
||||
var sz := brush_tab.brush_size
|
||||
for x in range(m.x - sz - 1, m.x + sz + 1):
|
||||
for y in range(m.y - sz - 1, m.y + sz + 1):
|
||||
if Vector2i(x, y).distance_to(m) <= sz * 0.67:
|
||||
cur_keys.append(Vector2i(x, y))
|
||||
for k in cur_keys:
|
||||
out[k] = cell.values()[0]
|
||||
return out
|
||||
|
||||
|
||||
func _get_sized_brush(cell : Dictionary) -> Dictionary:
|
||||
if Input.is_key_pressed(KEY_SHIFT):
|
||||
return _get_brush_sized_line(drag_start, cell)
|
||||
|
||||
return _get_brush_for_cell(cell)
|
||||
|
||||
|
||||
func _get_stamp_placement_area(stamp : Stamp, tile_pos : Vector2i, include_empty_cells := false) -> Array[Vector2i]:
|
||||
var out : Array[Vector2i] = []
|
||||
for stamp_tile_pos in stamp.stamp_cell_data.keys():
|
||||
if stamp.stamp_cell_data[stamp_tile_pos][0] > -1 or include_empty_cells:
|
||||
out.append(tile_pos + stamp_tile_pos)
|
||||
|
||||
return out
|
||||
|
||||
|
||||
func _place_stamp_preview(stamp : Stamp, cursor_tile_pos : Vector2i) -> void:
|
||||
var overwrite_with_empty_cells := Input.is_key_pressed(KEY_SHIFT)
|
||||
var stamp_plc_area := _get_stamp_placement_area(stamp, cursor_tile_pos, overwrite_with_empty_cells)
|
||||
var all_cells = _grow_cells(stamp_plc_area, neighbour_mode == NeighbourMode.PEERING_BIT)
|
||||
for tile_pos in all_cells:
|
||||
_remember_cell(tile_pos)
|
||||
|
||||
for stamp_tile_pos in stamp.stamp_cell_data.keys():
|
||||
if stamp.stamp_cell_data[stamp_tile_pos][0] > -1:
|
||||
under_edit.set_cell(cursor_tile_pos + stamp_tile_pos, stamp.stamp_cell_data[stamp_tile_pos][0],
|
||||
stamp.stamp_cell_data[stamp_tile_pos][1])
|
||||
elif overwrite_with_empty_cells:
|
||||
under_edit.erase_cell(cursor_tile_pos + stamp_tile_pos)
|
||||
if neighbour_mode != NeighbourMode.PEERING_BIT and neighbour_mode != NeighbourMode.OVERWRITE:
|
||||
_update_atlas_coords(_get_neighbors(cursor_tile_pos + stamp_tile_pos))
|
||||
|
||||
if neighbour_mode == NeighbourMode.PEERING_BIT:
|
||||
for tile_pos in stamp_plc_area:
|
||||
under_edit.set_cells_terrain_connect([tile_pos], 0, under_edit.get_cell_source_id(tile_pos), true)
|
||||
|
||||
|
||||
func _place_cells_preview(cells_in_current_draw_area : Dictionary, terrain_id : int) -> void:
|
||||
var all_cells := _grow_cells(cells_in_current_draw_area.keys(), neighbour_mode == NeighbourMode.PEERING_BIT)
|
||||
for tile_pos in all_cells:
|
||||
_remember_cell(tile_pos)
|
||||
|
||||
for tile_pos in cells_in_current_draw_area:
|
||||
if terrain_id < 0:
|
||||
under_edit.erase_cell(tile_pos)
|
||||
else:
|
||||
var coord : Vector2i = (
|
||||
cells_in_current_draw_area[tile_pos] if neighbour_mode == NeighbourMode.OVERWRITE
|
||||
else _get_ez_atlas_coord(tile_pos, terrain_id)
|
||||
)
|
||||
under_edit.set_cell(tile_pos, _get_first_source_id_for_terrain(terrain_id), coord)
|
||||
if neighbour_mode != NeighbourMode.PEERING_BIT and neighbour_mode != NeighbourMode.OVERWRITE:
|
||||
_update_atlas_coords(_get_neighbors(tile_pos))
|
||||
|
||||
if neighbour_mode == NeighbourMode.PEERING_BIT:
|
||||
under_edit.set_cells_terrain_connect(cells_in_current_draw_area.keys(), 0, terrain_id, true)
|
||||
|
||||
|
||||
func _commit_cell_placement(cells_in_current_draw_area : Array) -> void:
|
||||
undo_redo.create_action("Update cells in: " + under_edit.name)
|
||||
for cell in remembered_cells:
|
||||
if remembered_cells[cell][0] < 0:
|
||||
undo_redo.add_undo_method(under_edit, "erase_cell", cell)
|
||||
else:
|
||||
undo_redo.add_undo_method(under_edit, "set_cell", cell,
|
||||
remembered_cells[cell][0], remembered_cells[cell][1])
|
||||
remembered_cells.clear()
|
||||
for cell in _grow_cells(cells_in_current_draw_area):
|
||||
if under_edit.get_cell_source_id(cell) > -1:
|
||||
undo_redo.add_do_method(under_edit, "set_cell", cell,
|
||||
under_edit.get_cell_source_id(cell),
|
||||
under_edit.get_cell_atlas_coords(cell))
|
||||
else:
|
||||
undo_redo.add_do_method(under_edit, "erase_cell", cell)
|
||||
undo_redo.commit_action(false)
|
||||
|
||||
|
||||
func _update_atlas_coords(cells : Array[Vector2i]) -> void:
|
||||
for tile_pos in cells:
|
||||
under_edit.set_cell(tile_pos, under_edit.get_cell_source_id(tile_pos),
|
||||
_get_ez_atlas_coord(tile_pos, under_edit.get_cell_source_id(tile_pos)))
|
||||
|
||||
|
||||
func _erase_cells(cells : Dictionary):
|
||||
# prevent current preview placement from being added to the undo list
|
||||
if drag_mode == DragMode.BRUSH:
|
||||
for cell in cells.keys():
|
||||
if cell in remembered_cells and remembered_cells[cell][0] > -1:
|
||||
under_edit.set_cell(cell, remembered_cells[cell][0], remembered_cells[cell][1])
|
||||
else:
|
||||
under_edit.erase_cell(cell)
|
||||
_place_cells_preview(cells, -1)
|
||||
|
||||
|
||||
func _get_neighbors(tile_pos : Vector2i, diagonal := false, base_dir := Vector2i.ZERO) -> Array[Vector2i]:
|
||||
if base_dir:
|
||||
return [
|
||||
tile_pos + base_dir,
|
||||
tile_pos + Vector2i(base_dir.x , 0),
|
||||
tile_pos + Vector2i(0, base_dir.y)
|
||||
]
|
||||
if diagonal:
|
||||
return [
|
||||
tile_pos + Vector2i.LEFT,
|
||||
tile_pos + Vector2i.UP,
|
||||
tile_pos + Vector2i.DOWN,
|
||||
tile_pos + Vector2i.RIGHT,
|
||||
tile_pos - Vector2i.ONE,
|
||||
tile_pos + Vector2i.ONE,
|
||||
tile_pos + Vector2i(-1, 1),
|
||||
tile_pos + Vector2i(1, -1)
|
||||
]
|
||||
return [tile_pos + Vector2i.LEFT, tile_pos + Vector2i.UP, tile_pos + Vector2i.DOWN, tile_pos + Vector2i.RIGHT]
|
||||
|
||||
|
||||
func _consider_a_neighbour(cell : Vector2i, for_source_id : int) -> bool:
|
||||
var neighbour_source_id := under_edit.get_cell_source_id(cell)
|
||||
match(neighbour_mode):
|
||||
NeighbourMode.INCLUSIVE:
|
||||
return neighbour_source_id > -1
|
||||
NeighbourMode.EXCLUSIVE:
|
||||
return neighbour_source_id > -1 and neighbour_source_id == for_source_id
|
||||
NeighbourMode.OVERWRITE:
|
||||
printerr("illegal state: should not be considering neighbours")
|
||||
return false
|
||||
NeighbourMode.PEERING_BIT:
|
||||
printerr("illegal state: should invoke `under_edit.set_cells_terrain_connect`")
|
||||
return false
|
||||
return false
|
||||
|
||||
|
||||
func _get_ez_atlas_coord(tile_pos : Vector2i, for_terrain_id : int) -> Vector2i:
|
||||
if neighbour_mode == NeighbourMode.PEERING_BIT:
|
||||
var source := _get_first_tileset_source_for_terrain(for_terrain_id)
|
||||
for id in range(source.get_tiles_count()):
|
||||
return source.get_tile_id(id)
|
||||
printerr("could not find a tile in terrain: " + str(for_terrain_id))
|
||||
return Vector2i.ZERO
|
||||
# EZ Tiles considers the source_id to be equal to the terrain_id
|
||||
# Therefore, in these modes the complexity of searching the correct texture is lost
|
||||
# (thus, making things EZ. is a lot less flexible)
|
||||
# - In inclusive mode all terrains in neighboring tiles are considered to be the same terrain
|
||||
# - in exclusive mode the terrains from the exact same TileSetSource are considered the same terrain
|
||||
var l = "X" if _consider_a_neighbour(tile_pos + Vector2i.LEFT, for_terrain_id) else "."
|
||||
var r = "X" if _consider_a_neighbour(tile_pos + Vector2i.RIGHT, for_terrain_id) else ".";
|
||||
var t = "X" if _consider_a_neighbour(tile_pos + Vector2i.UP, for_terrain_id) else "."
|
||||
var b = "X" if _consider_a_neighbour(tile_pos + Vector2i.DOWN, for_terrain_id) else ".";
|
||||
|
||||
var fmt = ".%s.%sO%s.%s." % [t, l, r, b]
|
||||
return EZ_NEIGHBOUR_MAP[fmt] if fmt in EZ_NEIGHBOUR_MAP else Vector2i.ZERO
|
||||
|
||||
|
||||
func get_draw_rect(tile_pos : Vector2i) -> Rect2i:
|
||||
match(drag_mode):
|
||||
DragMode.SNAPSHOT:
|
||||
if lmb_is_down:
|
||||
var from_x := drag_start.x if drag_start.x < tile_pos.x else tile_pos.x
|
||||
var to_x := drag_start.x if drag_start.x > tile_pos.x else tile_pos.x
|
||||
var from_y := drag_start.y if drag_start.y < tile_pos.y else tile_pos.y
|
||||
var to_y := drag_start.y if drag_start.y > tile_pos.y else tile_pos.y
|
||||
return Rect2i(Vector2i(from_x, from_y), Vector2i(to_x, to_y) - Vector2i(from_x, from_y) + Vector2i.ONE)
|
||||
else:
|
||||
return Rect2i(tile_pos, Vector2i.ONE)
|
||||
DragMode.AREA:
|
||||
if rmb_is_down or lmb_is_down:
|
||||
var from_x := drag_start.x if drag_start.x < tile_pos.x else tile_pos.x
|
||||
var to_x := drag_start.x if drag_start.x > tile_pos.x else tile_pos.x
|
||||
var from_y := drag_start.y if drag_start.y < tile_pos.y else tile_pos.y
|
||||
var to_y := drag_start.y if drag_start.y > tile_pos.y else tile_pos.y
|
||||
return Rect2i(Vector2i(from_x, from_y), Vector2i(to_x, to_y) - Vector2i(from_x, from_y) + Vector2i.ONE)
|
||||
else:
|
||||
return Rect2i(tile_pos, Vector2i.ONE)
|
||||
DragMode.STAMP:
|
||||
var stamp := stamp_tab.get_selected_stamp()
|
||||
if is_instance_valid(stamp):
|
||||
return Rect2i(tile_pos, stamp.stamp_size)
|
||||
else:
|
||||
Rect2i()
|
||||
DragMode.BRUSH, _:
|
||||
return Rect2i()
|
||||
return Rect2i()
|
||||
|
||||
|
||||
func get_draw_area(tile_pos : Vector2i) -> Array:
|
||||
match(drag_mode):
|
||||
DragMode.SNAPSHOT:
|
||||
return []
|
||||
DragMode.AREA:
|
||||
if rmb_is_down or lmb_is_down:
|
||||
return _get_draw_shape_for_area(drag_start, tile_pos).keys()
|
||||
else:
|
||||
return []
|
||||
DragMode.BRUSH:
|
||||
return _get_sized_brush({tile_pos: Vector2.ZERO}).keys()
|
||||
_:
|
||||
return []
|
||||
|
||||
func _get_draw_shape_for_area(p1 : Vector2i, p2 : Vector2i, for_shape : AreaDraw.Shape = area_draw_tab.shape) -> Dictionary:
|
||||
var from_x := p1.x if p1.x < p2.x else p2.x
|
||||
var to_x := p1.x if p1.x > p2.x else p2.x
|
||||
var from_y := p1.y if p1.y < p2.y else p2.y
|
||||
var to_y := p1.y if p1.y > p2.y else p2.y
|
||||
|
||||
match(for_shape):
|
||||
AreaDraw.Shape.RECTANGLE_BASIC:
|
||||
return AreaDraw.get_cells_rectangle_basic(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.HARD_RECTANGLE:
|
||||
return AreaDraw.get_cells_rectangle(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.RECTANGLE:
|
||||
return AreaDraw.get_cells_rectangle(Vector2i(from_x, from_y), Vector2i(to_x, to_y), true)
|
||||
AreaDraw.Shape.SLOPE_TL:
|
||||
return AreaDraw.get_cells_slope_tl(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.SLOPE_BL:
|
||||
return AreaDraw.get_cells_slope_bl(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.SLOPE_TR:
|
||||
return AreaDraw.get_cells_slope_tr(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.SLOPE_BR:
|
||||
return AreaDraw.get_cells_slope_br(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.HILL_TOP:
|
||||
return AreaDraw.get_cells_hill_top(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.HILL_BOTTOM:
|
||||
return AreaDraw.get_cells_hill_bottom(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.HILL_LEFT:
|
||||
return AreaDraw.get_cells_hill_left(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.HILL_RIGHT:
|
||||
return AreaDraw.get_cells_hill_right(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
AreaDraw.Shape.ISLAND:
|
||||
return AreaDraw.get_cells_island(Vector2i(from_x, from_y), Vector2i(to_x, to_y))
|
||||
return {}
|
||||
|
||||
|
||||
func handle_mouse_move(tile_pos : Vector2i) -> void:
|
||||
if suppress_preview:
|
||||
pass
|
||||
if is_instance_valid(under_edit):
|
||||
if drag_mode == DragMode.BRUSH:
|
||||
_place_back_remembered_cells()
|
||||
if using_eraser:
|
||||
_place_cells_preview(_get_sized_brush({tile_pos: brush_tab.tile_coords}), -1)
|
||||
else:
|
||||
_place_cells_preview(_get_sized_brush({tile_pos: brush_tab.tile_coords}), current_terrain_id)
|
||||
if lmb_is_down:
|
||||
_commit_cell_placement(_get_sized_brush({tile_pos: brush_tab.tile_coords}).keys())
|
||||
|
||||
elif drag_mode == DragMode.AREA:
|
||||
_place_back_remembered_cells()
|
||||
if rmb_is_down or (using_eraser and lmb_is_down):
|
||||
_erase_cells(_get_draw_shape_for_area(drag_start, tile_pos, AreaDraw.Shape.RECTANGLE))
|
||||
elif lmb_is_down:
|
||||
_place_cells_preview(_get_draw_shape_for_area(drag_start, tile_pos), current_terrain_id)
|
||||
|
||||
elif drag_mode == DragMode.STAMP:
|
||||
_place_back_remembered_cells()
|
||||
var stamp := stamp_tab.get_selected_stamp()
|
||||
if is_instance_valid(stamp):
|
||||
_place_stamp_preview(stamp, tile_pos)
|
||||
|
||||
|
||||
func handle_mouse_up(button : MouseButton, tile_pos: Vector2i):
|
||||
rmb_is_down = false if button == MouseButton.MOUSE_BUTTON_RIGHT else rmb_is_down
|
||||
lmb_is_down = false if button == MouseButton.MOUSE_BUTTON_LEFT else lmb_is_down
|
||||
|
||||
if button == MouseButton.MOUSE_BUTTON_RIGHT or (using_eraser and button == MouseButton.MOUSE_BUTTON_LEFT):
|
||||
if drag_mode == DragMode.AREA:
|
||||
_commit_cell_placement(_get_draw_shape_for_area(drag_start, tile_pos, AreaDraw.Shape.RECTANGLE).keys())
|
||||
elif button == MouseButton.MOUSE_BUTTON_LEFT:
|
||||
if drag_mode == DragMode.AREA:
|
||||
_commit_cell_placement(_get_draw_shape_for_area(drag_start, tile_pos).keys())
|
||||
if drag_mode == DragMode.SNAPSHOT:
|
||||
_take_snapshot(tile_pos)
|
||||
_on_stamp_snapshot_toggled(false)
|
||||
if drag_mode == DragMode.STAMP:
|
||||
var stamp := stamp_tab.get_selected_stamp()
|
||||
if is_instance_valid(stamp):
|
||||
_commit_cell_placement(_get_stamp_placement_area(stamp, tile_pos))
|
||||
|
||||
|
||||
|
||||
|
||||
func handle_mouse_down(button : MouseButton, tile_pos: Vector2i):
|
||||
drag_start = tile_pos
|
||||
rmb_is_down = true if button == MouseButton.MOUSE_BUTTON_RIGHT else rmb_is_down
|
||||
lmb_is_down = true if button == MouseButton.MOUSE_BUTTON_LEFT else lmb_is_down
|
||||
|
||||
if using_eraser and button == MouseButton.MOUSE_BUTTON_RIGHT:
|
||||
eraser_button.button_pressed = false
|
||||
if drag_mode == DragMode.BRUSH:
|
||||
_place_back_remembered_cells()
|
||||
elif button == MouseButton.MOUSE_BUTTON_RIGHT:
|
||||
if drag_mode == DragMode.AREA and not suppress_preview:
|
||||
_place_back_remembered_cells()
|
||||
_erase_cells(_get_draw_shape_for_area(drag_start, tile_pos))
|
||||
elif drag_mode == DragMode.BRUSH:
|
||||
_place_back_remembered_cells()
|
||||
area_draw_toggle_button.button_pressed = true
|
||||
area_draw_tab.show()
|
||||
elif drag_mode == DragMode.SNAPSHOT:
|
||||
_on_stamp_snapshot_toggled(false)
|
||||
elif drag_mode == DragMode.STAMP:
|
||||
var stamp := stamp_tab.get_selected_stamp()
|
||||
if is_instance_valid(stamp):
|
||||
_place_back_remembered_cells()
|
||||
stamp.deselect()
|
||||
elif button == MouseButton.MOUSE_BUTTON_LEFT:
|
||||
if drag_mode == DragMode.AREA and not suppress_preview:
|
||||
_place_back_remembered_cells()
|
||||
_place_cells_preview(_get_draw_shape_for_area(drag_start, tile_pos), current_terrain_id)
|
||||
elif drag_mode == DragMode.BRUSH:
|
||||
_commit_cell_placement(_get_sized_brush({tile_pos: brush_tab.tile_coords}).keys())
|
||||
|
||||
|
||||
|
||||
func handle_mouse_entered():
|
||||
viewport_has_mouse = true
|
||||
remembered_cells.clear()
|
||||
|
||||
|
||||
func handle_mouse_out():
|
||||
viewport_has_mouse = false
|
||||
if not lmb_is_down:
|
||||
_place_back_remembered_cells()
|
||||
|
||||
|
||||
func _on_area_draw_button_pressed() -> void:
|
||||
area_draw_tab.show()
|
||||
|
||||
|
||||
func _on_brush_draw_button_pressed() -> void:
|
||||
brush_tab.show()
|
||||
|
||||
|
||||
func _on_stamp_draw_button_pressed() -> void:
|
||||
stamp_tab.show()
|
||||
|
||||
|
||||
func _on_stamp_snapshot_toggled(on_off: bool) -> void:
|
||||
select_snap_shot_button.button_pressed = on_off
|
||||
if on_off:
|
||||
stamp_tab.show()
|
||||
stamp_tab.start_snapshot()
|
||||
drag_mode = DragMode.SNAPSHOT
|
||||
else:
|
||||
stamp_tab.stop_snapshotting()
|
||||
select_snap_shot_button.focus_mode = Control.FOCUS_NONE
|
||||
drag_mode = DragMode.STAMP
|
||||
|
||||
|
||||
func _on_default_editor_check_button_toggled(toggled_on: bool) -> void:
|
||||
if toggled_on:
|
||||
under_edit.set_meta(EZ_TILE_CUSTOM_META, true)
|
||||
else:
|
||||
under_edit.remove_meta(EZ_TILE_CUSTOM_META)
|
||||
|
||||
|
||||
func _on_tab_container_tab_changed(tab: DragMode) -> void:
|
||||
drag_mode = tab
|
||||
if tab != DragMode.STAMP:
|
||||
stamp_tab.stop_snapshotting()
|
||||
select_snap_shot_button.button_pressed = false
|
||||
|
||||
match(drag_mode):
|
||||
DragMode.AREA:
|
||||
area_draw_toggle_button.button_pressed = true
|
||||
eraser_button.disabled = false
|
||||
DragMode.BRUSH:
|
||||
brush_draw_toggle_button.button_pressed = true
|
||||
eraser_button.disabled = false
|
||||
DragMode.STAMP:
|
||||
stamp_draw_toggle_button.button_pressed = true
|
||||
eraser_button.button_pressed = false
|
||||
eraser_button.disabled = true
|
||||
|
||||
|
||||
func _on_neighbour_mode_option_button_item_selected(index: NeighbourMode) -> void:
|
||||
neighbour_mode = index
|
||||
if neighbour_mode == NeighbourMode.OVERWRITE:
|
||||
connect_toggle_button.icon = connect_icon_disconnected
|
||||
connect_toggle_button.button_pressed = false
|
||||
brush_tab.toggle_off_connected_brush()
|
||||
area_draw_tab.find_child("TileButton1").button_pressed = true
|
||||
else:
|
||||
connect_toggle_button.icon = connect_icon_connected
|
||||
connect_toggle_button.button_pressed = true
|
||||
brush_tab.connect_terrains_button.button_pressed = true
|
||||
area_draw_tab.connect_terrains_button.button_pressed = true
|
||||
|
||||
|
||||
func _on_connecting_toggle_toggled(toggled_on: bool) -> void:
|
||||
if toggled_on:
|
||||
connect_toggle_button.icon = connect_icon_connected
|
||||
connect_toggle_button.button_pressed = true
|
||||
if neighbour_mode == NeighbourMode.OVERWRITE:
|
||||
neighbour_mode = NeighbourMode.PEERING_BIT
|
||||
neighbor_mode_option_button.selected = NeighbourMode.PEERING_BIT
|
||||
brush_tab.connect_terrains_button.button_pressed = true
|
||||
area_draw_tab.connect_terrains_button.button_pressed = true
|
||||
# else it's already in a connected mode
|
||||
else:
|
||||
connect_toggle_button.icon = connect_icon_disconnected
|
||||
connect_toggle_button.button_pressed = false
|
||||
neighbour_mode = NeighbourMode.OVERWRITE
|
||||
neighbor_mode_option_button.selected = NeighbourMode.OVERWRITE
|
||||
brush_tab.toggle_off_connected_brush()
|
||||
area_draw_tab.find_child("TileButton1").button_pressed = true
|
||||
|
||||
|
||||
func _on_eraser_button_toggled(toggled_on: bool) -> void:
|
||||
using_eraser = toggled_on
|
||||
1
addons/ez_tiles/ez_tiles_draw/ez_tiles_draw_dock.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://6bvphp60kmbq
|
||||
169
addons/ez_tiles/ez_tiles_draw/ez_tiles_draw_dock.tscn
Normal file
@@ -0,0 +1,169 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://bylxp7tq3yo5s"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/ez_tiles/ez_tiles_draw/ez_tiles_draw_dock.gd" id="1_wtbry"]
|
||||
[ext_resource type="Texture2D" uid="uid://pyivvoarllad" path="res://addons/ez_tiles/ez_tiles_draw/icons/Connect1.svg" id="2_dplls"]
|
||||
[ext_resource type="PackedScene" uid="uid://bitqwiwmn3s0r" path="res://addons/ez_tiles/ez_tiles_draw/area_draw.tscn" id="2_k0y3s"]
|
||||
[ext_resource type="Texture2D" uid="uid://dooqg3fapf15x" path="res://addons/ez_tiles/ez_tiles_draw/icons/Rectangle.svg" id="2_urupm"]
|
||||
[ext_resource type="Texture2D" uid="uid://d10gshlv0aq2d" path="res://addons/ez_tiles/ez_tiles_draw/icons/Edit.svg" id="3_qgjav"]
|
||||
[ext_resource type="Texture2D" uid="uid://dhhtq6kkxpaus" path="res://addons/ez_tiles/ez_tiles_draw/icons/Stamp.svg" id="4_uxbhq"]
|
||||
[ext_resource type="Texture2D" uid="uid://cj2hivk8xemhb" path="res://addons/ez_tiles/ez_tiles_draw/icons/SnapShotSmall.svg" id="6_lleak"]
|
||||
[ext_resource type="PackedScene" uid="uid://is8n20fchd2q" path="res://addons/ez_tiles/ez_tiles_draw/brush_draw.tscn" id="7_sh02n"]
|
||||
[ext_resource type="Texture2D" uid="uid://bbpao1cndqvwr" path="res://addons/ez_tiles/ez_tiles_draw/icons/Eraser.svg" id="7_vvdr0"]
|
||||
[ext_resource type="PackedScene" uid="uid://catlvg1l82g5v" path="res://addons/ez_tiles/ez_tiles_draw/stamp_tab.tscn" id="8_6lfv8"]
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_m6mfs"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fl86h"]
|
||||
content_margin_left = 10.0
|
||||
content_margin_top = 10.0
|
||||
content_margin_right = 10.0
|
||||
content_margin_bottom = 10.0
|
||||
bg_color = Color(0.12549, 0.145098, 0.172549, 1)
|
||||
|
||||
[node name="EzTilesDrawDock" type="HBoxContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_wtbry")
|
||||
|
||||
[node name="MainVBoxContainer" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="MainVBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Determines how to connect neighbouring tiles.
|
||||
- Overwrite/Ignore (draw over other tiles without connecting to them)
|
||||
- Use Terrain Peering Bit (the Godot default way of connecting tiles)
|
||||
- Inclusive (consider all terrains in my terrain set my neighbour - as per the EZ Tiles template)
|
||||
- Exclusive (consider only my terrain - as per the EZ Tiles template - as neighbour)
|
||||
"
|
||||
mouse_filter = 0
|
||||
text = "Connect mode* "
|
||||
|
||||
[node name="NeighbourModeOptionButton" type="OptionButton" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Determines in which cases a neighbouring tile is considered a neighbour. When a tile is considered a neighbour, this tile will act as if it is 'glued' to it."
|
||||
selected = 0
|
||||
item_count = 4
|
||||
popup/item_0/text = "Overwrite"
|
||||
popup/item_1/text = "Use Terrain Peering Bit"
|
||||
popup/item_1/id = 3
|
||||
popup/item_2/text = "Inclusive"
|
||||
popup/item_2/id = 1
|
||||
popup/item_3/text = "Exclusive"
|
||||
popup/item_3/id = 2
|
||||
|
||||
[node name="ConnectingToggle" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Toggle connected drawing off or on (See connect modes for more options)"
|
||||
toggle_mode = true
|
||||
icon = ExtResource("2_dplls")
|
||||
|
||||
[node name="BrushDrawButton" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Brush/Pencil draw (Square, Circle)"
|
||||
toggle_mode = true
|
||||
button_pressed = true
|
||||
button_group = SubResource("ButtonGroup_m6mfs")
|
||||
icon = ExtResource("3_qgjav")
|
||||
|
||||
[node name="AreaDrawButton" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Area draw (Rectangles, Slopes, Island)"
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_m6mfs")
|
||||
icon = ExtResource("2_urupm")
|
||||
|
||||
[node name="StampDrawButton" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Stamp, Copy/Paste draw"
|
||||
toggle_mode = true
|
||||
button_group = SubResource("ButtonGroup_m6mfs")
|
||||
icon = ExtResource("4_uxbhq")
|
||||
|
||||
[node name="SelectSnapShotButton" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Take snapshot for stamp"
|
||||
toggle_mode = true
|
||||
icon = ExtResource("6_lleak")
|
||||
|
||||
[node name="EraserButton" type="Button" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
tooltip_text = "Eraser, toggle on the eraser to remove tiles with the left mouse button (this works the same as using the right mouse button).
|
||||
|
||||
Can be used in both brush mode and in area mode."
|
||||
toggle_mode = true
|
||||
icon = ExtResource("7_vvdr0")
|
||||
|
||||
[node name="DefaultEditorCheckButton" type="CheckButton" parent="MainVBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 10
|
||||
tooltip_text = "When you select a TileMapLayer in your scene, Godot will normally open the builtin TileMap or TileSet bottom pane.
|
||||
When this toggle is on, EZ Tiles Draw will automatically open for the current TileMapLayer."
|
||||
text = "Default Editor"
|
||||
|
||||
[node name="MainHBoxContainer" type="HBoxContainer" parent="MainVBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="TerrainPickerScrollContainer" type="ScrollContainer" parent="MainVBoxContainer/MainHBoxContainer"]
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 3
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_fl86h")
|
||||
horizontal_scroll_mode = 0
|
||||
|
||||
[node name="TerrainListVboxContainer" type="VBoxContainer" parent="MainVBoxContainer/MainHBoxContainer/TerrainPickerScrollContainer"]
|
||||
custom_minimum_size = Vector2(200, 0)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/separation = 10
|
||||
|
||||
[node name="TabContainer" type="TabContainer" parent="MainVBoxContainer/MainHBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
current_tab = 0
|
||||
|
||||
[node name="Brush Draw" parent="MainVBoxContainer/MainHBoxContainer/TabContainer" instance=ExtResource("7_sh02n")]
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 0
|
||||
|
||||
[node name="Area Draw" parent="MainVBoxContainer/MainHBoxContainer/TabContainer" instance=ExtResource("2_k0y3s")]
|
||||
visible = false
|
||||
clip_contents = true
|
||||
layout_mode = 2
|
||||
metadata/_tab_index = 1
|
||||
|
||||
[node name="Stamp" parent="MainVBoxContainer/MainHBoxContainer/TabContainer" instance=ExtResource("8_6lfv8")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HintLabel" type="Label" parent="."]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Select a TileMapLayer generated by EZ Tiles to use EZ Tiles Draw"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[connection signal="item_selected" from="MainVBoxContainer/HBoxContainer/NeighbourModeOptionButton" to="." method="_on_neighbour_mode_option_button_item_selected"]
|
||||
[connection signal="toggled" from="MainVBoxContainer/HBoxContainer/ConnectingToggle" to="." method="_on_connecting_toggle_toggled"]
|
||||
[connection signal="pressed" from="MainVBoxContainer/HBoxContainer/BrushDrawButton" to="." method="_on_brush_draw_button_pressed"]
|
||||
[connection signal="pressed" from="MainVBoxContainer/HBoxContainer/AreaDrawButton" to="." method="_on_area_draw_button_pressed"]
|
||||
[connection signal="pressed" from="MainVBoxContainer/HBoxContainer/StampDrawButton" to="." method="_on_stamp_draw_button_pressed"]
|
||||
[connection signal="toggled" from="MainVBoxContainer/HBoxContainer/SelectSnapShotButton" to="." method="_on_stamp_snapshot_toggled"]
|
||||
[connection signal="toggled" from="MainVBoxContainer/HBoxContainer/EraserButton" to="." method="_on_eraser_button_toggled"]
|
||||
[connection signal="toggled" from="MainVBoxContainer/HBoxContainer/DefaultEditorCheckButton" to="." method="_on_default_editor_check_button_toggled"]
|
||||
[connection signal="tab_changed" from="MainVBoxContainer/MainHBoxContainer/TabContainer" to="." method="_on_tab_container_tab_changed"]
|
||||
[connection signal="connect_mode_toggled" from="MainVBoxContainer/MainHBoxContainer/TabContainer/Brush Draw" to="." method="_on_connecting_toggle_toggled"]
|
||||
[connection signal="connect_mode_toggled" from="MainVBoxContainer/MainHBoxContainer/TabContainer/Area Draw" to="." method="_on_connecting_toggle_toggled"]
|
||||
[connection signal="snapshot_toggled" from="MainVBoxContainer/MainHBoxContainer/TabContainer/Stamp" to="." method="_on_stamp_snapshot_toggled"]
|
||||
61
addons/ez_tiles/ez_tiles_draw/icons/Circle.svg
Normal file
@@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 4.2333332 4.2333333"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
sodipodi:docname="Circle.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:document-units="px"
|
||||
showgrid="true"
|
||||
inkscape:zoom="25.228956"
|
||||
inkscape:cx="3.3691445"
|
||||
inkscape:cy="9.5525157"
|
||||
inkscape:current-layer="layer1">
|
||||
<inkscape:grid
|
||||
id="grid1"
|
||||
units="px"
|
||||
originx="0"
|
||||
originy="0"
|
||||
spacingx="0.26458332"
|
||||
spacingy="0.26458333"
|
||||
empcolor="#0099e5"
|
||||
empopacity="0.30196078"
|
||||
color="#0099e5"
|
||||
opacity="0.14901961"
|
||||
empspacing="4"
|
||||
dotted="false"
|
||||
gridanglex="30"
|
||||
gridanglez="30"
|
||||
visible="true" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<circle
|
||||
style="fill:#e0e0e0;stroke-width:2.80458;stroke-linecap:square;stroke-miterlimit:80;stroke-dashoffset:127.298;paint-order:markers fill stroke"
|
||||
id="path1"
|
||||
cx="2.1105669"
|
||||
cy="2.1000795"
|
||||
r="1.591446" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/Circle.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bb3xfpcrmc8gc"
|
||||
path="res://.godot/imported/Circle.svg-8d5a72a976af170c5462c4822817bc86.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/Circle.svg"
|
||||
dest_files=["res://.godot/imported/Circle.svg-8d5a72a976af170c5462c4822817bc86.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
75
addons/ez_tiles/ez_tiles_draw/icons/Connect1.svg
Normal file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="Connect1.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="34.4375"
|
||||
inkscape:cx="15.288566"
|
||||
inkscape:cy="12.950998"
|
||||
inkscape:current-layer="svg1"
|
||||
showguides="true">
|
||||
<sodipodi:guide
|
||||
position="-0.33879526,12.488849"
|
||||
orientation="0,-1"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.250454,9.8439201"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="5.1107078,16.232305"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.3610971,9.2856939"
|
||||
orientation="1,0"
|
||||
id="guide5"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="9.6696915,6.6206897"
|
||||
orientation="0,-1"
|
||||
id="guide6"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.163339,4.3266788"
|
||||
orientation="0,-1"
|
||||
id="guide7"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.584392,9.9600726"
|
||||
orientation="1,0"
|
||||
id="guide8"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="11.949183,2.4246824"
|
||||
orientation="0,-1"
|
||||
id="guide9"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
id="path1"
|
||||
style="fill:#e0e0e0;fill-opacity:1;stroke-width:3.46966"
|
||||
d="M 7.4320342,0.18238402 C 5.7415205,0.18242166 3.1472107,1.940753 3.1472107,4.1263644 V 7.1847778 H 0.03947243 v 2.286455 H 3.1472107 v 2.5455882 c 0,2.18561 2.5943098,3.946477 4.2848235,3.946477 h 0.8366325 v -2.328946 l -1.9199791,-0.01748 0.024962,-4.05828 1.8825363,0.01747 0.012486,-2.5410661 -1.9099943,-0.005 0.012486,-3.8696751 1.9099944,0.019969 -0.012486,-2.99792441 z m 2.9251338,0.0748859 -0.01748,2.94051208 -1.6694318,0.037443 0.005,3.8122627 1.6918988,-0.017473 V 10.002839 L 8.6827446,9.98287 l 0.005,3.626522 1.6519594,-0.03994 v 2.468732 c 1.539424,0.241385 2.733117,-0.774398 2.733117,-3.943981 V 9.7103828 h 2.887466 V 7.2596635 H 13.072812 V 4.2037463 c 0,-3.91742421 -0.689574,-3.97068131 -2.715644,-3.94647638 z"
|
||||
sodipodi:nodetypes="ssccccssccccccccccsccccccccccsccccsc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/Connect1.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://pyivvoarllad"
|
||||
path="res://.godot/imported/Connect1.svg-e03696726517e376a9f1cb9904cf4c39.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/Connect1.svg"
|
||||
dest_files=["res://.godot/imported/Connect1.svg-e03696726517e376a9f1cb9904cf4c39.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
80
addons/ez_tiles/ez_tiles_draw/icons/Connect2.svg
Normal file
@@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="Connect2.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="24.35099"
|
||||
inkscape:cx="8.2132185"
|
||||
inkscape:cy="-0.28746265"
|
||||
inkscape:current-layer="svg1"
|
||||
showguides="true">
|
||||
<sodipodi:guide
|
||||
position="-0.33879526,12.488849"
|
||||
orientation="0,-1"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.250454,9.8439201"
|
||||
orientation="0,-1"
|
||||
id="guide3"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="5.1107078,16.232305"
|
||||
orientation="1,0"
|
||||
id="guide4"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.3610971,9.2856939"
|
||||
orientation="1,0"
|
||||
id="guide5"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="9.6696915,6.6206897"
|
||||
orientation="0,-1"
|
||||
id="guide6"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.163339,4.3266788"
|
||||
orientation="0,-1"
|
||||
id="guide7"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="10.584392,9.9600726"
|
||||
orientation="1,0"
|
||||
id="guide8"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="11.949183,2.4246824"
|
||||
orientation="0,-1"
|
||||
id="guide9"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
id="path1"
|
||||
style="fill:#e0e0e0;fill-opacity:1;stroke-width:3.47802"
|
||||
d="M 7.5715605,0.06207122 C 5.8770753,0.08041901 4.5113688,1.8246744 4.5113688,4.0155486 V 7.0813268 H 0.85565317 v 2.7447754 c 0.59043283,-0.3140696 2.43714373,0 3.65571563,0 v 2.0989038 c 0,2.190872 1.3656073,4.02832 3.0601917,4.02832 h 1.0111382 l 0.8154684,-2.406894 -2.9125619,-0.01751 0.025022,-3.6152385 2.875029,0.017516 0.012517,-3 -2.902553,-0.00501 0.012517,-3.8789934 2.9025532,0.020018 L 8.786571,0.0489152 Z m 1.2234334,0.0049452 c -0.076304,0.0029338 -0.1565114,0.0085964 -0.2377092,0.01751557 l 0.074557,2.89498191 -2.3262459,-0.015078 0.05762,3.9792753 2.2369682,0.041672 v 2.9207951 l -2.2294617,-0.020017 0.00501,3.6352537 2.354765,0.117801 -0.1578331,2.316838 c 2.2327058,0 2.6723538,-2.071122 2.6723538,-3.953478 V 9.9011681 H 14.90073 V 7.1563927 H 11.245003 V 4.0931168 c 0,-1.3484853 -0.0845,-4.11711155 -2.4500091,-4.02610568 z"
|
||||
sodipodi:nodetypes="ssccccssccccccccccssccccccccccsccccss" />
|
||||
<path
|
||||
id="path9"
|
||||
style="fill:#e0e0e0;fill-opacity:1;stroke-width:3.47802"
|
||||
d="M 7.5715605,0.06207122 C 5.8770753,0.08041901 4.5113688,1.8246744 4.5113688,4.0155486 V 7.0813268 H 0.85565317 v 2.7447754 c 0.59043283,-0.3140696 2.43714373,0 3.65571563,0 v 2.0989038 c 0,2.190872 1.3656073,4.02832 3.0601917,4.02832 h 1.0111382 l 0.8154684,-2.406894 -2.9125619,-0.01751 0.025022,-3.6152385 2.875029,0.017516 0.012517,-3 -2.902553,-0.00501 0.012517,-3.8789934 2.9025532,0.020018 L 8.786571,0.0489152 Z m 1.2234334,0.0049452 c -0.076304,0.0029338 -0.1565114,0.0085964 -0.2377092,0.01751557 l 0.074557,2.89498191 -2.3262459,-0.015078 0.05762,3.9792753 2.2369682,0.041672 v 2.9207951 l -2.2294617,-0.020017 0.00501,3.6352537 2.354765,0.117801 -0.1578331,2.316838 c 2.2327058,0 2.6723538,-2.071122 2.6723538,-3.953478 V 9.9011681 H 14.90073 V 7.1563927 H 11.245003 V 4.0931168 c 0,-1.3484853 -0.0845,-4.11711155 -2.4500091,-4.02610568 z"
|
||||
sodipodi:nodetypes="ssccccssccccccccccssccccccccccsccccss" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/Connect2.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://un7sibaoyeeo"
|
||||
path="res://.godot/imported/Connect2.svg-6e813cff05f022d485f4d95296800abe.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/Connect2.svg"
|
||||
dest_files=["res://.godot/imported/Connect2.svg-6e813cff05f022d485f4d95296800abe.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/ez_tiles_draw/icons/Edit.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="m7 1c-.554 0-1 .446-1 1v2h4v-2c0-.554-.446-1-1-1zm-1 4v7l2 3 2-3v-7zm1 1h1v5h-1z"/></svg>
|
||||
|
After Width: | Height: | Size: 176 B |
43
addons/ez_tiles/ez_tiles_draw/icons/Edit.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d10gshlv0aq2d"
|
||||
path="res://.godot/imported/Edit.svg-206c08cdfe2c86e6e36fbd0ea67b4db7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/Edit.svg"
|
||||
dest_files=["res://.godot/imported/Edit.svg-206c08cdfe2c86e6e36fbd0ea67b4db7.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
1
addons/ez_tiles/ez_tiles_draw/icons/Eraser.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#e0e0e0" d="M10 1.5.5 11 4 14.5h4L15.5 7Zm-4.5 7 3 3-1 1h-3L3 11Z"/></svg>
|
||||
|
After Width: | Height: | Size: 149 B |
43
addons/ez_tiles/ez_tiles_draw/icons/Eraser.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bbpao1cndqvwr"
|
||||
path="res://.godot/imported/Eraser.svg-a188c3a7a38a6aac8c5d49fe081b58f3.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/Eraser.svg"
|
||||
dest_files=["res://.godot/imported/Eraser.svg-a188c3a7a38a6aac8c5d49fe081b58f3.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
48
addons/ez_tiles/ez_tiles_draw/icons/HillB.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="HillB.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="38.139572"
|
||||
inkscape:cx="9.753649"
|
||||
inkscape:cy="9.4390152"
|
||||
inkscape:current-layer="svg1">
|
||||
<sodipodi:guide
|
||||
position="15.181083,13.010979"
|
||||
orientation="0,-1"
|
||||
id="guide1"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.9969434,11.90976"
|
||||
orientation="1,0"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
fill="none"
|
||||
stroke="#e0e0e0"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M 5.9243978,11.984778 10.675649,12 14,4.0372167 H 2 Z"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/HillB.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dntkx0h8qim1n"
|
||||
path="res://.godot/imported/HillB.svg-2b1e837b4005cfdb77e758705f71d6c7.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/HillB.svg"
|
||||
dest_files=["res://.godot/imported/HillB.svg-2b1e837b4005cfdb77e758705f71d6c7.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
48
addons/ez_tiles/ez_tiles_draw/icons/HillL.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="HillL.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="13.484375"
|
||||
inkscape:cx="0.22247972"
|
||||
inkscape:cy="15.351101"
|
||||
inkscape:current-layer="svg1">
|
||||
<sodipodi:guide
|
||||
position="15.181083,13.010979"
|
||||
orientation="0,-1"
|
||||
id="guide1"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.9969434,11.90976"
|
||||
orientation="1,0"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
fill="none"
|
||||
stroke="#e0e0e0"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="m 4.0338356,5.9430007 -0.015222,4.7512513 7.9627834,3.324351 V 2.0186029 Z"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/HillL.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dpmrju1gvdr16"
|
||||
path="res://.godot/imported/HillL.svg-f186ea095ce3e10ae26d57f879ef2e31.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/HillL.svg"
|
||||
dest_files=["res://.godot/imported/HillL.svg-f186ea095ce3e10ae26d57f879ef2e31.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
48
addons/ez_tiles/ez_tiles_draw/icons/HillR.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="HillR.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="13.484375"
|
||||
inkscape:cx="0.22247972"
|
||||
inkscape:cy="15.351101"
|
||||
inkscape:current-layer="svg1">
|
||||
<sodipodi:guide
|
||||
position="15.181083,13.010979"
|
||||
orientation="0,-1"
|
||||
id="guide1"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.9969434,11.90976"
|
||||
orientation="1,0"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
fill="none"
|
||||
stroke="#e0e0e0"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="m 11.966175,5.9430007 0.01522,4.7512513 -7.9627832,3.324351 V 2.0186029 Z"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/HillR.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dv855gccwqgu"
|
||||
path="res://.godot/imported/HillR.svg-11714009d9d53e804e759b93eeefee15.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/HillR.svg"
|
||||
dest_files=["res://.godot/imported/HillR.svg-11714009d9d53e804e759b93eeefee15.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
48
addons/ez_tiles/ez_tiles_draw/icons/HillT.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="16"
|
||||
height="16"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="HillT.svg"
|
||||
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
showguides="true"
|
||||
inkscape:zoom="38.139572"
|
||||
inkscape:cx="9.7798685"
|
||||
inkscape:cy="9.4521249"
|
||||
inkscape:current-layer="svg1">
|
||||
<sodipodi:guide
|
||||
position="15.181083,13.010979"
|
||||
orientation="0,-1"
|
||||
id="guide1"
|
||||
inkscape:locked="false" />
|
||||
<sodipodi:guide
|
||||
position="7.9969434,11.90976"
|
||||
orientation="1,0"
|
||||
id="guide2"
|
||||
inkscape:locked="false" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
fill="none"
|
||||
stroke="#e0e0e0"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
d="M 5.9243978,4.052439 10.675649,4.0372165 14,12 H 2 Z"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
43
addons/ez_tiles/ez_tiles_draw/icons/HillT.svg.import
Normal file
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cri2mdk3hr6s1"
|
||||
path="res://.godot/imported/HillT.svg-598ff05abd20ebbb7b4a78e8535c9357.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://addons/ez_tiles/ez_tiles_draw/icons/HillT.svg"
|
||||
dest_files=["res://.godot/imported/HillT.svg-598ff05abd20ebbb7b4a78e8535c9357.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||