generated from krampus/template-godot4
	Compare commits
	
		
			8 Commits
		
	
	
		
			b1dead039f
			...
			424ee2f2ae
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 424ee2f2ae | |||
| 9b9979e8ac | |||
| 508e9d593b | |||
| 906e161b67 | |||
| 60dd5bf659 | |||
| aef73e6681 | |||
| 4575fb1d08 | |||
| 6bd59706ab | 
							
								
								
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick.blend1
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick_uv_layout.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								asset_dev/balls/brick/brick_uv_layout.png
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/models/balls/brick/brick.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/models/balls/brick/brick.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										120
									
								
								assets/models/balls/brick/brick.gltf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								assets/models/balls/brick/brick.gltf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,120 @@ | |||||||
|  | { | ||||||
|  | 	"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" | ||||||
|  | 		} | ||||||
|  | 	] | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								assets/models/balls/brick/brick.gltf.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								assets/models/balls/brick/brick.gltf.import
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | [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,6 +19,9 @@ SETTINGS_GAME_ACCESSIBILITY_HEADING,Accessibility | |||||||
| SETTINGS_GAME_CAMERA_HEADING,Camera | SETTINGS_GAME_CAMERA_HEADING,Camera | ||||||
| SETTINGS_SCREEN_SHAKE,"Enable Screen Shake" | SETTINGS_SCREEN_SHAKE,"Enable Screen Shake" | ||||||
| SETTINGS_HIT_LAG,"Enable Hit Lag Effect" | 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_FREE_CAMERA_SPEED,"Free Camera Speed" | ||||||
| SETTINGS_SENSITIVITY_X,"Sensitivity, Horizontal" | SETTINGS_SENSITIVITY_X,"Sensitivity, Horizontal" | ||||||
| SETTINGS_SENSITIVITY_Y,"Sensitivity, Vertical" | SETTINGS_SENSITIVITY_Y,"Sensitivity, Vertical" | ||||||
| @ -27,6 +30,40 @@ SETTINGS_ACCELERATION_Y,"Acceleration, Vertical" | |||||||
| SETTINGS_INVERT_PITCH,"Invert Pitch" | SETTINGS_INVERT_PITCH,"Invert Pitch" | ||||||
| SETTINGS_GRAPHICS,Graphics | SETTINGS_GRAPHICS,Graphics | ||||||
| SETTINGS_GRAPHICS_HEADING,"Graphics & Display" | 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,Audio | ||||||
| SETTINGS_AUDIO_HEADING,"Audio Settings" | SETTINGS_AUDIO_HEADING,"Audio Settings" | ||||||
| SETTINGS_CONTROLS,Controls | SETTINGS_CONTROLS,Controls | ||||||
| @ -64,3 +101,4 @@ CLUB_PUTTER,Putter | |||||||
| , | , | ||||||
| BALL_BASIC,Basic | BALL_BASIC,Basic | ||||||
| BALL_PLASMA,Plasma | BALL_PLASMA,Plasma | ||||||
|  | BALL_BRICK,Brick | ||||||
|  | |||||||
| 
 | 
| @ -1,10 +1,11 @@ | |||||||
| [gd_scene load_steps=61 format=3 uid="uid://bm2o3mex10v11"] | [gd_scene load_steps=62 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="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="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://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="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="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://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://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"] | [ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"] | ||||||
| @ -312,7 +313,12 @@ 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) | 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_enabled = true | ||||||
| shadow_blur = 4.0 | shadow_blur = 4.0 | ||||||
| directional_shadow_max_distance = 160.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 | ||||||
| 
 | 
 | ||||||
| [node name="Course" type="Node3D" parent="."] | [node name="Course" type="Node3D" parent="."] | ||||||
| 
 | 
 | ||||||
| @ -374,6 +380,9 @@ draw_pass_1 = SubResource("QuadMesh_l4j8a") | |||||||
| [node name="DemoCamera" type="Camera3D" parent="Course" groups=["DemoCamera"]] | [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) | 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="."] | [node name="CityBuildings" type="Node3D" parent="."] | ||||||
| transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -62,6 +62,8 @@ config/controls/camera/invert_pitch=false | |||||||
| config/accessibility/enable_screen_shake=true | config/accessibility/enable_screen_shake=true | ||||||
| config/accessibility/enable_hit_lag=true | config/accessibility/enable_hit_lag=true | ||||||
| audio/buses/override_bus_layout="user://audio_bus_layout.tres" | 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] | [global_group] | ||||||
| 
 | 
 | ||||||
