├── .gitattributes
├── .github
├── FUNDING.yml
├── banner.svg
├── example.png
├── godot-badge-color.svg
├── godot-badge-dark.svg
├── godot-badge-light.svg
└── workflows
│ └── godot-ci.yml
├── .gitignore
├── .gitmodules
├── COPYING
├── README.md
├── addons
├── icon_texture
├── nine_patch_sprite_2d
├── range_container
├── remote_container
├── resource_overrider
└── state_machine_nodes
├── examples
├── icon_texture
├── nine_patch_sprite_2d
├── range_container
├── remote_container
├── resource_overrider
└── state_machine_nodes
├── export_presets.cfg
├── main
├── examples.gd
├── examples.gd.uid
├── gallery.gd
├── gallery.gd.uid
├── gallery.tscn
├── icon.svg
├── icon.svg.import
├── logo.svg
├── logo.svg.import
├── menu.svg
├── menu.svg.import
├── opacity.svg
└── opacity.svg.import
└── project.godot
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | ko_fi: ninstar
2 |
--------------------------------------------------------------------------------
/.github/banner.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.github/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ninstar/gdProject/5ea99ecfcf26f6c1277303f91c1fef83dc88b573/.github/example.png
--------------------------------------------------------------------------------
/.github/godot-badge-color.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.github/godot-badge-dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.github/godot-badge-light.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.github/workflows/godot-ci.yml:
--------------------------------------------------------------------------------
1 |
2 | name: Deploy exported project to GitHub Pages
3 |
4 | on:
5 | push:
6 | branches:
7 | - main
8 |
9 | env:
10 | GODOT_VERSION: 4.3
11 | EXPORT_NAME: gdProject
12 | PROJECT_PATH: .
13 |
14 | jobs:
15 | export-web:
16 | name: Web Export
17 | runs-on: ubuntu-20.04
18 | container:
19 | image: barichello/godot-ci:4.3
20 | steps:
21 | - name: Checkout
22 | uses: actions/checkout@v4
23 | with:
24 | lfs: true
25 | - name: Setup
26 | run: |
27 | mkdir -v -p ~/.local/share/godot/export_templates/
28 | mv /root/.local/share/godot/export_templates/${GODOT_VERSION}.stable ~/.local/share/godot/export_templates/${GODOT_VERSION}.stable
29 | - name: Web Build
30 | run: |
31 | mkdir -v -p build/web
32 | EXPORT_DIR="$(readlink -f build)"
33 | cd $PROJECT_PATH
34 | godot --headless --verbose --export-release "Web" "$EXPORT_DIR/web/index.html"
35 | - name: Upload Artifact
36 | uses: actions/upload-artifact@v4
37 | with:
38 | name: web
39 | path: build/web
40 | - name: Install rsync 📚
41 | run: |
42 | apt-get update && apt-get install -y rsync
43 | - name: Deploy to GitHub Pages 🚀
44 | uses: JamesIves/github-pages-deploy-action@releases/v4
45 | with:
46 | branch: gh-pages # The branch the action should deploy to.
47 | folder: build/web # The folder the action should deploy.
48 | single-commit: true
49 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # gdProject specific ignores
2 | debug/
3 |
4 | # Godot 4+ specific ignores
5 | .godot/
6 |
7 | # Godot-specific ignores
8 | .import/
9 | export.cfg
10 | #export_presets.cfg
11 |
12 | # Imported translations (automatically generated from CSV files)
13 | *.translation
14 |
15 | # Mono-specific ignores
16 | .mono/
17 | data_*/
18 | mono_crash.*.json
19 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule ".submodules/range_container"]
2 | path = .submodules/range_container
3 | url = https://github.com/ninstar/Godot-RangeContainer
4 | [submodule ".submodules/remote_container"]
5 | path = .submodules/remote_container
6 | url = https://github.com/ninstar/Godot-RemoteContainer
7 | [submodule ".submodules/resource_overrider"]
8 | path = .submodules/resource_overrider
9 | url = https://github.com/ninstar/Godot-ResourceOverrider
10 | [submodule ".submodules/nine_patch_sprite_2d"]
11 | path = .submodules/nine_patch_sprite_2d
12 | url = https://github.com/ninstar/Godot-NinePatchSprite2D
13 | [submodule ".submodules/state_machine_nodes"]
14 | path = .submodules/state_machine_nodes
15 | url = https://github.com/ninstar/Godot-StateMachineNodes
16 | [submodule ".submodules/icon_texture"]
17 | path = .submodules/icon_texture
18 | url = https://github.com/ninstar/Godot-IconTexture.git
19 |
--------------------------------------------------------------------------------
/COPYING:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Ny'hrarr (NinStar)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [
][home]
2 |
3 | # Overview
4 |
5 | A collection of add-ons for the Godot Engine.
6 |
7 | ## Add-ons
8 |
9 | -
**[NinePatchSprite2D](https://github.com/ninstar/Godot-NinePatchSprite2D)** - A Node2D that displays a texture by keeping its corners intact, but tiling its edges and center.
10 | -
**[RangeContainer](https://github.com/ninstar/Godot-RangeContainer)** - A ScrollContainer that can be controlled by external Range nodes.
11 | -
**[RemoteContainer](https://github.com/ninstar/Godot-RemoteContainer)** - RemoteContainer pushes its own transform to another Control derived node in the scene.
12 | -
**[ResourceOverrider](https://github.com/ninstar/Godot-ResourceOverrider)** - A node that replaces Resources on-the-fly using suffixes.
13 | -
**[IconTexture](https://github.com/ninstar/Godot-IconTexture)** - A texture that draws an icon of a Theme resource.
14 | -
**[StateMachine Nodes](https://github.com/ninstar/Godot-StateMachineNodes)** - A set of Finite State Machine nodes for organizing and processing logic.
15 |
16 | > [!NOTE]
17 | > The add-ons provided in this repository as submodules are always based on their latest versions.
18 |
19 |
You can support my work by purchasing these add-ons:
20 | 
21 |
22 | ## Usage
23 |
24 | 1. Clone the repository and its submodules:
25 | ```bash
26 | git clone --recurse-submodules https://github.com/ninstar/gdProject.git
27 | ```
28 | 2. Open ``/project.godot`` in Godot and run it.
29 | 3. The ☰ menu provides a list of all available examples that you can choose from.
30 | - All examples are self contained and can be easily copied to any other project along with their respective add-ons.
31 |
32 |
33 |
34 | ## Archive
35 |
36 | > [!WARNING]
37 | > The following add-ons are unmaintained and no longer included in the project and have not been tested with newer versions of Godot.
38 | -
**[AudioSyncPlayer Nodes](https://github.com/ninstar/Godot-AudioSyncPlayerNodes)** ``Godot 4.2`` - A set of Audio Player nodes that can be synchronized.
39 |
40 |
41 | # Credits
42 |
43 | - **Code & Resources** - Ny'hrarr (NinStar)
44 |
45 | [home]: https://ninstars.blogspot.com/p/gdproject.html
46 |
--------------------------------------------------------------------------------
/addons/icon_texture:
--------------------------------------------------------------------------------
1 | ../.submodules/icon_texture/addons/icon_texture
--------------------------------------------------------------------------------
/addons/nine_patch_sprite_2d:
--------------------------------------------------------------------------------
1 | ../.submodules/nine_patch_sprite_2d/addons/nine_patch_sprite_2d
--------------------------------------------------------------------------------
/addons/range_container:
--------------------------------------------------------------------------------
1 | ../.submodules/range_container/addons/range_container
--------------------------------------------------------------------------------
/addons/remote_container:
--------------------------------------------------------------------------------
1 | ../.submodules/remote_container/addons/remote_container
--------------------------------------------------------------------------------
/addons/resource_overrider:
--------------------------------------------------------------------------------
1 | ../.submodules/resource_overrider/addons/resource_overrider
--------------------------------------------------------------------------------
/addons/state_machine_nodes:
--------------------------------------------------------------------------------
1 | ../.submodules/state_machine_nodes/addons/state_machine_nodes
--------------------------------------------------------------------------------
/examples/icon_texture:
--------------------------------------------------------------------------------
1 | ../.submodules/icon_texture/examples/icon_texture
--------------------------------------------------------------------------------
/examples/nine_patch_sprite_2d:
--------------------------------------------------------------------------------
1 | ../.submodules/nine_patch_sprite_2d/examples/nine_patch_sprite_2d
--------------------------------------------------------------------------------
/examples/range_container:
--------------------------------------------------------------------------------
1 | ../.submodules/range_container/examples/range_container
--------------------------------------------------------------------------------
/examples/remote_container:
--------------------------------------------------------------------------------
1 | ../.submodules/remote_container/examples/remote_container
--------------------------------------------------------------------------------
/examples/resource_overrider:
--------------------------------------------------------------------------------
1 | ../.submodules/resource_overrider/examples/resource_overrider
--------------------------------------------------------------------------------
/examples/state_machine_nodes:
--------------------------------------------------------------------------------
1 | ../.submodules/state_machine_nodes/examples/state_machine_nodes
--------------------------------------------------------------------------------
/export_presets.cfg:
--------------------------------------------------------------------------------
1 | [preset.0]
2 |
3 | name="Web"
4 | platform="Web"
5 | runnable=true
6 | advanced_options=true
7 | dedicated_server=false
8 | custom_features=""
9 | export_filter="all_resources"
10 | include_filter=""
11 | exclude_filter=""
12 | export_path=""
13 | encryption_include_filters=""
14 | encryption_exclude_filters=""
15 | encrypt_pck=false
16 | encrypt_directory=false
17 | script_export_mode=2
18 |
19 | [preset.0.options]
20 |
21 | custom_template/debug=""
22 | custom_template/release=""
23 | variant/extensions_support=false
24 | variant/thread_support=false
25 | vram_texture_compression/for_desktop=true
26 | vram_texture_compression/for_mobile=false
27 | html/export_icon=true
28 | html/custom_html_shell=""
29 | html/head_include=""
30 | html/canvas_resize_policy=2
31 | html/focus_canvas_on_start=true
32 | html/experimental_virtual_keyboard=false
33 | progressive_web_app/enabled=false
34 | progressive_web_app/ensure_cross_origin_isolation_headers=true
35 | progressive_web_app/offline_page=""
36 | progressive_web_app/display=1
37 | progressive_web_app/orientation=0
38 | progressive_web_app/icon_144x144=""
39 | progressive_web_app/icon_180x180=""
40 | progressive_web_app/icon_512x512=""
41 | progressive_web_app/background_color=Color(0, 0, 0, 1)
42 |
--------------------------------------------------------------------------------
/main/examples.gd:
--------------------------------------------------------------------------------
1 | extends Object
2 |
3 |
4 | func get_list() -> Array[Dictionary]:
5 | return [
6 | {
7 | &"title": "NinePatchSprite2D",
8 | &"hint": "A Node2D that displays a texture by keeping its corners intact, but tiling its edges and center.",
9 | &"icon": "res://addons/nine_patch_sprite_2d/nine_patch_sprite_2d.svg",
10 | &"path": "res://examples/nine_patch_sprite_2d/scene.tscn",
11 | },
12 | {
13 | &"title": "RangeContainer",
14 | &"hint": "A ScrollContainer that can be controlled by external Range nodes.",
15 | &"icon": "res://addons/range_container/range_container.svg",
16 | &"path": "res://examples/range_container/scene.tscn",
17 | },
18 | {
19 | &"title": "RemoteContainer",
20 | &"hint": "RemoteContainer pushes its own transform to another Control derived node in the scene.",
21 | &"icon": "res://addons/remote_container/remote_container.svg",
22 | &"path": "res://examples/remote_container/scene.tscn",
23 | },
24 | {
25 | &"title": "ResourceOverrider",
26 | &"hint": "A node that replaces Resources on-the-fly using suffixes.",
27 | &"icon": "res://addons/resource_overrider/resource_overrider.svg",
28 | &"path": "res://examples/resource_overrider/scene.tscn",
29 | },
30 | {
31 | &"title": "IconTexture",
32 | &"hint": "A texture that draws an icon of a Theme resource.",
33 | &"icon": "res://addons/icon_texture/icon_texture.svg",
34 | &"path": "res://examples/icon_texture/scene.tscn",
35 | },
36 | {
37 | &"title": "StateMachine Nodes",
38 | &"hint": "A set of Finite State Machine nodes for organizing and processing logic.",
39 | &"icon": "res://addons/state_machine_nodes/state_machine.svg",
40 | &"path": "res://examples/state_machine_nodes/scene.tscn",
41 | },
42 | ]
43 |
--------------------------------------------------------------------------------
/main/examples.gd.uid:
--------------------------------------------------------------------------------
1 | uid://bkwjokfvxk4mr
2 |
--------------------------------------------------------------------------------
/main/gallery.gd:
--------------------------------------------------------------------------------
1 | extends Node
2 |
3 |
4 | const EXAMPLES := preload("examples.gd")
5 |
6 |
7 | @onready var background: ColorRect = $Background
8 | @onready var start: Control = $UI/Start
9 | @onready var menu: MenuButton = $UI/Header/Menu
10 | @onready var icon: TextureRect = $UI/Header/Demo/Box/Icon
11 | @onready var title: Label = $UI/Header/Demo/Box/Title
12 | @onready var hint: Panel = $UI/Header/Demo/Box/Hint
13 | @onready var transparency_button: Button = $UI/Header/Transparency
14 |
15 | var current_demo: Node
16 | var opacity_tween: Tween
17 |
18 |
19 | func _ready() -> void:
20 | var popup: PopupMenu = menu.get_popup()
21 | popup.index_pressed.connect(_on_menu_index_pressed)
22 | var examples := EXAMPLES.new()
23 | var index: int = 0
24 | for dict: Dictionary in examples.get_list():
25 | popup.add_icon_item(load(dict.get(&"icon", null)), dict.get(&"title", ""), index)
26 | popup.set_item_metadata(index, dict.get(&"path", ""))
27 | popup.set_item_tooltip(index, dict.get(&"hint", ""))
28 | index += 1
29 |
30 | transparency_button.visible = not OS.has_feature("web")
31 |
32 |
33 | func _on_menu_index_pressed(index: int) -> void:
34 | if is_instance_valid(current_demo):
35 | var queued := current_demo
36 | queued.queue_free()
37 |
38 | var popup: PopupMenu = menu.get_popup()
39 | var path: String = popup.get_item_metadata(index)
40 | if not path.is_empty():
41 | var scene: PackedScene = load(path)
42 | current_demo = scene.instantiate()
43 | add_child(current_demo)
44 | move_child(current_demo, 1)
45 |
46 | icon.texture = popup.get_item_icon(index)
47 | title.text = popup.get_item_text(index)
48 | hint.tooltip_text = popup.get_item_tooltip(index)
49 |
50 | icon.visible = icon != null
51 | title.visible = not title.text.is_empty()
52 | hint.visible = not hint.tooltip_text.is_empty()
53 |
54 | start.visible = current_demo == null
55 |
56 |
57 | func _on_opacity_pressed() -> void:
58 | if opacity_tween:
59 | opacity_tween.kill()
60 |
61 | opacity_tween = create_tween().set_trans(Tween.TRANS_QUINT).set_ease(Tween.EASE_OUT)
62 | opacity_tween.tween_property(background, ^"color:a", 0.5 if background.color.a > 0.75 else 1.0, 1.0)
63 |
64 |
--------------------------------------------------------------------------------
/main/gallery.gd.uid:
--------------------------------------------------------------------------------
1 | uid://c2sgi81m1e3mu
2 |
--------------------------------------------------------------------------------
/main/gallery.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=14 format=3 uid="uid://bpsif74mjwqj8"]
2 |
3 | [ext_resource type="Script" uid="uid://c2sgi81m1e3mu" path="res://main/gallery.gd" id="1_hhu0m"]
4 | [ext_resource type="Texture2D" uid="uid://cd8fgy1l2gdbk" path="res://main/logo.svg" id="2_abw7f"]
5 | [ext_resource type="Texture2D" uid="uid://bhwdmdmllp1cn" path="res://main/icon.svg" id="3_3a24k"]
6 | [ext_resource type="Texture2D" uid="uid://bh2fsgxdol1ax" path="res://main/menu.svg" id="3_l2cob"]
7 | [ext_resource type="Texture2D" uid="uid://cg67vmk8gpd63" path="res://main/opacity.svg" id="4_3smaf"]
8 |
9 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wnyj8"]
10 | bg_color = Color(0.32, 0.32, 0.32, 0.501961)
11 |
12 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_mn2y5"]
13 | bg_color = Color(0.3735, 0.586533, 0.83, 1)
14 |
15 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_bm0e5"]
16 | bg_color = Color(0, 0, 0, 0.501961)
17 |
18 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kdg4m"]
19 | content_margin_left = 16.0
20 | content_margin_top = 8.0
21 | content_margin_right = 16.0
22 | content_margin_bottom = 8.0
23 | bg_color = Color(0, 0, 0, 0.25098)
24 | corner_radius_bottom_right = 8
25 |
26 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xm6u5"]
27 | bg_color = Color(1, 1, 1, 1)
28 | corner_radius_top_left = 32
29 | corner_radius_top_right = 32
30 | corner_radius_bottom_right = 32
31 | corner_radius_bottom_left = 32
32 |
33 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o4esv"]
34 | content_margin_left = 8.0
35 | content_margin_top = 8.0
36 | content_margin_right = 8.0
37 | content_margin_bottom = 8.0
38 | bg_color = Color(0.32, 0.32, 0.32, 0.501961)
39 | corner_radius_top_left = 64
40 | corner_radius_top_right = 64
41 | corner_radius_bottom_right = 64
42 | corner_radius_bottom_left = 64
43 |
44 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7x6t1"]
45 | content_margin_left = 8.0
46 | content_margin_top = 8.0
47 | content_margin_right = 8.0
48 | content_margin_bottom = 8.0
49 | bg_color = Color(0.3735, 0.586533, 0.83, 1)
50 | corner_radius_top_left = 64
51 | corner_radius_top_right = 64
52 | corner_radius_bottom_right = 64
53 | corner_radius_bottom_left = 64
54 |
55 | [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ryuo6"]
56 | content_margin_left = 8.0
57 | content_margin_top = 8.0
58 | content_margin_right = 8.0
59 | content_margin_bottom = 8.0
60 | bg_color = Color(0, 0, 0, 0.25098)
61 | corner_radius_top_left = 64
62 | corner_radius_top_right = 64
63 | corner_radius_bottom_right = 64
64 | corner_radius_bottom_left = 64
65 |
66 | [node name="Main" type="Node"]
67 | script = ExtResource("1_hhu0m")
68 |
69 | [node name="Background" type="ColorRect" parent="."]
70 | anchors_preset = 15
71 | anchor_right = 1.0
72 | anchor_bottom = 1.0
73 | grow_horizontal = 2
74 | grow_vertical = 2
75 | color = Color(0.168627, 0.168627, 0.168627, 1)
76 |
77 | [node name="UI" type="CanvasLayer" parent="."]
78 | layer = 128
79 |
80 | [node name="Start" type="Control" parent="UI"]
81 | layout_mode = 3
82 | anchors_preset = 15
83 | anchor_right = 1.0
84 | anchor_bottom = 1.0
85 | grow_horizontal = 2
86 | grow_vertical = 2
87 | metadata/_edit_lock_ = true
88 |
89 | [node name="Box" type="VBoxContainer" parent="UI/Start"]
90 | layout_mode = 1
91 | anchors_preset = 8
92 | anchor_left = 0.5
93 | anchor_top = 0.5
94 | anchor_right = 0.5
95 | anchor_bottom = 0.5
96 | offset_left = -256.0
97 | offset_top = -77.5
98 | offset_right = 256.0
99 | offset_bottom = 77.5
100 | grow_horizontal = 2
101 | grow_vertical = 2
102 | theme_override_constants/separation = 16
103 |
104 | [node name="Greetings" type="Label" parent="UI/Start/Box"]
105 | layout_mode = 2
106 | theme_override_font_sizes/font_size = 24
107 | text = "- Welcome to -"
108 | horizontal_alignment = 1
109 | vertical_alignment = 1
110 |
111 | [node name="Logo" type="TextureRect" parent="UI/Start/Box"]
112 | layout_mode = 2
113 | texture = ExtResource("2_abw7f")
114 | stretch_mode = 3
115 |
116 | [node name="Hint" type="HBoxContainer" parent="UI/Start/Box"]
117 | layout_mode = 2
118 | theme_override_constants/separation = 8
119 |
120 | [node name="LabelL" type="Label" parent="UI/Start/Box/Hint"]
121 | layout_mode = 2
122 | theme_override_font_sizes/font_size = 24
123 | text = "Click the"
124 | horizontal_alignment = 1
125 | vertical_alignment = 1
126 |
127 | [node name="Icon" type="TextureRect" parent="UI/Start/Box/Hint"]
128 | layout_mode = 2
129 | texture = ExtResource("3_l2cob")
130 | stretch_mode = 5
131 |
132 | [node name="LabelR" type="Label" parent="UI/Start/Box/Hint"]
133 | layout_mode = 2
134 | theme_override_font_sizes/font_size = 24
135 | text = "button to select an example scene."
136 | horizontal_alignment = 1
137 | vertical_alignment = 1
138 |
139 | [node name="Header" type="HBoxContainer" parent="UI"]
140 | custom_minimum_size = Vector2(64, 48)
141 | offset_right = 225.0
142 | offset_bottom = 48.0
143 | theme_override_constants/separation = 0
144 |
145 | [node name="Menu" type="MenuButton" parent="UI/Header"]
146 | custom_minimum_size = Vector2(64, 0)
147 | layout_mode = 2
148 | tooltip_text = "Examples"
149 | mouse_default_cursor_shape = 2
150 | theme_override_font_sizes/font_size = 24
151 | theme_override_styles/hover = SubResource("StyleBoxFlat_wnyj8")
152 | theme_override_styles/pressed = SubResource("StyleBoxFlat_mn2y5")
153 | theme_override_styles/normal = SubResource("StyleBoxFlat_bm0e5")
154 | icon = ExtResource("3_l2cob")
155 | flat = false
156 | icon_alignment = 1
157 |
158 | [node name="Demo" type="PanelContainer" parent="UI/Header"]
159 | layout_mode = 2
160 | theme_override_styles/panel = SubResource("StyleBoxFlat_kdg4m")
161 |
162 | [node name="Box" type="HBoxContainer" parent="UI/Header/Demo"]
163 | layout_mode = 2
164 | theme_override_constants/separation = 8
165 |
166 | [node name="Icon" type="TextureRect" parent="UI/Header/Demo/Box"]
167 | visible = false
168 | custom_minimum_size = Vector2(16, 16)
169 | layout_mode = 2
170 | size_flags_vertical = 4
171 | texture = ExtResource("3_3a24k")
172 | expand_mode = 1
173 |
174 | [node name="Title" type="Label" parent="UI/Header/Demo/Box"]
175 | visible = false
176 | layout_mode = 2
177 | theme_override_font_sizes/font_size = 14
178 | text = "Demo"
179 |
180 | [node name="Padding" type="Control" parent="UI/Header/Demo/Box"]
181 | custom_minimum_size = Vector2(4, 0)
182 | layout_mode = 2
183 |
184 | [node name="Hint" type="Panel" parent="UI/Header/Demo/Box"]
185 | visible = false
186 | custom_minimum_size = Vector2(16, 16)
187 | layout_mode = 2
188 | size_flags_vertical = 4
189 | theme_override_styles/panel = SubResource("StyleBoxFlat_xm6u5")
190 |
191 | [node name="Label" type="Label" parent="UI/Header/Demo/Box/Hint"]
192 | layout_mode = 1
193 | anchors_preset = 8
194 | anchor_left = 0.5
195 | anchor_top = 0.5
196 | anchor_right = 0.5
197 | anchor_bottom = 0.5
198 | offset_left = -3.0
199 | offset_top = -11.5
200 | offset_right = 5.0
201 | offset_bottom = 11.5
202 | grow_horizontal = 2
203 | grow_vertical = 2
204 | size_flags_horizontal = 4
205 | theme_override_colors/font_color = Color(0.16, 0.16, 0.16, 1)
206 | theme_override_font_sizes/font_size = 14
207 | text = "?"
208 | horizontal_alignment = 1
209 | vertical_alignment = 1
210 |
211 | [node name="Padding" type="Control" parent="UI/Header"]
212 | custom_minimum_size = Vector2(12, 0)
213 | layout_mode = 2
214 | size_flags_horizontal = 0
215 |
216 | [node name="Transparency" type="Button" parent="UI/Header"]
217 | layout_mode = 2
218 | size_flags_vertical = 4
219 | tooltip_text = "Transparency"
220 | focus_mode = 0
221 | mouse_default_cursor_shape = 2
222 | theme_override_styles/hover = SubResource("StyleBoxFlat_o4esv")
223 | theme_override_styles/pressed = SubResource("StyleBoxFlat_7x6t1")
224 | theme_override_styles/normal = SubResource("StyleBoxFlat_ryuo6")
225 | icon = ExtResource("4_3smaf")
226 |
227 | [connection signal="pressed" from="UI/Header/Transparency" to="." method="_on_opacity_pressed"]
228 |
--------------------------------------------------------------------------------
/main/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/main/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bhwdmdmllp1cn"
6 | path="res://.godot/imported/icon.svg-dd558d2b63205f95be972b3cdd0351b5.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://main/icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-dd558d2b63205f95be972b3cdd0351b5.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/main/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/main/logo.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cd8fgy1l2gdbk"
6 | path="res://.godot/imported/logo.svg-8955d45ab81a16f9533d6012de35d877.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://main/logo.svg"
14 | dest_files=["res://.godot/imported/logo.svg-8955d45ab81a16f9533d6012de35d877.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/main/menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/main/menu.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bh2fsgxdol1ax"
6 | path="res://.godot/imported/menu.svg-2636ecbe8bf778aaaf91189bf6a5101c.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://main/menu.svg"
14 | dest_files=["res://.godot/imported/menu.svg-2636ecbe8bf778aaaf91189bf6a5101c.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/main/opacity.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/main/opacity.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cg67vmk8gpd63"
6 | path="res://.godot/imported/opacity.svg-1c5ecf810fe97013709262eede6de11f.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://main/opacity.svg"
14 | dest_files=["res://.godot/imported/opacity.svg-1c5ecf810fe97013709262eede6de11f.ctex"]
15 |
16 | [params]
17 |
18 | compress/mode=0
19 | compress/high_quality=false
20 | compress/lossy_quality=0.7
21 | compress/hdr_compression=1
22 | compress/normal_map=0
23 | compress/channel_pack=0
24 | mipmaps/generate=false
25 | mipmaps/limit=-1
26 | roughness/mode=0
27 | roughness/src_normal=""
28 | process/fix_alpha_border=true
29 | process/premult_alpha=false
30 | process/normal_map_invert_y=false
31 | process/hdr_as_srgb=false
32 | process/hdr_clamp_exposure=false
33 | process/size_limit=0
34 | detect_3d/compress_to=1
35 | svg/scale=1.0
36 | editor/scale_with_editor_scale=false
37 | editor/convert_colors_with_editor_theme=false
38 |
--------------------------------------------------------------------------------
/project.godot:
--------------------------------------------------------------------------------
1 | ; Engine configuration file.
2 | ; It's best edited using the editor UI and not directly,
3 | ; since the parameters that go here are not all obvious.
4 | ;
5 | ; Format:
6 | ; [section] ; section goes between []
7 | ; param=value ; assign values to parameters
8 |
9 | config_version=5
10 |
11 | [application]
12 |
13 | config/name="gdProject"
14 | config/description="A collection of add-ons and utilities for Godot."
15 | config/tags=PackedStringArray("addon", "demo")
16 | run/main_scene="res://main/gallery.tscn"
17 | config/features=PackedStringArray("4.4", "GL Compatibility")
18 | boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 1)
19 | config/icon="res://main/icon.svg"
20 |
21 | [display]
22 |
23 | window/size/transparent=true
24 | window/per_pixel_transparency/allowed=true
25 |
26 | [editor_plugins]
27 |
28 | enabled=PackedStringArray("res://addons/nine_patch_sprite_2d/plugin.cfg", "res://addons/range_container/plugin.cfg", "res://addons/remote_container/plugin.cfg", "res://addons/resource_overrider/plugin.cfg", "res://addons/state_machine_nodes/plugin.cfg")
29 |
30 | [filesystem]
31 |
32 | import/blender/enabled=false
33 |
34 | [internationalization]
35 |
36 | locale/translation_remaps={}
37 |
38 | [rendering]
39 |
40 | renderer/rendering_method="gl_compatibility"
41 | renderer/rendering_method.mobile="gl_compatibility"
42 | environment/defaults/default_clear_color=Color(0.172549, 0.172549, 0.172549, 1)
43 | viewport/transparent_background=true
44 |
--------------------------------------------------------------------------------