From 25f8b1998870ebfc4c8594aa49549313bf4f8b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20Ero=C4=9Flu?= Date: Sat, 29 Aug 2020 22:37:28 +0300 Subject: [PATCH] First version --- LICENSE | 21 +++++++ README.md | 46 +++++++++++++++ VirtualJoystick.gd | 122 +++++++++++++++++++++++++++++++++++++++ VirtualJoystickPlugin.gd | 16 +++++ icon.png | Bin 0 -> 174 bytes plugin.cfg | 7 +++ ss.png | Bin 0 -> 50965 bytes texture-settings.png | Bin 0 -> 8052 bytes 8 files changed, 212 insertions(+) create mode 100755 LICENSE create mode 100755 README.md create mode 100755 VirtualJoystick.gd create mode 100755 VirtualJoystickPlugin.gd create mode 100755 icon.png create mode 100755 plugin.cfg create mode 100755 ss.png create mode 100755 texture-settings.png diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..4256769 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Oğuzhan Eroğlu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 0000000..5a3daa0 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ + # virtual-joystick +Virtual joystick plugin for Godot Engine. + +![Godot Virtual Joystick](ss.png) + +## Installation +### GIT +You can install the plugin with GIT. + +```bash +cd /path/to/project +mkdir -p addons +cd addons +git clone https://github.com/rohanrhu/virtual-joystick +``` + +## Usage +### Add a `Virtualjoystick` node. +### Add a `CollisionShape2D` and set a `CircleShape2D` to that. +### Set container and button textures +![Texture Settings](texture-settings.png) + +## Events +### `controlling` +Fires during user control. + +### `trimming` +Fires while button is trimming to container's border. + +### `released` +Fires when user released the joystick. + +## Properties +### `container_texture: Texture` +### `button_texture: Texture` +### `is_mouseover: bool` +### `is_dragging: bool` +### `is_trimming: bool` +### `angle: float` +### `velocity: Vector2` + +## Notices +* While you are testing it on mouse, you may want to enable `Project Settings > General > Input Devices > Pointing > Emulate Touch From Mouse` setting. + + ## License +MIT \ No newline at end of file diff --git a/VirtualJoystick.gd b/VirtualJoystick.gd new file mode 100755 index 0000000..98ab244 --- /dev/null +++ b/VirtualJoystick.gd @@ -0,0 +1,122 @@ +# Virtual Joystick plugin for Godot Engine +# +# https://github.com/rohanrhu/virtual-joystick +# +# Licensed under MIT +# Copyright (C) 2020, Oğuzhan Eroğlu (https://oguzhaneroglu.com/) + +extends Area2D + +export(Texture) var container_texture +export(Texture) var button_texture + +onready var shape = $CollisionShape2D +onready var container +onready var button + +var is_mouseover = false +var is_dragging = false +var is_trimming = false +var angle = 0.0 +var velocity = Vector2.ZERO +var current_event = false + +signal controlling +signal trimming +signal released + +func _ready(): + connect("mouse_entered", self, "_on_mouse_entered") + connect("mouse_exited", self, "_on_mouse_exited") + + container = Sprite.new() + button = Sprite.new() + + add_child(container) + add_child(button) + + container.texture = container_texture + button.texture = button_texture + + container.global_position = global_position + button.global_position = container.global_position + +func _process(delta): + pass + +func _input(event): + if not (event is InputEventScreenDrag) and not (event is InputEventScreenTouch): + return + + if current_event is InputEvent and current_event.index == event.index: + current_event = event + else: + return + + if not is_mouseover: + if event is InputEventScreenTouch: + if not event.pressed: + is_dragging = false + is_trimming = false + button.global_position = container.global_position + velocity = Vector2.ZERO + + emit_signal("released") + + _process_button() + +func _input_event(viewport, event, shape_idx): + if not (event is InputEventScreenDrag) and not (event is InputEventScreenTouch): + return + + current_event = event + + if event is InputEventScreenTouch: + is_dragging = event.pressed + if not is_dragging: + is_trimming = false + button.global_position = container.global_position + velocity = Vector2.ZERO + angle = 0.0 + + emit_signal("released") + + _process_button() + +func _process_button(): + if is_dragging: + button.global_position = current_event.position + + var da = abs(button.global_position.x - container.global_position.x) + var db = abs(button.global_position.y - container.global_position.y) + var dh = sqrt(pow(da, 2) + pow(db, 2)); + + var a = button.global_position.x - container.global_position.x + var b = button.global_position.y - container.global_position.y + var h = sqrt(pow(a, 2) + pow(b, 2)); + angle = atan2(a, b) + + is_trimming = dh > shape.shape.radius + + if is_trimming: + var x = container.global_position.x + sin(angle) * shape.shape.radius + var y = container.global_position.y + cos(angle) * shape.shape.radius + + button.global_position.x = x + button.global_position.y = y + + var v = Vector2(sin(angle), cos(angle)) + var is_changed = velocity != v + velocity = v + + if is_changed: + emit_signal("controlling") + + if is_trimming: + emit_signal("trimming") + +func _on_mouse_entered(): + is_mouseover = true + +func _on_mouse_exited(): + is_mouseover = false diff --git a/VirtualJoystickPlugin.gd b/VirtualJoystickPlugin.gd new file mode 100755 index 0000000..fc1d619 --- /dev/null +++ b/VirtualJoystickPlugin.gd @@ -0,0 +1,16 @@ +# Virtual Joystick plugin for Godot Engine +# +# https://github.com/rohanrhu/virtual-joystick +# +# Licensed under MIT +# Copyright (C) 2020, Oğuzhan Eroğlu (https://oguzhaneroglu.com/) + +tool + +extends EditorPlugin + +func _enter_tree(): + add_custom_type("VirtualJoystick", "Area2D", preload("VirtualJoystick.gd"), preload("icon.png")) + +func _exit_tree(): + remove_custom_type("Joystick") diff --git a/icon.png b/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..1ef992b92ecd3d8861bd170c256b973d5748afae GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m=rgPZ!4!i{9jv1B@}*=l{4rd!J{Pcw`x$vp}q}m4kT)=lrB3hOW$( zoa4{9x?&AJu<>k)P)5)n`u-5kT{0Y<95_Jp=CWx_#xGNv6WMr81PStSthL#0D Pvl%>H{an^LB{Ts5nzb^A literal 0 HcmV?d00001 diff --git a/plugin.cfg b/plugin.cfg new file mode 100755 index 0000000..25b605d --- /dev/null +++ b/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="VirtualJoystick" +description="Virtual joystick for Godot." +author="Oğuzhan Eroğlu" +version="1.0" +script="VirtualJoystickPlugin.gd" diff --git a/ss.png b/ss.png new file mode 100755 index 0000000000000000000000000000000000000000..d84572f1bf901ab5147a69a8ef7bdfef98f05398 GIT binary patch literal 50965 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 pZ4XE>JWJ_#fhl