modification de la scène de cockpit et ajout de lien entre les scènes
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -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)
|
||||
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user