biome generator

This commit is contained in:
2026-04-17 15:31:28 +02:00
parent 060bccd96a
commit b77a6263aa
91 changed files with 4111 additions and 78 deletions

View File

@@ -0,0 +1,5 @@
extends Resource
class_name Biome
@export var name: String = "New Biome"
@export var available_chunks: Array[PackedScene]

View File

@@ -0,0 +1 @@
uid://wv6kcqkibium

View File

@@ -0,0 +1,302 @@
extends Node3D
@export_group("Rails")
@export var rail_path: Path3D
@export_group("Biomes")
@export var biome_list: Array[Biome]
@export_group("Grid and Area")
@export var chunk_size: float = 20.0
@export var eye_line: int = 3
@export var district_scale: float = 0.05
var board: Dictionary = {}
var last_pos_train: Vector2i = Vector2i(999999, 999999)
var noise_generator: FastNoiseLite
var altitude_generator: FastNoiseLite
var manual_biome: Biome = null
func _ready() -> void:
if biome_list.is_empty() or rail_path == null: return
noise_generator = FastNoiseLite.new()
noise_generator.noise_type = FastNoiseLite.TYPE_PERLIN
noise_generator.seed = randi()
noise_generator.frequency = district_scale
altitude_generator = FastNoiseLite.new()
altitude_generator.noise_type = FastNoiseLite.TYPE_PERLIN
altitude_generator.seed = randi()
altitude_generator.frequency = district_scale * 0.5
_update_set_pieces()
func _update_set_pieces() -> void:
var set_pieces = get_tree().get_nodes_in_group("set_pieces")
print("🔍 Found ", set_pieces.size(), " in 'set_pieces' group.")
for sp in set_pieces:
if not "exclusive_biome" in sp or sp.exclusive_biome == "":
print("⚠️ Set Piece '", sp.name, "' not have exclusive biome -> always visible.")
continue
var local_biome = ""
if manual_biome != null:
local_biome = manual_biome.nome
else:
var grid_x = roundi(sp.global_position.x / chunk_size)
var grid_z = roundi(sp.global_position.z / chunk_size)
local_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(grid_x, grid_z))
print("👉 Analyze: '", sp.name, "' | Need: [", sp.exclusive_biome, "] | Current biome is: [", local_biome, "]")
if local_biome == sp.exclusive_biome:
sp.show()
sp.process_mode = Node.PROCESS_MODE_INHERIT
print(" ✅ Temple is visible.")
else:
sp.hide()
sp.process_mode = Node.PROCESS_MODE_DISABLED
print(" ❌ Temple is a invisible ghost.")
func _destroy_and_regenrate_world() -> void:
#1. Turn off old temples
_update_set_pieces()
#2. Destroy all models
for pos in board.keys():
var cella = board[pos]
if cella["tipo"] == "bioma":
if cella.has("nodo") and is_instance_valid(cella["nodo"]):
cella["nodo"].queue_free()
#3. Clean board
board.clear()
#4. Create train
last_pos_train = Vector2i(999999, 999999)
_train_radar()
last_pos_train = Vector2i(999999, 999999)
_train_radar()
func _physics_process(_delta: float) -> void:
if rail_path == null or rail_path.train_instance == null: return
var train_pos = rail_path.train_instance.global_position
var grid_x = roundi(train_pos.x / chunk_size)
var grid_z = roundi(train_pos.z / chunk_size)
var current_pos = Vector2i(grid_x, grid_z)
if current_pos != last_pos_train:
last_pos_train = current_pos
_generate_pieces_around_train(current_pos)
_clean_far_chunks(current_pos)
_train_radar()
func _generate_pieces_around_train(centro: Vector2i) -> void:
for x in range(-eye_line, eye_line + 1):
for z in range(-eye_line, eye_line + 1):
var grid_pos = centro + Vector2i(x, z)
if not board.has(grid_pos):
var ce_obstacle = _register_cell_with_laser(grid_pos)
if not ce_obstacle:
_add_compatible_biome(grid_pos)
func _choose_catalogue_by_cell(grid_pos: Vector2i) -> Array[PackedScene]:
if manual_biome != null:
return manual_biome.available_chunks
var value = noise_generator.get_noise_2d(grid_pos.x, grid_pos.y)
var normalized_value = (value + 1.0) / 2.0
var indice = clamp(int(normalized_value * biome_list.size()), 0, biome_list.size() - 1)
return biome_list[indice].available_chunks
func _get_procedural_biome_name(value: float) -> String:
if manual_biome != null:
return manual_biome.name
var normalized_value = (value + 1.0) / 2.0
var index = clamp(int(normalized_value * biome_list.size()), 0, biome_list.size() - 1)
return biome_list[index].name
func _register_cell_with_laser(grid_pos: Vector2i) -> bool:
if board.has(grid_pos): return true
var world_pos = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
var space_state = get_world_3d().direct_space_state
var ray_origin = Vector3(world_pos.x, 50.0, world_pos.z)
var ray_end = Vector3(world_pos.x, -10.0, world_pos.z)
var query = PhysicsRayQueryParameters3D.create(ray_origin, ray_end)
var result = space_state.intersect_ray(query)
if result.size() > 0:
var collider = result["collider"]
var current_node = collider
var exit_found = {"north": false, "est": false, "south": false, "west": false}
var height_found = {"north": 0, "est": 0, "south": 0, "west": 0}
while current_node != null and current_node != get_tree().root:
if current_node.has_method("get_rotated_data"):
var rotation_steps = roundi(rad_to_deg(current_node.global_rotation.y) / -90.0)
var data = current_node.get_rotated_data(rotation_steps)
exit_found = data["connections"]
height_found = data["heights"]
break
current_node = current_node.get_parent()
board[grid_pos] = {"type": "obstacle", "exit": exit_found, "heights": height_found}
return true
return false
func _add_compatible_biome(grid_pos: Vector2i) -> void:
var req_conn_north = _needed_connections(grid_pos + Vector2i(0, -1), "south")
var req_conn_est = _needed_connections(grid_pos + Vector2i(1, 0), "west")
var req_conn_south = _needed_connections(grid_pos + Vector2i(0, 1), "north")
var req_conn_west = _needed_connections(grid_pos + Vector2i(-1, 0), "est")
var req_height_north = _needed_heights(grid_pos + Vector2i(0, -1), "south")
var req_height_est = _needed_heights(grid_pos + Vector2i(1, 0), "west")
var req_height_south = _needed_heights(grid_pos + Vector2i(0, 1), "north")
var req_height_west = _needed_heights(grid_pos + Vector2i(-1, 0), "est")
var height_noise = altitude_generator.get_noise_2d(grid_pos.x, grid_pos.y)
var height_target = clamp(roundi((height_noise + 1.0) / 2.0), 0, 1)
var zone_catalogue = _choose_catalogue_by_cell(grid_pos)
var valid_candidates = []
for scene in zone_catalogue:
var test_chunk = scene.instantiate()
if test_chunk.has_method("get_rotated_data"):
for rot in range(4):
var data = test_chunk.get_rotated_data(rot)
var u_conn = data["connections"]
var u_height = data["heights"]
var match_conn_n = (req_conn_north == -1) or ((req_conn_north == 1) == u_conn["north"])
var match_conn_e = (req_conn_est == -1) or ((req_conn_est == 1) == u_conn["est"])
var match_conn_s = (req_conn_south == -1) or ((req_conn_south == 1) == u_conn["south"])
var match_conn_o = (req_conn_west == -1) or ((req_conn_west == 1) == u_conn["west"])
var match_alt_n = (req_height_north == -1) or (req_height_north == u_height["north"])
var match_alt_e = (req_height_est == -1) or (req_height_est == u_height["est"])
var match_alt_s = (req_height_south == -1) or (req_height_south == u_height["south"])
var match_alt_o = (req_height_west == -1) or (req_height_west == u_height["west"])
var diff_n = abs(u_height["north"] - height_target) if req_height_north == -1 else 0
var diff_e = abs(u_height["est"] - height_target) if req_height_est == -1 else 0
var diff_s = abs(u_height["south"] - height_target) if req_height_south == -1 else 0
var diff_o = abs(u_height["west"] - height_target) if req_height_west == -1 else 0
var excessive_jumps = diff_n > 1 or diff_e > 1 or diff_s > 1 or diff_o > 1
if match_conn_n and match_conn_e and match_conn_s and match_conn_o and match_alt_n and match_alt_e and match_alt_s and match_alt_o and not excessive_jumps:
var score = 0
if req_height_north == -1 and u_height["north"] == height_target: score += 1
if req_height_est == -1 and u_height["est"] == height_target: score += 1
if req_height_south == -1 and u_height["south"] == height_target: score += 1
if req_height_west == -1 and u_height["west"] == height_target: score += 1
valid_candidates.append({"scene": scene, "rotation": rot, "data": data, "score": score})
test_chunk.queue_free()
if valid_candidates.size() > 0:
var max_score = -1
for c in valid_candidates:
if c.score > max_score: max_score = c.score
var best_candidate = []
for c in valid_candidates:
if c.score == max_score: best_candidate.append(c)
var choise = best_candidate.pick_random()
var new_chunk = choise.scene.instantiate()
add_child(new_chunk)
new_chunk.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
new_chunk.rotation.y = choise.rotation * (-PI / 2.0)
board[grid_pos] = {"type": "biome", "exit": choise.data["connections"], "heights": choise.data["heights"], "nodo": new_chunk}
else:
push_warning("⚠️ One piece miss for position " + str(grid_pos) + "!")
var fmt_alt = func(req): return str(req) if req != -1 else "Free"
#var fmt_conn = func(req): return "Yes" if req == 1 else ("No" if req == 0 else "Free")
print("We need missed piece -> North: ", fmt_alt.call(req_height_north), " | Est: ", fmt_alt.call(req_height_est), " | South: ", fmt_alt.call(req_height_south), " | West: ", fmt_alt.call(req_height_west))
var backup = zone_catalogue[0].instantiate()
add_child(backup)
backup.position = Vector3(grid_pos.x * chunk_size, 0, grid_pos.y * chunk_size)
var safe_heights = {
"north": req_height_north if req_height_north != -1 else height_target,
"est": req_height_est if req_height_est != -1 else height_target,
"south": req_height_south if req_height_south != -1 else height_target,
"west": req_height_west if req_height_west != -1 else height_target
}
board[grid_pos] = {"type": "biome", "exit": {"north":false, "est":false, "south":false, "west":false}, "heights": safe_heights, "node": backup}
func _needed_connections(near_pos: Vector2i, side_needed: String) -> int:
if not board.has(near_pos):
_register_cell_with_laser(near_pos)
if board.has(near_pos) and board[near_pos].has("exit"):
return 1 if board[near_pos]["exit"][side_needed] else 0
return -1
func _needed_heights(near_pos: Vector2i, side_needed: String) -> int:
if board.has(near_pos) and board[near_pos].has("heights"):
return board[near_pos]["heights"][side_needed]
return -1
func _train_radar() -> void:
if rail_path == null or rail_path.curve == null or rail_path.train_instance == null: return
if manual_biome != null:
return
var train_pos = rail_path.train_instance.global_position
var grid_x = roundi(train_pos.x / chunk_size)
var grid_z = roundi(train_pos.z / chunk_size)
var current_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(grid_x, grid_z))
var current_progress = rail_path.train_progress
var total_length = rail_path.curve.get_baked_length()
for step in range(1, 31):
var next_progress = wrapf(current_progress + (step * chunk_size), 0.0, total_length)
var next_local_pos = rail_path.curve.sample_baked(next_progress, true)
var next_global_pos = rail_path.to_global(next_local_pos)
var f_x = roundi(next_global_pos.x / chunk_size)
var f_z = roundi(next_global_pos.z / chunk_size)
var next_biome = _get_procedural_biome_name(noise_generator.get_noise_2d(f_x, f_z))
if next_biome != current_biome:
#distanza_cambio = step * chunk_size
#prossimo_bioma = next_biome
break
func _clean_far_chunks(centro_attuale: Vector2i) -> void:
var cells_to_remove = []
var safe_margin = 2
for grid_pos in board.keys():
var cell = board[grid_pos]
if cell["type"] == "obstacle": continue
var dist_x = abs(grid_pos.x - centro_attuale.x)
var dist_z = abs(grid_pos.y - centro_attuale.y)
if dist_x > eye_line + safe_margin or dist_z > eye_line + safe_margin:
if cell.has("node") and is_instance_valid(cell["node"]):
cell["node"].queue_free()
cells_to_remove.append(grid_pos)
for pos in cells_to_remove:
board.erase(pos)

