From 8891190a31d748cf7244922d571eaa1fcc90b5e8 Mon Sep 17 00:00:00 2001 From: Spencer Killen Date: Sat, 11 Nov 2023 14:56:43 -0700 Subject: [PATCH] Add radial charger --- blends/small_room.blend | 4 +- blends/small_room.blend1 | Bin 1003500 -> 1003500 bytes .../control_target_overlay.material | 4 +- godot/control_scheme/controller.gd | 14 ++++++- godot/control_scheme/controller.tscn | 6 ++- godot/control_scheme/is_targetable.gd | 6 +-- godot/control_scheme/radial_ui.gd | 8 ++++ godot/control_scheme/radial_ui.gdshader | 39 ++++++++++++++++++ godot/control_scheme/radial_ui.tscn | 13 ++++++ godot/control_scheme/radial_ui_material.tres | 18 ++++++++ godot/project.godot | 8 ++++ 11 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 godot/control_scheme/radial_ui.gd create mode 100644 godot/control_scheme/radial_ui.gdshader create mode 100644 godot/control_scheme/radial_ui.tscn create mode 100644 godot/control_scheme/radial_ui_material.tres diff --git a/blends/small_room.blend b/blends/small_room.blend index 4f65553..c8427de 100644 --- a/blends/small_room.blend +++ b/blends/small_room.blend @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6e3a6002d6f2611ab0741f65e74627d3f9aa36cd5f41ff9b1738ca35851c66d -size 1003500 +oid sha256:c945e1d7540e12b78b36a40fd8d0d9dfbb1fd82f38f70db6550eeae3e33beb71 +size 1003516 diff --git a/blends/small_room.blend1 b/blends/small_room.blend1 index ba196300e3ac968af4b9f525cde8741dad1b9ef0..314b0676f45e87efa0dadd978feb36ced1727965 100644 GIT binary patch delta 9785 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 delta 11041 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 diff --git a/godot/control_scheme/control_target_overlay.material b/godot/control_scheme/control_target_overlay.material index cfaaf59..54e4558 100644 --- a/godot/control_scheme/control_target_overlay.material +++ b/godot/control_scheme/control_target_overlay.material @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9dc4b0e289692491a6dfe242e569fc0891cdd83a85220fc7e81b5cdabec140e9 -size 286 +oid sha256:1e3e766b7b0124d761c5135e096f837b7b551017b16e64066c1e273d2fdc2722 +size 250 diff --git a/godot/control_scheme/controller.gd b/godot/control_scheme/controller.gd index 0f6d6b1..fb59083 100644 --- a/godot/control_scheme/controller.gd +++ b/godot/control_scheme/controller.gd @@ -4,6 +4,7 @@ extends Node3D @export var initial_target: Node3D var target: Targetable = null @export var sensitivity := 0.01 +@export var charge_time := 3 func _ready(): set_target(initial_target) @@ -11,12 +12,23 @@ func _ready(): func _input(event): if event is InputEventMouseMotion: rotate_view(event.relative*sensitivity) - + if event.is_action("charge"): + charge(event.get_action_strength("charge")) func _process(_delta): transform.origin = target.global_position camera.global_position = %camera_spot.global_position camera.look_at(target.global_position) +var charge_tween: Tween = null +func charge(amount: float): + if charge_tween != null: + charge_tween.kill() + if amount == 0.0: + %radial_ui.set_charge(0.0) + return + charge_tween = create_tween() + charge_tween.tween_method(%radial_ui.set_charge, 0.0, 1.0, charge_time) + func rotate_view(amount: Vector2): rotate_y(-amount.x) %rotate_helper.rotate_z(amount.y) diff --git a/godot/control_scheme/controller.tscn b/godot/control_scheme/controller.tscn index 6c16385..72528e9 100644 --- a/godot/control_scheme/controller.tscn +++ b/godot/control_scheme/controller.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=2 format=3 uid="uid://drmb4sitb74fx"] +[gd_scene load_steps=3 format=3 uid="uid://drmb4sitb74fx"] [ext_resource type="Script" path="res://control_scheme/controller.gd" id="1_h3pjb"] +[ext_resource type="PackedScene" uid="uid://p2n48c8st55d" path="res://control_scheme/radial_ui.tscn" id="2_qidcb"] [node name="controller" type="Node3D"] top_level = true @@ -12,3 +13,6 @@ unique_name_in_owner = true [node name="camera_spot" type="Marker3D" parent="rotate_helper"] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0) + +[node name="radial_ui" parent="." instance=ExtResource("2_qidcb")] +unique_name_in_owner = true diff --git a/godot/control_scheme/is_targetable.gd b/godot/control_scheme/is_targetable.gd index 846a38e..a2d6718 100644 --- a/godot/control_scheme/is_targetable.gd +++ b/godot/control_scheme/is_targetable.gd @@ -28,9 +28,9 @@ func change_all_materials(mesh: MeshInstance3D): layer0.next_pass = layer1 layer1.next_pass = layer2 - layer0.render_priority = 0 - layer1.render_priority = 1 - layer2.render_priority = 2 + layer0.render_priority = 10 + layer1.render_priority = 20 + layer2.render_priority = 30 diff --git a/godot/control_scheme/radial_ui.gd b/godot/control_scheme/radial_ui.gd new file mode 100644 index 0000000..dbf0c74 --- /dev/null +++ b/godot/control_scheme/radial_ui.gd @@ -0,0 +1,8 @@ +extends Node3D + +func _ready(): + set_charge(0.0) + +func set_charge(amount: float): + var mat: ShaderMaterial = $MeshInstance3D.get_active_material(0) + mat.set_shader_parameter("charge", amount) diff --git a/godot/control_scheme/radial_ui.gdshader b/godot/control_scheme/radial_ui.gdshader new file mode 100644 index 0000000..a532902 --- /dev/null +++ b/godot/control_scheme/radial_ui.gdshader @@ -0,0 +1,39 @@ +// NOTE: Shader automatically converted from Godot Engine 4.1.3.stable.mono's StandardMaterial3D. + +shader_type spatial; +render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_disabled,unshaded,shadows_disabled,ambient_light_disabled, depth_test_disabled; +uniform float grow; +uniform sampler2D colors : source_color, repeat_disable; +uniform float charge = 1.0; + +#include "res://shaders/noise.gdshaderinc" + +void vertex() { + // Billboarding + MODELVIEW_MATRIX = VIEW_MATRIX * mat4(INV_VIEW_MATRIX[0], INV_VIEW_MATRIX[1], INV_VIEW_MATRIX[2], MODEL_MATRIX[3]); + MODELVIEW_NORMAL_MATRIX = mat3(MODELVIEW_MATRIX); + VERTEX+=NORMAL*grow; + + + float speed = pow(2.0, ((charge+.4)*5.0)); + float dy = sin(speed*.7) * 0.005; + float dx = sin(speed) * 0.005; + VERTEX.y += dy; + VERTEX.x += dx; +} + +void fragment() { + float where = distance(UV, vec2(0.5))*2.0; + if (where >= charge) { + discard; + } + vec2 buv = floor(UV * 350.0); + int bx = int(buv.x); + int by = int(buv.y); + int amount = 2; + if ((bx % amount == 0) || (by % amount == 0)) { + discard; + } + + ALBEDO = texture(colors, vec2(where)).rgb; +} diff --git a/godot/control_scheme/radial_ui.tscn b/godot/control_scheme/radial_ui.tscn new file mode 100644 index 0000000..6800d1c --- /dev/null +++ b/godot/control_scheme/radial_ui.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=4 format=3 uid="uid://p2n48c8st55d"] + +[ext_resource type="Script" path="res://control_scheme/radial_ui.gd" id="1_0qwj1"] +[ext_resource type="Material" uid="uid://cybyibjbyyok1" path="res://control_scheme/radial_ui_material.tres" id="2_go05o"] + +[sub_resource type="QuadMesh" id="QuadMesh_sogra"] + +[node name="radial_ui" type="Node3D"] +script = ExtResource("1_0qwj1") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +material_override = ExtResource("2_go05o") +mesh = SubResource("QuadMesh_sogra") diff --git a/godot/control_scheme/radial_ui_material.tres b/godot/control_scheme/radial_ui_material.tres new file mode 100644 index 0000000..ab2f8ee --- /dev/null +++ b/godot/control_scheme/radial_ui_material.tres @@ -0,0 +1,18 @@ +[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://cybyibjbyyok1"] + +[ext_resource type="Shader" path="res://control_scheme/radial_ui.gdshader" id="1_hmfvm"] + +[sub_resource type="Gradient" id="Gradient_l7u12"] +interpolation_mode = 1 +offsets = PackedFloat32Array(0.00328947, 0.347039, 0.506579, 0.694079, 0.848684) +colors = PackedColorArray(0.266667, 0.215686, 0.258824, 1, 0.517647, 0.423529, 0.356863, 1, 0.807843, 0.627451, 0.494118, 1, 0.929412, 0.85098, 0.639216, 1, 0.886275, 0.909804, 0.752941, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_8vk7x"] +gradient = SubResource("Gradient_l7u12") + +[resource] +render_priority = 5 +shader = ExtResource("1_hmfvm") +shader_parameter/grow = 0.01 +shader_parameter/charge = 0.0 +shader_parameter/colors = SubResource("GradientTexture1D_8vk7x") diff --git a/godot/project.godot b/godot/project.godot index 489a5ff..2647583 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -25,3 +25,11 @@ project/assembly_name="Hurrmmm" [filesystem] import/blender/enabled=false + +[input] + +charge={ +"deadzone": 0.0, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +}