This commit is contained in:
Overside srl
2026-02-16 22:55:10 +01:00
parent dd1ba0fa9a
commit 650000a79e
6 changed files with 146 additions and 2 deletions

View File

@@ -60,6 +60,11 @@ change_train={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
] ]
} }
horn={
"deadzone": 0.5,
"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,"location":0,"echo":false,"script":null)
]
}
[rendering] [rendering]

View File

@@ -2,7 +2,7 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cdwwcby54pecs" uid="uid://b0ktb1ocwlp1f"
path.s3tc="res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex" path.s3tc="res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc"],

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdwwcby54pecs"
path.s3tc="res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://resources/train kit/Textures/colormap.png"
dest_files=["res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cdwwcby54pecs"
path.s3tc="res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://resources/train kit/Textures/colormap.png"
dest_files=["res://.godot/imported/colormap.png-d3d02b00fd834f010bf45b2b9259ea63.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -106,7 +106,8 @@ text = "Comandi:
\"A / D - Ruota camera\", \"A / D - Ruota camera\",
\"SPACE - Cambia camera\", \"SPACE - Cambia camera\",
\"TAB - Cambia treno\", \"TAB - Cambia treno\",
\"ESC - Esci\"" \"ESC - Esci\",
\"Spazio - Horn\""
label_settings = SubResource("LabelSettings_tefeu") label_settings = SubResource("LabelSettings_tefeu")
[node name="totaldistance_label" type="Label" parent="HUD" unique_id=544099778] [node name="totaldistance_label" type="Label" parent="HUD" unique_id=544099778]

View File

@@ -38,6 +38,7 @@ var distance_traveled: float = 0.0
var locomotive: Node3D var locomotive: Node3D
var wagons: Array = [] var wagons: Array = []
var wagon_distances: Array = [] var wagon_distances: Array = []
var _horn_player: AudioStreamPlayer
func _ready() -> void: func _ready() -> void:
@@ -46,6 +47,7 @@ func _ready() -> void:
await get_tree().process_frame await get_tree().process_frame
_create_train() _create_train()
current_speed = base_speed current_speed = base_speed
_create_horn()
func _remove_train(): func _remove_train():
@@ -144,6 +146,9 @@ func _handle_input(delta: float) -> void:
elif Input.is_action_pressed("change_train"): elif Input.is_action_pressed("change_train"):
_create_train() _create_train()
current_speed = base_speed current_speed = base_speed
if Input.is_action_just_pressed("horn"):
_play_horn()
func _update_movement(delta: float) -> void: func _update_movement(delta: float) -> void:
distance_traveled += current_speed * delta distance_traveled += current_speed * delta
@@ -187,3 +192,54 @@ func get_locomotive_position() -> Vector3:
func get_speed() -> float: func get_speed() -> float:
return current_speed return current_speed
func _create_horn() -> void:
_horn_player = AudioStreamPlayer.new()
_horn_player.name = "HornPlayer"
_horn_player.volume_db = -6.0
_horn_player.bus = &"Master"
add_child(_horn_player)
var sample_rate := 22050
var duration := 1.8
var num_samples := int(sample_rate * duration)
var audio := AudioStreamWAV.new()
audio.format = AudioStreamWAV.FORMAT_16_BITS
audio.mix_rate = sample_rate
audio.stereo = false
var data := PackedByteArray()
data.resize(num_samples * 2)
var freq1 := 277.0 # C#4
var freq2 := 370.0 # F#4
var freq3 := 311.0 # Eb4
for i in num_samples:
var t := float(i) / sample_rate
var envelope := 1.0
if t < 0.15:
envelope = t / 0.15
elif t > duration - 0.4:
envelope = (duration - t) / 0.4
envelope = clampf(envelope, 0.0, 1.0)
var sample := sin(t * freq1 * TAU) * 0.4
sample += sin(t * freq2 * TAU) * 0.3
sample += sin(t * freq3 * TAU) * 0.2
sample += sin(t * freq1 * 2.0 * TAU) * 0.1
sample *= envelope
var value := clampi(int(sample * 24000.0), -32768, 32767)
data[i * 2] = value & 0xFF
data[i * 2 + 1] = (value >> 8) & 0xFF
audio.data = data
_horn_player.stream = audio
func _play_horn() -> void:
if _horn_player and not _horn_player.playing:
_horn_player.play()