Skip to content

Commit 39ea60c

Browse files
committed
Initial commit
0 parents  commit 39ea60c

File tree

7 files changed

+184
-0
lines changed

7 files changed

+184
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.godot/

export_presets.cfg

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
[preset.0]
3+
4+
name="Export Extension (PCK)"
5+
platform="Windows Desktop"
6+
runnable=true
7+
custom_features=""
8+
export_filter="all_resources"
9+
include_filter="*.json"
10+
exclude_filter=""
11+
export_path=""
12+
script_export_mode=1
13+
script_encryption_key=""
14+
15+
[preset.0.options]
16+
17+
custom_template/debug=""
18+
custom_template/release=""
19+
binary_format/64_bits=true
20+
binary_format/embed_pck=false
21+
texture_format/bptc=false
22+
texture_format/s3tc=true
23+
texture_format/etc=false
24+
texture_format/etc2=false
25+
texture_format/no_bptc_fallbacks=true
26+
codesign/enable=false
27+
codesign/identity=""
28+
codesign/password=""
29+
codesign/timestamp=true
30+
codesign/timestamp_server_url=""
31+
codesign/digest_algorithm=1
32+
codesign/description=""
33+
codesign/custom_options=PackedStringArray( )
34+
application/icon=""
35+
application/file_version=""
36+
application/product_version=""
37+
application/company_name=""
38+
application/product_name=""
39+
application/file_description=""
40+
application/copyright=""
41+
application/trademarks=""

project.godot

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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="LocalCheckerSize"
14+
config/description="A pixelorama Extention (The Name and Description field are not related to extention system so they can be anything)"
15+
run/main_scene="res://src/Extensions/LocalCheckerSize/Main.tscn"
16+
config/features=PackedStringArray("4.4", "GL Compatibility")
17+
18+
[rendering]
19+
20+
renderer/rendering_method="gl_compatibility"
21+
renderer/rendering_method.mobile="gl_compatibility"
+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
extends Node
2+
3+
var api: Node
4+
var default_checker_size: int
5+
6+
var new_proj_option_label: Label
7+
var checker_size_label: Label
8+
var new_proj_value_slider: TextureProgressBar
9+
var local_value_slider: TextureProgressBar
10+
11+
12+
# This script acts as a setup for the extension
13+
func _enter_tree() -> void:
14+
api = get_node_or_null("/root/ExtensionsApi")
15+
var global = api.general.get_global()
16+
if global:
17+
# basic initialization
18+
default_checker_size = global.checker_size
19+
global.checker_follow_movement = true
20+
global.checker_follow_scale = true
21+
api.signals.signal_project_switched(proj_switched)
22+
23+
# Add size option to new image panel
24+
var new_proj_dialog = global.top_menu_container.new_image_dialog
25+
new_proj_dialog.instantiate_scene()
26+
var new_proj_window: Window = new_proj_dialog.node
27+
if is_instance_valid(new_proj_window):
28+
var option_parent = new_proj_window.find_child("FillColorContainer")
29+
if option_parent:
30+
new_proj_option_label = Label.new()
31+
new_proj_option_label.text = "Checker Size"
32+
new_proj_option_label.custom_minimum_size.x = 100
33+
new_proj_option_label.size_flags_horizontal = Control.SIZE_EXPAND
34+
new_proj_value_slider = initialize_slider(default_checker_size)
35+
option_parent.add_child(new_proj_option_label)
36+
option_parent.add_child(new_proj_value_slider)
37+
38+
# Add size option toproject properties
39+
var proj_prop_dialog = global.top_menu_container.project_properties_dialog
40+
proj_prop_dialog.instantiate_scene()
41+
var proj_prop_window: Window = proj_prop_dialog.node
42+
if is_instance_valid(proj_prop_dialog):
43+
var prop_parent: GridContainer = proj_prop_window.size_value_label.get_parent()
44+
if prop_parent:
45+
checker_size_label = Label.new()
46+
checker_size_label.text = "Local Checker Size"
47+
checker_size_label.custom_minimum_size.x = 100
48+
checker_size_label.size_flags_horizontal = Control.SIZE_EXPAND
49+
var initial_value = default_checker_size
50+
var proj: RefCounted = api.project.current_project
51+
if proj:
52+
proj.set_meta(
53+
"checker_size",
54+
proj.get_meta(
55+
"checker_size", initial_value
56+
)
57+
)
58+
initial_value = proj.get_meta("checker_size", initial_value)
59+
local_value_slider = initialize_slider(initial_value)
60+
local_value_slider.value_changed.connect(
61+
func(new_value):
62+
var c_proj = api.project.current_project
63+
if is_instance_valid(c_proj):
64+
c_proj.set_meta("checker_size", new_value)
65+
api.general.get_global().checker_size = new_value
66+
)
67+
68+
prop_parent.add_child(checker_size_label)
69+
prop_parent.add_child(local_value_slider)
70+
71+
72+
## This also gets called when new project gets created
73+
func proj_switched():
74+
var proj: RefCounted = api.project.current_project
75+
# set project checker size if it isn't defined yet
76+
proj.set_meta("checker_size", proj.get_meta("checker_size", new_proj_value_slider.value))
77+
# change the checker size based on project's metadata
78+
if proj.has_meta("checker_size"): # Failsafe
79+
api.general.get_global().checker_size = proj.get_meta("checker_size")
80+
if api.general.get_global().top_menu_container.project_properties_dialog.node:
81+
local_value_slider.value = api.general.get_global().checker_size
82+
83+
84+
func _exit_tree() -> void: # Extension is being uninstalled or disabled
85+
api.signals.signal_project_switched(proj_switched, true)
86+
if new_proj_option_label and checker_size_label and new_proj_option_label and new_proj_value_slider:
87+
new_proj_option_label.queue_free()
88+
checker_size_label.queue_free()
89+
new_proj_value_slider.queue_free()
90+
local_value_slider.queue_free()
91+
api.general.get_global().checker_size = default_checker_size
92+
93+
94+
func initialize_slider(initial_value: int) -> TextureProgressBar:
95+
var new_value_slider = api.general.create_value_slider()
96+
new_value_slider.allow_greater = true
97+
new_value_slider.allow_lesser = false
98+
new_value_slider.size_flags_horizontal = Control.SIZE_EXPAND_FILL
99+
new_value_slider.min_value = 1.0
100+
new_value_slider.max_value = 64
101+
new_value_slider.step = 1.0
102+
new_value_slider.value = initial_value
103+
new_value_slider.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
104+
return new_value_slider
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://usjhk6mwq03k
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[gd_scene load_steps=2 format=3 uid="uid://dak6bjln1xl41"]
2+
3+
[ext_resource type="Script" uid="uid://usjhk6mwq03k" path="res://src/Extensions/LocalCheckerSize/Main.gd" id="1"]
4+
5+
[node name="Main" type="Node"]
6+
script = ExtResource("1")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"author": "Variable",
3+
"description": "Allows each project to have their own checker size",
4+
"display_name": "Local Checker Size",
5+
"license": "MIT",
6+
"name": "LocalCheckerSize",
7+
"nodes": ["Main.tscn"],
8+
"supported_api_versions": [6],
9+
"version": "0.1"
10+
}

0 commit comments

Comments
 (0)