generated from krampus/template-godot4
Using DebugDraw3D for in-editor relay network visualization
All checks were successful
linting & formatting / build (push) Successful in 23s
All checks were successful
linting & formatting / build (push) Successful in 23s
This commit is contained in:
parent
06820d19ee
commit
af575477cf
@ -1,23 +0,0 @@
|
||||
@tool
|
||||
class_name EditorArrow extends MeshInstance3D
|
||||
|
||||
const SCALE_BUFFER := 0.1
|
||||
|
||||
@export var target: Node3D
|
||||
|
||||
var cached_target_position: Vector3
|
||||
var cached_position: Vector3
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if (
|
||||
is_instance_valid(target)
|
||||
and (global_position != cached_position or target.global_position != cached_target_position)
|
||||
):
|
||||
var up := global_basis.y
|
||||
if up.cross(target.global_position).length_squared() < 0.001:
|
||||
up = global_basis.x
|
||||
look_at(target.global_position, up)
|
||||
scale.z = max(0.001, global_position.distance_to(target.global_position) - SCALE_BUFFER)
|
||||
cached_target_position = target.global_position
|
||||
cached_position = global_position
|
@ -1 +0,0 @@
|
||||
uid://civv6xocvw6gp
|
@ -1,12 +0,0 @@
|
||||
@tool
|
||||
class_name EditorArrow extends MeshInstance3D
|
||||
|
||||
@export var target: Node3D
|
||||
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if is_instance_valid(target):
|
||||
look_at(target.global_position, global_basis.y)
|
||||
scale.z = global_position.distance_to(target.global_position)
|
||||
else:
|
||||
queue_free()
|
@ -1,14 +0,0 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://ghdsr1b4hpr8"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://bgrutdse8bl8b" path="res://assets/props/arrow/arrow.obj" id="1_a3lat"]
|
||||
[ext_resource type="Script" uid="uid://civv6xocvw6gp" path="res://src/util/editor_arrow/editor_arrow.gd" id="2_yk3bx"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yk3bx"]
|
||||
transparency = 1
|
||||
shading_mode = 0
|
||||
albedo_color = Color(0, 1, 1, 0.501961)
|
||||
|
||||
[node name="EditorArrow" type="MeshInstance3D"]
|
||||
mesh = ExtResource("1_a3lat")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_yk3bx")
|
||||
script = ExtResource("2_yk3bx")
|
@ -11,24 +11,21 @@ signal pulsed
|
||||
const MAX_RUMBLE := 0.01
|
||||
const MAX_QUAKE := 0.2
|
||||
|
||||
const EDITOR_ARROW_COLOR := Color.CYAN
|
||||
const EDITOR_ARROW_SIZE := 0.05
|
||||
|
||||
@export_category("Editor Tools")
|
||||
@export var quick_connect_to: SignalNode:
|
||||
set = _editor_connect
|
||||
|
||||
@export_category("Game Scenes")
|
||||
@export var editor_arrow_scene: PackedScene
|
||||
|
||||
var _busy := false
|
||||
|
||||
var _editor_arrows: Dictionary[SignalNode, EditorArrow] = {}
|
||||
|
||||
@onready var rumbler_3d: Rumbler3D = %Rumbler3D
|
||||
@onready var quaker: Quaker = %Quaker
|
||||
|
||||
@onready var animation_player: AnimationPlayer = %AnimationPlayer
|
||||
@onready var trigger_delay: Timer = %TriggerDelay
|
||||
@onready var pulse_delay: Timer = %PulseDelay
|
||||
@onready var editor_connections: Node3D = %EditorConnections
|
||||
|
||||
|
||||
## Trigger this relay.
|
||||
@ -97,15 +94,13 @@ func _process(delta: float) -> void:
|
||||
# Check connections
|
||||
for conn: Dictionary in triggered.get_connections():
|
||||
var callable: Callable = conn.get("callable")
|
||||
if callable and callable.get_object() is SignalNode:
|
||||
var target: SignalNode = callable.get_object()
|
||||
if target != self and not target in _editor_arrows:
|
||||
var instance: EditorArrow = editor_arrow_scene.instantiate()
|
||||
instance.target = target
|
||||
editor_connections.add_child(instance)
|
||||
_editor_arrows[target] = instance
|
||||
|
||||
for target: SignalNode in _editor_arrows.keys():
|
||||
if not is_instance_valid(target):
|
||||
_editor_arrows[target].queue_free()
|
||||
_editor_arrows.erase(target)
|
||||
if callable:
|
||||
var target := callable.get_object() as SignalNode
|
||||
if target and target != self:
|
||||
DebugDraw3D.draw_arrow(
|
||||
global_position,
|
||||
target.global_position.move_toward(global_position, 0.1),
|
||||
EDITOR_ARROW_COLOR,
|
||||
EDITOR_ARROW_SIZE,
|
||||
true
|
||||
)
|
||||
|
@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://bttust5ohud8e"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://bttust5ohud8e"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://1oup50bp0pwd" path="res://src/world/mechanics/relay/gunk_relay.gd" id="1_rdv5j"]
|
||||
[ext_resource type="Script" uid="uid://bukihqt1lybnx" path="res://src/util/frame_skipper.gd" id="2_ipm58"]
|
||||
[ext_resource type="PackedScene" uid="uid://ghdsr1b4hpr8" path="res://src/util/editor_arrow/editor_arrow.tscn" id="2_nfkbq"]
|
||||
[ext_resource type="Script" uid="uid://b274q7uvn0cvp" path="res://src/ui/rumbler_3d.gd" id="3_mb114"]
|
||||
[ext_resource type="Script" uid="uid://ccs67guidw4w4" path="res://src/ui/quaker.gd" id="5_peqs8"]
|
||||
|
||||
@ -115,7 +114,6 @@ _data = {
|
||||
collision_layer = 36
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_rdv5j")
|
||||
editor_arrow_scene = ExtResource("2_nfkbq")
|
||||
value = 800.0
|
||||
splatter_scale = 0.2
|
||||
|
||||
@ -160,8 +158,5 @@ libraries = {
|
||||
}
|
||||
speed_scale = 4.0
|
||||
|
||||
[node name="EditorConnections" type="Node3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[connection signal="timeout" from="TriggerDelay" to="." method="_on_trigger_delay_timeout"]
|
||||
[connection signal="timeout" from="PulseDelay" to="." method="_on_pulse_delay_timeout"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user