modification de la scène de cockpit et ajout de lien entre les scènes

This commit is contained in:
2026-02-19 22:15:38 +01:00
parent fadf0cb769
commit dc1a6686bc
130 changed files with 4131 additions and 1286 deletions

File diff suppressed because one or more lines are too long

View File

@@ -5,116 +5,116 @@ class_name Planet3D
@export_group("Sphere")
@export var radius : float = 8.0 :
set(v):
radius = maxf(1.0, v)
if is_node_ready():
update_terrain()
update_water()
set(v):
radius = maxf(1.0, v)
if is_node_ready():
update_terrain()
update_water()
@export var details : int = 64:
set(v):
details = maxi(1,v)
if is_node_ready():
update_terrain()
set(v):
details = maxi(1,v)
if is_node_ready():
update_terrain()
@export_group("Terrain")
@export var noise : Noise = FastNoiseLite.new():
set(v):
noise = v
if noise:
noise.changed.connect(update_terrain)
set(v):
noise = v
if noise:
noise.changed.connect(update_terrain)
@export var height : float = 1.0 :
set(v):
height = maxf(0.0, v)
if is_node_ready():
update_terrain()
update_water()
set(v):
height = maxf(0.0, v)
if is_node_ready():
update_terrain()
update_water()
@export var terrain_material : Material:
set(v):
terrain_material = v
if terrain.get_surface_count():
terrain.surface_set_material(0,terrain_material)
set(v):
terrain_material = v
if terrain.get_surface_count():
terrain.surface_set_material(0,terrain_material)
@export_tool_button("Random Noise", "Callable") var update_action = func():
noise = generate_noise()
if is_node_ready():
update_terrain()
noise = generate_noise()
if is_node_ready():
update_terrain()
@export_group("Water")
@export_range(0.0,1.0,0.05) var water_level := 0.:
set(v):
water_level = v
if is_node_ready():
update_water()
set(v):
water_level = v
if is_node_ready():
update_water()
@export var water_detail := 64:
set(v):
water_detail = maxi(1, v)
if is_node_ready():
update_water()
set(v):
water_detail = maxi(1, v)
if is_node_ready():
update_water()
@export var water_material : Material:
set(v):
water_material = v
if water.get_surface_count():
water.surface_set_material(0,water_material)
set(v):
water_material = v
if water.get_surface_count():
water.surface_set_material(0,water_material)
var terrain: ArrayMesh = ArrayMesh.new()
var water: ArrayMesh = ArrayMesh.new()
func _ready():
noise = generate_noise()
%Terrain.mesh = terrain
%Water.mesh = water
update_terrain()
update_water()
noise = generate_noise(0)
%Terrain.mesh = terrain
%Water.mesh = water
update_terrain()
update_water()
func create_sphere(sphere_radius : float, sphere_details : int) -> Array:
var sphere : SphereMesh= SphereMesh.new()
sphere.radius = sphere_radius
sphere.height = sphere_radius * 2.
var sphere : SphereMesh= SphereMesh.new()
sphere.radius = sphere_radius
sphere.height = sphere_radius * 2.
sphere.radial_segments = sphere_details * 2
sphere.rings = sphere_details
sphere.radial_segments = sphere_details * 2
sphere.rings = sphere_details
return sphere.get_mesh_arrays()
return sphere.get_mesh_arrays()
func generate_noise(seed = randi()) -> Noise:
var n := FastNoiseLite.new()
n.noise_type = FastNoiseLite.TYPE_SIMPLEX_SMOOTH
n.frequency = 1.0
n.seed = seed
return n
var n := FastNoiseLite.new()
n.noise_type = FastNoiseLite.TYPE_SIMPLEX_SMOOTH
n.frequency = 1.0
n.seed = seed
return n
func get_noise(vertex: Vector3) -> float:
return (noise.get_noise_3dv(vertex.normalized() * 2.0) + 1.0) / 2.0 * height
return (noise.get_noise_3dv(vertex.normalized() * 2.0) + 1.0) / 2.0 * height
func update_terrain() -> void:
if !terrain or %Terrain == null:
return
var mesh_arrays = create_sphere(radius, details)
var vertices : PackedVector3Array = mesh_arrays[ArrayMesh.ARRAY_VERTEX]
for i : int in vertices.size():
var vertex := vertices[i]
vertex += vertex.normalized() * get_noise(vertex)
vertices[i] = vertex
terrain.clear_surfaces()
terrain.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, mesh_arrays)
terrain.surface_set_material(0,terrain_material)
if terrain_material:
terrain_material.set_shader_parameter("radius", radius)
terrain_material.set_shader_parameter("height", height)
if !terrain or %Terrain == null:
return
var mesh_arrays = create_sphere(radius, details)
var vertices : PackedVector3Array = mesh_arrays[ArrayMesh.ARRAY_VERTEX]
for i : int in vertices.size():
var vertex := vertices[i]
vertex += vertex.normalized() * get_noise(vertex)
vertices[i] = vertex
terrain.clear_surfaces()
terrain.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, mesh_arrays)
terrain.surface_set_material(0,terrain_material)
if terrain_material and terrain_material is ShaderMaterial:
terrain_material.set_shader_parameter("radius", radius)
terrain_material.set_shader_parameter("height", height)
func update_water() -> void:
if !water or %Water == null:
return
%Water.visible = water_level != 0
if !water or %Water == null:
return
%Water.visible = water_level != 0
var water_radius := lerpf(radius, radius + height, water_level)
var mesh_arrays = create_sphere(water_radius, water_detail)
water.clear_surfaces()
water.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, mesh_arrays)
water.surface_set_material(0,water_material)
var water_radius := lerpf(radius, radius + height, water_level)
var mesh_arrays = create_sphere(water_radius, water_detail)
water.clear_surfaces()
water.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, mesh_arrays)
water.surface_set_material(0,water_material)

