├── .gitattributes
├── .github
└── workflows
│ └── update-submodule.yml
├── .gitignore
├── LICENSE.md
├── README.md
├── addons
└── splash_screen_wizard
│ ├── editor_ui.gd
│ ├── icons
│ ├── IconAddSlide.svg
│ ├── IconAddSlide.svg.import
│ ├── ProjectIcon.png
│ ├── ProjectIcon.png.import
│ ├── ProjectIcon.svg
│ ├── ProjectIcon.svg.import
│ ├── SlideTransition.svg
│ ├── SlideTransition.svg.import
│ ├── SlideTransitionFade.svg
│ ├── SlideTransitionFade.svg.import
│ ├── SplashScreen.svg
│ ├── SplashScreen.svg.import
│ ├── SplashScreenSlide.svg
│ └── SplashScreenSlide.svg.import
│ ├── plugin.cfg
│ ├── slide_transition.gd
│ ├── splash_screen.gd
│ ├── splash_screen_slide.gd
│ ├── splash_screen_wizard.gd
│ └── transitions
│ └── slide_transition_fade.gd
├── demo_splash_screen_wizard
├── assets
│ ├── eye_lid.png
│ ├── eye_lid.png.import
│ ├── logo_vertical_monochrome_dark.svg
│ └── logo_vertical_monochrome_dark.svg.import
├── demo_splash_screen_wizard.tscn
├── slides
│ ├── slide_disclaimer.tscn
│ ├── slide_godot.gd
│ └── slide_godot.tscn
└── transitions
│ ├── fade_in.tres
│ └── fade_out.tres
├── icon.svg
├── icon.svg.import
├── images
├── screenshot_inspector.png
├── screenshot_inspector.png.import
├── screenshot_tree.png
└── screenshot_tree.png.import
└── project.godot
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Normalize EOL for all files that Git considers text files.
2 | * text=auto eol=lf
3 |
--------------------------------------------------------------------------------
/.github/workflows/update-submodule.yml:
--------------------------------------------------------------------------------
1 | name: Update Submodule Branch
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | build:
10 |
11 | runs-on: ubuntu-latest
12 |
13 | steps:
14 | - name: Checkout
15 | uses: actions/checkout@v2
16 |
17 | - name: Setup Git
18 | run: |
19 | git config --global user.name 'GitHub Action'
20 | git config --global user.email 'action@github.com'
21 | git fetch
22 |
23 | - name: Clean Submodule
24 | run: |
25 | git checkout submodule
26 | git rm -r .
27 |
28 | - name: Update from Main
29 | run: |
30 | git checkout main -- addons/splash_screen_wizard
31 | mv addons/splash_screen_wizard/* .
32 | git rm -r addons/splash_screen_wizard
33 |
34 | - name: Commit to Submodule
35 | continue-on-error: true
36 | run: |
37 | git add -A
38 | git commit -am "Updated Submodule from Main"
39 | git push
40 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Godot 4+ specific ignores
2 | .godot/
3 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 |
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2024 Pat
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SplashScreenWizard
2 |
3 |
4 |
5 |
6 |
7 |
8 | A simple plugin for the Godot Game Engine that allows you to create a custom splash screen for your game.
9 |
10 |
11 |
12 |
13 | > [!NOTE]
14 | > This plugin doesn't change the Boot Splash Screen of the Godot Engine that can be customized in the Project Settings. It provieds a new set of `Control` nodes that can be used to create a custom splash screen inside the `SceneTree`.
15 |
16 |
17 | You can also [buy me a coffee](https://ko-fi.com/pat02) if you like the plugin and feel like supporting me :D
18 |
19 |
20 | ## Features
21 | - Plug & Play: Just add the  `SplashScreen` node to your scene and you are ready to go.
22 | - Create custom splash screens in the editor by using  `SplashScreenSlide` nodes.
23 | - Set transitions for each slide using the `SlideTransition` system.
24 | - Let the player skip slides using the a defined input action.
25 |
26 | ## Installation
27 | You can install the plugin in one of the following ways:
28 |
29 | - Use the Godot Asset Library to install the plugin directly from the Godot Editor.
30 | - Get the latest release from the [Releases](https://github.com/ThePat02/SplashScreenWizard/releases) page and add the contents of the `addons` directory to your project.
31 | - Clone the repository using `git clone`.
32 | - Install it as git submodule using the `submodule` branch!
33 |
34 |
35 | ## Usage
36 | > [!TIP]
37 | > Each node and resource is documented using the Godot Engine's built-in documentation system. You can access the documentation by pressing `F1` or hovering over properties in the editor.
38 |
39 |
40 |
41 |
42 |
43 |
44 | The plugin provides the  `SplashScreen` and  `SplashScreenSlide` nodes. The `SplashScreen` node is the root node of the splash screen and the `SplashScreenSlide` nodes are the slides that are shown on the splash screen in order. You can add as many slides as you want to the `SplashScreen` node and customize them to your liking.
45 |
46 |
47 | ### Quick Start
48 | 1. Enable the plugin in the Project Settings.
49 | 2. Create a new `SplashScreen` node in your scene.
50 | 3. Add `SplashScreenSlide` nodes as children of the `SplashScreen` node.
51 | - I highly recommend creating a new scene for each slide with the `SplashScreenSlide` as the root node, as it will make it easier to edit the slides.
52 | 4. Customize the Slide nodes to your liking.
53 | - Set transitions (FadeIn, FadeOut, etc.) using the `transition_in` and `transition_out` properties. This plugin comes built-in with `SlideTransitionFade`, but you can create your own by inheriting from `SlideTransition`.
54 | - If there is no custom logic required, setting `continue_after_duration` to `true` will automatically continue to the next slide after the `duration` has passed.
55 | - If you want to add custom logic (e.g. animations, confirmation prompts, etc.), set `continue_after_duration` to `false` and extend the `SplashScreenSlide` script.
56 | 5. Run the scene and enjoy your custom splash screen.
57 | - If `autorun` is disabled, you can call `start()` on the `SplashScreen` node to start the splash screen manually.
58 |
59 |
60 | > [!IMPORTANT]
61 | > Make sure to set the correct `Anchor Presets` for the `SplashScreen` and `SplashScreenSlide` nodes, as they still function as regular `Control` nodes. You can do this by selecting the node and clicking the green circle with the white cross in your toolbar. Most of the time you will want to set the `Anchor Presets` to `Full Rect`.
62 |
63 |
64 | ### Advanced Usage
65 | As mentioned above, all nodes, functions and resources you will ever need are documented. There also is a demo scene included that showcases some of the features of the plugin. You can find it in the `demo_splash_screen_wizard` directory.
66 |
67 | #### Creating custom logic for slides
68 | Right click on the `SplashScreenSlide` node and select `Extend Script`. This will create a new script that extends the `SplashScreenSlide` class. You can now override the `_slide()
69 | ` method and implement your own logic, like playing animations from the `AnimationPlayer` or showing a confirmation prompt. After your logic is done, emit the `slide_finished` signal to continue to the next slide.
70 |
71 | ##### Example from the demo scene
72 | ```gdscript
73 | func _slide() -> void:
74 | var animation_player = %AnimationPlayer
75 | animation_player.play("wiggle")
76 | await animation_player.animation_finished
77 | slide_finished.emit()
78 | ```
79 |
80 | #### Creating custom transitions
81 | Create a new script that extends the `SlideTransition` class. You can now override the `_start()` method and implement your own transition logic. It is recommended to use `Tween`s for this, as they are built-in and easy to use.
82 |
83 | ##### Example from built-in Fade Transition
84 | ```gdscript
85 | class_name SlideTransitionFade extends SlideTransition
86 |
87 | # ...
88 |
89 | func _start(target: Node) -> void:
90 | var fade: Tween = target.get_tree().create_tween()
91 |
92 | var value_start: float
93 | var value_end: float
94 |
95 | match fade_type:
96 | FadeType.FADE_IN:
97 | value_start = 0
98 | value_end = 1
99 | FadeType.FADE_OUT:
100 | value_start = 1
101 | value_end = 0
102 |
103 |
104 | target.modulate.a = value_start
105 | target.show()
106 | fade.tween_property(target, "modulate:a", value_end, duration).set_trans(transition_type)
107 |
108 | await fade.finished
109 | ```
110 |
111 |
112 | ## Contributing
113 | Feel free to open a pull request or an issue if you have any suggestions or found a bug.
114 |
115 |
116 | ## License
117 | This project is licensed under the [MIT License](LICENSE.md).
118 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/editor_ui.gd:
--------------------------------------------------------------------------------
1 | extends EditorInspectorPlugin
2 |
3 |
4 | var icon_add_slide = load("res://addons/splash_screen_wizard/icons/IconAddSlide.svg")
5 |
6 |
7 | func _can_handle(object):
8 | if object is SplashScreen:
9 | return true
10 | else:
11 | return false
12 |
13 |
14 | func _parse_category(object, category):
15 | if category == "splash_screen.gd":
16 | _create_button_new_slide(object)
17 |
18 |
19 | func _create_button_new_slide(object):
20 | var button_add_slide = Button.new()
21 | button_add_slide.text = "Add new Slide"
22 |
23 | button_add_slide.icon = icon_add_slide
24 | button_add_slide.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
25 | button_add_slide.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP
26 | button_add_slide.expand_icon = true
27 |
28 | button_add_slide.connect("pressed", _on_button_add_slide_pressed.bind(object))
29 |
30 | add_custom_control(button_add_slide)
31 |
32 |
33 | func _on_button_add_slide_pressed(object: SplashScreen):
34 | var new_slide = SplashScreenSlide.new()
35 | new_slide.name = "NewSlide"
36 | new_slide.visible = true
37 |
38 | object.add_child(new_slide)
39 | new_slide.set_owner(object.get_tree().edited_scene_root)
40 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/IconAddSlide.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/IconAddSlide.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dtony0p2hpa3c"
6 | path="res://.godot/imported/IconAddSlide.svg-08d08033bed1e3ea38de2069fe075a48.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/IconAddSlide.svg"
15 | dest_files=["res://.godot/imported/IconAddSlide.svg-08d08033bed1e3ea38de2069fe075a48.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=2.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/ProjectIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/SplashScreenWizard/071d7a9ff8df1645ec3846ccbc47b5e9d60a05b1/addons/splash_screen_wizard/icons/ProjectIcon.png
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/ProjectIcon.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cv58y8digwm6j"
6 | path="res://.godot/imported/ProjectIcon.png-a5a8b2f85cc567504f01b3e018547e19.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://addons/splash_screen_wizard/icons/ProjectIcon.png"
14 | dest_files=["res://.godot/imported/ProjectIcon.png-a5a8b2f85cc567504f01b3e018547e19.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 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/ProjectIcon.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/ProjectIcon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://8jx3bua8ov0c"
6 | path="res://.godot/imported/ProjectIcon.svg-419cb0238c4af36f38cc5f072b0fa444.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/ProjectIcon.svg"
15 | dest_files=["res://.godot/imported/ProjectIcon.svg-419cb0238c4af36f38cc5f072b0fa444.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SlideTransition.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SlideTransition.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dxgmwcx5l0b3a"
6 | path="res://.godot/imported/SlideTransition.svg-a6d989bb23e5710e9ee4f5028172d946.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/SlideTransition.svg"
15 | dest_files=["res://.godot/imported/SlideTransition.svg-a6d989bb23e5710e9ee4f5028172d946.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SlideTransitionFade.svg:
--------------------------------------------------------------------------------
1 |
2 |
37 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SlideTransitionFade.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://qtmotfbh0qms"
6 | path="res://.godot/imported/SlideTransitionFade.svg-8a952951ab04cec155b15d21c3e6335c.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/SlideTransitionFade.svg"
15 | dest_files=["res://.godot/imported/SlideTransitionFade.svg-8a952951ab04cec155b15d21c3e6335c.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SplashScreen.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SplashScreen.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://bqu1xmvrngcwd"
6 | path="res://.godot/imported/SplashScreen.svg-404d1dc458fe8570ffe08dcf4d04792b.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/SplashScreen.svg"
15 | dest_files=["res://.godot/imported/SplashScreen.svg-404d1dc458fe8570ffe08dcf4d04792b.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SplashScreenSlide.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/icons/SplashScreenSlide.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://ctmtdgq7xb7nv"
6 | path="res://.godot/imported/SplashScreenSlide.svg-19af43d86edb340dce29525d9d66e430.ctex"
7 | metadata={
8 | "has_editor_variant": true,
9 | "vram_texture": false
10 | }
11 |
12 | [deps]
13 |
14 | source_file="res://addons/splash_screen_wizard/icons/SplashScreenSlide.svg"
15 | dest_files=["res://.godot/imported/SplashScreenSlide.svg-19af43d86edb340dce29525d9d66e430.ctex"]
16 |
17 | [params]
18 |
19 | compress/mode=0
20 | compress/high_quality=false
21 | compress/lossy_quality=0.7
22 | compress/hdr_compression=1
23 | compress/normal_map=0
24 | compress/channel_pack=0
25 | mipmaps/generate=false
26 | mipmaps/limit=-1
27 | roughness/mode=0
28 | roughness/src_normal=""
29 | process/fix_alpha_border=true
30 | process/premult_alpha=false
31 | process/normal_map_invert_y=false
32 | process/hdr_as_srgb=false
33 | process/hdr_clamp_exposure=false
34 | process/size_limit=0
35 | detect_3d/compress_to=1
36 | svg/scale=1.0
37 | editor/scale_with_editor_scale=true
38 | editor/convert_colors_with_editor_theme=false
39 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/plugin.cfg:
--------------------------------------------------------------------------------
1 | [plugin]
2 |
3 | name="SplashScreenWizard"
4 | description="A simple plugin for the Godot Game Engine that allows you to create a custom splash screen for your game."
5 | author="Pat"
6 | version="1.2"
7 | script="splash_screen_wizard.gd"
8 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/slide_transition.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/splash_screen_wizard/icons/SlideTransition.svg")
2 | class_name SlideTransition extends Resource
3 | ## Base class for all transitions used by [SplashScreenSlide]s.
4 | ##
5 | ## Transitions can be slotted into [member SplashScreenSlide.transition_in] and [member SplashScreenSlide.transition_out] to control how the slide appears
6 | ## and disappears respectively.
7 | ## [br][br]
8 | ## To create a custom transition, inherit from this class and override the [method _start] method. It is recommended to use
9 | ## a [Tween] to animate the transition. Take a look at the code of the [SlideTransitionFade] class for an example.
10 | ##
11 | ## @tutorial(Creating custom transitions): https://github.com/ThePat02/SplashScreenWizard?tab=readme-ov-file#creating-custom-transitions
12 |
13 |
14 | ## Override this method to implement the transition logic. For example: [SlideTransitionFade]
15 | func _start(target: Node) -> void:
16 | pass
17 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/splash_screen.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/splash_screen_wizard/icons/SplashScreen.svg")
2 | class_name SplashScreen extends Control
3 | ## A splash screen, which can be used to display several [SplashScreenSlide]s in a sequence.
4 | ##
5 | ## This is the main node of the `SplashScreenWizard` plugin and should be used as the root node of your splash screen.
6 | ## Add [SplashScreenSlide] nodes as children to display them in a sequence. The slides will hide automatically when running, so you don't have to hide them manually in the editor.
7 | ## Other nodes (e.g. a background or a logo) can be added as children as well,
8 | ## but they will not be affected by the splash screen and will be displayed at the same time as the slides.
9 | ##
10 | ## @tutorial(QuickStart Guide): https://github.com/ThePat02/SplashScreenWizard?tab=readme-ov-file#quick-start
11 |
12 |
13 | ## Emitted when a new slide is started.
14 | signal next_slide_started(slide: SplashScreenSlide)
15 | ## Emitted when a slide is finished.
16 | signal slide_finished(slide: SplashScreenSlide)
17 | ## Emitted when all slides are finished and the cleanup is done.
18 | signal finished
19 |
20 |
21 | ## If `true`, the splash screen will start automatically when it is ready. If `false`, you have to call [method start] manually.
22 | @export var auto_start: bool = true
23 | ## The delay between the slides in seconds.
24 | @export var delay_between_slides: float = 1.0
25 | ## The input action that can be used to skip a [SplashScreenSlide], if [member SplashScreenSlide.skippable] is `true`.
26 | @export var skip_input_action: StringName
27 | ## If `true`, the splash screen will be deleted after it is finished using [method Node.queue_free].
28 | @export var delete_after_finished: bool = true
29 |
30 |
31 | ## A list of all slides in the splash screen. This is automatically updated when the splash screen is started.
32 | var slides: Array[SplashScreenSlide] = []
33 | ## The current slide that is being displayed.
34 | var current_slide: SplashScreenSlide
35 |
36 |
37 | var _delay_timer: Timer
38 |
39 |
40 | func _ready() -> void:
41 | if not InputMap.has_action(skip_input_action):
42 | push_warning("SplashScreen: The input action \"" + skip_input_action + "\" does not exist in the Input Map.")
43 |
44 | if auto_start:
45 | start()
46 |
47 |
48 | func _input(event):
49 | if not current_slide:
50 | return
51 |
52 | if skip_input_action == "":
53 | return
54 |
55 | if event.is_action_pressed(skip_input_action):
56 | _skip_slide()
57 |
58 |
59 | ## Starts the splash screen. This will update the slides, start them and clean up afterwards. Called automatically if [member auto_start] is `true`.
60 | func start() -> void:
61 | _configure_timer()
62 | _update_slides()
63 | await _start_slides()
64 | _cleanup()
65 | finished.emit()
66 |
67 |
68 | func _configure_timer() -> void:
69 | _delay_timer = Timer.new()
70 | _delay_timer.one_shot = true
71 | add_child(_delay_timer)
72 |
73 |
74 | func _update_slides() -> void:
75 | slides.clear()
76 |
77 | for child in get_children():
78 | if child is SplashScreenSlide:
79 | slides.append(child)
80 |
81 | if slides.size() == 0:
82 | push_warning("SplashScreen: No slides found. Add some SplashScreenSlide nodes as children to display them in a sequence.")
83 |
84 |
85 | func _start_slides() -> void:
86 | for slide: SplashScreenSlide in slides:
87 | current_slide = slide
88 | next_slide_started.emit(slide)
89 |
90 | current_slide._start()
91 |
92 | await current_slide.finished
93 |
94 | _delay_timer.start(delay_between_slides)
95 | await _delay_timer.timeout
96 |
97 | slide_finished.emit(current_slide)
98 |
99 |
100 | func _cleanup() -> void:
101 | _delay_timer.queue_free()
102 | if delete_after_finished:
103 | queue_free()
104 |
105 |
106 | func _skip_slide() -> void:
107 | if current_slide:
108 | current_slide._skip()
109 | _delay_timer.stop()
110 | _delay_timer.emit_signal("timeout")
111 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/splash_screen_slide.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/splash_screen_wizard/icons/SplashScreenSlide.svg")
2 | class_name SplashScreenSlide extends Control
3 | ## A slide in the used and displayed in the [SplashScreen].
4 | ##
5 | ## Slides are used to display the splash screen's content. They can be used to display a logo, a loading screen, or any other content that should be displayed before the game starts.
6 | ## Using [SlideTransition]s, it is possible to animate the slide's entrance and exit.
7 | ## [br][br]
8 | ## When implementing custom logic for a slide, extend this class, override the [method _slide] method and emit the [signal slide_finished]
9 | ## when the slide is ready for the [member transition_out].
10 | ## This can be used to trigger animations, load resources, or perform any other logic that should be executed before the slide is finished.
11 | ##
12 | ## @tutorial(Creating custom logic for slides): https://github.com/ThePat02/SplashScreenWizard?tab=readme-ov-file#creating-custom-logic-for-slides
13 |
14 |
15 | ## Emitted when [method _slide] is finished and the slide is ready for the [member transition_out].
16 | signal slide_finished
17 | ## Emitted when the slide is finished and the [SplashScreen] can continue with the next slide.
18 | signal finished
19 |
20 |
21 | ## The transition used to animate the slide's entrance.
22 | @export var transition_in: SlideTransition
23 | ## The transition used to animate the slide's exit.
24 | @export var transition_out: SlideTransition
25 | ## If true, the slide will automatically continue after the [member duration] has passed, without waiting for [signal slide_finished].
26 | @export var continue_after_duration: bool = true
27 | ## The duration of the slide in seconds.
28 | @export var duration: float = 1.0
29 | ## If true, the slide can be skipped by pressing the keys defined by the [member SplashScreen.skip_input_action]
30 | @export var skippable: bool = false
31 |
32 |
33 | func _init() -> void:
34 | hide()
35 |
36 |
37 | func _start() -> void:
38 | if transition_in:
39 | await transition_in._start(self)
40 | else:
41 | show()
42 |
43 | _slide()
44 |
45 | if continue_after_duration:
46 | await get_tree().create_timer(duration).timeout
47 | else:
48 | await slide_finished
49 |
50 | if transition_out:
51 | transition_out._start(self)
52 | else:
53 | hide()
54 |
55 | emit_signal("finished")
56 |
57 |
58 | func _skip() -> void:
59 | if skippable:
60 | hide()
61 | process_mode = PROCESS_MODE_DISABLED
62 | emit_signal("finished")
63 |
64 |
65 | ## Override this method to implement the slide's logic and emit [signal slide_finished] when the slide is ready for the [member transition_out].
66 | func _slide() -> void:
67 | pass
68 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/splash_screen_wizard.gd:
--------------------------------------------------------------------------------
1 | @tool
2 | extends EditorPlugin
3 |
4 |
5 | var EditorUI = preload("res://addons/splash_screen_wizard/editor_ui.gd")
6 |
7 |
8 | var _inspector_plugin_editor_ui
9 |
10 |
11 | func _enter_tree():
12 | _inspector_plugin_editor_ui = EditorUI.new()
13 | add_inspector_plugin(_inspector_plugin_editor_ui)
14 |
15 |
16 | func _exit_tree():
17 | remove_inspector_plugin(_inspector_plugin_editor_ui)
18 |
--------------------------------------------------------------------------------
/addons/splash_screen_wizard/transitions/slide_transition_fade.gd:
--------------------------------------------------------------------------------
1 | @icon("res://addons/splash_screen_wizard/icons/SlideTransitionFade.svg")
2 | class_name SlideTransitionFade extends SlideTransition
3 | ## Transition that fades in or out a [SplashScreenSlide].
4 |
5 |
6 | ## The different types of fade.
7 | enum FadeType
8 | {
9 | ## Start with 0 and go to 1.
10 | FADE_IN,
11 | ## Start with 1 and go to 0.
12 | FADE_OUT,
13 | }
14 |
15 |
16 | ## The type of fade to perform.
17 | @export var fade_type: FadeType = FadeType.FADE_IN
18 | ## The duration of the fade.
19 | @export var duration: float = 0.5
20 | ## The type of transition to use.
21 | @export var transition_type: Tween.TransitionType = Tween.TransitionType.TRANS_LINEAR
22 |
23 |
24 | func _start(target: Node) -> void:
25 | var fade: Tween = target.get_tree().create_tween()
26 |
27 | var value_start: float
28 | var value_end: float
29 |
30 | match fade_type:
31 | FadeType.FADE_IN:
32 | value_start = 0
33 | value_end = 1
34 | FadeType.FADE_OUT:
35 | value_start = 1
36 | value_end = 0
37 |
38 |
39 | target.modulate.a = value_start
40 | target.show()
41 | fade.tween_property(target, "modulate:a", value_end, duration).set_trans(transition_type)
42 |
43 | await fade.finished
44 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/assets/eye_lid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/SplashScreenWizard/071d7a9ff8df1645ec3846ccbc47b5e9d60a05b1/demo_splash_screen_wizard/assets/eye_lid.png
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/assets/eye_lid.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dy3yr35alab4u"
6 | path="res://.godot/imported/eye_lid.png-f9c65f587d6f325e1e7bb49019f569e9.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://demo_splash_screen_wizard/assets/eye_lid.png"
14 | dest_files=["res://.godot/imported/eye_lid.png-f9c65f587d6f325e1e7bb49019f569e9.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 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/assets/logo_vertical_monochrome_dark.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/assets/logo_vertical_monochrome_dark.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://cnhi4do10thow"
6 | path="res://.godot/imported/logo_vertical_monochrome_dark.svg-e6519a8aaabd6ad0c2f3c12264f024c2.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://demo_splash_screen_wizard/assets/logo_vertical_monochrome_dark.svg"
14 | dest_files=["res://.godot/imported/logo_vertical_monochrome_dark.svg-e6519a8aaabd6ad0c2f3c12264f024c2.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 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/demo_splash_screen_wizard.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://bo22hma5o31ig"]
2 |
3 | [ext_resource type="Script" path="res://addons/splash_screen_wizard/splash_screen.gd" id="1_myy6d"]
4 | [ext_resource type="PackedScene" uid="uid://ckqiyl367tw67" path="res://demo_splash_screen_wizard/slides/slide_disclaimer.tscn" id="2_flgjm"]
5 | [ext_resource type="PackedScene" uid="uid://cxqpgg8ax8bqv" path="res://demo_splash_screen_wizard/slides/slide_godot.tscn" id="3_phgod"]
6 |
7 | [sub_resource type="LabelSettings" id="LabelSettings_8xhda"]
8 | font_size = 56
9 |
10 | [node name="DemoSplashScreenWizard" type="Control"]
11 | layout_mode = 3
12 | anchors_preset = 15
13 | anchor_right = 1.0
14 | anchor_bottom = 1.0
15 | grow_horizontal = 2
16 | grow_vertical = 2
17 |
18 | [node name="MainMenu" type="Control" parent="."]
19 | layout_mode = 1
20 | anchors_preset = 15
21 | anchor_right = 1.0
22 | anchor_bottom = 1.0
23 | grow_horizontal = 2
24 | grow_vertical = 2
25 |
26 | [node name="CenterContainer" type="CenterContainer" parent="MainMenu"]
27 | layout_mode = 1
28 | anchors_preset = 15
29 | anchor_right = 1.0
30 | anchor_bottom = 1.0
31 | grow_horizontal = 2
32 | grow_vertical = 2
33 |
34 | [node name="VBoxContainer" type="VBoxContainer" parent="MainMenu/CenterContainer"]
35 | layout_mode = 2
36 |
37 | [node name="Label" type="Label" parent="MainMenu/CenterContainer/VBoxContainer"]
38 | custom_minimum_size = Vector2(1000, 0)
39 | layout_mode = 2
40 | text = "Multiplayer MMO Battle Royale Survival Open World Game"
41 | label_settings = SubResource("LabelSettings_8xhda")
42 | horizontal_alignment = 1
43 | autowrap_mode = 2
44 |
45 | [node name="Button" type="Button" parent="MainMenu/CenterContainer/VBoxContainer"]
46 | layout_mode = 2
47 | text = "New Game"
48 |
49 | [node name="Button2" type="Button" parent="MainMenu/CenterContainer/VBoxContainer"]
50 | layout_mode = 2
51 | text = "Old Game"
52 |
53 | [node name="Button3" type="Button" parent="MainMenu/CenterContainer/VBoxContainer"]
54 | layout_mode = 2
55 | text = "This button doesn't work"
56 |
57 | [node name="SplashScreen" type="Control" parent="."]
58 | layout_mode = 1
59 | anchors_preset = 15
60 | anchor_right = 1.0
61 | anchor_bottom = 1.0
62 | grow_horizontal = 2
63 | grow_vertical = 2
64 | script = ExtResource("1_myy6d")
65 | delay_between_slides = 0.5
66 | skip_input_action = &"ui_accept"
67 |
68 | [node name="Background" type="ColorRect" parent="SplashScreen"]
69 | layout_mode = 1
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, 0, 0, 1)
76 |
77 | [node name="SlideDisclaimer" parent="SplashScreen" instance=ExtResource("2_flgjm")]
78 | layout_mode = 1
79 | duration = 3.0
80 |
81 | [node name="SlideGodot" parent="SplashScreen" instance=ExtResource("3_phgod")]
82 | layout_mode = 1
83 | skippable = true
84 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/slides/slide_disclaimer.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=5 format=3 uid="uid://ckqiyl367tw67"]
2 |
3 | [ext_resource type="Script" path="res://addons/splash_screen_wizard/splash_screen_slide.gd" id="1_5xj3q"]
4 | [ext_resource type="Resource" uid="uid://dphiwpkixnobm" path="res://demo_splash_screen_wizard/transitions/fade_in.tres" id="2_074l1"]
5 | [ext_resource type="Resource" uid="uid://bt2wxjwarvrol" path="res://demo_splash_screen_wizard/transitions/fade_out.tres" id="3_m5f48"]
6 |
7 | [sub_resource type="LabelSettings" id="LabelSettings_45uur"]
8 | font_size = 40
9 |
10 | [node name="SlideDisclaimer" type="Control"]
11 | layout_mode = 3
12 | anchors_preset = 15
13 | anchor_right = 1.0
14 | anchor_bottom = 1.0
15 | grow_horizontal = 2
16 | grow_vertical = 2
17 | script = ExtResource("1_5xj3q")
18 | transition_in = ExtResource("2_074l1")
19 | transition_out = ExtResource("3_m5f48")
20 |
21 | [node name="MarginContainer" type="MarginContainer" parent="."]
22 | layout_mode = 1
23 | anchors_preset = 15
24 | anchor_right = 1.0
25 | anchor_bottom = 1.0
26 | grow_horizontal = 2
27 | grow_vertical = 2
28 | theme_override_constants/margin_left = 40
29 | theme_override_constants/margin_top = 40
30 | theme_override_constants/margin_right = 40
31 | theme_override_constants/margin_bottom = 40
32 |
33 | [node name="Label" type="Label" parent="MarginContainer"]
34 | custom_minimum_size = Vector2(1, 1)
35 | layout_mode = 2
36 | text = "All characters and events in this demo, even those based on real people, are entirely fictional. All celebrity voices are impersonated, poorly. The following plugin contains coarse language and due to its content it should not be viewed by anyone."
37 | label_settings = SubResource("LabelSettings_45uur")
38 | horizontal_alignment = 1
39 | vertical_alignment = 1
40 | autowrap_mode = 2
41 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/slides/slide_godot.gd:
--------------------------------------------------------------------------------
1 | extends SplashScreenSlide
2 |
3 |
4 | func _slide() -> void:
5 | var animation_player = %AnimationPlayer
6 | animation_player.play("wiggle")
7 | await animation_player.animation_finished
8 | slide_finished.emit()
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/slides/slide_godot.tscn:
--------------------------------------------------------------------------------
1 | [gd_scene load_steps=8 format=3 uid="uid://cxqpgg8ax8bqv"]
2 |
3 | [ext_resource type="Script" path="res://demo_splash_screen_wizard/slides/slide_godot.gd" id="1_uihei"]
4 | [ext_resource type="Texture2D" uid="uid://cnhi4do10thow" path="res://demo_splash_screen_wizard/assets/logo_vertical_monochrome_dark.svg" id="2_0b4hu"]
5 | [ext_resource type="Resource" uid="uid://dphiwpkixnobm" path="res://demo_splash_screen_wizard/transitions/fade_in.tres" id="2_2cxhs"]
6 | [ext_resource type="Resource" uid="uid://bt2wxjwarvrol" path="res://demo_splash_screen_wizard/transitions/fade_out.tres" id="3_g0x0d"]
7 |
8 | [sub_resource type="Animation" id="Animation_yhrdi"]
9 | length = 0.001
10 | tracks/0/type = "value"
11 | tracks/0/imported = false
12 | tracks/0/enabled = true
13 | tracks/0/path = NodePath("Godot:scale")
14 | tracks/0/interp = 1
15 | tracks/0/loop_wrap = true
16 | tracks/0/keys = {
17 | "times": PackedFloat32Array(0),
18 | "transitions": PackedFloat32Array(1),
19 | "update": 0,
20 | "values": [Vector2(0.77, 0.77)]
21 | }
22 | tracks/1/type = "value"
23 | tracks/1/imported = false
24 | tracks/1/enabled = true
25 | tracks/1/path = NodePath("Godot:rotation")
26 | tracks/1/interp = 1
27 | tracks/1/loop_wrap = true
28 | tracks/1/keys = {
29 | "times": PackedFloat32Array(0),
30 | "transitions": PackedFloat32Array(1),
31 | "update": 0,
32 | "values": [0.0]
33 | }
34 |
35 | [sub_resource type="Animation" id="Animation_844dv"]
36 | resource_name = "wiggle"
37 | length = 2.0
38 | tracks/0/type = "value"
39 | tracks/0/imported = false
40 | tracks/0/enabled = true
41 | tracks/0/path = NodePath("Godot:scale")
42 | tracks/0/interp = 2
43 | tracks/0/loop_wrap = true
44 | tracks/0/keys = {
45 | "times": PackedFloat32Array(0, 0.5, 0.9),
46 | "transitions": PackedFloat32Array(1, 1, 1),
47 | "update": 0,
48 | "values": [Vector2(0.77, 0.77), Vector2(0.96, 0.96), Vector2(0.77, 0.77)]
49 | }
50 | tracks/1/type = "value"
51 | tracks/1/imported = false
52 | tracks/1/enabled = true
53 | tracks/1/path = NodePath("Godot:rotation")
54 | tracks/1/interp = 2
55 | tracks/1/loop_wrap = true
56 | tracks/1/keys = {
57 | "times": PackedFloat32Array(0, 0.3, 0.6, 0.9),
58 | "transitions": PackedFloat32Array(1, 1, 1, 1),
59 | "update": 0,
60 | "values": [0.0, -0.113446, 0.0558505, 0.0]
61 | }
62 |
63 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_v3h1w"]
64 | _data = {
65 | "RESET": SubResource("Animation_yhrdi"),
66 | "wiggle": SubResource("Animation_844dv")
67 | }
68 |
69 | [node name="SlideGodot" type="Control"]
70 | layout_mode = 3
71 | anchors_preset = 15
72 | anchor_right = 1.0
73 | anchor_bottom = 1.0
74 | grow_horizontal = 2
75 | grow_vertical = 2
76 | script = ExtResource("1_uihei")
77 | transition_in = ExtResource("2_2cxhs")
78 | transition_out = ExtResource("3_g0x0d")
79 | continue_after_duration = false
80 |
81 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
82 | unique_name_in_owner = true
83 | libraries = {
84 | "": SubResource("AnimationLibrary_v3h1w")
85 | }
86 |
87 | [node name="Godot" type="Sprite2D" parent="."]
88 | position = Vector2(576, 324)
89 | scale = Vector2(0.77, 0.77)
90 | texture = ExtResource("2_0b4hu")
91 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/transitions/fade_in.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="SlideTransitionFade" load_steps=2 format=3 uid="uid://dphiwpkixnobm"]
2 |
3 | [ext_resource type="Script" path="res://addons/splash_screen_wizard/transitions/slide_transition_fade.gd" id="1_pxv0o"]
4 |
5 | [resource]
6 | script = ExtResource("1_pxv0o")
7 | fade_type = 0
8 | duration = 2.0
9 | transition_type = 0
10 |
--------------------------------------------------------------------------------
/demo_splash_screen_wizard/transitions/fade_out.tres:
--------------------------------------------------------------------------------
1 | [gd_resource type="Resource" script_class="SlideTransitionFade" load_steps=2 format=3 uid="uid://bt2wxjwarvrol"]
2 |
3 | [ext_resource type="Script" path="res://addons/splash_screen_wizard/transitions/slide_transition_fade.gd" id="1_p0y3g"]
4 |
5 | [resource]
6 | script = ExtResource("1_p0y3g")
7 | fade_type = 1
8 | duration = 0.5
9 | transition_type = 0
10 |
--------------------------------------------------------------------------------
/icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/icon.svg.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://w8v2n4up85t3"
6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://icon.svg"
14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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 |
--------------------------------------------------------------------------------
/images/screenshot_inspector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/SplashScreenWizard/071d7a9ff8df1645ec3846ccbc47b5e9d60a05b1/images/screenshot_inspector.png
--------------------------------------------------------------------------------
/images/screenshot_inspector.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://dfanfifa56xbe"
6 | path="res://.godot/imported/screenshot_inspector.png-c180e23fbdb74689c26e9e0e98ac4831.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/screenshot_inspector.png"
14 | dest_files=["res://.godot/imported/screenshot_inspector.png-c180e23fbdb74689c26e9e0e98ac4831.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 |
--------------------------------------------------------------------------------
/images/screenshot_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThePat02/SplashScreenWizard/071d7a9ff8df1645ec3846ccbc47b5e9d60a05b1/images/screenshot_tree.png
--------------------------------------------------------------------------------
/images/screenshot_tree.png.import:
--------------------------------------------------------------------------------
1 | [remap]
2 |
3 | importer="texture"
4 | type="CompressedTexture2D"
5 | uid="uid://b1dkpkhjk4act"
6 | path="res://.godot/imported/screenshot_tree.png-d95dc4fc1fd9c7abebd056ad5205314a.ctex"
7 | metadata={
8 | "vram_texture": false
9 | }
10 |
11 | [deps]
12 |
13 | source_file="res://images/screenshot_tree.png"
14 | dest_files=["res://.godot/imported/screenshot_tree.png-d95dc4fc1fd9c7abebd056ad5205314a.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 |
--------------------------------------------------------------------------------
/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="SplashScreenWizard"
14 | config/description="A simple plugin for the Godot Game Engine that allows you to create a custom splash screen for your game."
15 | run/main_scene="res://demo_splash_screen_wizard/demo_splash_screen_wizard.tscn"
16 | config/features=PackedStringArray("4.3", "Forward Plus")
17 | config/icon="res://addons/splash_screen_wizard/icons/ProjectIcon.png"
18 |
19 | [editor_plugins]
20 |
21 | enabled=PackedStringArray("res://addons/splash_screen_wizard/plugin.cfg")
22 |
23 | [filesystem]
24 |
25 | import/blender/enabled=false
26 |
--------------------------------------------------------------------------------