| @ -242,3 +244,5 @@ jolt_3d/limits/max_temporary_memory=64 | |||||||
| [rendering] | [rendering] | ||||||
| 
 | 
 | ||||||
| textures/canvas_textures/default_texture_filter=0 | textures/canvas_textures/default_texture_filter=0 | ||||||
|  | lights_and_shadows/directional_shadow/size=8192 | ||||||
|  | lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3 | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								src/equipment/balls/brick/brick.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/equipment/balls/brick/brick.tscn
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | [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,6 +9,7 @@ enum Type { | |||||||
| 	NONE, | 	NONE, | ||||||
| 	BASIC, | 	BASIC, | ||||||
| 	PLASMA, | 	PLASMA, | ||||||
|  | 	BRICK, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const TERRAIN_DAMPING_EPSILON := 1e-6 | const TERRAIN_DAMPING_EPSILON := 1e-6 | ||||||
| @ -38,6 +39,9 @@ const MAGNUS_EPSILON := 1e-3 | |||||||
| ## Scaling factor for additional force-based damage | ## Scaling factor for additional force-based damage | ||||||
| @export var damage_force_scale := 0.01 | @export var damage_force_scale := 0.01 | ||||||
| 
 | 
 | ||||||
|  | ## Approximate average radius, for physics purposes | ||||||
|  | @export var radius := 0.05 | ||||||
|  | 
 | ||||||
| var current_gravity: Vector3 | var current_gravity: Vector3 | ||||||
| 
 | 
 | ||||||
| var _last_contact_normal: Vector3 = Vector3.UP | var _last_contact_normal: Vector3 = Vector3.UP | ||||||
|  | |||||||
| @ -1,9 +1,10 @@ | |||||||
| [gd_scene load_steps=9 format=3 uid="uid://cefit4bc8akbb"] | [gd_scene load_steps=10 format=3 uid="uid://cefit4bc8akbb"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Script" path="res://src/game/game.gd" id="1_4qa87"] | [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="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/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/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"] | [sub_resource type="Animation" id="Animation_c3dlb"] | ||||||
| length = 0.001 | length = 0.001 | ||||||
| @ -192,6 +193,7 @@ use_taa = true | |||||||
| audio_listener_enable_3d = true | audio_listener_enable_3d = true | ||||||
| size = Vector2i(1920, 1080) | size = Vector2i(1920, 1080) | ||||||
| render_target_update_mode = 4 | render_target_update_mode = 4 | ||||||
|  | script = ExtResource("5_v2qv5") | ||||||
| 
 | 
 | ||||||
| [node name="Content" type="Node" parent="RootControl/Rumbler/ViewportContainer/Viewport"] | [node name="Content" type="Node" parent="RootControl/Rumbler/ViewportContainer/Viewport"] | ||||||
| unique_name_in_owner = true | unique_name_in_owner = true | ||||||
|  | |||||||
| @ -13,6 +13,9 @@ var invert_pitch: bool | |||||||
| var enable_screen_shake: bool | var enable_screen_shake: bool | ||||||
| var enable_hit_lag: bool | var enable_hit_lag: bool | ||||||
| 
 | 
 | ||||||
|  | var projection_collisions: bool | ||||||
|  | var projection_gravity: bool | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| func _init() -> void: | func _init() -> void: | ||||||
| 	ProjectSettings.settings_changed.connect(_read_settings) | 	ProjectSettings.settings_changed.connect(_read_settings) | ||||||
| @ -36,6 +39,13 @@ func _read_settings() -> void: | |||||||
| 	) | 	) | ||||||
| 	enable_hit_lag = ProjectSettings.get_setting("game/config/accessibility/enable_hit_lag") | 	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: | func _load_audio_bus_override() -> void: | ||||||
| 	# Load override audio bus file | 	# Load override audio bus file | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								src/game/game_viewport.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/game/game_viewport.gd
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | |||||||
|  | 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,5 +17,6 @@ wedge = ExtResource("5_wm4ae") | |||||||
| putter = ExtResource("3_tytwr") | putter = ExtResource("3_tytwr") | ||||||
| _balls = { | _balls = { | ||||||
| 1: -1, | 1: -1, | ||||||
| 2: 5 | 2: 5, | ||||||
|  | 3: -1 | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ signal ball_changed(ball: GameBall) | |||||||
| const SCENE_MAP: Dictionary = { | const SCENE_MAP: Dictionary = { | ||||||
| 	GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"), | 	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.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: | @export var ball: GameBall: | ||||||
|  | |||||||
| @ -39,6 +39,9 @@ const WATER_DAMAGE := 10.0 | |||||||
| ## Angle of influence that shot curve has, in radians | ## Angle of influence that shot curve has, in radians | ||||||
| const CURVE_INFLUENCE := PI / 16 | 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 | ## Impulse offset multiplier due to curve, in meters | ||||||
| const CURVE_FACTOR := 0.002 | const CURVE_FACTOR := 0.002 | ||||||
| 
 | 
 | ||||||
| @ -262,10 +265,16 @@ func take_shot() -> void: | |||||||
| 	print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s") | 	print_debug("Shot impulse: ", impulse, "; ", impulse.length(), " N*s") | ||||||
| 
 | 
 | ||||||
| 	# Curve the curve | 	# Curve the curve | ||||||
| 	var curve := direction.global_basis.x.normalized() * shot_curve * absf(shot_curve) | 	var curve := shot_curve * absf(shot_curve) * CURVE_FACTOR | ||||||
| 
 | 
 | ||||||
| 	# Position where the ball is hit (imparts spin) | 	# Position where the ball is hit (imparts spin) | ||||||
| 	var offset := -curve * CURVE_FACTOR | 	var offset := direction.global_basis.x.normalized() * -curve | ||||||
|  | 	offset += ( | ||||||
|  | 		direction.global_basis.z.normalized() | ||||||
|  | 		* game_ball.radius | ||||||
|  | 		* game_ball.radius | ||||||
|  | 		* SHOT_OFFSET_Z_FACTOR | ||||||
|  | 	) | ||||||
| 	print_debug("Shot offset: ", offset, "; ", offset.length(), " m") | 	print_debug("Shot offset: ", offset, "; ", offset.length(), " m") | ||||||
| 
 | 
 | ||||||
| 	if game_ball: | 	if game_ball: | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ const PUTT_ATTRITION := 0.8325  # green? | |||||||
| ## If enabled, project a linear putt instead of an arcing shot | ## If enabled, project a linear putt instead of an arcing shot | ||||||
| @export var putt_projection := false | @export var putt_projection := false | ||||||
| 
 | 
 | ||||||
| @export_category("Collision") | @export_category("Collision & Physics") | ||||||
| ## Enables collision checking. Projection will end at the point where a collision is detected. | ## Enables collision checking. Projection will end at the point where a collision is detected. | ||||||
| ## Uses continuous collision detection. | ## Uses continuous collision detection. | ||||||
| @export var check_collision := true | @export var check_collision := true | ||||||
| @ -32,6 +32,10 @@ const PUTT_ATTRITION := 0.8325  # green? | |||||||
| ## This should probably include the ball! | ## This should probably include the ball! | ||||||
| @export var excluded_bodies: Array[CollisionObject3D] = [] | @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 _tick_counter := 0 | ||||||
| 
 | 
 | ||||||
| var _debug_points: Array[Vector3] = [] | var _debug_points: Array[Vector3] = [] | ||||||
| @ -73,12 +77,17 @@ func _process(_delta: float) -> void: | |||||||
| 		# TODO: smooth curve with bezier handles | 		# TODO: smooth curve with bezier handles | ||||||
| 		path.curve.add_point(pos - global_position) | 		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 | 		# Integrate projectile path | ||||||
| 		vel += gravity * gravity_vec * time_step | 		vel += local_gravity * time_step | ||||||
| 		var next_pos := pos + vel * time_step | 		var next_pos := pos + vel * time_step | ||||||
| 
 | 
 | ||||||
| 		# Collision | 		# Collision | ||||||
| 		if check_collision: | 		if check_collision and Game.settings.projection_collisions: | ||||||
| 			var ray_params := PhysicsRayQueryParameters3D.create( | 			var ray_params := PhysicsRayQueryParameters3D.create( | ||||||
| 				pos, next_pos, collision_mask, excluded_rid | 				pos, next_pos, collision_mask, excluded_rid | ||||||
| 			) | 			) | ||||||
| @ -110,6 +119,58 @@ func _process(_delta: float) -> void: | |||||||
| 	(%DebugDraw as CanvasItem).queue_redraw() | 	(%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: | func _on_visibility_changed() -> void: | ||||||
| 	# Force update as soon as visible | 	# Force update as soon as visible | ||||||
| 	_tick_counter = 0 | 	_tick_counter = 0 | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ class_name OrbitalCamera extends Node3D | |||||||
| 
 | 
 | ||||||
| const POSITION_ACCELERATION := 4.0 | const POSITION_ACCELERATION := 4.0 | ||||||
| const BASIS_ACCELERATION := 4.0 | const BASIS_ACCELERATION := 4.0 | ||||||
| const TARGETER_ACCELERATION := 4.0 | const TARGETER_ACCELERATION := 8.0 | ||||||
| 
 | 
 | ||||||
| @export var target: Node3D | @export var target: Node3D | ||||||
| @export var offset := Vector3(0, 1, 0) | @export var offset := Vector3(0, 1, 0) | ||||||
|  | |||||||
| @ -0,0 +1,10 @@ | |||||||
|  | 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 | ||||||
| @ -0,0 +1,12 @@ | |||||||
|  | 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,9 +1,13 @@ | |||||||
| [gd_scene load_steps=2 format=3 uid="uid://dpry41u0ctikn"] | [gd_scene load_steps=3 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="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")] | [node name="DropdownSetting" instance=ExtResource("1_km84n")] | ||||||
|  | script = ExtResource("2_ubo13") | ||||||
| 
 | 
 | ||||||
| [node name="OptionButton" type="OptionButton" parent="PanelContainer/MarginContainer" index="0"] | [node name="Dropdown" type="OptionButton" parent="PanelContainer/MarginContainer" index="0"] | ||||||
|  | unique_name_in_owner = true | ||||||
| layout_mode = 2 | layout_mode = 2 | ||||||
|  | selected = 0 | ||||||
| item_count = 1 | item_count = 1 | ||||||
|  | |||||||
| @ -1,8 +1,10 @@ | |||||||
| [gd_scene load_steps=4 format=3 uid="uid://d3eaqw2rdurct"] | [gd_scene load_steps=6 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="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://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://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"] | [node name="SettingsMenu" type="MarginContainer"] | ||||||
| anchors_preset = 15 | anchors_preset = 15 | ||||||
| @ -78,6 +80,32 @@ key = &"game/config/accessibility/enable_hit_lag" | |||||||
| [node name="SettingLabel" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/HitLag" index="1"] | [node name="SettingLabel" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/HitLag" index="1"] | ||||||
| text = "SETTINGS_HIT_LAG" | 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"] | [node name="CameraHeading" type="HBoxContainer" parent="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList"] | ||||||
| layout_mode = 2 | layout_mode = 2 | ||||||
| 
 | 
 | ||||||
| @ -194,6 +222,169 @@ theme_type_variation = &"SettingsListMargin" | |||||||
| [node name="SettingsList" type="VBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer"] | [node name="SettingsList" type="VBoxContainer" parent="TabContainer/SETTINGS_GRAPHICS/VBoxContainer/ScrollContainer/MarginContainer"] | ||||||
| layout_mode = 2 | 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"] | [node name="SETTINGS_AUDIO" type="MarginContainer" parent="TabContainer"] | ||||||
| visible = false | visible = false | ||||||
| layout_mode = 2 | layout_mode = 2 | ||||||
| @ -299,6 +490,8 @@ text = "UI_ACCEPT" | |||||||
| 
 | 
 | ||||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/ScreenShake"] | [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/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"] | ||||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FreeCameraSpeed/PanelContainer/MarginContainer/NumericSlider"] | [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/FreeCameraSpeed/PanelContainer/MarginContainer/NumericSlider"] | ||||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/SensitivityX"] | [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/SensitivityX"] | ||||||
| @ -306,3 +499,12 @@ text = "UI_ACCEPT" | |||||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/AccelerationX"] | [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/AccelerationY"] | ||||||
| [editable path="TabContainer/SETTINGS_GAME/VBoxContainer/ScrollContainer/MarginContainer/SettingsList/InvertPitch"] | [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,6 +7,7 @@ const Y_OFFSET := { | |||||||
| 	GameBall.Type.NONE: 50, | 	GameBall.Type.NONE: 50, | ||||||
| 	GameBall.Type.BASIC: 18, | 	GameBall.Type.BASIC: 18, | ||||||
| 	GameBall.Type.PLASMA: -14, | 	GameBall.Type.PLASMA: -14, | ||||||
|  | 	GameBall.Type.BRICK: -46, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @export var value: GameBall.Type: | @export var value: GameBall.Type: | ||||||
| @ -15,6 +16,7 @@ const Y_OFFSET := { | |||||||
| @onready var ball_list: VBoxContainer = %BallList | @onready var ball_list: VBoxContainer = %BallList | ||||||
| @onready var basic_icon: BallIcon = %BasicIcon | @onready var basic_icon: BallIcon = %BasicIcon | ||||||
| @onready var plasma_icon: BallIcon = %PlasmaIcon | @onready var plasma_icon: BallIcon = %PlasmaIcon | ||||||
|  | @onready var brick_icon: BallIcon = %BrickIcon | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| func _ready() -> void: | func _ready() -> void: | ||||||
| @ -25,6 +27,7 @@ func _ready() -> void: | |||||||
| func set_state_for_player(player: WorldPlayer) -> void: | func set_state_for_player(player: WorldPlayer) -> void: | ||||||
| 	basic_icon.quantity = player.get_balls(GameBall.Type.BASIC) | 	basic_icon.quantity = player.get_balls(GameBall.Type.BASIC) | ||||||
| 	plasma_icon.quantity = player.get_balls(GameBall.Type.PLASMA) | 	plasma_icon.quantity = player.get_balls(GameBall.Type.PLASMA) | ||||||
|  | 	brick_icon.quantity = player.get_balls(GameBall.Type.BRICK) | ||||||
| 	if player.shot_setup: | 	if player.shot_setup: | ||||||
| 		value = player.shot_setup.ball_type | 		value = player.shot_setup.ball_type | ||||||
| 	player.on_balls_changed.connect(_set_quantity) | 	player.on_balls_changed.connect(_set_quantity) | ||||||
| @ -36,6 +39,8 @@ func _get_icon(type: GameBall.Type) -> BallIcon: | |||||||
| 			return basic_icon | 			return basic_icon | ||||||
| 		GameBall.Type.PLASMA: | 		GameBall.Type.PLASMA: | ||||||
| 			return plasma_icon | 			return plasma_icon | ||||||
|  | 		GameBall.Type.BRICK: | ||||||
|  | 			return brick_icon | ||||||
| 	return null | 	return null | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -46,7 +46,7 @@ custom_minimum_size = Vector2(120, 0) | |||||||
| layout_mode = 0 | layout_mode = 0 | ||||||
| offset_top = 50.0 | offset_top = 50.0 | ||||||
| offset_right = 120.0 | offset_right = 120.0 | ||||||
| offset_bottom = 109.0 | offset_bottom = 141.0 | ||||||
| theme_override_constants/separation = 5 | theme_override_constants/separation = 5 | ||||||
| 
 | 
 | ||||||
| [node name="BasicIcon" parent="GradientMask/BallList" instance=ExtResource("1_1v8xg")] | [node name="BasicIcon" parent="GradientMask/BallList" instance=ExtResource("1_1v8xg")] | ||||||
| @ -60,3 +60,11 @@ unique_name_in_owner = true | |||||||
| custom_minimum_size = Vector2(120, 27) | custom_minimum_size = Vector2(120, 27) | ||||||
| layout_mode = 2 | layout_mode = 2 | ||||||
| text = "BALL_PLASMA" | 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"] | [gd_scene load_steps=13 format=3 uid="uid://dwfckgdxnwwru"] | ||||||
| 
 | 
 | ||||||
| [ext_resource type="Texture2D" uid="uid://c0rf8luj8nbom" path="res://src/world/effects/zephyr/zephyr_scale_curve.tres" id="1_opmvf"] | [ext_resource type="Texture2D" uid="uid://b1bfyk5c003se" 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="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"] | [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