[gd_scene load_steps=19 format=3 uid="uid://dfttci386ohip"] [ext_resource type="Script" path="res://src/equipment/balls/physics_ball/game_ball.gd" id="1_iwh2u"] [ext_resource type="PhysicsMaterial" uid="uid://3bih72l068ic" path="res://src/equipment/balls/physics_ball/normal_physics.tres" id="1_l23pw"] [ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="1_y3q5j"] [ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="2_mx7l6"] [ext_resource type="Script" path="res://src/equipment/balls/physics_ball/ball_sfx.gd" id="5_bhshl"] [ext_resource type="AudioStream" uid="uid://cayyndwmxua5x" path="res://assets/sound/sfx/ball/grass2.wav" id="7_l22cv"] [ext_resource type="AudioStream" uid="uid://orisjdcj3mes" path="res://assets/sound/sfx/ball/concrete3.wav" id="7_t2ak2"] [ext_resource type="AudioStream" uid="uid://o4whyv43rr1u" path="res://assets/sound/sfx/ball/concrete4.wav" id="8_0anjl"] [ext_resource type="AudioStream" uid="uid://3csnnhxndt67" path="res://assets/sound/sfx/ball/concrete5.wav" id="9_p0lmw"] [ext_resource type="AudioStream" uid="uid://bbbp6wrkuhkek" path="res://assets/sound/sfx/ball/sand1.wav" id="10_b64mx"] [ext_resource type="AudioStream" uid="uid://b5xx5t050i4p" path="res://assets/sound/sfx/ball/sand2.wav" id="11_ed8je"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqofq"] albedo_texture = ExtResource("1_y3q5j") albedo_texture_force_srgb = true metallic = 0.27 roughness = 0.67 normal_enabled = true normal_scale = 0.2 normal_texture = ExtResource("2_mx7l6") clearcoat_roughness = 0.0 uv1_scale = Vector3(3, 1.5, 3) texture_filter = 4 [sub_resource type="SphereMesh" id="SphereMesh_y0d13"] material = SubResource("StandardMaterial3D_xqofq") radius = 0.05 height = 0.1 radial_segments = 6 rings = 6 [sub_resource type="SphereShape3D" id="SphereShape3D_0hvq6"] radius = 0.05 [sub_resource type="GDScript" id="GDScript_p4v7o"] resource_name = "debug_draw" script/source = "extends Control const COLOR_X := Color(1, 0, 0) const COLOR_Y := Color(0, 1, 0) const COLOR_Z := Color(0, 0, 1) const COLOR_MAGNUS := Color.CYAN const MAGNUS_SCALE := 3 const WIDTH := 4 @export var draw_reoriented_basis := true @export var draw_magnus_effect := true @onready var physics_ball: GameBall = $\"..\" func _process(_delta: float) -> void: if visible: queue_redraw() func _draw() -> void: var camera := get_viewport().get_camera_3d() var start := camera.unproject_position(physics_ball.global_position) if draw_reoriented_basis and physics_ball._last_contact_normal != null: var basis := physics_ball.get_reoriented_basis() var end_x := camera.unproject_position(physics_ball.global_position + basis.x) var end_y := camera.unproject_position(physics_ball.global_position + basis.y) var end_z := camera.unproject_position(physics_ball.global_position + basis.z) draw_line(start, end_x, COLOR_X, WIDTH) draw_line(start, end_y, COLOR_Y, WIDTH) draw_line(start, end_z, COLOR_Z, WIDTH) if draw_magnus_effect: var end := camera.unproject_position(physics_ball.global_position + physics_ball._magnus_force() * MAGNUS_SCALE) draw_line(start, end, COLOR_MAGNUS, WIDTH) " [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gc38m"] playback_mode = 1 random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("7_l22cv") [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_tg0n0"] random_pitch = 1.1 streams_count = 3 stream_0/stream = ExtResource("7_t2ak2") stream_1/stream = ExtResource("8_0anjl") stream_2/stream = ExtResource("9_p0lmw") [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_uu1f8"] playback_mode = 1 streams_count = 2 stream_0/stream = ExtResource("10_b64mx") stream_1/stream = ExtResource("11_ed8je") [node name="PhysicsBall" type="RigidBody3D"] mass = 0.05 physics_material_override = ExtResource("1_l23pw") freeze = true continuous_cd = true contact_monitor = true max_contacts_reported = 3 linear_damp_mode = 1 angular_damp_mode = 1 angular_damp = 8.0 script = ExtResource("1_iwh2u") iron_damping = 1e+07 [node name="BallMesh" type="MeshInstance3D" parent="."] mesh = SubResource("SphereMesh_y0d13") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] shape = SubResource("SphereShape3D_0hvq6") [node name="DebugDraw" type="Control" parent="."] unique_name_in_owner = true visible = false layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = SubResource("GDScript_p4v7o") draw_reoriented_basis = false [node name="SFX" type="Node3D" parent="."] unique_name_in_owner = true script = ExtResource("5_bhshl") [node name="GrassSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"] unique_name_in_owner = true stream = SubResource("AudioStreamRandomizer_gc38m") unit_size = 40.0 bus = &"SFX" [node name="ConcreteSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"] unique_name_in_owner = true stream = SubResource("AudioStreamRandomizer_tg0n0") unit_size = 40.0 bus = &"SFX" [node name="SandSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"] unique_name_in_owner = true stream = SubResource("AudioStreamRandomizer_uu1f8") unit_size = 40.0 max_db = 0.0 bus = &"SFX" [connection signal="body_entered" from="." to="." method="_on_collision"] [connection signal="sleeping_state_changed" from="." to="." method="_on_sleeping_state_changed"]