View File

@@ -0,0 +1 @@
uid://ct2k25kslaxe5

View File

@@ -0,0 +1,6 @@
[gd_scene format=3 uid="uid://ujv2f1l4d2ps"]
[ext_resource type="Script" uid="uid://ct2k25kslaxe5" path="res://core/biome_generator/biome_generator.gd" id="1_c7ilo"]
[node name="biome_generator" type="Node3D" unique_id=1861369341]
script = ExtResource("1_c7ilo")

View File

@@ -0,0 +1,46 @@
extends Node3D
class_name ChunkInfo
@export_enum("Biome", "straight_track", "curved_track") var chunk_type: int = 0
@export_group("Set Piece Rules (Unique pieces)")
@export var exclusive_biome: String = "" # Es: "Forest"
@export_group("Base exit (no roation)")
@export var north: bool = false
@export var est: bool = false
@export var south: bool = false
@export var west: bool = false
@export_group("Maring heights (level 0, 1, 2)")
@export var height_north: int = 0
@export var height_est: int = 0
@export var height_south: int = 0
@export var height_west: int = 0
func _ready() -> void:
if exclusive_biome != "":
add_to_group("set_pieces")
func get_rotated_data(steps_90: int) -> Dictionary:
var original_exit = [north, est, south, west]
var original_height = [height_north, height_est, height_south, height_west]
var calculated_exit = []
var calculated_height = []
for i in range(4):
var index = (i - steps_90 + 4) % 4
calculated_exit.append(original_exit[index])
calculated_height.append(original_height[index])
return {
"connections": {
"north": calculated_exit[0], "est": calculated_exit[1],
"south": calculated_exit[2], "west": calculated_exit[3]
},
"heights": {
"north": calculated_height[0], "est": calculated_height[1],
"south": calculated_height[2], "west": calculated_height[3]
}
}

View File

@@ -0,0 +1 @@
uid://dg2h4kbqe8j3m

43
core/camera.tscn Normal file
View File

@@ -0,0 +1,43 @@
[gd_scene format=3 uid="uid://cv5xmnow451kl"]
[ext_resource type="Script" uid="uid://b3nmswr1iaexw" path="res://core/camera_move.gd" id="1_6doux"]
[node name="camera" type="Node3D" unique_id=310254818]
[node name="camera_front" type="Camera3D" parent="." unique_id=849013180]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 2.55, 7.1)
fov = 86.0
near = 0.001
far = 5000.0
[node name="camera_top" type="Camera3D" parent="." unique_id=454024645]
transform = Transform3D(-0.9998601, 0.0062594875, -0.015508555, -0.0015509288, 0.88861585, 0.45864955, 0.016652059, 0.45860943, -0.8884819, 0, 7.4, 0.53)
fov = 82.7
near = 0.001
far = 5000.0
[node name="camera_side1" type="Camera3D" parent="." unique_id=1328559378]
transform = Transform3D(-0.18395132, 0, 0.98293537, 0, 1, 0, -0.98293537, 0, -0.18395132, -0.57, 2.257, 2.776)
fov = 60.0
[node name="camera_side2" type="Camera3D" parent="." unique_id=888646238]
transform = Transform3D(-4.371139e-08, 0.005235964, -0.9999863, 0, 0.9999863, 0.005235964, 1, 2.2887126e-10, -4.3710788e-08, 0.89, 2.207, 2.814)
fov = 96.6
far = 5000.0
[node name="camera_iso" type="Camera3D" parent="." unique_id=308091984]
transform = Transform3D(0.5778576, -0.5770964, 0.5770964, 0, 0.70710677, 0.70710677, -0.8161376, -0.40860704, 0.40860704, 225, 290, 173.7)
projection = 1
fov = 96.6
size = 35.0
near = 0.001
far = 500.0
[node name="pivot" type="Node3D" parent="." unique_id=1852377804 node_paths=PackedStringArray("camera_iso", "pivot", "camera_front", "camera_side1", "camera_side2", "camera_top")]
script = ExtResource("1_6doux")
camera_iso = NodePath("../camera_iso")
pivot = NodePath(".")
camera_front = NodePath("../camera_front")
camera_side1 = NodePath("../camera_side1")
camera_side2 = NodePath("../camera_side2")
camera_top = NodePath("../camera_top")

150
core/camera_move.gd Normal file
View File

@@ -0,0 +1,150 @@
extends Node3D
@export_group("Camera")
@export var camera_iso : Camera3D
@export var pivot : Node3D
@export var camera_front : Camera3D
@export var camera_side1 : Camera3D
@export var camera_side2 : Camera3D
@export var camera_top : Camera3D
@export_group("Camera Movememnt")
@export var move_speed : float = 20.0
@export var rotation_speed : float = 0.2
@export_group("Cinematic Mode")
@export var change_camera_time : float = 10.0
@export_group("Isometric Zoom")
@export var normal_size : float = 35.0
@export var zoom_size : float = 60.0
@export var zoom_time : float = 1.2
var is_zoomed : bool = false
var zoom_tween : Tween
var is_moving_enabled : bool = true
var is_cinematic_mode : bool = false
var cinematic_timer : float = 0.0
var cinematic_index : int = 0
var array_camera : Array[Camera3D] = []
var initial_pivot_transformation : Transform3D
func _ready():
if pivot:
initial_pivot_transformation = pivot.transform
if camera_iso: array_camera.append(camera_iso)
if camera_front: array_camera.append(camera_front)
if camera_side1: array_camera.append(camera_side1)
if camera_side2: array_camera.append(camera_side2)
if camera_top: array_camera.append(camera_top)
if camera_iso:
camera_iso.make_current()
func _input(event):
if event is InputEventKey and event.pressed and not event.echo:
#R-> Reset isometric camera
if event.keycode == KEY_R and is_moving_enabled and pivot:
pivot.transform = initial_pivot_transformation
print("Isometric camera resetted!")
return
#C-> Toggle cinematic mode
if event.keycode == KEY_C:
is_cinematic_mode = !is_cinematic_mode
if is_cinematic_mode:
cinematic_timer = 0.0
for i in range(array_camera.size()):
if array_camera[i].current:
cinematic_index = i
break
print("Cinematic Mode: enabled")
else:
print("Cinematic Mode: disabled")
return
#Z-> soft zoom
if event.keycode == KEY_Z and camera_iso:
is_zoomed = !is_zoomed
var target_size = zoom_size if is_zoomed else normal_size
if zoom_tween and zoom_tween.is_valid():
zoom_tween.kill()
zoom_tween = create_tween()
zoom_tween.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
zoom_tween.tween_property(camera_iso, "size", target_size, zoom_time)
return
#manual controls (1-5)
var manual_action = false
if event.keycode == KEY_1 and camera_iso:
camera_iso.make_current()
is_moving_enabled = true
manual_action = true
elif event.keycode == KEY_2 and camera_front:
camera_front.make_current()
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_3 and camera_side1:
camera_side1.make_current()
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_4 and camera_side2:
camera_side2.make_current()
is_moving_enabled = false
manual_action = true
elif event.keycode == KEY_5 and camera_top:
camera_top.make_current()
is_moving_enabled = false
manual_action = true
if manual_action and is_cinematic_mode:
is_cinematic_mode = false
print("Cinematic Mode: Disabled")
if is_moving_enabled and pivot:
if event is InputEventMouseMotion and Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):
pivot.rotate_y(deg_to_rad(-event.relative.x * rotation_speed))
func _process(delta):
if is_cinematic_mode and array_camera.size() > 0:
cinematic_timer += delta
if cinematic_timer >= change_camera_time:
cinematic_timer = 0.0
cinematic_index = (cinematic_index + 1) % array_camera.size()
var next_cam = array_camera[cinematic_index]
next_cam.make_current()
is_moving_enabled = (next_cam == camera_iso)
if not is_moving_enabled or pivot == null:
return
var input_dir = Vector3.ZERO
if Input.is_key_pressed(KEY_W): input_dir.z -= 1
if Input.is_key_pressed(KEY_S): input_dir.z += 1
if Input.is_key_pressed(KEY_A): input_dir.x -= 1
if Input.is_key_pressed(KEY_D): input_dir.x += 1
if input_dir != Vector3.ZERO:
input_dir = input_dir.normalized()
var forward = pivot.transform.basis.z
var right = pivot.transform.basis.x
forward.y = 0
right.y = 0
forward = forward.normalized()
right = right.normalized()
var motion = (forward * input_dir.z + right * input_dir.x)
pivot.position += motion * move_speed * delta

1
core/camera_move.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://b3nmswr1iaexw

View File

