Skip to content

Commit c3ed554

Browse files
Add VTAndroidCore Plugin (#72)
1 parent b2aa38f commit c3ed554

7 files changed

Lines changed: 59 additions & 36 deletions

File tree

3.79 KB
Binary file not shown.
3.63 KB
Binary file not shown.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
@tool
2+
extends EditorPlugin
3+
4+
# A class member to hold the editor export plugin during its lifecycle.
5+
var export_plugin : BillingPluginExportPlugin
6+
7+
func _enter_tree():
8+
# Initialization of the plugin goes here.
9+
export_plugin = BillingPluginExportPlugin.new()
10+
add_export_plugin(export_plugin)
11+
12+
13+
func _exit_tree():
14+
# Clean-up of the plugin goes here.
15+
remove_export_plugin(export_plugin)
16+
export_plugin = null
17+
18+
19+
class BillingPluginExportPlugin extends EditorExportPlugin:
20+
var _plugin_name = "VTAndroidCore"
21+
22+
func _supports_platform(platform):
23+
if platform is EditorExportPlatformAndroid:
24+
return true
25+
return false
26+
27+
func _get_android_libraries(platform, debug):
28+
if debug:
29+
return PackedStringArray([_plugin_name + "/bin/debug/" + _plugin_name + "-debug.aar"])
30+
else:
31+
return PackedStringArray([_plugin_name + "/bin/release/" + _plugin_name + "-release.aar"])
32+
33+
func _get_android_dependencies(platform, debug):
34+
if debug:
35+
return PackedStringArray()
36+
else:
37+
return PackedStringArray()
38+
39+
func _get_name():
40+
return _plugin_name
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://ddhyjofvs0log

addons/VTAndroidCore/plugin.cfg

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[plugin]
2+
3+
name="VTAndroidCore"
4+
description="Mandatory plugin for VectorTouch, providing essential Android-specific methods and utilities."
5+
author="Anish Mishra"
6+
version="1.0"
7+
script="export_plugin.gd"

project.godot

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ text_editor/completion/add_type_hints=true
4747
text_editor/completion/add_node_path_literals=true
4848
text_editor/completion/add_string_name_literals=false
4949
text_editor/appearance/guidelines/line_length_guideline_hard_column=160
50+
enabled=PackedStringArray("res://addons/VTAndroidCore/plugin.cfg")
5051

5152
[filesystem]
5253

src/autoload/HandlerGUI.gd

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -18,49 +18,23 @@ var popup_stack: Array[Control]
1818
var shortcut_panel: PanelContainer
1919
var tabs_panel: PanelContainer
2020

21-
var android_runtime: JNISingleton
22-
var is_light_system_bars: bool = false
21+
var VTAndroidCore: JNISingleton
22+
var system_bar_color: Color = Color.BLACK
2323
var status_bar_visible: bool = true
2424

2525
var minimum_content_width : float
2626

27-
func set_system_bar_color(color: Color, override_appearance := false) -> void:
28-
if not android_runtime:
27+
func set_system_bar_color(color: Color, override := false) -> void:
28+
if (system_bar_color == color and not override) or not VTAndroidCore:
2929
return
30-
31-
var activity = android_runtime.getActivity()
32-
var callable = func ():
33-
var window = activity.getWindow()
34-
var decorView: JavaObject = window.getDecorView()
35-
decorView.setBackgroundColor(color.to_argb32())
36-
37-
if (is_light_system_bars != (color.get_luminance() > 0.45)) or override_appearance:
38-
is_light_system_bars = color.get_luminance() > 0.45
39-
var WindowInsetsControllerCompat = JavaClassWrapper.wrap("androidx.core.view.WindowInsetsControllerCompat")
40-
var controller = WindowInsetsControllerCompat.call("<init>", window, window.getDecorView())
41-
controller.setAppearanceLightNavigationBars(is_light_system_bars)
42-
controller.setAppearanceLightStatusBars(is_light_system_bars)
43-
44-
activity.runOnUiThread(android_runtime.createRunnableFromGodotCallable(callable))
30+
VTAndroidCore.setWindowColor(color)
31+
system_bar_color = color
4532

4633
func toogle_status_bar(visible: bool, override := false) -> void:
47-
if (status_bar_visible == visible and not override) or not android_runtime:
34+
if (status_bar_visible == visible and not override) or not VTAndroidCore:
4835
return
49-
50-
var activity = android_runtime.getActivity()
51-
var callable = func ():
52-
var window = activity.getWindow()
53-
var WindowInsetsControllerCompat = JavaClassWrapper.wrap("androidx.core.view.WindowInsetsControllerCompat")
54-
var controller = WindowInsetsControllerCompat.call("<init>", window, window.getDecorView())
55-
var type = JavaClassWrapper.wrap("androidx.core.view.WindowInsetsCompat$Type")
56-
if visible:
57-
controller.show(type.statusBars())
58-
else:
59-
controller.hide(type.statusBars())
60-
controller.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE)
61-
status_bar_visible = visible
62-
63-
activity.runOnUiThread(android_runtime.createRunnableFromGodotCallable(callable))
36+
VTAndroidCore.toogleStatusBar(visible)
37+
status_bar_visible = visible
6438

6539
var shortcut_registrations: Dictionary[Node, ShortcutsRegistration] = {}
6640

@@ -94,7 +68,7 @@ func _ready() -> void:
9468
await get_tree().process_frame # Helps make things more consistent.
9569
update_ui_scale()
9670

97-
android_runtime = Engine.get_singleton("AndroidRuntime")
71+
VTAndroidCore = Engine.get_singleton("VTAndroidCore")
9872
set_system_bar_color(ThemeUtils.base_color, true)
9973
toogle_status_bar(Configs.current_orientation == Configs.orientation.PORTRAIT)
10074
var version = JavaClassWrapper.wrap("android.os.Build$VERSION")

0 commit comments

Comments
 (0)