View File

@@ -6,13 +6,14 @@
[ext_resource type="Texture2D" uid="uid://cdpqg3pkjcw2h" path="res://stages/title_screen/assets/textures/title.png" id="3_y6tw6"]
[ext_resource type="Texture2D" uid="uid://bewr0t1wi8pff" path="res://common/icons/rotate.svg" id="5_6yuhi"]
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="5_7a1qq"]
[ext_resource type="PackedScene" uid="uid://c8flevrkelpvy" path="res://gui/credits/socials/instagram.tscn" id="6_7a1qq"]
[ext_resource type="PackedScene" uid="uid://bc3byq8e45ejj" path="res://gui/credits/socials/steam.tscn" id="7_nmsah"]
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="7_y6tw6"]
[sub_resource type="ViewportTexture" id="ViewportTexture_6yuhi"]
viewport_path = NodePath("SubViewport")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_6yuhi"]
seed = 1468520525
[sub_resource type="FastNoiseLite" id="FastNoiseLite_yctb5"]
frequency = 1.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7a1qq"]
@@ -97,7 +98,10 @@ texture = ExtResource("3_y6tw6")
expand_mode = 5
stretch_mode = 5
[node name="Start" type="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=366586661]
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1472848873]
layout_mode = 2
[node name="Start" type="Button" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer" unique_id=366586661]
unique_name_in_owner = true
z_index = 1
layout_mode = 2
@@ -108,7 +112,7 @@ theme_override_font_sizes/font_size = 33
text = "START"
icon = ExtResource("3_6yuhi")
[node name="Restart" type="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1324703681]
[node name="Restart" type="Button" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer" unique_id=1324703681]
unique_name_in_owner = true
z_index = 1
layout_mode = 2
@@ -125,12 +129,25 @@ layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
[node name="Socials" type="VBoxContainer" parent="MarginContainer" unique_id=1306915726]
visible = false
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
[node name="Button" parent="MarginContainer/Socials" unique_id=927302743 instance=ExtResource("6_7a1qq")]
layout_mode = 2
size_flags_horizontal = 8
[node name="SteamButton" parent="MarginContainer/Socials" unique_id=1181450581 instance=ExtResource("7_nmsah")]
layout_mode = 2
[node name="SubViewport" type="SubViewport" parent="." unique_id=1703203942]
size = Vector2i(1980, 1080)
[node name="Planet3d" parent="SubViewport" unique_id=926789923 instance=ExtResource("5_7a1qq")]
unique_name_in_owner = true
noise = SubResource("FastNoiseLite_6yuhi")
noise = SubResource("FastNoiseLite_yctb5")
[node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=806252928]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.369979, 0, 64.323425)
@@ -149,5 +166,5 @@ shadow_normal_bias = 0.0
shadow_opacity = 0.48
shadow_blur = 3.055
[connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/Start" to="." method="_on_start_pressed"]
[connection signal="button_down" from="MarginContainer/GridContainer/VBoxContainer/Restart" to="." method="_on_restart_button_down"]
[connection signal="pressed" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Start" to="." method="_on_start_pressed"]
[connection signal="button_down" from="MarginContainer/GridContainer/VBoxContainer/VBoxContainer/Restart" to="." method="_on_restart_button_down"]