diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-26 18:27:18 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-26 18:27:22 +0200 |
commit | 9c7673253f7dcc50d761345c3fdcd0d6d3654f3e (patch) | |
tree | 4a2c8c036f16e97c22767303a20d5be34635ef70 /client | |
parent | eb6527dec240c94d8cd27573c96c83cea2618cb3 (diff) | |
download | hurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar hurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar.bz2 hurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar.zst |
add draft weather/environment system
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 2 | ||||
-rw-r--r-- | client/game.tscn | 5 | ||||
-rw-r--r-- | client/map/auto_setup/environment_setup.gd | 3 | ||||
-rw-r--r-- | client/map/environment.gd | 10 | ||||
-rw-r--r-- | client/map/environment.tscn | 73 | ||||
-rw-r--r-- | client/multiplayer.gd | 3 |
6 files changed, 94 insertions, 2 deletions
diff --git a/client/game.gd b/client/game.gd index e0b06772..b1f209a1 100644 --- a/client/game.gd +++ b/client/game.gd @@ -257,6 +257,8 @@ func _ready(): if lobby_state and not join_sent: join() ) + + mp.update_environment.connect($Environment.update) func join(): join_sent = true diff --git a/client/game.tscn b/client/game.tscn index 345a35b8..a30e5fe2 100644 --- a/client/game.tscn +++ b/client/game.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://c6krh36hoqfg8"] +[gd_scene load_steps=11 format=3 uid="uid://c6krh36hoqfg8"] [ext_resource type="Script" path="res://game.gd" id="1_sftfn"] [ext_resource type="PackedScene" uid="uid://b31mlnao6ybt8" path="res://player/follow_camera.tscn" id="2_s8y6o"] @@ -6,6 +6,7 @@ [ext_resource type="Script" path="res://map/auto_setup/light_setup.gd" id="5_6fpff"] [ext_resource type="Script" path="res://multiplayer.gd" id="6_fbxu8"] [ext_resource type="PackedScene" uid="uid://b4gone8fu53r7" path="res://map/map.tscn" id="6_prg6t"] +[ext_resource type="PackedScene" uid="uid://nroo08m5og0" path="res://map/environment.tscn" id="7_v2apt"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_py7px"] ground_bottom_color = Color(0.0826605, 0.065772, 0.0461518, 1) @@ -45,3 +46,5 @@ script = ExtResource("5_6fpff") [node name="Map" parent="." instance=ExtResource("6_prg6t")] [node name="Center" type="Node3D" parent="."] + +[node name="Environment" parent="." instance=ExtResource("7_v2apt")] diff --git a/client/map/auto_setup/environment_setup.gd b/client/map/auto_setup/environment_setup.gd index 96feb86b..75dc900f 100644 --- a/client/map/auto_setup/environment_setup.gd +++ b/client/map/auto_setup/environment_setup.gd @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # extends WorldEnvironment -class_name EnvironmentSetup +class_name EnvironmentSetup @export var allow_sdfgi := true @@ -26,3 +26,4 @@ func apply_settings(): environment.ssao_enabled = Global.get_setting("ssao") environment.sdfgi_enabled = Global.get_setting("sdfgi") and allow_sdfgi environment.glow_enabled = Global.get_setting("glow") + diff --git a/client/map/environment.gd b/client/map/environment.gd new file mode 100644 index 00000000..f36b51b6 --- /dev/null +++ b/client/map/environment.gd @@ -0,0 +1,10 @@ +extends Node3D + +func update(params: Dictionary): + $Wind.emitting = params["wind"] > 0.1 + var a: ParticleProcessMaterial = $Wind.process_material + a.initial_velocity_max = params["wind"] * 15. + a.initial_velocity_min = params["wind"] * 15. + + $Rain.emitting = params["rain"] > 0.1 + $Rain.amount = params["rain"] * 500 diff --git a/client/map/environment.tscn b/client/map/environment.tscn new file mode 100644 index 00000000..ee51b490 --- /dev/null +++ b/client/map/environment.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=10 format=3 uid="uid://nroo08m5og0"] + +[ext_resource type="Script" path="res://map/environment.gd" id="1_qy481"] + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_fyrr8"] +emission_shape_offset = Vector3(0, 5, 0) +emission_shape = 3 +emission_box_extents = Vector3(5, 5, 5) +direction = Vector3(0, -1, 0) +spread = 5.0 +initial_velocity_min = 10.0 +initial_velocity_max = 10.0 +scale_over_velocity_max = 1000.0 +turbulence_influence_min = 0.01 +turbulence_influence_max = 0.01 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6mo3f"] +depth_draw_mode = 2 +albedo_color = Color(0.792157, 0.74902, 1, 1) +roughness = 0.07 + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_6kss1"] +material = SubResource("StandardMaterial3D_6mo3f") +radius = 0.01 +height = 0.5 +radial_segments = 4 +rings = 4 + +[sub_resource type="Curve" id="Curve_frsnm"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.111524, 0.771057), 1.26444, 1.26444, 0, 0, Vector2(0.866171, 0.820827), -1.03348, -1.03348, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="CurveTexture" id="CurveTexture_3gn1x"] +curve = SubResource("Curve_frsnm") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_pyn6b"] +emission_shape_offset = Vector3(-2.5, 0, 0) +emission_shape = 3 +emission_box_extents = Vector3(5, 5, 5) +spread = 5.0 +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +gravity = Vector3(0, 0, 0) +scale_curve = SubResource("CurveTexture_3gn1x") +scale_over_velocity_max = 1000.0 +turbulence_enabled = true +turbulence_influence_min = 0.01 +turbulence_influence_max = 0.01 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ig8qu"] +depth_draw_mode = 2 +albedo_color = Color(0.412412, 0.527344, 0.250208, 1) + +[sub_resource type="SphereMesh" id="SphereMesh_4trvf"] +material = SubResource("StandardMaterial3D_ig8qu") +radius = 0.03 +height = 0.06 + +[node name="Environment" type="Node3D"] +script = ExtResource("1_qy481") + +[node name="Rain" type="GPUParticles3D" parent="."] +emitting = false +amount = 500 +process_material = SubResource("ParticleProcessMaterial_fyrr8") +draw_pass_1 = SubResource("CapsuleMesh_6kss1") + +[node name="Wind" type="GPUParticles3D" parent="."] +emitting = false +amount = 150 +lifetime = 5.0 +process_material = SubResource("ParticleProcessMaterial_pyn6b") +draw_pass_1 = SubResource("SphereMesh_4trvf") diff --git a/client/multiplayer.gd b/client/multiplayer.gd index cd697672..0e3b450a 100644 --- a/client/multiplayer.gd +++ b/client/multiplayer.gd @@ -50,6 +50,7 @@ signal set_tile_finished(tile: Vector2i, warn: bool) signal set_player_finished(player: int, warn: bool) signal set_ingame(state: bool, lobby: bool) signal score(demands_failed: int, demands_completed: int, points: int, time_remaining: float) +signal update_environment(params: Dictionary) signal server_message(text: String) signal replay_start() signal connection_closed(reason: String) @@ -265,6 +266,8 @@ func handle_packet(bytes: PackedByteArray): "server_message": var text = decoded["text"] server_message.emit(text) + "update_environment": + update_environment.emit(decoded) "replay_start": replay_start.emit() _: push_error("Unrecognized packet type: %s" % packet_type) |