@@ -75,6 +75,9 @@ func _init(wind: GPUParticles3D, snow: GPUParticles3D,
set_lightning()
create_sound_players()
toggle_dust(environment_config.enable_dust)
toggle_blur(environment_config.enable_blur)
func _ready() -> void:

View File

@@ -80,8 +80,8 @@ extends Resource
#Post-process effect toggles (initial values)
@export_group("Post Process")
@export var enable_dust: bool = true #Floating dust particles overlay
@export var enable_blur: bool = true #Screen blur effect
@export var enable_dust: bool = false #Floating dust particles overlay
@export var enable_blur: bool = false #Screen blur effect
@export var enable_environment_shadows: bool = true #Cloud shadow projection on terrain
@export var blur_amount: float = 0.6

27
core/fireworks.gd Normal file
View File

@@ -0,0 +1,27 @@
extends Node3D
@onready var rocket = $"1_StartRocket"
@onready var explosion = $"2_MainExplosion"
@onready var trails = $"3_FallingTrails"
func set_color(target_color: Color) -> void:
#set colors
set_particles_node_color(rocket, Color(1.5, 1.5, 1.5))
set_particles_node_color(explosion, Color(1.2, 1.2, 1.2))
set_particles_node_color(trails, target_color)
func set_particles_node_color(node: GPUParticles3D, new_color: Color) -> void:
if node and node.draw_pass_1:
var mesh = node.draw_pass_1 as QuadMesh
if mesh and mesh.material:
var unique_mat = mesh.material.duplicate() as StandardMaterial3D
unique_mat.albedo_color = new_color
unique_mat.blend_mode = BaseMaterial3D.BLEND_MODE_ADD #Light effect (glow)
unique_mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
mesh.material = unique_mat
func turnon() -> void:
if rocket:
rocket.emitting = true
await get_tree().create_timer(6.0).timeout
queue_free()

1
core/fireworks.gd.uid Normal file
View File

@@ -0,0 +1 @@
uid://crxch6o5ottg7

104
core/fireworks.tscn Normal file
View File

@@ -0,0 +1,104 @@
[gd_scene format=3 uid="uid://dn1btv0e0ses7"]
[ext_resource type="Script" uid="uid://crxch6o5ottg7" path="res://core/fireworks.gd" id="1_cjxyo"]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_dp1bx"]
direction = Vector3(0, 1, 0)
spread = 0.0
initial_velocity_min = 13.0
initial_velocity_max = 14.0
gravity = Vector3(0, 0, 0)
sub_emitter_mode = 2
sub_emitter_amount_at_end = 1
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8o1ow"]
blend_mode = 1
shading_mode = 0
albedo_color = Color(1, 0.8901961, 0.24313726, 1)
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_p8l00"]
material = SubResource("StandardMaterial3D_8o1ow")
size = Vector2(0.2, 0.2)
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_kbf61"]
direction = Vector3(0, 1, 0)
spread = 180.0
initial_velocity_min = 10.0
initial_velocity_max = 10.0
gravity = Vector3(0, 0, 0)
damping_min = 6.0000005
damping_max = 6.0000005
sub_emitter_mode = 1
sub_emitter_frequency = 30.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_is2bb"]
blend_mode = 1
shading_mode = 0
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_f60hc"]
material = SubResource("StandardMaterial3D_is2bb")
size = Vector2(0.2, 0.2)
[sub_resource type="Gradient" id="Gradient_cjxyo"]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_dp1bx"]
gradient = SubResource("Gradient_cjxyo")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_tt4r5"]
gravity = Vector3(0, -2, 0)
scale_min = 0.5
scale_max = 0.5
color_ramp = SubResource("GradientTexture1D_dp1bx")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xt2tl"]
blend_mode = 1
shading_mode = 0
albedo_color = Color(0.99999994, 0.89069206, 0.2446233, 1)
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_0p1ln"]
material = SubResource("StandardMaterial3D_xt2tl")
size = Vector2(0.05, 0.05)
[node name="FuocoD\'artificioRoot" type="Node3D" unique_id=669752765]
script = ExtResource("1_cjxyo")
[node name="1_StartRocket" type="GPUParticles3D" parent="." unique_id=1569398174]
emitting = false
amount = 15
sub_emitter = NodePath("../2_MainExplosion")
lifetime = 0.5
one_shot = true
explosiveness = 1.0
trail_enabled = true
process_material = SubResource("ParticleProcessMaterial_dp1bx")
draw_pass_1 = SubResource("QuadMesh_p8l00")
[node name="2_MainExplosion" type="GPUParticles3D" parent="." unique_id=863445356]
emitting = false
amount = 150
sub_emitter = NodePath("../3_FallingTrails")
lifetime = 1.5
one_shot = true
explosiveness = 1.0
process_material = SubResource("ParticleProcessMaterial_kbf61")
draw_pass_1 = SubResource("QuadMesh_f60hc")
[node name="3_FallingTrails" type="GPUParticles3D" parent="." unique_id=1969872503]
emitting = false
amount = 500
lifetime = 0.5
process_material = SubResource("ParticleProcessMaterial_tt4r5")
draw_pass_1 = SubResource("QuadMesh_0p1ln")

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bowkbyxbq2jg2"
path="res://.godot/imported/main_train.fbx-3c77896af69edc972695e761c4bf8e47.scn"
[deps]
source_file="res://docs/museums/biome_generator/main_train.fbx"
dest_files=["res://.godot/imported/main_train.fbx-3c77896af69edc972695e761c4bf8e47.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,153 @@
[gd_scene format=3 uid="uid://dvk3bytqn3m5s"]
[ext_resource type="PackedScene" uid="uid://bowkbyxbq2jg2" path="res://docs/museums/biome_generator/main_train.fbx" id="1_8k78i"]
[ext_resource type="Material" path="res://docs/museums/biome_generator/train1.tres" id="2_crne2"]
[ext_resource type="Material" path="res://docs/museums/biome_generator/train2.tres" id="3_tf27f"]
[ext_resource type="Material" path="res://docs/museums/biome_generator/train3.tres" id="4_e08y7"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_tvivt"]
[sub_resource type="PlaneMesh" id="PlaneMesh_8k78i"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_crne2"]
emission_enabled = true
emission = Color(0.59849787, 0.2744873, 0.018916829, 1)
emission_energy_multiplier = 14.84
[node name="Train2" unique_id=206892833 groups=["weather_node", "wind_node"] instance=ExtResource("1_8k78i")]
transform = Transform3D(-0.85, 0, -1.2834644e-07, 0, 0.85, 0, 1.2834644e-07, 0, -0.85, 0, 0, 0)
[node name="polySurface3708_002" parent="." index="0" unique_id=1080693866]
transform = Transform3D(99.99998, 0, 0, 0, -4.3711375e-06, 99.99999, 0, -99.99997, -4.3711384e-06, 0, 1.5, 0)
material_overlay = SubResource("ShaderMaterial_tvivt")
surface_material_override/0 = ExtResource("2_crne2")
surface_material_override/1 = ExtResource("3_tf27f")
surface_material_override/2 = ExtResource("2_crne2")
surface_material_override/3 = ExtResource("4_e08y7")
[node name="MeshInstance3D" type="MeshInstance3D" parent="." index="1" unique_id=1403632389]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.668482, 1.6818931, 2.5172625, 1.2770853)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="." index="2" unique_id=1336101020]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.668482, 1.6125782, 2.5172625, 2.9643514)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D28" type="MeshInstance3D" parent="." index="3" unique_id=311730556]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.668482, 1.640722, 2.5172625, -4.04725)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D29" type="MeshInstance3D" parent="." index="4" unique_id=1304381077]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.668482, 1.640722, 2.5172625, -2.4448335)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="." index="5" unique_id=663441243]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.47599128, 1.640722, 2.5172625, 6.115757)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D37" type="MeshInstance3D" parent="." index="6" unique_id=332999290]
transform = Transform3D(1.5214157e-15, -4.371139e-08, -1.4922415, -0.796267, -4.371139e-08, 0, -3.4805936e-08, 1, -6.522796e-08, 0.00024104083, 2.668277, 8.483847)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D30" type="MeshInstance3D" parent="." index="7" unique_id=1998746087]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.47599128, 1.640722, 2.5172625, -7.2599697)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="." index="8" unique_id=1980372157]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, 5.212925)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D5" type="MeshInstance3D" parent="." index="9" unique_id=122016874]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, 4.909999)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D6" type="MeshInstance3D" parent="." index="10" unique_id=962812717]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, 4.59173)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D7" type="MeshInstance3D" parent="." index="11" unique_id=1668544912]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, 4.283636)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D8" type="MeshInstance3D" parent="." index="12" unique_id=1387960824]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -0.085068464)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D9" type="MeshInstance3D" parent="." index="13" unique_id=1969224680]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -0.387995)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D10" type="MeshInstance3D" parent="." index="14" unique_id=3545667]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -0.7062633)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D11" type="MeshInstance3D" parent="." index="15" unique_id=719869989]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -1.0143578)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D12" type="MeshInstance3D" parent="." index="16" unique_id=424215252]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -5.405431)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D13" type="MeshInstance3D" parent="." index="17" unique_id=593531465]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -5.708358)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D14" type="MeshInstance3D" parent="." index="18" unique_id=1495729886]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -6.0266256)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="MeshInstance3D15" type="MeshInstance3D" parent="." index="19" unique_id=1576847092]
transform = Transform3D(-2.4656883e-08, 1, 0, -0.5640837, -4.371139e-08, 0, 0, 0, 0.1321082, 1.6305791, 2.5172625, -6.3347206)
mesh = SubResource("PlaneMesh_8k78i")
surface_material_override/0 = SubResource("StandardMaterial3D_crne2")
[node name="OmniLight3D" type="OmniLight3D" parent="." index="20" unique_id=1693942993]
transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, -0.9650913, 1.3310676, 8.449412)
light_color = Color(0.9818843, 0.6206694, 0.26694176, 1)
omni_range = 0.437
omni_attenuation = 0.367
[node name="OmniLight3D2" type="OmniLight3D" parent="." index="21" unique_id=1965838060]
transform = Transform3D(1, 0, 0, 0, -1.1920932e-07, -1, 0, 1, -1.1920932e-07, 0.9597263, 1.3310676, 8.449412)
light_color = Color(0.9818843, 0.6206694, 0.26694176, 1)
omni_range = 0.437
omni_attenuation = 0.367
[node name="SpotLight3D2" type="SpotLight3D" parent="OmniLight3D2" index="0" unique_id=1940430623]
transform = Transform3D(-0.9991066, -0.0071844957, -0.041647904, 0.039682645, 0.1795881, -0.9829413, 0.014541405, -0.98371583, -0.17914255, -2.2325838, -0.021801949, -0.18683863)
light_color = Color(0.8039216, 0.6784314, 0.3254902, 1)
light_energy = 4.0
light_cull_mask = 4294967293
spot_range = 18.0
spot_attenuation = 1.2
spot_angle = 35.0
spot_angle_attenuation = 8.876516
[node name="SpotLight3D3" type="SpotLight3D" parent="OmniLight3D2" index="1" unique_id=1754775574]
transform = Transform3D(-0.9991066, -0.0071844957, -0.041647904, 0.039682645, 0.1795881, -0.9829413, 0.014541405, -0.98371583, -0.17914255, 0.31696087, -0.020600319, -0.18641448)
light_color = Color(0.8574047, 0.65361816, 0.27671134, 1)
light_energy = 4.0
light_cull_mask = 4294967293
spot_range = 18.0
spot_attenuation = 1.2
spot_angle = 35.0
spot_angle_attenuation = 8.876516

View File

