This commit is contained in:
parent
5e213f3dba
commit
3fbdf2ded0
|
@ -0,0 +1,28 @@
|
|||
extends Control
|
||||
|
||||
|
||||
func _input(event):
|
||||
var f: Callable
|
||||
if event.is_pressed():
|
||||
f = press
|
||||
else:
|
||||
f = release
|
||||
if event.is_action("regress"):
|
||||
f.call($FrameButtons/RegressButton)
|
||||
elif event.is_action("advance"):
|
||||
f.call($FrameButtons/AdvanceButton)
|
||||
elif event.is_action("increment"):
|
||||
if TAS_System.IsIncrementingFrames:
|
||||
f.call($TASButtons/StopIncrementButton)
|
||||
else:
|
||||
f.call($TASButtons/StartIncrementButton)
|
||||
|
||||
|
||||
func press(btn: Button):
|
||||
btn.button_pressed = true
|
||||
btn.pressed.emit()
|
||||
btn.button_down.emit()
|
||||
|
||||
func release(btn: Button):
|
||||
btn.button_pressed = false
|
||||
btn.button_up.emit()
|
|
@ -1,6 +1,7 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://b1uf31ed6h0ir"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://b1uf31ed6h0ir"]
|
||||
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/CurrentFrameLabel.cs" id="1_27u4w"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/TAS UI.gd" id="1_ytl0x"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/RegressButton.cs" id="2_fhmsa"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/Label2.gd" id="2_otida"]
|
||||
[ext_resource type="Script" path="res://UI/TAS UI/AdvanceButton.cs" id="3_0ti6q"]
|
||||
|
@ -16,8 +17,10 @@ anchor_bottom = 1.0
|
|||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
script = ExtResource("1_ytl0x")
|
||||
|
||||
[node name="DEBUG" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
|
@ -51,6 +54,7 @@ text = "Current Frame: 0"
|
|||
script = ExtResource("2_otida")
|
||||
|
||||
[node name="FrameButtons" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
|
@ -69,6 +73,7 @@ anchors_preset = -1
|
|||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
grow_vertical = 2
|
||||
focus_mode = 0
|
||||
text = "Regress"
|
||||
script = ExtResource("2_fhmsa")
|
||||
|
||||
|
@ -79,11 +84,13 @@ anchor_left = 0.5
|
|||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_vertical = 2
|
||||
focus_mode = 0
|
||||
disabled = true
|
||||
text = "Advance"
|
||||
script = ExtResource("3_0ti6q")
|
||||
|
||||
[node name="TASButtons" type="Control" parent="."]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 3
|
||||
anchor_left = 1.0
|
||||
|
@ -101,6 +108,7 @@ anchors_preset = 10
|
|||
anchor_right = 1.0
|
||||
offset_bottom = 31.0
|
||||
grow_horizontal = 2
|
||||
focus_mode = 0
|
||||
text = "Stop Increment"
|
||||
script = ExtResource("4_4gd4c")
|
||||
|
||||
|
@ -114,6 +122,7 @@ offset_top = -15.5
|
|||
offset_bottom = 15.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
focus_mode = 0
|
||||
text = "Start Increment"
|
||||
script = ExtResource("5_5af83")
|
||||
|
||||
|
@ -126,5 +135,6 @@ anchor_bottom = 1.0
|
|||
offset_top = -31.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 0
|
||||
focus_mode = 0
|
||||
text = "Reset Frames"
|
||||
script = ExtResource("6_nwwkv")
|
||||
|
|
|
@ -4,6 +4,7 @@ extends Node3D
|
|||
@export var initial_target: Node3D
|
||||
var target: Targetable = null
|
||||
@export var sensitivity := 0.01
|
||||
@export var controller_sensitivity := 0.04
|
||||
@export var charge_time := 1.7
|
||||
@export var min_charge := 0.2
|
||||
|
||||
|
@ -61,6 +62,10 @@ func _input(event):
|
|||
$NoChargesSound.play()
|
||||
|
||||
func _process(_delta):
|
||||
if target.get_billiard().can_hit:
|
||||
set_strobe(strobe_amount)
|
||||
else:
|
||||
set_strobe(0.0)
|
||||
transform.origin = target.global_position
|
||||
%camera_spot.look_at(target.global_position)
|
||||
if not camera_tweening:
|
||||
|
@ -72,14 +77,16 @@ func _process(_delta):
|
|||
if (camera.global_position - %camera_spot.global_position).length() <= epsilon and (camera.global_rotation - %camera_spot.global_rotation).length() <= epsilon:
|
||||
camera_tweening = false
|
||||
|
||||
|
||||
if get_charge() >= 1.0:
|
||||
cancel_charge()
|
||||
|
||||
var look := Input.get_vector("look_left", "look_right", "loop_up", "look_down")
|
||||
rotate_view(look*controller_sensitivity)
|
||||
|
||||
func cancel_charge():
|
||||
%radial_ui.set_charge(0.0)
|
||||
%ChargeSound.stop()
|
||||
if charge_tween != null:
|
||||
if charge_tween != null:
|
||||
charge_tween.kill()
|
||||
charge_tween = null
|
||||
var billiard := target.get_billiard()
|
||||
|
@ -119,6 +126,7 @@ func rotate_view(amount: Vector2):
|
|||
|
||||
func set_target(node: Node3D, should_create_tween=true):
|
||||
camera_tweening = should_create_tween
|
||||
$AnimationPlayer.seek(0)
|
||||
|
||||
var ntarget = Targetable.is_targetable(node)
|
||||
var billiard = ntarget.get_billiard()
|
||||
|
@ -130,3 +138,7 @@ func set_target(node: Node3D, should_create_tween=true):
|
|||
target.unmake_target()
|
||||
ntarget.make_target()
|
||||
target = ntarget
|
||||
|
||||
@export var strobe_amount: float = 0.0
|
||||
func set_strobe(c: float):
|
||||
target.set_strobe(c)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://drmb4sitb74fx"]
|
||||
[gd_scene load_steps=8 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"]
|
||||
|
@ -6,6 +6,27 @@
|
|||
[ext_resource type="AudioStream" uid="uid://c5v6c6x05lqg3" path="res://audio/billiard-clack.wav" id="4_12r5s"]
|
||||
[ext_resource type="AudioStream" uid="uid://bg07vavc0duo5" path="res://audio/error.mp3" id="5_l6rvw"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_p1nwe"]
|
||||
resource_name = "highlight_target"
|
||||
loop_mode = 2
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:strobe_amount")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.5, 1),
|
||||
"transitions": PackedFloat32Array(1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [0.0, 0.3, 0.0]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_e1dcv"]
|
||||
_data = {
|
||||
"highlight_target": SubResource("Animation_p1nwe")
|
||||
}
|
||||
|
||||
[node name="controller" type="Node3D"]
|
||||
top_level = true
|
||||
script = ExtResource("1_h3pjb")
|
||||
|
@ -30,3 +51,9 @@ stream = ExtResource("4_12r5s")
|
|||
|
||||
[node name="NoChargesSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource("5_l6rvw")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
autoplay = "highlight_target"
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_e1dcv")
|
||||
}
|
||||
|
|
|
@ -24,10 +24,10 @@ func walk_meshes_post_order(parent: Node, f: Callable):
|
|||
func change_all_materials(mesh: MeshInstance3D):
|
||||
for i in range(mesh.get_surface_override_material_count()):
|
||||
var original_mat: BaseMaterial3D = mesh.get_active_material(i)
|
||||
var layer0 = original_mat.duplicate()
|
||||
var layer1 = preload("control_target_overlay.material").duplicate()
|
||||
var layer0: BaseMaterial3D = original_mat.duplicate()
|
||||
var layer1: ShaderMaterial = preload("control_target_overlay.material").duplicate()
|
||||
# Non-occlused
|
||||
var layer2 = original_mat.duplicate()
|
||||
var layer2: BaseMaterial3D = original_mat.duplicate()
|
||||
layer0.next_pass = layer1
|
||||
layer1.next_pass = layer2
|
||||
|
||||
|
@ -45,12 +45,31 @@ func change_all_materials(mesh: MeshInstance3D):
|
|||
layer2.depth_draw_mode = BaseMaterial3D.DEPTH_DRAW_ALWAYS
|
||||
|
||||
mesh.set_surface_override_material(i, layer0)
|
||||
|
||||
|
||||
func unchange_all_materials(mesh: MeshInstance3D):
|
||||
for i in range(mesh.get_surface_override_material_count()):
|
||||
var mat := mesh.get_active_material(i)
|
||||
var layer2: StandardMaterial3D = mat.next_pass.next_pass
|
||||
mesh.set_surface_override_material(i, layer2)
|
||||
layer2.transparency = BaseMaterial3D.TRANSPARENCY_DISABLED
|
||||
layer2.depth_draw_mode = BaseMaterial3D.DEPTH_DRAW_OPAQUE_ONLY
|
||||
layer2.emission_enabled = false
|
||||
layer2.emission = Color(1.0, 1.0, 1.0)
|
||||
mesh.set_surface_override_material(i, layer2.duplicate())
|
||||
|
||||
func set_strobe(color: float):
|
||||
walk_meshes_post_order(self.get_parent(), set_mesh_strobe.bind(color))
|
||||
|
||||
func set_mesh_strobe(mesh: MeshInstance3D, color: float):
|
||||
for i in range(mesh.get_surface_override_material_count()):
|
||||
var mat := mesh.get_active_material(i)
|
||||
var layer0: BaseMaterial3D = mat
|
||||
var layer1: ShaderMaterial = mat.next_pass
|
||||
var layer2: BaseMaterial3D = mat.next_pass.next_pass
|
||||
|
||||
layer0.emission_enabled = true
|
||||
layer2.emission_enabled = true
|
||||
layer0.emission_energy_multiplier = color
|
||||
layer2.emission_energy_multiplier = color
|
||||
layer0.emission = Color(1.0, 0.0, 0.0)
|
||||
layer2.emission = Color(1.0, 0.0, 0.0)
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2022 Brandon Davis
|
||||
|
||||
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.
|
|
@ -25,8 +25,6 @@ func frames_reset():
|
|||
can_hit_history = Dictionary()
|
||||
can_hit_history[0] = can_hit
|
||||
|
||||
|
||||
|
||||
func hit(impulse: Vector3, power: float):
|
||||
apply_central_impulse(impulse * lerp(power_min, power_max, power))
|
||||
|
||||
|
|
|
@ -41,6 +41,56 @@ ui_cancel={
|
|||
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)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":9,"pressure":0.0,"pressed":true,"script":null)
|
||||
]
|
||||
}
|
||||
advance={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":88,"key_label":0,"unicode":120,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
increment={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":true,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null)
|
||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":1,"pressure":0.0,"pressed":true,"script":null)
|
||||
]
|
||||
}
|
||||
regress={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":81,"key_label":0,"unicode":113,"echo":false,"script":null)
|
||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
loop_up={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
look_right={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
look_down={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
||||
]
|
||||
}
|
||||
look_left={
|
||||
"deadzone": 0.0,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -50,3 +100,10 @@ charge={
|
|||
3d/default_angular_damp=5.0
|
||||
3d/time_before_sleep=0.1
|
||||
3d/solver/solver_iterations=128
|
||||
|
||||
[rendering]
|
||||
|
||||
anti_aliasing/quality/msaa_2d=3
|
||||
anti_aliasing/quality/msaa_3d=3
|
||||
anti_aliasing/quality/screen_space_aa=1
|
||||
anti_aliasing/quality/use_taa=true
|
||||
|
|
|
@ -28,7 +28,7 @@ shader_parameter/darken_curve = SubResource("GradientTexture1D_kxwvs")
|
|||
ambient_light_source = 2
|
||||
ambient_light_color = Color(1, 1, 1, 1)
|
||||
glow_normalized = true
|
||||
glow_bloom = 0.32
|
||||
glow_bloom = 1.0
|
||||
volumetric_fog_enabled = true
|
||||
volumetric_fog_density = 0.4
|
||||
volumetric_fog_emission = Color(0.462745, 0.866667, 1, 1)
|
||||
|
|
Loading…
Reference in New Issue