diff --git a/levels/debug_level/debug_level.tscn b/levels/debug_level/debug_level.tscn index bece75a..efd56a2 100644 --- a/levels/debug_level/debug_level.tscn +++ b/levels/debug_level/debug_level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=65 format=3 uid="uid://bm2o3mex10v11"] +[gd_scene load_steps=66 format=3 uid="uid://bm2o3mex10v11"] [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"] [ext_resource type="Material" uid="uid://drxnue0xsen13" path="res://assets/materials/tropical_water.tres" id="4_bwkbv"] @@ -20,6 +20,7 @@ [ext_resource type="Texture2D" uid="uid://du3vk5nnksohs" path="res://assets/sprites/particles/sparkle.png" id="16_2m5yu"] [ext_resource type="Shader" path="res://src/shaders/frosted_glass.gdshader" id="16_rat2n"] [ext_resource type="PackedScene" uid="uid://nqar1qcun8ax" path="res://src/props/scenery/highway/guard_rail/guard_rail.tscn" id="16_xtxyj"] +[ext_resource type="PackedScene" uid="uid://c6k44l0mnq3o1" path="res://src/world/effects/explosion/explosion_effect.tscn" id="16_xufks"] [ext_resource type="PackedScene" uid="uid://d0tcr6uijpym5" path="res://src/props/scenery/highway/highway_road.tscn" id="17_amems"] [ext_resource type="Texture2D" uid="uid://bq8dxuxfw1rwu" path="res://assets/textures/wood/lacquered_planks.png" id="17_xciuf"] [ext_resource type="Texture2D" path="res://assets/textures/grass_green/grass_green_albedo.dds" id="18_scall"] @@ -440,6 +441,10 @@ amount = -1 spawn_on_ready = true spawn_turns = 1 +[node name="ExplosionEffect" parent="Course" instance=ExtResource("16_xufks")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 274.103, 5.01502, 286.299) +visible = false + [node name="CityBuildings" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) diff --git a/levels/terrain_test/materials/concrete.tres b/levels/terrain_test/materials/concrete.tres new file mode 100644 index 0000000..6164a79 --- /dev/null +++ b/levels/terrain_test/materials/concrete.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cwxh04w02o83o"] + +[ext_resource type="Texture2D" uid="uid://cqlp0tjmadi75" path="res://assets/textures/highway/highway_road.png" id="1_5ncmm"] + +[resource] +albedo_texture = ExtResource("1_5ncmm") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/fairway.tres b/levels/terrain_test/materials/fairway.tres new file mode 100644 index 0000000..5b300da --- /dev/null +++ b/levels/terrain_test/materials/fairway.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://ccmj2vt17lvs2"] + +[ext_resource type="Texture2D" path="res://assets/textures/grass_fairway/grass_fairway_albedo.dds" id="1_isnyn"] + +[resource] +albedo_texture = ExtResource("1_isnyn") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/green.tres b/levels/terrain_test/materials/green.tres new file mode 100644 index 0000000..435a4eb --- /dev/null +++ b/levels/terrain_test/materials/green.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cjvumpmthiac4"] + +[ext_resource type="Texture2D" path="res://assets/textures/grass_green/grass_green_albedo.dds" id="1_ad8tx"] + +[resource] +albedo_texture = ExtResource("1_ad8tx") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/metal.tres b/levels/terrain_test/materials/metal.tres new file mode 100644 index 0000000..2e26d61 --- /dev/null +++ b/levels/terrain_test/materials/metal.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://buagg4yv8c7lj"] + +[ext_resource type="Texture2D" uid="uid://b8vgf8wy7h4nx" path="res://assets/textures/guard_rail/guard_rail.png" id="1_arb6a"] + +[resource] +albedo_texture = ExtResource("1_arb6a") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/rock.tres b/levels/terrain_test/materials/rock.tres new file mode 100644 index 0000000..be05df8 --- /dev/null +++ b/levels/terrain_test/materials/rock.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dei1jkva281ei"] + +[ext_resource type="Texture2D" path="res://assets/textures/mountain_rock/mountain_rock_albedo.dds" id="1_x1eim"] + +[resource] +albedo_texture = ExtResource("1_x1eim") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/rough.tres b/levels/terrain_test/materials/rough.tres new file mode 100644 index 0000000..270ef63 --- /dev/null +++ b/levels/terrain_test/materials/rough.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c8uym7rba01o5"] + +[ext_resource type="Texture2D" path="res://assets/textures/grass_rough/grass_rough_albedo.dds" id="1_kiq74"] + +[resource] +albedo_texture = ExtResource("1_kiq74") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/sand.tres b/levels/terrain_test/materials/sand.tres new file mode 100644 index 0000000..5806480 --- /dev/null +++ b/levels/terrain_test/materials/sand.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://d3doxcg7g0sq"] + +[ext_resource type="Texture2D" path="res://assets/textures/sand_trap/sand_trap_albedo.dds" id="1_bubcj"] + +[resource] +albedo_texture = ExtResource("1_bubcj") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/materials/wood.tres b/levels/terrain_test/materials/wood.tres new file mode 100644 index 0000000..efc0217 --- /dev/null +++ b/levels/terrain_test/materials/wood.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bgnbvc5qdnoxm"] + +[ext_resource type="Texture2D" uid="uid://bq8dxuxfw1rwu" path="res://assets/textures/wood/lacquered_planks.png" id="1_codln"] + +[resource] +albedo_texture = ExtResource("1_codln") +uv1_scale = Vector3(0.05, 0.05, 0.05) +uv1_triplanar = true +texture_filter = 4 diff --git a/levels/terrain_test/terrain_test.gd b/levels/terrain_test/terrain_test.gd index 9b2d2b6..ce10691 100644 --- a/levels/terrain_test/terrain_test.gd +++ b/levels/terrain_test/terrain_test.gd @@ -1,12 +1,16 @@ extends Node3D -const BALL_SPAWN_GROUP := "BallSpawn" +const RAMP_SPAWN_GROUP := "RampSpawn" +const DROP_SPAWN_GROUP := "DropSpawn" +const PUTT_SPAWN_GROUP := "PuttSpawn" + +const PUTT_VEC := Vector3(0, 0, 2) @export var ball_scene: PackedScene -func spawn_balls() -> void: - for spawn: Node3D in get_tree().get_nodes_in_group(BALL_SPAWN_GROUP): +func spawn_balls(spawn_group: String, initial_impulse: Vector3 = Vector3.ZERO) -> void: + for spawn: Node3D in get_tree().get_nodes_in_group(spawn_group): var ball: GameBall = ball_scene.instantiate() var callback := func() -> void: if ball.sleeping: @@ -15,8 +19,23 @@ func spawn_balls() -> void: spawn.add_sibling(ball) ball.global_transform = spawn.global_transform ball.freeze = false + if initial_impulse: + ball.apply_impulse( + initial_impulse, + ( + initial_impulse.normalized() + * -1 + * ball.radius + * ball.radius + * ShotSetup.SHOT_OFFSET_Z_FACTOR + ) + ) func _process(_delta: float) -> void: if Input.is_action_just_pressed("debug_1"): - spawn_balls() + spawn_balls(RAMP_SPAWN_GROUP) + if Input.is_action_just_pressed("debug_2"): + spawn_balls(DROP_SPAWN_GROUP) + if Input.is_action_just_pressed("debug_3"): + spawn_balls(PUTT_SPAWN_GROUP, PUTT_VEC) diff --git a/levels/terrain_test/terrain_test.tscn b/levels/terrain_test/terrain_test.tscn index ebe3111..bfca043 100644 --- a/levels/terrain_test/terrain_test.tscn +++ b/levels/terrain_test/terrain_test.tscn @@ -1,20 +1,21 @@ -[gd_scene load_steps=37 format=3 uid="uid://cvs546kk7t7aw"] +[gd_scene load_steps=34 format=3 uid="uid://cvs546kk7t7aw"] [ext_resource type="Texture2D" uid="uid://c47ern0l2d50r" path="res://assets/vista_2.png" id="1_d1wmn"] [ext_resource type="Script" path="res://levels/terrain_test/terrain_test.gd" id="1_drk48"] [ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="2_25igk"] [ext_resource type="PackedScene" uid="uid://b7pgvftmj7nbe" path="res://src/equipment/balls/debug_ball/debug_ball.tscn" id="2_77pf6"] -[ext_resource type="Texture2D" path="res://assets/textures/grass_rough/grass_rough_albedo.dds" id="4_rm170"] +[ext_resource type="Material" uid="uid://c8uym7rba01o5" path="res://levels/terrain_test/materials/rough.tres" id="5_5e0na"] [ext_resource type="FontFile" uid="uid://cbaqlaqdobnux" path="res://assets/fonts/Orbitron/Orbitron-VariableFont_wght.ttf" id="5_h18yf"] [ext_resource type="Script" path="res://src/world/terrain_marker.gd" id="6_4bo0x"] -[ext_resource type="Texture2D" path="res://assets/textures/grass_fairway/grass_fairway_albedo.dds" id="6_wdukl"] -[ext_resource type="Texture2D" path="res://assets/textures/grass_green/grass_green_albedo.dds" id="8_gxslv"] -[ext_resource type="Texture2D" path="res://assets/textures/sand_trap/sand_trap_albedo.dds" id="9_ris7y"] -[ext_resource type="Texture2D" uid="uid://cqlp0tjmadi75" path="res://assets/textures/highway/highway_road.png" id="10_4nt4g"] -[ext_resource type="Texture2D" path="res://assets/textures/mountain_rock/mountain_rock_albedo.dds" id="11_2lq7o"] -[ext_resource type="Texture2D" uid="uid://bq8dxuxfw1rwu" path="res://assets/textures/wood/lacquered_planks.png" id="12_e07mg"] -[ext_resource type="Texture2D" uid="uid://b8vgf8wy7h4nx" path="res://assets/textures/guard_rail/guard_rail.png" id="13_ll3kp"] +[ext_resource type="Material" uid="uid://ccmj2vt17lvs2" path="res://levels/terrain_test/materials/fairway.tres" id="8_eb66j"] +[ext_resource type="Material" uid="uid://cjvumpmthiac4" path="res://levels/terrain_test/materials/green.tres" id="9_b32yd"] +[ext_resource type="Material" uid="uid://d3doxcg7g0sq" path="res://levels/terrain_test/materials/sand.tres" id="10_5p842"] +[ext_resource type="Material" uid="uid://cwxh04w02o83o" path="res://levels/terrain_test/materials/concrete.tres" id="11_n8v11"] +[ext_resource type="Material" uid="uid://dei1jkva281ei" path="res://levels/terrain_test/materials/rock.tres" id="12_521n4"] +[ext_resource type="Material" uid="uid://bgnbvc5qdnoxm" path="res://levels/terrain_test/materials/wood.tres" id="13_h001q"] +[ext_resource type="Material" uid="uid://buagg4yv8c7lj" path="res://levels/terrain_test/materials/metal.tres" id="14_7mq02"] [ext_resource type="Material" uid="uid://c5hidbq5gbmr" path="res://assets/materials/crystal.tres" id="14_o81al"] +[ext_resource type="PackedScene" uid="uid://1s3gywmoi20e" path="res://src/characters/player_characters/gfolf_girl/gfolf_girl.tscn" id="16_r3ld5"] [sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_kd0nc"] panorama = ExtResource("1_d1wmn") @@ -86,9 +87,6 @@ auto_shader = true [sub_resource type="BoxMesh" id="BoxMesh_7awoq"] size = Vector3(10, 1, 60) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ceq7g"] -albedo_texture = ExtResource("4_rm170") - [sub_resource type="PrismMesh" id="PrismMesh_kdeya"] left_to_right = 1.0 size = Vector3(100, 50, 10) @@ -102,30 +100,20 @@ data = PackedVector3Array(50, 25, 5, 50, -25, 5, -50, -25, 5, 50, 25, -5, -50, - [sub_resource type="BoxMesh" id="BoxMesh_oukkf"] size = Vector3(10, 1, 60) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c7541"] -albedo_texture = ExtResource("6_wdukl") - [sub_resource type="PrismMesh" id="PrismMesh_c7rfr"] left_to_right = 1.0 size = Vector3(100, 50, 10) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_18mqp"] -albedo_texture = ExtResource("8_gxslv") +[sub_resource type="BoxMesh" id="BoxMesh_3gfbh"] +size = Vector3(20, 1, 400) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2lnp3"] -albedo_texture = ExtResource("9_ris7y") +[sub_resource type="BoxShape3D" id="BoxShape3D_1sq7i"] +size = Vector3(20, 1, 400) -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nflf8"] -albedo_texture = ExtResource("10_4nt4g") +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_ugtgi"] -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3qcr7"] -albedo_texture = ExtResource("11_2lq7o") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5nlxd"] -albedo_texture = ExtResource("12_e07mg") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fhrit"] -albedo_texture = ExtResource("13_ll3kp") +[sub_resource type="BoxMesh" id="BoxMesh_u7piw"] +size = Vector3(20, 1, 400) [node name="TerrainTestMap" type="Node3D"] script = ExtResource("1_drk48") @@ -157,6 +145,7 @@ metadata/_edit_lock_ = true [node name="PlayerSpawn" type="Marker3D" parent="." groups=["PlayerSpawn"]] [node name="TestRamps" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -299.216) [node name="Rough" type="Node3D" parent="TestRamps"] transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) @@ -167,12 +156,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Rough/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_7awoq") -surface_material_override/0 = SubResource("StandardMaterial3D_ceq7g") +surface_material_override/0 = ExtResource("5_5e0na") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Rough/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_kdeya") -surface_material_override/0 = SubResource("StandardMaterial3D_ceq7g") +surface_material_override/0 = ExtResource("5_5e0na") [node name="Label3D" type="Label3D" parent="TestRamps/Rough/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -195,7 +184,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Rough/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Rough/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Fairway" type="Node3D" parent="TestRamps"] @@ -207,12 +196,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Fairway/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_c7541") +surface_material_override/0 = ExtResource("8_eb66j") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Fairway/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_c7541") +surface_material_override/0 = ExtResource("8_eb66j") [node name="Label3D" type="Label3D" parent="TestRamps/Fairway/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -235,7 +224,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Fairway/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Fairway/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Green" type="Node3D" parent="TestRamps"] @@ -247,12 +236,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Green/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_18mqp") +surface_material_override/0 = ExtResource("9_b32yd") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Green/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_18mqp") +surface_material_override/0 = ExtResource("9_b32yd") [node name="Label3D" type="Label3D" parent="TestRamps/Green/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -275,7 +264,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Green/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Green/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Sand" type="Node3D" parent="TestRamps"] @@ -287,12 +276,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Sand/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_2lnp3") +surface_material_override/0 = ExtResource("10_5p842") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Sand/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_2lnp3") +surface_material_override/0 = ExtResource("10_5p842") [node name="Label3D" type="Label3D" parent="TestRamps/Sand/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -315,7 +304,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Sand/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Sand/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Concrete" type="Node3D" parent="TestRamps"] @@ -327,12 +316,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Concrete/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_nflf8") +surface_material_override/0 = ExtResource("11_n8v11") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Concrete/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_nflf8") +surface_material_override/0 = ExtResource("11_n8v11") [node name="Label3D" type="Label3D" parent="TestRamps/Concrete/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -355,7 +344,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Concrete/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Concrete/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Rock" type="Node3D" parent="TestRamps"] @@ -367,12 +356,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Rock/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_3qcr7") +surface_material_override/0 = ExtResource("12_521n4") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Rock/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_3qcr7") +surface_material_override/0 = ExtResource("12_521n4") [node name="Label3D" type="Label3D" parent="TestRamps/Rock/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -395,7 +384,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Rock/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Rock/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Wood" type="Node3D" parent="TestRamps"] @@ -407,12 +396,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Wood/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_5nlxd") +surface_material_override/0 = ExtResource("13_h001q") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Wood/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_5nlxd") +surface_material_override/0 = ExtResource("13_h001q") [node name="Label3D" type="Label3D" parent="TestRamps/Wood/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -435,7 +424,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Wood/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Wood/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Metal" type="Node3D" parent="TestRamps"] @@ -447,12 +436,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) [node name="MeshInstance3D" type="MeshInstance3D" parent="TestRamps/Metal/RampGeometry"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30) mesh = SubResource("BoxMesh_oukkf") -surface_material_override/0 = SubResource("StandardMaterial3D_fhrit") +surface_material_override/0 = ExtResource("14_7mq02") [node name="MeshInstance3D2" type="MeshInstance3D" parent="TestRamps/Metal/RampGeometry"] transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 25, 109) mesh = SubResource("PrismMesh_c7rfr") -surface_material_override/0 = SubResource("StandardMaterial3D_fhrit") +surface_material_override/0 = ExtResource("14_7mq02") [node name="Label3D" type="Label3D" parent="TestRamps/Metal/RampGeometry"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 8, 0) @@ -475,7 +464,7 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Metal/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Metal/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) [node name="Glass" type="Node3D" parent="TestRamps"] @@ -515,5 +504,281 @@ shape = SubResource("ConcavePolygonShape3D_ufirn") transform = Transform3D(-2.98023e-08, 0, -1, 0, 1, 0, 1, 0, -2.98023e-08, 0, 25, 109) shape = SubResource("ConcavePolygonShape3D_gq475") -[node name="BallSpawn" type="Marker3D" parent="TestRamps/Glass/RampGeometry" groups=["BallSpawn"]] +[node name="BallSpawn" type="Marker3D" parent="TestRamps/Glass/RampGeometry" groups=["RampSpawn"]] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 158) + +[node name="TestFields" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -90, 0, 30) + +[node name="Rough" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Rough"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_3gfbh") +surface_material_override/0 = ExtResource("5_5e0na") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Rough/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Rough/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Rough/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 1 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Rough" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Rough" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Rough/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="GfolfGirl" parent="TestFields/Rough/PuttSpawn" instance=ExtResource("16_r3ld5")] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0.5, -0.05, 0) + +[node name="Fairway" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Fairway"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("8_eb66j") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Fairway/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Fairway/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Fairway/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 2 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Fairway" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Fairway" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Fairway/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 8) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Green" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Green"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("9_b32yd") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Green/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Green/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Green/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 3 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Green" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Green" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Green/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 13) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Sand" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 70, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Sand"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("10_5p842") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Sand/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Sand/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Sand/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 4 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Sand" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Sand" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Sand/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Concrete" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 90, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Concrete"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("11_n8v11") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Concrete/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Concrete/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Concrete/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 5 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Concrete" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Concrete" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Concrete/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 21) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Rock" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 110, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Rock"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("12_521n4") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Rock/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Rock/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Rock/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 6 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Rock" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Rock" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Rock/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 8) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Wood" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 130, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Wood"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("13_h001q") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Wood/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Wood/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Wood/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 7 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Wood" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Wood" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Wood/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 21) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Metal" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 150, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Metal"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("14_7mq02") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Metal/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Metal/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Metal/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 8 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Metal" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Metal" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Metal/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 21) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") + +[node name="Glass" type="Node3D" parent="TestFields"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 170, 0, 0) + +[node name="MeshInstance3D" type="MeshInstance3D" parent="TestFields/Glass"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +mesh = SubResource("BoxMesh_u7piw") +surface_material_override/0 = ExtResource("14_o81al") + +[node name="StaticBody3D" type="StaticBody3D" parent="TestFields/Glass/MeshInstance3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -200) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="TestFields/Glass/MeshInstance3D/StaticBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 200) +shape = SubResource("BoxShape3D_1sq7i") + +[node name="TerrainMarker" type="Node" parent="TestFields/Glass/MeshInstance3D/StaticBody3D"] +script = ExtResource("6_4bo0x") +type = 9 + +[node name="BallDropSpawn" type="Marker3D" parent="TestFields/Glass" groups=["DropSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40, 10) + +[node name="PuttSpawn" type="Marker3D" parent="TestFields/Glass" groups=["PuttSpawn"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 1) + +[node name="GoalLine" type="Decal" parent="TestFields/Glass/PuttSpawn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 34) +size = Vector3(20, 2, 0.5) +texture_albedo = SubResource("PlaceholderTexture2D_ugtgi") diff --git a/src/equipment/balls/physics_ball/game_ball.gd b/src/equipment/balls/physics_ball/game_ball.gd index 622d2f8..32caacb 100644 --- a/src/equipment/balls/physics_ball/game_ball.gd +++ b/src/equipment/balls/physics_ball/game_ball.gd @@ -146,7 +146,6 @@ func _integrate_forces(state: PhysicsDirectBodyState3D) -> void: min_dot = dot _last_contact_normal = norm primary_body = state.get_contact_collider_object(i) - _surface_terrain = Terrain.from_collision(global_position, primary_body) else: # Ball is in the air diff --git a/src/equipment/balls/physics_ball/normal_terrain_physics.tres b/src/equipment/balls/physics_ball/normal_terrain_physics.tres new file mode 100644 index 0000000..8d86a6f --- /dev/null +++ b/src/equipment/balls/physics_ball/normal_terrain_physics.tres @@ -0,0 +1,67 @@ +[gd_resource type="Resource" script_class="TerrainPhysics" load_steps=13 format=3 uid="uid://c6tt1hto75ex4"] + +[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/terrain_physics/terrain_parameters.gd" id="1_45pis"] +[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/terrain_physics/terrain_physics.gd" id="2_yuehx"] + +[sub_resource type="Resource" id="Resource_casfi"] +script = ExtResource("1_45pis") +linear_damp = 1.15 +angular_damp = 3.0 + +[sub_resource type="Resource" id="Resource_3k63c"] +script = ExtResource("1_45pis") +linear_damp = 0.0 +angular_damp = 0.0 + +[sub_resource type="Resource" id="Resource_xf73q"] +script = ExtResource("1_45pis") +linear_damp = 4.4 +angular_damp = 4.0 + +[sub_resource type="Resource" id="Resource_nhn3l"] +script = ExtResource("1_45pis") +linear_damp = 0.86 +angular_damp = 1.0 + +[sub_resource type="Resource" id="Resource_m3wjo"] +script = ExtResource("1_45pis") +linear_damp = 2.3 +angular_damp = 4.0 + +[sub_resource type="Resource" id="Resource_h4rld"] +script = ExtResource("1_45pis") +linear_damp = 1.62 +angular_damp = 1.0 + +[sub_resource type="Resource" id="Resource_j6lib"] +script = ExtResource("1_45pis") +linear_damp = 4.7 +angular_damp = 2.0 + +[sub_resource type="Resource" id="Resource_7f7ql"] +script = ExtResource("1_45pis") +linear_damp = 7.6 +angular_damp = 4.0 + +[sub_resource type="Resource" id="Resource_pusmf"] +script = ExtResource("1_45pis") +linear_damp = 12.0 +angular_damp = 32.0 + +[sub_resource type="Resource" id="Resource_edkxb"] +script = ExtResource("1_45pis") +linear_damp = 1.55 +angular_damp = 1.3 + +[resource] +script = ExtResource("2_yuehx") +default = SubResource("Resource_3k63c") +rough = SubResource("Resource_7f7ql") +fairway = SubResource("Resource_xf73q") +green = SubResource("Resource_m3wjo") +sand = SubResource("Resource_pusmf") +concrete = SubResource("Resource_casfi") +rock = SubResource("Resource_j6lib") +wood = SubResource("Resource_edkxb") +metal = SubResource("Resource_h4rld") +glass = SubResource("Resource_nhn3l") diff --git a/src/equipment/balls/physics_ball/physics_ball.tscn b/src/equipment/balls/physics_ball/physics_ball.tscn index 04f0f43..dee98c2 100644 --- a/src/equipment/balls/physics_ball/physics_ball.tscn +++ b/src/equipment/balls/physics_ball/physics_ball.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=38 format=3 uid="uid://dfttci386ohip"] +[gd_scene load_steps=26 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="Script" path="res://src/equipment/balls/physics_ball/terrain_physics/terrain_physics.gd" id="3_52hui"] +[ext_resource type="Resource" uid="uid://c6tt1hto75ex4" path="res://src/equipment/balls/physics_ball/normal_terrain_physics.tres" id="3_3gnie"] [ext_resource type="Material" uid="uid://dpsmjlhjpc7vs" path="res://assets/materials/basic_ball_material.tres" id="3_rc7m1"] -[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/terrain_physics/terrain_parameters.gd" id="4_onl6o"] [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"] @@ -17,69 +16,6 @@ [ext_resource type="Texture2D" uid="uid://c47bkx508biqr" path="res://assets/sprites/particles/plasma.png" id="12_guipt"] [ext_resource type="PackedScene" uid="uid://cm4bb3lg4mfd2" path="res://src/world/effects/splash/splash_effect.tscn" id="12_qlrvx"] -[sub_resource type="Resource" id="Resource_casfi"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 1.4 - -[sub_resource type="Resource" id="Resource_3k63c"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 0.0 - -[sub_resource type="Resource" id="Resource_xf73q"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 2.0 - -[sub_resource type="Resource" id="Resource_nhn3l"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 0.6 - -[sub_resource type="Resource" id="Resource_m3wjo"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 1.0 - -[sub_resource type="Resource" id="Resource_h4rld"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 0.9 - -[sub_resource type="Resource" id="Resource_j6lib"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 2.5 - -[sub_resource type="Resource" id="Resource_7f7ql"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 4.0 - -[sub_resource type="Resource" id="Resource_pusmf"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 8.0 - -[sub_resource type="Resource" id="Resource_edkxb"] -script = ExtResource("4_onl6o") -linear_damp = 0.0 -angular_damp = 0.9 - -[sub_resource type="Resource" id="Resource_3ngau"] -script = ExtResource("3_52hui") -default = SubResource("Resource_3k63c") -rough = SubResource("Resource_7f7ql") -fairway = SubResource("Resource_xf73q") -green = SubResource("Resource_m3wjo") -sand = SubResource("Resource_pusmf") -concrete = SubResource("Resource_casfi") -rock = SubResource("Resource_j6lib") -wood = SubResource("Resource_edkxb") -metal = SubResource("Resource_h4rld") -glass = SubResource("Resource_nhn3l") - [sub_resource type="SphereMesh" id="SphereMesh_y0d13"] material = ExtResource("3_rc7m1") radius = 0.05 @@ -205,7 +141,7 @@ max_contacts_reported = 3 linear_damp_mode = 1 angular_damp_mode = 1 script = ExtResource("1_iwh2u") -terrain_physics = SubResource("Resource_3ngau") +terrain_physics = ExtResource("3_3gnie") [node name="BallMesh" type="MeshInstance3D" parent="."] mesh = SubResource("SphereMesh_y0d13") diff --git a/src/world/effects/explosion/explosion_effect.tscn b/src/world/effects/explosion/explosion_effect.tscn new file mode 100644 index 0000000..ef43d09 --- /dev/null +++ b/src/world/effects/explosion/explosion_effect.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=8 format=3 uid="uid://c6k44l0mnq3o1"] + +[sub_resource type="Gradient" id="Gradient_tuj3x"] +offsets = PackedFloat32Array(0, 0.0850112, 0.693512, 0.760626) +colors = PackedColorArray(3, 3, 3, 1, 2, 2, 0.6, 1, 1, 0.0623333, 0.03, 1, 0, 0, 0, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_d6li3"] +gradient = SubResource("Gradient_tuj3x") + +[sub_resource type="Curve" id="Curve_oo5uu"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0842105, 1), 0.0, 0.0, 0, 0, Vector2(0.246316, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="CurveTexture" id="CurveTexture_quj8c"] +curve = SubResource("Curve_oo5uu") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"] +lifetime_randomness = 0.52 +emission_shape = 3 +emission_box_extents = Vector3(1, 1, 1) +direction = Vector3(0, 0, 0) +spread = 180.0 +initial_velocity_min = 4.0 +initial_velocity_max = 4.0 +gravity = Vector3(0, 0, 0) +scale_min = 0.3 +scale_curve = SubResource("CurveTexture_quj8c") +color_ramp = SubResource("GradientTexture1D_d6li3") +turbulence_enabled = true +turbulence_noise_speed = Vector3(1, 1, 1) +turbulence_noise_speed_random = 1.41 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"] +vertex_color_use_as_albedo = true +emission_enabled = true +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="SphereMesh" id="SphereMesh_ggspd"] +material = SubResource("StandardMaterial3D_fliyi") +radius = 1.0 +height = 2.0 + +[node name="ExplosionEffect" type="GPUParticles3D"] +lifetime = 0.7 +explosiveness = 0.92 +fixed_fps = 60 +interpolate = false +process_material = SubResource("ParticleProcessMaterial_hjkte") +draw_pass_1 = SubResource("SphereMesh_ggspd") diff --git a/src/world/world.tscn b/src/world/world.tscn index f851602..3ac97a4 100644 --- a/src/world/world.tscn +++ b/src/world/world.tscn @@ -2,8 +2,8 @@ [ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"] [ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"] +[ext_resource type="PackedScene" uid="uid://cvs546kk7t7aw" path="res://levels/terrain_test/terrain_test.tscn" id="2_hbpi4"] [ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"] -[ext_resource type="PackedScene" uid="uid://bm2o3mex10v11" path="res://levels/debug_level/debug_level.tscn" id="2_l08a0"] [ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"] [ext_resource type="Script" path="res://src/world/play_manager/practice_manager.gd" id="5_yk526"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="7_0gd42"] @@ -155,7 +155,7 @@ _data = { [node name="World" type="Node" groups=["WorldGroup"]] script = ExtResource("1_ybjyx") -initial_level = ExtResource("2_l08a0") +initial_level = ExtResource("2_hbpi4") manager = SubResource("Resource_hpydy") [node name="Level" type="Node3D" parent="."]