@@ -0,0 +1,156 @@
[gd_scene format=3 uid="uid://cae0mnf353dy3"]
[ext_resource type="Shader" uid="uid://bneoex8xpmcm8" path="res://core/daynight/sky.gdshader" id="1_p4ojb"]
[ext_resource type="Texture2D" uid="uid://dest0qa7vaid0" path="res://core/daynight/stars_albedo.png" id="2_yrmqs"]
[ext_resource type="Script" uid="uid://brcimd12tx3dm" path="res://core/daynight/edge_detection_compositor.gd" id="3_8tojn"]
[ext_resource type="PackedScene" uid="uid://ujv2f1l4d2ps" path="res://core/biome_generator/biome_generator.tscn" id="4_yrmqs"]
[ext_resource type="Script" uid="uid://wv6kcqkibium" path="res://core/biome_generator/biome.gd" id="5_2wjys"]
[ext_resource type="PackedScene" uid="uid://cv5xmnow451kl" path="res://core/camera.tscn" id="5_8tojn"]
[ext_resource type="PackedScene" uid="uid://botm0dqtr5whb" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.tscn" id="6_21usy"]
[ext_resource type="Script" uid="uid://dboerd4a6dwj7" path="res://docs/museums/biome_generator/rails.gd" id="6_pypsn"]
[ext_resource type="PackedScene" uid="uid://dvk3bytqn3m5s" path="res://docs/museums/biome_generator/main_train.tscn" id="6_wjpfq"]
[ext_resource type="PackedScene" uid="uid://givg3dyrxsk5" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.tscn" id="7_qe84w"]
[ext_resource type="PackedScene" uid="uid://0kgjaqijaqku" path="res://docs/museums/biome_generator/rails.tscn" id="8_mb5yv"]
[ext_resource type="PackedScene" uid="uid://bi12g5nj421jv" path="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_f_e_1.tscn" id="8_qe84w"]
[ext_resource type="PackedScene" uid="uid://dn1btv0e0ses7" path="res://core/fireworks.tscn" id="8_xtogr"]
[ext_resource type="PackedScene" uid="uid://cpebna545ihfh" path="res://docs/museums/daynight/scenes/chunk_f_l_2/chunk_f_l_2.tscn" id="9_3qrd0"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_wjpfq"]
fractal_lacunarity = 1.915
fractal_gain = 0.53
fractal_weighted_strength = 0.35
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_abyor"]
noise = SubResource("FastNoiseLite_wjpfq")
seamless = true
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pypsn"]
shader = ExtResource("1_p4ojb")
shader_parameter/sky_top_color = Color(0.36438444, 0.6417803, 0.8712311, 1)
shader_parameter/sky_horizon_color = Color(0.75821966, 0.8417803, 0.92534095, 1)
shader_parameter/night_intensity = 0.0
shader_parameter/cloud_noise = SubResource("NoiseTexture2D_abyor")
shader_parameter/sun_color = Color(1, 0.88767046, 0.775341, 1)
shader_parameter/cloud_center_color = Color(1, 1, 1, 1)
shader_parameter/cloud_edge_color = Color(0.8, 0.85, 0.9, 1)
shader_parameter/cloud_direction = Vector2(0.5, 0.2)
shader_parameter/cloud_speed = 0.1
shader_parameter/cloud_scale = 0.5
shader_parameter/cloud_threshold = 0.5
shader_parameter/cloud_edge_thickness = 0.406000019285
shader_parameter/cloud_edge_softness = 0.0
shader_parameter/star_density = 1500.0
shader_parameter/star_rarity = 2500.0
shader_parameter/star_scale_variation = 0.5
shader_parameter/shooting_star_texture = ExtResource("2_yrmqs")
shader_parameter/shooting_star_color = Color(0.38431373, 0.61960787, 0.23137255, 1)
shader_parameter/shooting_star_density = 1.0
shader_parameter/shooting_star_speed = 1.0
shader_parameter/shooting_star_scale = 5.0
shader_parameter/shooting_star_lifetime = 0.5
shader_parameter/shooting_star_travel_dist = 15.0
[sub_resource type="Sky" id="Sky_50i22"]
sky_material = SubResource("ShaderMaterial_pypsn")
[sub_resource type="Environment" id="Environment_xtogr"]
background_mode = 2
sky = SubResource("Sky_50i22")
ambient_light_color = Color(1, 0.88767046, 0.775341, 1)
tonemap_exposure = 0.9979451
ssao_enabled = true
ssao_radius = 0.5
ssao_intensity = 14.0
ssao_detail = 0.0
ssil_enabled = true
glow_enabled = true
glow_levels/4 = 1.0
glow_intensity = 1.1835606
glow_strength = 0.65
glow_bloom = 1.0
fog_enabled = true
fog_mode = 1
fog_light_color = Color(0.75821966, 0.8417803, 0.92534095, 1)
fog_density = 0.004876705
fog_sky_affect = 0.0
[sub_resource type="CompositorEffect" id="CompositorEffect_q52t1"]
resource_local_to_scene = false
resource_name = ""
enabled = true
effect_callback_type = 1
access_resolved_color = false
access_resolved_depth = false
needs_motion_vectors = false
needs_normal_roughness = false
script = ExtResource("3_8tojn")
metadata/_custom_type_script = "uid://brcimd12tx3dm"
[sub_resource type="Compositor" id="Compositor_mb5yv"]
compositor_effects = Array[CompositorEffect]([SubResource("CompositorEffect_q52t1")])
[sub_resource type="Resource" id="Resource_3qrd0"]
script = ExtResource("5_2wjys")
name = "countryside"
available_chunks = Array[PackedScene]([ExtResource("6_21usy"), ExtResource("7_qe84w")])
metadata/_custom_type_script = "uid://wv6kcqkibium"
[sub_resource type="Resource" id="Resource_2qks6"]
script = ExtResource("5_2wjys")
name = "Forest"
available_chunks = Array[PackedScene]([ExtResource("8_qe84w"), ExtResource("9_3qrd0")])
metadata/_custom_type_script = "uid://wv6kcqkibium"
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pypsn"]
albedo_color = Color(0.135, 0.45, 0.18224995, 1)
[sub_resource type="BoxMesh" id="BoxMesh_xtogr"]
size = Vector3(200, 0.08, 200)
[sub_resource type="Curve3D" id="Curve3D_xtogr"]
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -74.84181, 0, -74.77032, 0, 0, 0, 0, 0, 0, -11.457085, 0, -86.17957, 0, 0, 0, 0, 0, 0, 55.006348, 0, -78.211205, 0, 0, 0, 0, 0, 0, 73.47847, 0, -30.582096, 0, 0, 0, 0, 0, 0, 78.73035, 0, 30.810556, 0, 0, 0, 0, 0, 0, 50.841064, 0, 77.896355, 0, 0, 0, 0, 0, 0, -53.834305, 0, 74.817665, 0, 0, 0, 0, 0, 0, -84.621185, 0, 37.149036, 0, 0, 0, 0, 0, 0, -77.19612, 0, -10.117877, 0, 0, 0, 0, 0, 0, 4.8418427, 0, 26.10198, 0, 0, 0, 0, 0, 0, 42.32939, 0, -18.267347, 0, 0, 0, 0, 0, 0, -19.96875, 0, -47.24322),
"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
}
point_count = 12
[node name="museum" type="Node3D" unique_id=2135293927]
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1936550760]
environment = SubResource("Environment_xtogr")
compositor = SubResource("Compositor_mb5yv")
[node name="biome_generator" parent="." unique_id=1861369341 node_paths=PackedStringArray("rail_path") instance=ExtResource("4_yrmqs")]
rail_path = NodePath("../rails")
biome_list = Array[ExtResource("5_2wjys")]([SubResource("Resource_3qrd0"), SubResource("Resource_2qks6")])
[node name="Terrain" type="MeshInstance3D" parent="." unique_id=219178561]
material_override = SubResource("StandardMaterial3D_pypsn")
mesh = SubResource("BoxMesh_xtogr")
[node name="cameras" parent="." unique_id=310254818 instance=ExtResource("5_8tojn")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 28.635147, 0)
[node name="rails" type="Path3D" parent="." unique_id=1302444918 node_paths=PackedStringArray("cameras")]
curve = SubResource("Curve3D_xtogr")
script = ExtResource("6_pypsn")
train_model = ExtResource("6_wjpfq")
cameras = NodePath("../cameras")
sleepers_model = ExtResource("8_mb5yv")
fireworks_scene = ExtResource("8_xtogr")
[node name="Control" type="Control" parent="." unique_id=865533651]
layout_mode = 3
anchors_preset = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="guide" type="Label" parent="Control" unique_id=2121474959]
layout_mode = 0
offset_right = 40.0
offset_bottom = 23.0
text = "R-> Reset isometric camera
C-> Toggle cinematic mode
Z-> soft zoom
Manual controls (1-5)
"

View File

