generated from krampus/template-godot4
	Compare commits
	
		
			No commits in common. "424ee2f2ae4e702d12e4549ea37c28c6930c61ef" and "b1dead039febc98b094c265bf01933e869c9f986" have entirely different histories.
		
	
	
		
			424ee2f2ae
			...
			b1dead039f
		
	
		
							
								
								
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick_uv_layout.png
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick_uv_layout.png
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -1,120 +0,0 @@ | ||||
| { | ||||
| 	"asset":{ | ||||
| 		"generator":"Khronos glTF Blender I/O v4.2.60", | ||||
| 		"version":"2.0" | ||||
| 	}, | ||||
| 	"scene":0, | ||||
| 	"scenes":[ | ||||
| 		{ | ||||
| 			"name":"Scene", | ||||
| 			"nodes":[ | ||||
| 				0 | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"nodes":[ | ||||
| 		{ | ||||
| 			"mesh":0, | ||||
| 			"name":"Brick" | ||||
| 		} | ||||
| 	], | ||||
| 	"materials":[ | ||||
| 		{ | ||||
| 			"doubleSided":true, | ||||
| 			"name":"Brick", | ||||
| 			"pbrMetallicRoughness":{ | ||||
| 				"baseColorFactor":[ | ||||
| 					0.6121358871459961, | ||||
| 					0.21650230884552002, | ||||
| 					0.09049086272716522, | ||||
| 					1 | ||||
| 				], | ||||
| 				"metallicFactor":0 | ||||
| 			} | ||||
| 		} | ||||
| 	], | ||||
| 	"meshes":[ | ||||
| 		{ | ||||
| 			"name":"Cube", | ||||
| 			"primitives":[ | ||||
| 				{ | ||||
| 					"attributes":{ | ||||
| 						"POSITION":0, | ||||
| 						"NORMAL":1, | ||||
| 						"TEXCOORD_0":2 | ||||
| 					}, | ||||
| 					"indices":3, | ||||
| 					"material":0 | ||||
| 				} | ||||
| 			] | ||||
| 		} | ||||
| 	], | ||||
| 	"accessors":[ | ||||
| 		{ | ||||
| 			"bufferView":0, | ||||
| 			"componentType":5126, | ||||
| 			"count":24, | ||||
| 			"max":[ | ||||
| 				0.09207499027252197, | ||||
| 				0.05715000629425049, | ||||
| 				0.1936749815940857 | ||||
| 			], | ||||
| 			"min":[ | ||||
| 				-0.09207499027252197, | ||||
| 				-0.05715000629425049, | ||||
| 				-0.1936749815940857 | ||||
| 			], | ||||
| 			"type":"VEC3" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"bufferView":1, | ||||
| 			"componentType":5126, | ||||
| 			"count":24, | ||||
| 			"type":"VEC3" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"bufferView":2, | ||||
| 			"componentType":5126, | ||||
| 			"count":24, | ||||
| 			"type":"VEC2" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"bufferView":3, | ||||
| 			"componentType":5123, | ||||
| 			"count":36, | ||||
| 			"type":"SCALAR" | ||||
| 		} | ||||
| 	], | ||||
| 	"bufferViews":[ | ||||
| 		{ | ||||
| 			"buffer":0, | ||||
| 			"byteLength":288, | ||||
| 			"byteOffset":0, | ||||
| 			"target":34962 | ||||
| 		}, | ||||
| 		{ | ||||
| 			"buffer":0, | ||||
| 			"byteLength":288, | ||||
| 			"byteOffset":288, | ||||
| 			"target":34962 | ||||
| 		}, | ||||
| 		{ | ||||
| 			"buffer":0, | ||||
| 			"byteLength":192, | ||||
| 			"byteOffset":576, | ||||
| 			"target":34962 | ||||
| 		}, | ||||
| 		{ | ||||
| 			"buffer":0, | ||||
| 			"byteLength":72, | ||||
| 			"byteOffset":768, | ||||
| 			"target":34963 | ||||
| 		} | ||||
| 	], | ||||
| 	"buffers":[ | ||||
| 		{ | ||||
| 			"byteLength":840, | ||||
| 			"uri":"brick.bin" | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
| @ -1,36 +0,0 @@ | ||||
| [remap] | ||||
| 
 | ||||
| importer="scene" | ||||
| importer_version=1 | ||||
| type="PackedScene" | ||||
| uid="uid://b1aslqfbciwg8" | ||||
| path="res://.godot/imported/brick.gltf-c734431c3027107f004874542c5d8b9c.scn" | ||||
| 
 | ||||
| [deps] | ||||
| 
 | ||||
| source_file="res://assets/models/balls/brick/brick.gltf" | ||||
| dest_files=["res://.godot/imported/brick.gltf-c734431c3027107f004874542c5d8b9c.scn"] | ||||
| 
 | ||||
| [params] | ||||
| 
 | ||||
| nodes/root_type="" | ||||
| nodes/root_name="" | ||||
| nodes/apply_root_scale=true | ||||
| nodes/root_scale=1.0 | ||||
| nodes/import_as_skeleton_bones=false | ||||
| meshes/ensure_tangents=true | ||||
| meshes/generate_lods=true | ||||
| meshes/create_shadow_meshes=true | ||||
| meshes/light_baking=1 | ||||
| meshes/lightmap_texel_size=0.2 | ||||
| meshes/force_disable_compression=false | ||||
| skins/use_named_skins=true | ||||
| animation/import=true | ||||
| animation/fps=30 | ||||
| animation/trimming=false | ||||
| animation/remove_immutable_tracks=true | ||||
| animation/import_rest_as_RESET=false | ||||
| import_script/path="" | ||||
| _subresources={} | ||||
| gltf/naming_version=1 | ||||
| gltf/embedded_image_handling=1 | ||||
| @ -19,9 +19,6 @@ SETTINGS_GAME_ACCESSIBILITY_HEADING,Accessibility | ||||
| SETTINGS_GAME_CAMERA_HEADING,Camera | ||||
| SETTINGS_SCREEN_SHAKE,"Enable Screen Shake" | ||||
| SETTINGS_HIT_LAG,"Enable Hit Lag Effect" | ||||
| SETTINGS_GAME_GAMEPLAY_HEADING,Gameplay | ||||
| SETTINGS_PROJECTION_COLLISIONS,"Enable Shot Projection Collisions" | ||||
| SETTINGS_PROJECTION_GRAVITY,"Use Local Gravity for Shot Projection" | ||||
| SETTINGS_FREE_CAMERA_SPEED,"Free Camera Speed" | ||||
| SETTINGS_SENSITIVITY_X,"Sensitivity, Horizontal" | ||||
| SETTINGS_SENSITIVITY_Y,"Sensitivity, Vertical" | ||||
| @ -30,40 +27,6 @@ SETTINGS_ACCELERATION_Y,"Acceleration, Vertical" | ||||
| SETTINGS_INVERT_PITCH,"Invert Pitch" | ||||
| SETTINGS_GRAPHICS,Graphics | ||||
| SETTINGS_GRAPHICS_HEADING,"Graphics & Display" | ||||
| SETTINGS_GRAPHICS_DISPLAY_HEADING,Display | ||||
| SETTINGS_GRAPHICS_FULLSCREEN,Fullscreen | ||||
| SETTINGS_GRAPHICS_VSYNC,V-Sync | ||||
| SETTINGS_GRAPHICS_AA_HEADING,Antialiasing | ||||
| SETTINGS_GRAPHICS_MSAA,MSAA | ||||
| SETTINGS_GRAPHICS_MSAA_0,"Disabled (Fastest)" | ||||
| SETTINGS_GRAPHICS_MSAA_2,"2× (Average)" | ||||
| SETTINGS_GRAPHICS_MSAA_4,"4× (Slow)" | ||||
| SETTINGS_GRAPHICS_MSAA_8,"8× (Slowest)" | ||||
| SETTINGS_GRAPHICS_FXAA,"Enable FXAA" | ||||
| SETTINGS_GRAPHICS_TAA,"Enable TAA" | ||||
| SETTINGS_GRAPHICS_DEBANDING,"Use Debanding" | ||||
| SETTINGS_GRAPHICS_TEXTURES_HEADING,Textures | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC,"Anisotropic Filtering Level (requires restart)" | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC_0,"Disabled (Fastest)" | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC_1,"2× (Faster)" | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC_2,"4× (Fast)" | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC_3,"8× (Average)" | ||||
| SETTINGS_GRAPHICS_ANISOTROPIC_4,"16× (Slow)" | ||||
| SETTINGS_GRAPHICS_LIGHTING_HEADING,"Light & Shadows" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY,"Directional Shadow Quality (requires restart)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_0,"Lowest (256)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_1,"Low (2048)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_2,"Average (4096)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_3,"High (8192)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_4,"Higher (16384)" | ||||
| SETTINGS_GRAPHICS_SHADOW_QUALITY_5,"Ultra (32768)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER,"Directional Soft Shadow Filter Quality (requires restart)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_0,"Hard (Fastest)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_1,"Soft Very Low (Faster)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_2,"Soft Low (Fast)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_3,"Soft Medium (Average)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_4,"Soft High (Slow)" | ||||
| SETTINGS_GRAPHICS_SHADOW_FILTER_5,"Soft Ultra (Slowest)" | ||||
| SETTINGS_AUDIO,Audio | ||||
| SETTINGS_AUDIO_HEADING,"Audio Settings" | ||||
| SETTINGS_CONTROLS,Controls | ||||
| @ -101,4 +64,3 @@ CLUB_PUTTER,Putter | ||||
| , | ||||
| BALL_BASIC,Basic | ||||
| BALL_PLASMA,Plasma | ||||
| BALL_BRICK,Brick | ||||
|  | ||||
| 
 | 
| @ -1,11 +1,10 @@ | ||||
| [gd_scene load_steps=62 format=3 uid="uid://bm2o3mex10v11"] | ||||
| [gd_scene load_steps=61 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="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"] | ||||
| [ext_resource type="Texture2D" uid="uid://c47ern0l2d50r" path="res://assets/vista_2.png" id="6_ectru"] | ||||
| [ext_resource type="Texture2D" uid="uid://con5a36t6n6sq" path="res://assets/textures/clear_sea_water_2048x2048.png" id="7_t86h2"] | ||||
| [ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"] | ||||
| [ext_resource type="PackedScene" uid="uid://1s3gywmoi20e" path="res://src/characters/player_characters/gfolf_girl/gfolf_girl.tscn" id="10_8tu3b"] | ||||
| [ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"] | ||||
| [ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"] | ||||
| [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | ||||
| @ -313,12 +312,7 @@ camera_attributes = SubResource("CameraAttributesPractical_ypy22") | ||||
| transform = Transform3D(0.782608, -0.611691, 0.11558, 0, 0.185667, 0.982613, -0.622515, -0.769001, 0.145304, 0, 0, 0) | ||||
| shadow_enabled = true | ||||
| shadow_blur = 4.0 | ||||
| directional_shadow_split_1 = 0.017 | ||||
| directional_shadow_split_2 = 0.042 | ||||
| directional_shadow_split_3 = 0.247 | ||||
| directional_shadow_fade_start = 0.98 | ||||
| directional_shadow_max_distance = 750.0 | ||||
| directional_shadow_pancake_size = 5.0 | ||||
| directional_shadow_max_distance = 160.0 | ||||
| 
 | ||||
| [node name="Course" type="Node3D" parent="."] | ||||
| 
 | ||||
| @ -380,9 +374,6 @@ draw_pass_1 = SubResource("QuadMesh_l4j8a") | ||||
| [node name="DemoCamera" type="Camera3D" parent="Course" groups=["DemoCamera"]] | ||||
| transform = Transform3D(-0.734269, 0.305072, -0.606448, 0, 0.893336, 0.44939, 0.678858, 0.329973, -0.655949, 143.463, 90.0707, 223.738) | ||||
| 
 | ||||
| [node name="GfolfGirl" parent="Course" instance=ExtResource("10_8tu3b")] | ||||
| transform = Transform3D(0.909686, 0, 0.415297, 0, 1, 0, -0.415297, 0, 0.909686, 537.767, 4, 452.434) | ||||
| 
 | ||||
| [node name="CityBuildings" type="Node3D" parent="."] | ||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) | ||||
| 
 | ||||
|  | ||||
| @ -62,8 +62,6 @@ config/controls/camera/invert_pitch=false | ||||
| config/accessibility/enable_screen_shake=true | ||||
| config/accessibility/enable_hit_lag=true | ||||
| audio/buses/override_bus_layout="user://audio_bus_layout.tres" | ||||
| config/gameplay/projection/detect_collision=true | ||||
| config/gameplay/projection/use_local_gravity=true | ||||
| 
 | ||||
| [global_group] | ||||
| 
 | ||||
| @ -244,5 +242,3 @@ jolt_3d/limits/max_temporary_memory=64 | ||||
| [rendering] | ||||
| 
 | ||||
| textures/canvas_textures/default_texture_filter=0 | ||||
| lights_and_shadows/directional_shadow/size=8192 | ||||
| lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3 | ||||
|  | ||||
| @ -1,26 +0,0 @@ | ||||
| [gd_scene load_steps=5 format=3 uid="uid://cc8molh324unk"] | ||||
| 
 | ||||
| [ext_resource type="PackedScene" uid="uid://dfttci386ohip" path="res://src/equipment/balls/physics_ball/physics_ball.tscn" id="1_y1dte"] | ||||
| [ext_resource type="PackedScene" uid="uid://b1aslqfbciwg8" path="res://assets/models/balls/brick/brick.gltf" id="2_ubuxr"] | ||||
| 
 | ||||
| [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_f03f4"] | ||||
| rough = true | ||||
| bounce = 1.0 | ||||
| absorbent = true | ||||
| 
 | ||||
| [sub_resource type="BoxShape3D" id="BoxShape3D_7v3re"] | ||||
| size = Vector3(0.147, 0.092, 0.31) | ||||
| 
 | ||||
| [node name="Brick" instance=ExtResource("1_y1dte")] | ||||
| mass = 0.08 | ||||
| physics_material_override = SubResource("PhysicsMaterial_f03f4") | ||||
| radius = 0.15 | ||||
| 
 | ||||
| [node name="BrickMesh" parent="." index="0" instance=ExtResource("2_ubuxr")] | ||||
| transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0) | ||||
| 
 | ||||
| [node name="BallMesh" parent="." index="1"] | ||||
| visible = false | ||||
| 
 | ||||
| [node name="CollisionShape3D" parent="." index="2"] | ||||
| shape = SubResource("BoxShape3D_7v3re") | ||||
| @ -9,7 +9,6 @@ enum Type { | ||||
| 	NONE, | ||||
| 	BASIC, | ||||
| 	PLASMA, | ||||
| 	BRICK, | ||||
| } | ||||
| 
 | ||||
| const TERRAIN_DAMPING_EPSILON := 1e-6 | ||||
| @ -39,9 +38,6 @@ const MAGNUS_EPSILON := 1e-3 | ||||
| ## Scaling factor for additional force-based damage | ||||
| @export var damage_force_scale := 0.01 | ||||
| 
 | ||||
| ## Approximate average radius, for physics purposes | ||||
| @export var radius := 0.05 | ||||
| 
 | ||||
| var current_gravity: Vector3 | ||||
| 
 | ||||
| var _last_contact_normal: Vector3 = Vector3.UP | ||||
|  | ||||
| @ -1,10 +1,9 @@ | ||||
| [gd_scene load_steps=10 format=3 uid="uid://cefit4bc8akbb"] | ||||
| [gd_scene load_steps=9 format=3 uid="uid://cefit4bc8akbb"] | ||||
| 
 | ||||
| [ext_resource type="Script" path="res://src/game/game.gd" id="1_4qa87"] | ||||
| [ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="2_y3adf"] | ||||
| [ext_resource type="Script" path="res://src/ui/decorations/rumbler.gd" id="3_3vfdb"] | ||||
| [ext_resource type="Script" path="res://src/ui/game_viewport_container.gd" id="3_rmm5i"] | ||||
| [ext_resource type="Script" path="res://src/game/game_viewport.gd" id="5_v2qv5"] | ||||
| 
 | ||||
| [sub_resource type="Animation" id="Animation_c3dlb"] | ||||
| length = 0.001 | ||||
| @ -193,7 +192,6 @@ use_taa = true | ||||
| audio_listener_enable_3d = true | ||||
| size = Vector2i(1920, 1080) | ||||
| render_target_update_mode = 4 | ||||
| script = ExtResource("5_v2qv5") | ||||
| 
 | ||||
| [node name="Content" type="Node" parent="RootControl/Rumbler/ViewportContainer/Viewport"] | ||||
| unique_name_in_owner = true | ||||
|  | ||||
| @ -13,9 +13,6 @@ var invert_pitch: bool | ||||
| var enable_screen_shake: bool | ||||
| var enable_hit_lag: bool | ||||
| 
 | ||||
| var projection_collisions: bool | ||||
| var projection_gravity: bool | ||||
| 
 | ||||
| 
 | ||||
| func _init() -> void: | ||||
| 	ProjectSettings.settings_changed.connect(_read_settings) | ||||
| @ -39,13 +36,6 @@ func _read_settings() -> void: | ||||
| 	) | ||||
| 	enable_hit_lag = ProjectSettings.get_setting("game/config/accessibility/enable_hit_lag") | ||||
| 
 | ||||
| 	projection_collisions = ProjectSettings.get_setting( | ||||
| 		"game/config/gameplay/projection/detect_collision" | ||||
| 	) | ||||
| 	projection_gravity = ProjectSettings.get_setting( | ||||
| 		"game/config/gameplay/projection/use_local_gravity" | ||||
| 	) | ||||
| 
 | ||||
| 
 | ||||
| func _load_audio_bus_override() -> void: | ||||
| 	# Load override audio bus file | ||||
|  | ||||
| @ -1,16 +0,0 @@ | ||||
| extends SubViewport | ||||
| ## Logic for dynamically resetting viewport graphics settings | ||||
| 
 | ||||
| 
 | ||||
| func _ready() -> void: | ||||
| 	ProjectSettings.settings_changed.connect(apply_rendering_settings) | ||||
| 
 | ||||
| 
 | ||||
| func apply_rendering_settings() -> void: | ||||
| 	print_debug("Applying rendering settings to viewport") | ||||
| 
 | ||||
| 	msaa_2d = ProjectSettings.get_setting("rendering/anti_aliasing/quality/msaa_2d") | ||||
| 	msaa_3d = ProjectSettings.get_setting("rendering/anti_aliasing/quality/msaa_3d") | ||||
| 	screen_space_aa = ProjectSettings.get_setting("rendering/anti_aliasing/quality/screen_space_aa") | ||||
| 	use_taa = ProjectSettings.get_setting("rendering/anti_aliasing/quality/use_taa") | ||||
| 	use_debanding = ProjectSettings.get_setting("rendering/anti_aliasing/quality/use_debanding") | ||||
| @ -17,6 +17,5 @@ wedge = ExtResource("5_wm4ae") | ||||
| putter = ExtResource("3_tytwr") | ||||
| _balls = { | ||||
| 1: -1, | ||||
| 2: 5, | ||||
| 3: -1 | ||||
| 2: 5 | ||||
| } | ||||
|  | ||||
| @ -8,7 +8,6 @@ signal ball_changed(ball: GameBall) | ||||
| const SCENE_MAP: Dictionary = { | ||||
| 	GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"), | ||||
| 	GameBall.Type.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.tscn"), | ||||
| 	GameBall.Type.BRICK: preload("res://src/equipment/balls/brick/brick.tscn"), | ||||
| } | ||||
| 
 | ||||
| @export var ball: GameBall: | ||||
|  | ||||
| @ -39,9 +39,6 @@ const WATER_DAMAGE := 10.0 | ||||
| ## Angle of influence that shot curve has, in radians | ||||
| const CURVE_INFLUENCE := PI / 16 | ||||
| 
 | ||||
| ## Just enough to make things interesting! | ||||
| const SHOT_OFFSET_Z_FACTOR := 2.0 / 45.0 | ||||
| 
 | ||||
| ## Impulse offset multiplier due to curve, in meters | ||||
| const CURVE_FACTOR := 0.002 | ||||
| 
 | ||||
| @ -265,16 +262,10 @@ func take_shot() -> void: | ||||
| 	print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s") | ||||
| 
 | ||||
| 	# Curve the curve | ||||
| 	var curve := shot_curve * absf(shot_curve) * CURVE_FACTOR | ||||
| 	var curve := direction.global_basis.x.normalized() * shot_curve * absf(shot_curve) | ||||
| 
 | ||||
| 	# Position where the ball is hit (imparts spin) | ||||
| 	var offset := direction.global_basis.x.normalized() * -curve | ||||
| 	offset += ( | ||||
| 		direction.global_basis.z.normalized() | ||||
| 		* game_ball.radius | ||||
| 		* game_ball.radius | ||||
| 		* SHOT_OFFSET_Z_FACTOR | ||||
| 	) | ||||
| 	var offset := -curve * CURVE_FACTOR | ||||
| 	print_debug("Shot offset: ", offset, "; ", offset.length(), " m") | ||||
| 
 | ||||
| 	if game_ball: | ||||
|  | ||||
| @ -22,7 +22,7 @@ const PUTT_ATTRITION := 0.8325  # green? | ||||
| ## If enabled, project a linear putt instead of an arcing shot | ||||
| @export var putt_projection := false | ||||
| 
 | ||||
| @export_category("Collision & Physics") | ||||
| @export_category("Collision") | ||||
| ## Enables collision checking. Projection will end at the point where a collision is detected. | ||||
| ## Uses continuous collision detection. | ||||
| @export var check_collision := true | ||||
| @ -32,10 +32,6 @@ const PUTT_ATTRITION := 0.8325  # green? | ||||
| ## This should probably include the ball! | ||||
| @export var excluded_bodies: Array[CollisionObject3D] = [] | ||||
| 
 | ||||
| ## Enables checking local gravity at each point along the trajectory. | ||||
| ## If disabled, global gravity will be used instead. | ||||
| @export var check_gravity := true | ||||
| 
 | ||||
| var _tick_counter := 0 | ||||
| 
 | ||||
| var _debug_points: Array[Vector3] = [] | ||||
| @ -77,17 +73,12 @@ func _process(_delta: float) -> void: | ||||
| 		# TODO: smooth curve with bezier handles | ||||
| 		path.curve.add_point(pos - global_position) | ||||
| 
 | ||||
| 		# Get local gravity if enabled | ||||
| 		var local_gravity := gravity * gravity_vec | ||||
| 		if check_gravity and Game.settings.projection_gravity: | ||||
| 			local_gravity = _get_gravity(pos) | ||||
| 
 | ||||
| 		# Integrate projectile path | ||||
| 		vel += local_gravity * time_step | ||||
| 		vel += gravity * gravity_vec * time_step | ||||
| 		var next_pos := pos + vel * time_step | ||||
| 
 | ||||
| 		# Collision | ||||
| 		if check_collision and Game.settings.projection_collisions: | ||||
| 		if check_collision: | ||||
| 			var ray_params := PhysicsRayQueryParameters3D.create( | ||||
| 				pos, next_pos, collision_mask, excluded_rid | ||||
| 			) | ||||
| @ -119,58 +110,6 @@ func _process(_delta: float) -> void: | ||||
| 	(%DebugDraw as CanvasItem).queue_redraw() | ||||
| 
 | ||||
| 
 | ||||
| func _get_gravity(point: Vector3) -> Vector3: | ||||
| 	# Start with global gravity | ||||
| 	var local_gravity := gravity * gravity_vec | ||||
| 
 | ||||
| 	# TODO this is awful, surely there has to be a better way than this!!! | ||||
| 	# Get areas at point | ||||
| 	var point_params := PhysicsPointQueryParameters3D.new() | ||||
| 	point_params.collide_with_areas = true | ||||
| 	point_params.collide_with_bodies = false | ||||
| 	point_params.collision_mask = collision_mask | ||||
| 	point_params.position = point | ||||
| 	var collisions := get_world_3d().direct_space_state.intersect_point(point_params) | ||||
| 	var gravity_areas: Array[Area3D] = [] | ||||
| 	gravity_areas.assign( | ||||
| 		collisions.map(func(d: Dictionary) -> Area3D: return d["collider"] as Area3D) | ||||
| 	) | ||||
| 	gravity_areas.sort_custom(func(a: Area3D, b: Area3D) -> bool: return a.priority < b.priority) | ||||
| 
 | ||||
| 	# Iteratively integrate gravity | ||||
| 	for area: Area3D in gravity_areas: | ||||
| 		var point_local := point - area.global_position | ||||
| 		var area_gravity: Vector3 | ||||
| 		if area.gravity_point: | ||||
| 			# TODO: `point` may need to be local | ||||
| 			var v := area.transform * area.gravity_direction - point_local | ||||
| 			if area.gravity_point_unit_distance > 0: | ||||
| 				var v_sq := v.length_squared() | ||||
| 				if v_sq > 0: | ||||
| 					area_gravity = ( | ||||
| 						v.normalized() | ||||
| 						* area.gravity | ||||
| 						* pow(area.gravity_point_unit_distance, 2) | ||||
| 						/ v_sq | ||||
| 					) | ||||
| 				else: | ||||
| 					area_gravity = Vector3.ZERO | ||||
| 			else: | ||||
| 				area_gravity = v.normalized() * area.gravity | ||||
| 		else: | ||||
| 			area_gravity = area.gravity * area.gravity_direction | ||||
| 
 | ||||
| 		match area.gravity_space_override: | ||||
| 			Area3D.SPACE_OVERRIDE_COMBINE, Area3D.SPACE_OVERRIDE_COMBINE_REPLACE: | ||||
| 				local_gravity += area_gravity | ||||
| 			Area3D.SPACE_OVERRIDE_REPLACE_COMBINE, Area3D.SPACE_OVERRIDE_REPLACE: | ||||
| 				local_gravity = area_gravity | ||||
| 			Area3D.SPACE_OVERRIDE_COMBINE_REPLACE, Area3D.SPACE_OVERRIDE_REPLACE: | ||||
| 				break | ||||
| 
 | ||||
| 	return local_gravity | ||||
| 
 | ||||
| 
 | ||||
| func _on_visibility_changed() -> void: | ||||
| 	# Force update as soon as visible | ||||
| 	_tick_counter = 0 | ||||
|  | ||||
| @ -2,7 +2,7 @@ class_name OrbitalCamera extends Node3D | ||||
| 
 | ||||
| const POSITION_ACCELERATION := 4.0 | ||||
| const BASIS_ACCELERATION := 4.0 | ||||
| const TARGETER_ACCELERATION := 8.0 | ||||
| const TARGETER_ACCELERATION := 4.0 | ||||
| 
 | ||||
| @export var target: Node3D | ||||
| @export var offset := Vector3(0, 1, 0) | ||||
|  | ||||
| @ -1,10 +0,0 @@ | ||||
| extends "res://src/ui/menus/settings_menu/settings/checkbox_setting/checkbox_setting.gd" | ||||
| ## Special case setting for fullscreen mode | ||||
| 
 | ||||
| 
 | ||||
| func initialize_value(value: Variant) -> void: | ||||
| 	checkbox.button_pressed = (value as Window.Mode) == Window.MODE_FULLSCREEN | ||||
| 
 | ||||
| 
 | ||||
| func get_value() -> Variant: | ||||
| 	return Window.MODE_FULLSCREEN if checkbox.button_pressed else Window.MODE_WINDOWED | ||||
| @ -1,12 +0,0 @@ | ||||
| extends Setting | ||||
| ## Setting with a dropdown menu representing an enum value | ||||
| 
 | ||||
| @onready var dropdown: OptionButton = %Dropdown | ||||
| 
 | ||||
| 
 | ||||
| func initialize_value(value: Variant) -> void: | ||||
| 	dropdown.selected = dropdown.get_item_index(value as int) | ||||
| 
 | ||||
| 
 | ||||
| func get_value() -> Variant: | ||||
| 	return dropdown.get_item_id(dropdown.selected) | ||||
| @ -1,13 +1,9 @@ | ||||
| [gd_scene load_steps=3 format=3 uid="uid://dpry41u0ctikn"] | ||||
| [gd_scene load_steps=2 format=3 uid="uid://dpry41u0ctikn"] | ||||
| 
 | ||||
| [ext_resource type="PackedScene" uid="uid://dcah6r3ku60g6" path="res://src/ui/menus/settings_menu/settings/setting/setting.tscn" id="1_km84n"] | ||||
| [ext_resource type="Script" path="res://src/ui/menus/settings_menu/settings/dropdown_setting/dropdown_setting.gd" id="2_ubo13"] | ||||
| 
 | ||||
| [node name="DropdownSetting" instance=ExtResource("1_km84n")] | ||||
| script = ExtResource("2_ubo13") | ||||
| 
 | ||||
| [node name="Dropdown" type="OptionButton" parent="PanelContainer/MarginContainer" index="0"] | ||||
| unique_name_in_owner = true | ||||
| [node name="OptionButton" type="OptionButton" parent="PanelContainer/MarginContainer" index="0"] | ||||
| layout_mode = 2 | ||||
| selected = 0 | ||||
| item_count = 1 | ||||
|  | ||||
| @ -1,10 +1,8 @@ | ||||
| [gd_scene load_steps=6 format=3 uid="uid://d3eaqw2rdurct"] | ||||
| [gd_scene load_steps=4 format=3 uid="uid://d3eaqw2rdurct"] | ||||
| 
 | ||||
| [ext_resource type="Script" path="res://src/ui/menus/settings_menu/settings_menu.gd" id="1_lbcn7"] | ||||
| [ext_resource type="PackedScene" uid="uid://bpmpj4n6xp17l" path="res://src/ui/menus/settings_menu/settings/checkbox_setting/checkbox_setting.tscn" id="2_f274v"] | ||||
| [ext_resource type="PackedScene" uid="uid://dut1lj8ju37sq" path="res://src/ui/menus/settings_menu/settings/numeric_setting/numeric_setting.tscn" id="3_jox8e"] | ||||
| [ext_resource type="PackedScene" uid="uid://dpry41u0ctikn" path="res://src/ui/menus/settings_menu/settings/dropdown_setting/dropdown_setting.tscn" id="4_g7eck"] | ||||
| [ext_resource type="Script" path="res://src/ui/menus/settings_menu/settings/checkbox_setting/fullscreen_setting.gd" id="4_ug1id"] | ||||
| 
 | ||||
| [node name="SettingsMenu" type="MarginContainer"] | ||||
| anchors_preset = 15 | ||||
| @ -80,32 +78,6 @@ key = &"game/config/accessibility/enable_hit_lag" | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/HitLag" index="1"] | ||||
| text = "SETTINGS_HIT_LAG" | ||||
| 
 | ||||
| [node name="GameplayHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/GameplayHeading"] | ||||
| layout_mode = 2 | ||||
| theme_type_variation = &"HeaderMedium" | ||||
| text = "SETTINGS_GAME_GAMEPLAY_HEADING" | ||||
| 
 | ||||
| [node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/GameplayHeading"] | ||||
| layout_mode = 2 | ||||
| size_flags_horizontal = 3 | ||||
| 
 | ||||
| [node name="ProjectionCollision" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"game/config/gameplay/projection/detect_collision" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ProjectionCollision" index="1"] | ||||
| text = "SETTINGS_PROJECTION_COLLISIONS" | ||||
| 
 | ||||
| [node name="ProjectionGravity" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"game/config/gameplay/projection/use_local_gravity" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ProjectionGravity" index="1"] | ||||
| text = "SETTINGS_PROJECTION_GRAVITY" | ||||
| 
 | ||||
| [node name="CameraHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| @ -222,169 +194,6 @@ theme_type_variation = &"SettingsListMargin" | ||||
| [node name="SettingsList" type="VBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="DisplayHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DisplayHeading"] | ||||
| layout_mode = 2 | ||||
| theme_type_variation = &"HeaderMedium" | ||||
| text = "SETTINGS_GRAPHICS_DISPLAY_HEADING" | ||||
| 
 | ||||
| [node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DisplayHeading"] | ||||
| layout_mode = 2 | ||||
| size_flags_horizontal = 3 | ||||
| 
 | ||||
| [node name="Fullscreen" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| script = ExtResource("4_ug1id") | ||||
| key = &"display/window/size/mode" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/Fullscreen" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_FULLSCREEN" | ||||
| 
 | ||||
| [node name="VSync" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"display/window/vsync/vsync_mode" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/VSync" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_VSYNC" | ||||
| 
 | ||||
| [node name="AntialiasingHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AntialiasingHeading"] | ||||
| layout_mode = 2 | ||||
| theme_type_variation = &"HeaderMedium" | ||||
| text = "SETTINGS_GRAPHICS_AA_HEADING" | ||||
| 
 | ||||
| [node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AntialiasingHeading"] | ||||
| layout_mode = 2 | ||||
| size_flags_horizontal = 3 | ||||
| 
 | ||||
| [node name="MSAA" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("4_g7eck")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/anti_aliasing/quality/msaa_3d" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/MSAA" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_MSAA" | ||||
| 
 | ||||
| [node name="Dropdown" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/MSAA/PanelContainer/MarginContainer" index="0"] | ||||
| item_count = 4 | ||||
| popup/item_0/text = "SETTINGS_GRAPHICS_MSAA_0" | ||||
| popup/item_1/text = "SETTINGS_GRAPHICS_MSAA_2" | ||||
| popup/item_1/id = 1 | ||||
| popup/item_2/text = "SETTINGS_GRAPHICS_MSAA_4" | ||||
| popup/item_2/id = 2 | ||||
| popup/item_3/text = "SETTINGS_GRAPHICS_MSAA_8" | ||||
| popup/item_3/id = 3 | ||||
| 
 | ||||
| [node name="FXAA" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/anti_aliasing/quality/screen_space_aa" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FXAA" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_FXAA" | ||||
| 
 | ||||
| [node name="TAA" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/anti_aliasing/quality/use_taa" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TAA" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_TAA" | ||||
| 
 | ||||
| [node name="Debanding" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("2_f274v")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/anti_aliasing/quality/use_debanding" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/Debanding" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_DEBANDING" | ||||
| 
 | ||||
| [node name="TextureHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TextureHeading"] | ||||
| layout_mode = 2 | ||||
| theme_type_variation = &"HeaderMedium" | ||||
| text = "SETTINGS_GRAPHICS_TEXTURES_HEADING" | ||||
| 
 | ||||
| [node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TextureHeading"] | ||||
| layout_mode = 2 | ||||
| size_flags_horizontal = 3 | ||||
| 
 | ||||
| [node name="AnisotropicLevel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("4_g7eck")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/textures/default_filters/anisotropic_filtering_level" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AnisotropicLevel" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_ANISOTROPIC" | ||||
| 
 | ||||
| [node name="Dropdown" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AnisotropicLevel/PanelContainer/MarginContainer" index="0"] | ||||
| item_count = 5 | ||||
| popup/item_0/text = "SETTINGS_GRAPHICS_ANISOTROPIC_0" | ||||
| popup/item_1/text = "SETTINGS_GRAPHICS_ANISOTROPIC_1" | ||||
| popup/item_1/id = 1 | ||||
| popup/item_2/text = "SETTINGS_GRAPHICS_ANISOTROPIC_2" | ||||
| popup/item_2/id = 2 | ||||
| popup/item_3/text = "SETTINGS_GRAPHICS_ANISOTROPIC_3" | ||||
| popup/item_3/id = 3 | ||||
| popup/item_4/text = "SETTINGS_GRAPHICS_ANISOTROPIC_4" | ||||
| popup/item_4/id = 4 | ||||
| 
 | ||||
| [node name="LightingHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||
| layout_mode = 2 | ||||
| 
 | ||||
| [node name="Label" type="Label" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/LightingHeading"] | ||||
| layout_mode = 2 | ||||
| theme_type_variation = &"HeaderMedium" | ||||
| text = "SETTINGS_GRAPHICS_LIGHTING_HEADING" | ||||
| 
 | ||||
| [node name="HSeparator" type="HSeparator" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/LightingHeading"] | ||||
| layout_mode = 2 | ||||
| size_flags_horizontal = 3 | ||||
| 
 | ||||
| [node name="DirectionalShadowQuality" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("4_g7eck")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/lights_and_shadows/directional_shadow/size" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowQuality" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_SHADOW_QUALITY" | ||||
| 
 | ||||
| [node name="Dropdown" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowQuality/PanelContainer/MarginContainer" index="0"] | ||||
| item_count = 6 | ||||
| popup/item_0/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_0" | ||||
| popup/item_0/id = 256 | ||||
| popup/item_1/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_1" | ||||
| popup/item_1/id = 2048 | ||||
| popup/item_2/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_2" | ||||
| popup/item_2/id = 4096 | ||||
| popup/item_3/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_3" | ||||
| popup/item_3/id = 8192 | ||||
| popup/item_4/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_4" | ||||
| popup/item_4/id = 16384 | ||||
| popup/item_5/text = "SETTINGS_GRAPHICS_SHADOW_QUALITY_5" | ||||
| popup/item_5/id = 32768 | ||||
| 
 | ||||
| [node name="DirectionalShadowFilter" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList" groups=["Settings"] instance=ExtResource("4_g7eck")] | ||||
| layout_mode = 2 | ||||
| key = &"rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality" | ||||
| 
 | ||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowFilter" index="1"] | ||||
| text = "SETTINGS_GRAPHICS_SHADOW_FILTER" | ||||
| 
 | ||||
| [node name="Dropdown" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowFilter/PanelContainer/MarginContainer" index="0"] | ||||
| item_count = 6 | ||||
| popup/item_0/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_0" | ||||
| popup/item_1/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_1" | ||||
| popup/item_1/id = 1 | ||||
| popup/item_2/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_2" | ||||
| popup/item_2/id = 2 | ||||
| popup/item_3/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_3" | ||||
| popup/item_3/id = 3 | ||||
| popup/item_4/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_4" | ||||
| popup/item_4/id = 4 | ||||
| popup/item_5/text = "SETTINGS_GRAPHICS_SHADOW_FILTER_5" | ||||
| popup/item_5/id = 5 | ||||
| 
 | ||||
| [node name="SETTINGS_AUDIO" type="MarginContainer" parent="TabContainer"] | ||||
| visible = false | ||||
| layout_mode = 2 | ||||
| @ -490,8 +299,6 @@ text = "UI_ACCEPT" | ||||
| 
 | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ScreenShake"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/HitLag"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ProjectionCollision"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ProjectionGravity"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FreeCameraSpeed"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FreeCameraSpeed/PanelContainer/MarginContainer/NumericSlider"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/SensitivityX"] | ||||
| @ -499,12 +306,3 @@ text = "UI_ACCEPT" | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AccelerationX"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AccelerationY"] | ||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/InvertPitch"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/Fullscreen"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/VSync"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/MSAA"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FXAA"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/TAA"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/Debanding"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AnisotropicLevel"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowQuality"] | ||||
| [editable path="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/DirectionalShadowFilter"] | ||||
|  | ||||
| @ -7,7 +7,6 @@ const Y_OFFSET := { | ||||
| 	GameBall.Type.NONE: 50, | ||||
| 	GameBall.Type.BASIC: 18, | ||||
| 	GameBall.Type.PLASMA: -14, | ||||
| 	GameBall.Type.BRICK: -46, | ||||
| } | ||||
| 
 | ||||
| @export var value: GameBall.Type: | ||||
| @ -16,7 +15,6 @@ const Y_OFFSET := { | ||||
| @onready var ball_list: VBoxContainer = %BallList | ||||
| @onready var basic_icon: BallIcon = %BasicIcon | ||||
| @onready var plasma_icon: BallIcon = %PlasmaIcon | ||||
| @onready var brick_icon: BallIcon = %BrickIcon | ||||
| 
 | ||||
| 
 | ||||
| func _ready() -> void: | ||||
| @ -27,7 +25,6 @@ func _ready() -> void: | ||||
| func set_state_for_player(player: WorldPlayer) -> void: | ||||
| 	basic_icon.quantity = player.get_balls(GameBall.Type.BASIC) | ||||
| 	plasma_icon.quantity = player.get_balls(GameBall.Type.PLASMA) | ||||
| 	brick_icon.quantity = player.get_balls(GameBall.Type.BRICK) | ||||
| 	if player.shot_setup: | ||||
| 		value = player.shot_setup.ball_type | ||||
| 	player.on_balls_changed.connect(_set_quantity) | ||||
| @ -39,8 +36,6 @@ func _get_icon(type: GameBall.Type) -> BallIcon: | ||||
| 			return basic_icon | ||||
| 		GameBall.Type.PLASMA: | ||||
| 			return plasma_icon | ||||
| 		GameBall.Type.BRICK: | ||||
| 			return brick_icon | ||||
| 	return null | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -46,7 +46,7 @@ custom_minimum_size = Vector2(120, 0) | ||||
| layout_mode = 0 | ||||
| offset_top = 50.0 | ||||
| offset_right = 120.0 | ||||
| offset_bottom = 141.0 | ||||
| offset_bottom = 109.0 | ||||
| theme_override_constants/separation = 5 | ||||
| 
 | ||||
| [node name="BasicIcon" parent="GradientMask/BallList" instance=ExtResource("1_1v8xg")] | ||||
| @ -60,11 +60,3 @@ unique_name_in_owner = true | ||||
| custom_minimum_size = Vector2(120, 27) | ||||
| layout_mode = 2 | ||||
| text = "BALL_PLASMA" | ||||
| 
 | ||||
| [node name="BrickIcon" parent="GradientMask/BallList" instance=ExtResource("1_1v8xg")] | ||||
| unique_name_in_owner = true | ||||
| custom_minimum_size = Vector2(120, 27) | ||||
| layout_mode = 2 | ||||
| text = "BALL_BRICK" | ||||
| quantity = 0 | ||||
| empty = true | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| [gd_scene load_steps=13 format=3 uid="uid://dwfckgdxnwwru"] | ||||
| 
 | ||||
| [ext_resource type="Texture2D" uid="uid://b1bfyk5c003se" path="res://src/world/effects/zephyr/zephyr_scale_curve.tres" id="1_opmvf"] | ||||
| [ext_resource type="Texture2D" uid="uid://c0rf8luj8nbom" path="res://src/world/effects/zephyr/zephyr_scale_curve.tres" id="1_opmvf"] | ||||
| [ext_resource type="Curve" uid="uid://5vyddepvq1ho" path="res://src/world/effects/zephyr/zephyr_mesh_curve.tres" id="2_5lvg1"] | ||||
| [ext_resource type="Material" uid="uid://b20gam4x6f8gw" path="res://src/world/effects/zephyr/zephyr_mesh_material.tres" id="3_yxxm1"] | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user