@@ -0,0 +1,319 @@
extends Path3D
@export_group("Train")
@export var train_speed: float = 6.0
@export var is_inmotion: bool = true
@export var train_model: PackedScene
@export var axes_distance: float = 3.0
@export var rail_distance: float = 1.2
@export var cameras: Node3D
@export_range(0.0, 1.0) var basic_swing: float = 0.5
@export_group("Rails Bulding")
@export var sleepers_distance: float = 1.0
@export var sleepers_model: PackedScene
@export_group("Manual Controls")
@export var speed_max: float = 15.0
@export var speed_min: float = -5.0
@export var manual_acceleration: float = 5.0
@export_group("Train Stops")
@export var enable_stops: bool = true
@export var stop_time: float = 4.0
@export var brake_distance: float = 15.0
@export var restart_time: float = 3.0
@export var fireworks_scene: PackedScene
var fireworks_colors: Array[Color] = [
Color(1.0, 0.2, 0.2), # Rosso vivo
Color(0.2, 1.0, 0.2), # Verde lime
Color(0.3, 0.5, 1.0), # Blu cielo
Color(1.0, 0.8, 0.1), # Oro
Color(0.8, 0.2, 1.0), # Viola
Color(0.1, 1.0, 0.9) # Ciano
]
var train_instance: Node3D
var train_progress: float = 0.0
var swing_time: float = 0.0
var stop_offset: Array[float] = []
var stops_position: Array[Vector3] = []
var stop_ongoing: bool = false
var next_stop_index: int = 0
var stop_multiply: float = 1.0
var is_restarting: bool = false
var tween_restart: Tween
func _ready() -> void:
if curve != null and curve.get_baked_length() > 0:
build_rails()
build_train()
_plan_stops()
else:
print("WARNING: Draw your Path3D!")
func build_rails() -> void:
var mat_wood = StandardMaterial3D.new()
mat_wood.albedo_color = Color(0.35, 0.2, 0.1)
var mat_iron = StandardMaterial3D.new()
mat_iron.albedo_color = Color(0.6, 0.6, 0.65)
mat_iron.metallic = 0.8
var mesh_sleeper = BoxMesh.new()
mesh_sleeper.size = Vector3(rail_distance + 0.6, 0.1, 0.3)
var mesh_rail = BoxMesh.new()
mesh_rail.size = Vector3(0.1, 0.15, sleepers_distance + 0.05)
var total_length = curve.get_baked_length()
var piece_number = int(total_length / sleepers_distance)
for i in range(piece_number):
var distance = i * sleepers_distance
var rail_piece = Node3D.new()
add_child(rail_piece)
var local_pos = curve.sample_baked(distance, true)
var distance_forward = distance + 0.1
var local_pos_forward = Vector3.ZERO
if distance_forward > total_length:
var pos_back = curve.sample_baked(distance - 0.1, true)
local_pos_forward = local_pos + (local_pos - pos_back)
else:
local_pos_forward = curve.sample_baked(distance_forward, true)
rail_piece.position = local_pos
var global_pos = to_global(local_pos)
var global_pos_forward = to_global(local_pos_forward)
if global_pos.distance_to(global_pos_forward) > 0.001:
rail_piece.look_at(global_pos_forward, Vector3.UP)
if sleepers_model != null:
var sleeper_custom = sleepers_model.instantiate()
rail_piece.add_child(sleeper_custom)
else:
var sleeper = MeshInstance3D.new()
sleeper.mesh = mesh_sleeper
sleeper.material_override = mat_wood
rail_piece.add_child(sleeper)
var rail_sx = MeshInstance3D.new()
rail_sx.mesh = mesh_rail
rail_sx.material_override = mat_iron
rail_sx.position = Vector3(-rail_distance / 2.0, 0.1, 0)
rail_piece.add_child(rail_sx)
var rail_dx = MeshInstance3D.new()
rail_dx.mesh = mesh_rail
rail_dx.material_override = mat_iron
rail_dx.position = Vector3(rail_distance / 2.0, 0.1, 0)
rail_piece.add_child(rail_dx)
func _plan_stops() -> void:
var currnet_stops = []
for child in get_children():
if child is Marker3D:
var offset = curve.get_closest_offset(child.position)
currnet_stops.append({
"offset": offset,
"position": child.global_position
})
currnet_stops.sort_custom(func(a, b): return a["offset"] < b["offset"])
for data in currnet_stops:
stop_offset.append(data["offset"])
stops_position.append(data["position"])
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.echo:
if event.keycode == KEY_T:
_goto_next_stop()
elif event.keycode == KEY_F:
_test_manual_fires()
func _test_manual_fires() -> void:
if fireworks_scene == null or train_instance == null: return
var firework_number = randi_range(5, 8)
for i in range(firework_number):
var fire_root = fireworks_scene.instantiate()
get_tree().current_scene.add_child(fire_root)
var offset_x = randf_range(-6.0, 6.0)
var offset_z = randf_range(-6.0, 6.0)
fire_root.global_position = train_instance.global_position + Vector3(offset_x, 0.5, offset_z)
if fire_root.has_method("set_color"):
fire_root.set_color(fireworks_colors.pick_random())
if fire_root.has_method("turnon"):
fire_root.turnon()
await get_tree().create_timer(randf_range(0.2, 0.6)).timeout
func _goto_next_stop() -> void:
if stop_offset.size() == 0 or stop_ongoing or is_restarting:
return
var target_offset = stop_offset[next_stop_index]
train_progress = target_offset
_execute_stop(train_speed >= 0)
func _physics_process(delta: float) -> void:
input_controls_management(delta)
train_move(delta)
func input_controls_management(delta: float) -> void:
if not is_inmotion: return
if Input.is_action_pressed("ui_up"):
train_speed += manual_acceleration * delta
elif Input.is_action_pressed("ui_down"):
train_speed -= manual_acceleration * delta
train_speed = clamp(train_speed, speed_min, speed_max)
func train_move(delta: float) -> void:
if is_inmotion and train_instance and curve:
var total_length = curve.get_baked_length()
if total_length <= 0: return
if not stop_ongoing:
var last_progress = train_progress
if enable_stops and stop_offset.size() > 0 and not is_restarting:
var target_offset = stop_offset[next_stop_index]
var dist = target_offset - train_progress
dist = wrapf(dist + total_length / 2.0, 0.0, total_length) - total_length / 2.0
if abs(dist) < brake_distance and sign(dist) == sign(train_speed):
var t = abs(dist) / brake_distance
stop_multiply = max(smoothstep(0.0, 1.0, t), 0.05)
else:
stop_multiply = 1.0
var current_speed = train_speed * stop_multiply
train_progress += current_speed * delta
if enable_stops and stop_offset.size() > 0:
var target_offset = stop_offset[next_stop_index]
var exceeded_forward = (current_speed > 0 and last_progress < target_offset and train_progress >= target_offset)
var exceeded_back = (current_speed < 0 and last_progress > target_offset and train_progress <= target_offset)
if exceeded_forward or exceeded_back:
train_progress = target_offset
_execute_stop(current_speed > 0)
if train_progress > total_length:
train_progress -= total_length
if stop_offset.size() > 0: next_stop_index = 0
elif train_progress < 0:
train_progress += total_length
if stop_offset.size() > 0: next_stop_index = stop_offset.size() - 1
var center_position = to_global(curve.sample_baked(train_progress, true))
var prog_forward = wrapf(train_progress + 2.0, 0.0, total_length)
var forward_position = to_global(curve.sample_baked(prog_forward, true))
if center_position.distance_to(forward_position) > 0.01:
train_instance.global_position = center_position
train_instance.look_at(forward_position, Vector3.UP)
train_instance.rotate_y(PI)
if cameras:
cameras.global_position = center_position
cameras.global_basis = train_instance.global_basis
if not stop_ongoing:
var real_speed = abs(train_speed * stop_multiply)
swing_time += delta * real_speed * 2.0
var amplitude_z = 0.006 * basic_swing
var amplitude_x = 0.004 * basic_swing
train_instance.rotation.z += sin(swing_time) * amplitude_z
train_instance.rotation.x += cos(swing_time * 0.8) * amplitude_x
func _execute_stop(go_forward: bool = true) -> void:
stop_ongoing = true
stop_multiply = 0.0
var current_stop_index = next_stop_index
if go_forward:
next_stop_index += 1
if next_stop_index >= stop_offset.size():
next_stop_index = 0
else:
next_stop_index -= 1
if next_stop_index < 0:
next_stop_index = stop_offset.size() - 1
if fireworks_scene != null:
var marker_position = stops_position[current_stop_index]
var firework_number = randi_range(5, 8)
for i in range(firework_number):
var fire_root = fireworks_scene.instantiate()
get_tree().current_scene.add_child(fire_root)
var offset_x = randf_range(-5.0, 5.0)
var offset_z = randf_range(-5.0, 5.0)
fire_root.global_position = marker_position + Vector3(offset_x, 0.5, offset_z)
if fire_root.has_method("set_color"):
fire_root.set_color(fireworks_colors.pick_random())
if fire_root.has_method("turnon"):
fire_root.turnon()
await get_tree().create_timer(randf_range(0.3, 0.8)).timeout
await get_tree().create_timer(stop_time).timeout
stop_ongoing = false
is_restarting = true
if tween_restart and tween_restart.is_valid():
tween_restart.kill()
tween_restart = create_tween()
tween_restart.set_trans(Tween.TRANS_SINE).set_ease(Tween.EASE_IN_OUT)
tween_restart.tween_property(self, "stop_multiply", 1.0, restart_time)
tween_restart.tween_callback(func(): is_restarting = false)
func build_train() -> void:
if train_model != null:
train_instance = train_model.instantiate()
add_child(train_instance)
else:
build_default_train()
func build_default_train() -> void:
train_instance = Node3D.new()
add_child(train_instance)
var mat_body = StandardMaterial3D.new()
mat_body.albedo_color = Color(0.8, 0.15, 0.15)
var mat_glass = StandardMaterial3D.new()
mat_glass.albedo_color = Color(0.2, 0.8, 1.0)
var train_base = MeshInstance3D.new()
var mesh_base = BoxMesh.new()
mesh_base.size = Vector3(1.4, 0.8, 3.0)
train_base.mesh = mesh_base
train_base.material_override = mat_body
train_base.position = Vector3(0, 0.6, 0)
train_instance.add_child(train_base)
var cabin = MeshInstance3D.new()
var mesh_cabin = BoxMesh.new()
mesh_cabin.size = Vector3(1.4, 1.0, 1.2)
cabin.mesh = mesh_cabin
cabin.material_override = mat_glass
cabin.position = Vector3(0, 1.5, -0.8)
train_instance.add_child(cabin)
var stack = MeshInstance3D.new()
var mesh_stack = CylinderMesh.new()
mesh_stack.top_radius = 0.2
mesh_stack.bottom_radius = 0.3
mesh_stack.height = 0.8
stack.mesh = mesh_stack
stack.material_override = mat_body
stack.position = Vector3(0, 1.2, 1.0)
train_instance.add_child(stack)

View File

@@ -0,0 +1 @@
uid://dboerd4a6dwj7

View File

@@ -0,0 +1,156 @@
[gd_scene format=3 uid="uid://0kgjaqijaqku"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="2_0y2rr"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_m6haf"]
render_priority = 0
shader = ExtResource("2_0y2rr")
shader_parameter/albedo_color = Color(0.08235294, 0.105882354, 0.10980392, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_duyun"]
[sub_resource type="BoxMesh" id="BoxMesh_w0ibq"]
size = Vector3(0.2, 0.2, 2)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_fttrp"]
render_priority = 0
shader = ExtResource("2_0y2rr")
shader_parameter/albedo_color = Color(0.08061289, 0.10506997, 0.11154168, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_hb1ej"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pp4r2"]
render_priority = 0
shader = ExtResource("2_0y2rr")
shader_parameter/albedo_color = Color(0.2584173, 0.19781098, 0.10103748, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pur2n"]
[sub_resource type="BoxMesh" id="BoxMesh_ysg1u"]
size = Vector3(2.5, 0.15, 0.5)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_x2uev"]
render_priority = 0
shader = ExtResource("2_0y2rr")
shader_parameter/albedo_color = Color(0.25882354, 0.19607843, 0.101960786, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="ShaderMaterial" id="ShaderMaterial_qv8m2"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5u2u8"]
render_priority = 0
shader = ExtResource("2_0y2rr")
shader_parameter/albedo_color = Color(0.22494644, 0.08867701, 0.01631488, 1)
shader_parameter/use_texture = false
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[sub_resource type="BoxMesh" id="BoxMesh_m6haf"]
size = Vector3(3.705, 0.2, 1.92)
[node name="rails" type="Node3D" unique_id=1464572050 groups=["weather_node", "wind_node"]]
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1040579890]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, 0.214, 0)
material_override = SubResource("ShaderMaterial_m6haf")
material_overlay = SubResource("ShaderMaterial_duyun")
mesh = SubResource("BoxMesh_w0ibq")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1870708237]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, 0.214, 0)
material_override = SubResource("ShaderMaterial_fttrp")
material_overlay = SubResource("ShaderMaterial_hb1ej")
mesh = SubResource("BoxMesh_w0ibq")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=170245195]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, 0.5)
material_override = SubResource("ShaderMaterial_pp4r2")
material_overlay = SubResource("ShaderMaterial_pur2n")
mesh = SubResource("BoxMesh_ysg1u")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="." unique_id=1389288735]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.05, -0.5)
material_override = SubResource("ShaderMaterial_x2uev")
material_overlay = SubResource("ShaderMaterial_qv8m2")
mesh = SubResource("BoxMesh_ysg1u")
[node name="MeshInstance3D5" type="MeshInstance3D" parent="." unique_id=1376217081]
visible = false
material_override = SubResource("ShaderMaterial_5u2u8")
mesh = SubResource("BoxMesh_m6haf")

View File

@@ -0,0 +1,24 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://df1ghvw3d61x8"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_i3cgb"]
[resource]
render_priority = 0
shader = ExtResource("1_i3cgb")
shader_parameter/albedo_color = Color(0.16250518, 0.23871198, 0.21290374, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,24 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cufolpn48xxmv"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_qkrhb"]
[resource]
render_priority = 0
shader = ExtResource("1_qkrhb")
shader_parameter/albedo_color = Color(0.2520276, 0.25202766, 0.25202763, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,24 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://bu8wmlp0ffark"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_gtyqp"]
[resource]
render_priority = 0
shader = ExtResource("1_gtyqp")
shader_parameter/albedo_color = Color(0.40934297, 0.38911393, 0.34586716, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 5.0
shader_parameter/light_steps = 5.0
shader_parameter/step_softness = 0.00999999977648
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/use_ghibli_glint = true
shader_parameter/glint_color = Color(1, 0.95, 0.85, 1)
shader_parameter/glint_intensity = 1.0
shader_parameter/glint_sharpness = 32.0
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://drh4ak2aslebu"
path="res://.godot/imported/chunk_c_e_1.fbx-fcecdb3c5458fe61bd7c9ea4a79977ed.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx"
dest_files=["res://.godot/imported/chunk_c_e_1.fbx-fcecdb3c5458fe61bd7c9ea4a79977ed.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,25 @@
[gd_scene format=3 uid="uid://botm0dqtr5whb"]
[ext_resource type="PackedScene" uid="uid://drh4ak2aslebu" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx" id="1_hycya"]
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_0urj0"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_e_1/grass_chunk.tres" id="2_oixxl"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="4_l3pac"]
[ext_resource type="PackedScene" uid="uid://qrvty6mbmr2m" path="res://docs/museums/daynight/scenes/chunk_c_e_1/test_orto_big.tscn" id="5_h1xfy"]
[node name="Chunk_C_E_1" unique_id=1874739368 groups=["weather_vegetables_node", "wind_node"] instance=ExtResource("1_hycya")]
script = ExtResource("2_0urj0")
[node name="Chunk_026" parent="." index="0" unique_id=1723380962]
material_override = ExtResource("2_oixxl")
[node name="Grass" parent="." index="1" unique_id=838519336 instance=ExtResource("4_l3pac")]
transform = Transform3D(1.5, 0, 0, 0, 1, 0, 0, 0, 1.5, 0, 0.071342185, 0)
[node name="Test_Orto_Big" parent="." index="2" unique_id=381322647 instance=ExtResource("5_h1xfy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.264472, 0, 6.0643373)
[node name="Test_Orto_Big3" parent="." index="3" unique_id=1302450866 instance=ExtResource("5_h1xfy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 0.65525997, 0.264472, 0, -0.0770607)
[node name="Test_Orto_Big2" parent="." index="4" unique_id=309995461 instance=ExtResource("5_h1xfy")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.264472, 0, -6.083904)

View File

@@ -0,0 +1,23 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cit5uciejjoou"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_8emj4"]
[resource]
render_priority = 0
shader = ExtResource("1_8emj4")
shader_parameter/albedo_color = Color(0.22173214, 0.30581495, 0.10733434, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0
shader_parameter/specular_softness = 0.01
shader_parameter/specular_intensity_multiplier = 0.5
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0lstspvtbxxw"
path.s3tc="res://.godot/imported/grass_round.png-7ab5c804b97ebf1669fa79244396d578.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/grass_round.png"
dest_files=["res://.godot/imported/grass_round.png-7ab5c804b97ebf1669fa79244396d578.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -0,0 +1 @@
shader_type spatial;

View File

@@ -0,0 +1 @@
uid://cw6p2m4fek8rt

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://7ktyjmbw1lw2"
path="res://.godot/imported/test_bordisentiero.fbx-99503bad45be9d5815297f4a961b08e9.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/test_bordisentiero.fbx"
dest_files=["res://.godot/imported/test_bordisentiero.fbx-99503bad45be9d5815297f4a961b08e9.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bu13utuvlgwpm"
path="res://.godot/imported/test_orto_big.fbx-84db5cc81bc1db359cc9317e767d8bd5.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_e_1/test_orto_big.fbx"
dest_files=["res://.godot/imported/test_orto_big.fbx-84db5cc81bc1db359cc9317e767d8bd5.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dsh55bqjfrqfp"
path="res://.godot/imported/chunk_c_f_1.fbx-5457c468af29ce8e8397fca8b8b6feed.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.fbx"
dest_files=["res://.godot/imported/chunk_c_f_1.fbx-5457c468af29ce8e8397fca8b8b6feed.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -1,18 +1,18 @@
[gd_scene format=4 uid="uid://givg3dyrxsk5"]
[ext_resource type="PackedScene" uid="uid://d3loscamahf5y" path="res://Assets/Meshes/Chunk/Bioma_C/Chunk_C_E_1.fbx" id="1_jpp2r"]
[ext_resource type="Script" uid="uid://byluxssk112ca" path="res://Scripts/info_chunk.gd" id="2_02kkq"]
[ext_resource type="Shader" uid="uid://c0dy1aqj1b4q3" path="res://Shaders/trunk_shader.gdshader" id="3_wr3vc"]
[ext_resource type="PackedScene" uid="uid://8jtrp8ckqf1a" path="res://Scenes/Chunk_Scene/House/House_muraglione.tscn" id="4_lunjj"]
[ext_resource type="PackedScene" uid="uid://5sod22d0vnip" path="res://Scenes/Chunk_Scene/House/House_XL_4.tscn" id="5_tf2ul"]
[ext_resource type="PackedScene" uid="uid://birttctl11th8" path="res://Scenes/Chunk_Scene/Chunk/Campagna/chunk_c_l_1.tscn" id="6_4h5ax"]
[ext_resource type="Shader" uid="uid://do0tct77dfhef" path="res://Shaders/snow.gdshader" id="7_wr3vc"]
[ext_resource type="Material" uid="uid://couj6glsrm6h3" path="res://Materials/Sentiero.tres" id="7_y2p7p"]
[ext_resource type="PackedScene" uid="uid://dyolu5m0lgqm2" path="res://Scenes/Test/ToriGate.tscn" id="9_ji5rd"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://Scenes/Test/Grass_Test.tscn" id="9_s470o"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://Scenes/Test/Tree_V1.tscn" id="10_ji5rd"]
[ext_resource type="PackedScene" uid="uid://4iye3qapad4y" path="res://Scenes/Test/Colonnina_Blockout.tscn" id="11_4n1py"]
[ext_resource type="PackedScene" uid="uid://bfvtlpkcnbgke" path="res://Scenes/Chunk_Scene/BordiSentiero/Bordi_sentiero_Rettilineo.tscn" id="12_rrcoc"]
[ext_resource type="PackedScene" uid="uid://drh4ak2aslebu" path="res://docs/museums/daynight/scenes/chunk_c_e_1/chunk_c_e_1.fbx" id="1_jpp2r"]
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_02kkq"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="3_wr3vc"]
[ext_resource type="PackedScene" uid="uid://cahsl77384kf1" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_muraglione.tscn" id="4_lunjj"]
[ext_resource type="PackedScene" uid="uid://cl8c5n0nw30u" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house_xl_4.fbx" id="5_tf2ul"]
[ext_resource type="PackedScene" uid="uid://dsh55bqjfrqfp" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_f_1.fbx" id="6_4h5ax"]
[ext_resource type="Shader" uid="uid://cnoe3065kb2cn" path="res://docs/museums/daynight/scenes/chunk_f_l_2/snow.gdshader" id="7_wr3vc"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/sentiero.tres" id="7_y2p7p"]
[ext_resource type="PackedScene" path="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.tscn" id="9_ji5rd"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="9_s470o"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="10_ji5rd"]
[ext_resource type="PackedScene" uid="uid://b6f7gaoatj420" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.tscn" id="11_4n1py"]
[ext_resource type="PackedScene" uid="uid://bfvtlpkcnbgke" path="res://docs/museums/daynight/scenes/chunk_c_e_1/bordi_sentiero_rettilineo.tscn" id="12_rrcoc"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sqcol"]
render_priority = 0

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dveqtrbekuj5b"
path="res://.godot/imported/chunk_c_l_1.fbx-a2b79ee8404f6941548c817e413a845e.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_l_1.fbx"
dest_files=["res://.godot/imported/chunk_c_l_1.fbx-a2b79ee8404f6941548c817e413a845e.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,30 @@
[gd_scene format=3 uid="uid://birttctl11th8"]
[ext_resource type="PackedScene" uid="uid://dveqtrbekuj5b" path="res://docs/museums/daynight/scenes/chunk_c_f_1/chunk_c_l_1.fbx" id="1_xwass"]
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_ib4lo"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/grass_chunk.tres" id="3_3x6ti"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/sentiero.tres" id="4_kwc5e"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_c_f_1/grass_blockout.tres" id="5_ag87g"]
[node name="Chunk_C_L_1" unique_id=47126446 instance=ExtResource("1_xwass")]
script = ExtResource("2_ib4lo")
sud = true
ovest = true
[node name="Chunk_005" parent="." index="0" unique_id=1667835125]
material_override = ExtResource("3_3x6ti")
[node name="Chunk_036" parent="." index="1" unique_id=248347357]
material_override = ExtResource("4_kwc5e")
[node name="Chunk_037" parent="." index="2" unique_id=1414101746]
material_override = ExtResource("4_kwc5e")
[node name="Cube_030" parent="." index="3" unique_id=807948711]
material_override = ExtResource("5_ag87g")
[node name="Cube_031" parent="." index="4" unique_id=1667337241]
material_override = ExtResource("5_ag87g")
[node name="Cube_034" parent="." index="5" unique_id=934323945]
material_override = ExtResource("5_ag87g")

View File

@@ -0,0 +1,17 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cd34mgvhj1d0r"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_f84ys"]
[resource]
render_priority = 0
shader = ExtResource("1_f84ys")
shader_parameter/albedo_color = Color(0.46056616, 0.3895911, 0.06605037, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,23 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://cit5uciejjoou"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_8emj4"]
[resource]
render_priority = 0
shader = ExtResource("1_8emj4")
shader_parameter/albedo_color = Color(0.22173214, 0.30581495, 0.10733434, 1)
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 10.0
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/specular_size = 60.0
shader_parameter/specular_softness = 0.01
shader_parameter/specular_intensity_multiplier = 0.5
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0

View File

@@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://couj6glsrm6h3"]
[ext_resource type="Texture2D" uid="uid://m5it4ge0pgtm" path="res://docs/museums/daynight/scenes/chunk_f_l_2/texture_sentiero.png" id="1_lr0wl"]
[resource]
albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1)
albedo_texture = ExtResource("1_lr0wl")
uv1_scale = Vector3(2.165, 2.325, 1)
uv1_offset = Vector3(-0.555, 0, 0)

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://2q81acvx3jua"
path="res://.godot/imported/tori_gate.fbx-4d875958b5e319189bb454a0080c008f.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.fbx"
dest_files=["res://.godot/imported/tori_gate.fbx-4d875958b5e319189bb454a0080c008f.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,37 @@
[gd_scene format=3 uid="uid://dyolu5m0lgqm2"]
[ext_resource type="PackedScene" uid="uid://2q81acvx3jua" path="res://docs/museums/daynight/scenes/chunk_c_f_1/tori_gate.fbx" id="1_6kg7a"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="2_1ibku"]
[ext_resource type="Shader" uid="uid://cnoe3065kb2cn" path="res://docs/museums/daynight/scenes/chunk_f_l_2/snow.gdshader" id="2_ttfuh"]
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="3_6126s"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_yswvv"]
render_priority = 0
shader = ExtResource("2_ttfuh")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3mqnu"]
render_priority = 0
shader = ExtResource("2_1ibku")
shader_parameter/albedo_color = Color(1, 1, 1, 1)
shader_parameter/albedo_texture = ExtResource("3_6126s")
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/palette_shift_y = 0.0
shader_parameter/gradient_color = Color(0.1, 0.1, 0.2, 1)
shader_parameter/gradient_start_y = 0.0
shader_parameter/gradient_end_y = 5.0
shader_parameter/gradient_intensity = 0.800000038
shader_parameter/light_steps = 3.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/cast_shadow_strength = 0.6
shader_parameter/emission_color = Color(0, 0, 0, 1)
shader_parameter/emission_energy = 0.0
[node name="Tori1" unique_id=1219093134 instance=ExtResource("1_6kg7a")]
[node name="Sphere_001" parent="." index="0" unique_id=2137140690]
material_overlay = SubResource("ShaderMaterial_yswvv")
surface_material_override/0 = SubResource("ShaderMaterial_3mqnu")

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://h5r7ua0kkfqb"
path="res://.godot/imported/chunk_c_e_1.fbx-31fc56e764f398efbd0733dddc04c528.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_c_e_1.fbx"
dest_files=["res://.godot/imported/chunk_c_e_1.fbx-31fc56e764f398efbd0733dddc04c528.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,48 @@
[gd_scene format=3 uid="uid://bi12g5nj421jv"]
[ext_resource type="PackedScene" uid="uid://h5r7ua0kkfqb" path="res://docs/museums/daynight/scenes/chunk_f_e_1/chunk_c_e_1.fbx" id="1_anwxh"]
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_scq5d"]
[ext_resource type="PackedScene" uid="uid://jj15telqu3rp" path="res://docs/museums/daynight/scenes/grass_test/grass_test.tscn" id="4_pynx0"]
[ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://docs/museums/daynight/scenes/grain_test/tree_v1.tscn" id="5_vyg4h"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pynx0"]
albedo_color = Color(0.3882353, 0.52156866, 0.20784314, 1)
[node name="Chunk_C_E_1" unique_id=1874739368 instance=ExtResource("1_anwxh")]
script = ExtResource("2_scq5d")
[node name="Chunk_026" parent="." index="0" unique_id=1559745184]
material_override = SubResource("StandardMaterial3D_pynx0")
[node name="TreeTest3" parent="." index="1" unique_id=838519336 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-1.6420741, 0, 0.43999258, 0, 1.7000003, 0, -0.43999258, 0, -1.6420741, -6, 0, 7)
[node name="TreeTest7" parent="." index="2" unique_id=294124018 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.9107201, 0, -1.4722435, 0, -0.8500001, -1, 0, 6)
[node name="TreeTest8" parent="." index="3" unique_id=1347052071 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.7000005, 0, -1.4722435, 0, -0.8500001, 0, 0, 0)
[node name="TreeTest9" parent="." index="4" unique_id=809650464 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-1.7000006, 0, -5.9604645e-08, 0, 1.5217258, 0, 5.9604645e-08, 0, -1.7000006, -6, 0, 0)
[node name="TreeTest10" parent="." index="5" unique_id=874463260 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-0.8500001, 0, 1.4722435, 0, 1.8421628, 0, -1.4722435, 0, -0.8500001, -8, 0, -4)
[node name="TreeTest11" parent="." index="6" unique_id=1251577795 instance=ExtResource("5_vyg4h")]
transform = Transform3D(0.43999267, 0, 1.6420743, 0, 1.5772889, 0, -1.6420743, 0, 0.43999267, -5, 0, -6)
[node name="TreeTest12" parent="." index="7" unique_id=1738211323 instance=ExtResource("5_vyg4h")]
transform = Transform3D(1.6420745, 0, 0.4399924, 0, 2.0050228, 0, -0.4399924, 0, 1.6420745, 0, 0, -8)
[node name="TreeTest4" parent="." index="8" unique_id=2002110381 instance=ExtResource("5_vyg4h")]
transform = Transform3D(1.2020817, 0, 1.2020817, 0, 1.4763381, 0, -1.2020817, 0, 1.2020817, 5, 0, -8)
[node name="TreeTest6" parent="." index="9" unique_id=904012304 instance=ExtResource("5_vyg4h")]
transform = Transform3D(-1.2020816, 0, 1.2020816, 0, 2.069493, 0, -1.2020816, 0, -1.2020816, 7, 0, 0)
[node name="TreeTest5" parent="." index="10" unique_id=286631858 instance=ExtResource("5_vyg4h")]
transform = Transform3D(1.2020817, 0, -1.2020817, 0, 1.6411026, 0, 1.2020817, 0, 1.2020817, 7, 0, 4)
[node name="Grass" parent="." index="11" unique_id=329885752 instance=ExtResource("4_pynx0")]
transform = Transform3D(1.5, 0, 0, 0, 1, 0, 0, 0, 1.5, 0, 0.2, 0)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bwfw07dhn5hwa"
path="res://.godot/imported/borderpath.fbx-230ca6d3b71824fc98f419939c638ce3.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/borderpath.fbx"
dest_files=["res://.godot/imported/borderpath.fbx-230ca6d3b71824fc98f419939c638ce3.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://rxo4x8lqnpds"
path="res://.godot/imported/chunk_c_l_2.fbx-e6504c3015cca0b63cb60efd99ae351e.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/chunk_c_l_2.fbx"
dest_files=["res://.godot/imported/chunk_c_l_2.fbx-e6504c3015cca0b63cb60efd99ae351e.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://duc107s1wtp0b"
path="res://.godot/imported/column_blockout.fbx-292ffe04800976fa87bba71a681c4a88.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.fbx"
dest_files=["res://.godot/imported/column_blockout.fbx-292ffe04800976fa87bba71a681c4a88.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,74 @@
[gd_scene format=3 uid="uid://b6f7gaoatj420"]
[ext_resource type="PackedScene" uid="uid://duc107s1wtp0b" path="res://docs/museums/daynight/scenes/chunk_f_l_2/column_blockout.fbx" id="1_iaqs2"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_cel.tres" id="2_hqihs"]
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="3_jfj3v"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dg33q"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lrklx"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_bwl3q"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_n0srh"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0mbrm"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6tlqt"]
specular_mode = 1
disable_ambient_light = true
disable_fog = true
disable_specular_occlusion = true
albedo_texture = ExtResource("3_jfj3v")
emission_enabled = true
emission_energy_multiplier = 8.0
emission_texture = ExtResource("3_jfj3v")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7dodf"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_63xe0"]
[node name="ArtTest3" unique_id=143340255 groups=["weather_node", "wind_node"] instance=ExtResource("1_iaqs2")]
[node name="Empty" parent="." index="0" unique_id=1251372369]
transform = Transform3D(50, 0, 0, 0, -2.1855694e-06, 50, 0, -50, -2.1855694e-06, 0, 0, 0)
[node name="Cube_004" parent="Empty" index="0" unique_id=143665017]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_dg33q")
[node name="Cube_005" parent="Empty" index="1" unique_id=141217713]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_lrklx")
[node name="Cube_006" parent="Empty" index="2" unique_id=2078409050]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_bwl3q")
[node name="Cube_007" parent="Empty" index="3" unique_id=706314829]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_n0srh")
[node name="Cube_008" parent="Empty" index="4" unique_id=1341246711]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_0mbrm")
[node name="Cube_009" parent="Empty" index="5" unique_id=1358876075]
material_override = SubResource("StandardMaterial3D_6tlqt")
[node name="OmniLight3D" type="OmniLight3D" parent="Empty/Cube_009" index="0" unique_id=1295876317]
transform = Transform3D(0.02, 0, 0, 0, 0.02, -5.551115e-17, 0, 5.551115e-17, 0.02, 0, -1.8613413e-09, 0.02244059)
light_color = Color(0.8666949, 0.43160796, 0.0022084315, 1)
light_specular = 0.0
distance_fade_begin = 0.0
omni_range = 15.0
omni_attenuation = 2.621
omni_shadow_mode = 0
[node name="Cube_011" parent="Empty" index="6" unique_id=1669669268]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_7dodf")
[node name="tetto 2" parent="Empty" index="7" unique_id=1674600040]
material_override = ExtResource("2_hqihs")
material_overlay = SubResource("ShaderMaterial_63xe0")

View File

@@ -0,0 +1,31 @@
[gd_scene format=3 uid="uid://mj15bepbgy02"]
[ext_resource type="PackedScene" uid="uid://d25nuo0iyscu0" path="res://docs/museums/daynight/scenes/chunk_f_l_2/housetest_4.fbx" id="1_03u1s"]
[ext_resource type="Material" uid="uid://biaudrjlfoflm" path="res://docs/museums/daynight/scenes/chunk_c_f_1/house.tres" id="2_n4qy2"]
[ext_resource type="Shader" uid="uid://cnoe3065kb2cn" path="res://docs/museums/daynight/scenes/chunk_f_l_2/snow.gdshader" id="3_n4qy2"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_0x3ja"]
render_priority = 0
shader = ExtResource("3_n4qy2")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
[sub_resource type="Gradient" id="Gradient_n4qy2"]
offsets = PackedFloat32Array(0.9980237, 1)
colors = PackedColorArray(0, 0, 0, 0.5882353, 0, 0, 0, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_0x3ja"]
gradient = SubResource("Gradient_n4qy2")
fill = 2
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(0.9017094, 0.12820514)
[node name="HouseTest_4" unique_id=462882013 instance=ExtResource("1_03u1s")]
[node name="Cube_008" parent="." index="0" unique_id=2087805025]
material_override = ExtResource("2_n4qy2")
material_overlay = SubResource("ShaderMaterial_0x3ja")
[node name="Shadow" type="Decal" parent="." index="1" unique_id=30846848]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.059038162, 0, 0)
size = Vector3(9, 0.5, 9)
texture_albedo = SubResource("GradientTexture2D_0x3ja")

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://d25nuo0iyscu0"
path="res://.godot/imported/housetest_4.fbx-23d43f0f665bfe6ba3569f6aca99ab7a.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/housetest_4.fbx"
dest_files=["res://.godot/imported/housetest_4.fbx-23d43f0f665bfe6ba3569f6aca99ab7a.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bygihc62pho6a"
path.s3tc="res://.godot/imported/leaf_test.png-31bf3b97663f194dd5e3af26288e2cf2.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/leaf_test.png"
dest_files=["res://.godot/imported/leaf_test.png-31bf3b97663f194dd5e3af26288e2cf2.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -0,0 +1,19 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://da8erd0d83kog"]
[ext_resource type="Shader" uid="uid://d0ch5ofrgf7y6" path="res://core/daynight/trunk_shader.gdshader" id="1_bjiey"]
[ext_resource type="Texture2D" uid="uid://bt2j7x0gr6ndo" path="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png" id="2_e8nia"]
[resource]
render_priority = 0
shader = ExtResource("1_bjiey")
shader_parameter/albedo_color = Color(1, 1, 1, 1)
shader_parameter/albedo_texture = ExtResource("2_e8nia")
shader_parameter/use_texture = true
shader_parameter/uv_scale = Vector2(1, 1)
shader_parameter/light_direction = Vector3(0.5, 1, 0.5)
shader_parameter/light_steps = 4.0
shader_parameter/step_softness = 0.1
shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1)
shader_parameter/shadow_offset = 0.0
shader_parameter/emission_color = Color(1, 1, 1, 1)
shader_parameter/emission_energy = 0.0

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bt2j7x0gr6ndo"
path.s3tc="res://.godot/imported/palette_train.png-cd3116eb3f79c169cc5b38ef39e56b4d.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/palette_train.png"
dest_files=["res://.godot/imported/palette_train.png-cd3116eb3f79c169cc5b38ef39e56b4d.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -0,0 +1,9 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://couj6glsrm6h3"]
[ext_resource type="Texture2D" uid="uid://m5it4ge0pgtm" path="res://docs/museums/daynight/scenes/chunk_f_l_2/texture_sentiero.png" id="1_lr0wl"]
[resource]
albedo_color = Color(0.9811998, 0.8347986, 0.569528, 1)
albedo_texture = ExtResource("1_lr0wl")
uv1_scale = Vector3(2.165, 2.325, 1)
uv1_offset = Vector3(-0.555, 0, 0)

View File

@@ -0,0 +1,44 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://dtg6opak36yf8"
path="res://.godot/imported/sk_mannequin.fbx-3819102142fe791f18bae592ce6f6980.scn"
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/sk_mannequin.fbx"
dest_files=["res://.godot/imported/sk_mannequin.fbx-3819102142fe791f18bae592ce6f6980.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
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=true
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
fbx/importer=0
fbx/allow_geometry_helper_nodes=false
fbx/embedded_image_handling=1
fbx/naming_version=2

View File

@@ -0,0 +1,2 @@
shader_type spatial;

View File

@@ -0,0 +1 @@
uid://cnoe3065kb2cn

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://m5it4ge0pgtm"
path.s3tc="res://.godot/imported/texture_sentiero.png-0fd05273a2bc4f18c093a716b3a96088.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://docs/museums/daynight/scenes/chunk_f_l_2/texture_sentiero.png"
dest_files=["res://.godot/imported/texture_sentiero.png-0fd05273a2bc4f18c093a716b3a96088.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

View File

@@ -1,23 +1,56 @@
[gd_scene format=4 uid="uid://igbtt2ypx0ks"]
[ext_resource type="PackedScene" uid="uid://cl3xspxrqcyfg" path="res://docs/museums/daynight/scenes/fences.fbx" id="1_j7em5"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/fences.tres" id="2_2tbpd"]
[ext_resource type="Material" uid="uid://wkegx4a21x7u" path="res://docs/museums/daynight/scenes/fences.tres" id="2_2tbpd"]
[ext_resource type="Shader" uid="uid://do8puw7u8dvry" path="res://core/daynight/weather_plain_shader.gdshader" id="3_xsxbg"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2jjob"]
render_priority = 0
shader = ExtResource("3_xsxbg")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
shader_parameter/snow_edge_softness = 0.15
shader_parameter/snow_color_variation = 0.05
shader_parameter/ripple_scale = 1.5
shader_parameter/ripple_speed = 2.0
shader_parameter/ripple_layers = 3.0
shader_parameter/streak_scale = 2.0
shader_parameter/streak_speed = 0.8
shader_parameter/wetness_darkening = 0.25
shader_parameter/wet_roughness = 0.05
shader_parameter/rain_normal_strength = 0.4
shader_parameter/puddle_noise_scale = 0.08
shader_parameter/puddle_threshold = 0.45
[sub_resource type="ShaderMaterial" id="ShaderMaterial_5qj1r"]
render_priority = 0
shader = ExtResource("3_xsxbg")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
shader_parameter/snow_edge_softness = 0.15
shader_parameter/snow_color_variation = 0.05
shader_parameter/ripple_scale = 1.5
shader_parameter/ripple_speed = 2.0
shader_parameter/ripple_layers = 3.0
shader_parameter/streak_scale = 2.0
shader_parameter/streak_speed = 0.8
shader_parameter/wetness_darkening = 0.25
shader_parameter/wet_roughness = 0.05
shader_parameter/rain_normal_strength = 0.4
shader_parameter/puddle_noise_scale = 0.08
shader_parameter/puddle_threshold = 0.45
[sub_resource type="ShaderMaterial" id="ShaderMaterial_xsxbg"]
render_priority = 0
shader = ExtResource("3_xsxbg")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
shader_parameter/snow_edge_softness = 0.15
shader_parameter/snow_color_variation = 0.05
shader_parameter/ripple_scale = 1.5
shader_parameter/ripple_speed = 2.0
shader_parameter/ripple_layers = 3.0
shader_parameter/streak_scale = 2.0
shader_parameter/streak_speed = 0.8
shader_parameter/wetness_darkening = 0.25
shader_parameter/wet_roughness = 0.05
shader_parameter/rain_normal_strength = 0.4
shader_parameter/puddle_noise_scale = 0.08
shader_parameter/puddle_threshold = 0.45
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1jtrr"]
resource_name = "lambert48"
@@ -62,17 +95,28 @@ shadow_mesh = SubResource("ArrayMesh_d4r25")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_p4545"]
render_priority = 0
shader = ExtResource("3_xsxbg")
shader_parameter/snow_color = Color(0.95, 0.98, 1, 1)
shader_parameter/snow_edge_softness = 0.15
shader_parameter/snow_color_variation = 0.05
shader_parameter/ripple_scale = 1.5
shader_parameter/ripple_speed = 2.0
shader_parameter/ripple_layers = 3.0
shader_parameter/streak_scale = 2.0
shader_parameter/streak_speed = 0.8
shader_parameter/wetness_darkening = 0.25
shader_parameter/wet_roughness = 0.05
shader_parameter/rain_normal_strength = 0.4
shader_parameter/puddle_noise_scale = 0.08
shader_parameter/puddle_threshold = 0.45
[node name="MSH_Staccionate" unique_id=118332436 instance=ExtResource("1_j7em5")]
transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0)
[node name="MSH_Staccioanta_3" parent="." index="0" unique_id=1218567814]
[node name="MSH_Staccioanta_3" parent="." index="0" unique_id=518174525]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0037837923, 0, 0)
material_override = ExtResource("2_2tbpd")
material_overlay = SubResource("ShaderMaterial_2jjob")
[node name="MSH_Staccioanta_2" parent="." index="1" unique_id=223276087]
[node name="MSH_Staccioanta_2" parent="." index="1" unique_id=1761065999]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.99746555, 0, 0)
material_override = ExtResource("2_2tbpd")
material_overlay = SubResource("ShaderMaterial_5qj1r")
@@ -82,9 +126,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3966007, 0, 0)
material_override = ExtResource("2_2tbpd")
material_overlay = SubResource("ShaderMaterial_xsxbg")
mesh = SubResource("ArrayMesh_h5j06")
skeleton = NodePath("")
[node name="MSH_Staccioanta_1" parent="." index="3" unique_id=1140003948]
[node name="MSH_Staccioanta_1" parent="." index="3" unique_id=1389585160]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0379614, 0, 0)
material_override = ExtResource("2_2tbpd")
material_overlay = SubResource("ShaderMaterial_p4545")

View File

@@ -1,7 +1,7 @@
[gd_scene format=4 uid="uid://dpstb26gs581l"]
[ext_resource type="PackedScene" uid="uid://c2j2jey3l0hv4" path="res://docs/museums/daynight/scenes/mountain_test/chunck_m_n-o-e-s1.fbx" id="1_anh2f"]
[ext_resource type="Script" uid="uid://s1ohbgbpyu5n" path="res://docs/museums/daynight/scenes/mountain_test/info_chunk.gd" id="2_2wsw6"]
[ext_resource type="Script" uid="uid://dg2h4kbqe8j3m" path="res://core/biome_generator/chunk_info.gd" id="2_2wsw6"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/treno3.tres" id="3_grv42"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/trainchunk.tres" id="4_0s706"]
[ext_resource type="Material" path="res://docs/museums/daynight/scenes/mountain_test/treno1.tres" id="5_e6288"]

View File

@@ -1,51 +0,0 @@
extends Node3D
class_name InfoChunk
@export_enum("Bioma", "Binario_Dritto", "Binario_Curva") var tipo_chunk: int = 0
@export_group("Regole Set Piece (Pezzi Unici)")
@export var bioma_esclusivo: String = "" # Es: scrivi "Foresta"
@export_group("Uscite Base (Senza Rotazione)")
@export var nord: bool = false
@export var est: bool = false
@export var sud: bool = false
@export var ovest: bool = false
@export_group("Altitudini Bordi (Livelli 0, 1, 2)")
@export var altezza_nord: int = 0
@export var altezza_est: int = 0
@export var altezza_sud: int = 0
@export var altezza_ovest: int = 0
# --- NUOVA AGGIUNTA AUTOMATICA ---
func _ready() -> void:
# Se hai scritto un bioma nell'Inspector, il pezzo capisce di essere
# un pezzo speciale e si aggiunge al gruppo dei fantasmi da solo!
if bioma_esclusivo != "":
add_to_group("set_pieces")
# ... qui sotto continua la tua normale funzione get_dati_ruotati() ...
func get_dati_ruotati(scatti_90_gradi: int) -> Dictionary:
var uscite_originali = [nord, est, sud, ovest]
var altezze_originali = [altezza_nord, altezza_est, altezza_sud, altezza_ovest]
var uscite_calcolate = []
var altezze_calcolate = []
for i in range(4):
var indice = (i - scatti_90_gradi + 4) % 4
uscite_calcolate.append(uscite_originali[indice])
altezze_calcolate.append(altezze_originali[indice])
return {
"connessioni": {
"nord": uscite_calcolate[0], "est": uscite_calcolate[1],
"sud": uscite_calcolate[2], "ovest": uscite_calcolate[3]
},
"altezze": {
"nord": altezze_calcolate[0], "est": altezze_calcolate[1],
"sud": altezze_calcolate[2], "ovest": altezze_calcolate[3]
}
}

View File

@@ -1 +0,0 @@
uid://s1ohbgbpyu5n

BIN
icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

40
icon.png.import Normal file
View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bfar1kk3pgq8f"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -13,7 +13,7 @@ config_version=5
config/name="tgcc"
run/main_scene="uid://bjkhawylawqof"
config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="res://icon.svg"
config/icon="uid://bfar1kk3pgq8f"
[autoload]
@@ -23,6 +23,7 @@ UIEvents="*uid://dehu28iq27mbn"
window/size/viewport_width=1920
window/size/viewport_height=1080
window/size/mode=3
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"