diff options
Diffstat (limited to 'world')
37 files changed, 2402 insertions, 0 deletions
diff --git a/world/World.gd b/world/World.gd new file mode 100644 index 0000000..3afc4eb --- /dev/null +++ b/world/World.gd @@ -0,0 +1,66 @@ +extends Spatial + +export(NodePath) var traveler = null +onready var _traveler = get_node(traveler) +export var acceleration = 10.0 + +onready var chunk_render_distance = $"ChunkRenderDistance" +onready var chunk_render_mid = $"ChunkRenderMid" +onready var chunk_render_close = $"ChunkRenderClose" + +onready var lod_distance = chunk_render_distance.get_node("Radius").shape.radius +onready var lod_mid = chunk_render_mid.get_node("Radius").shape.radius +onready var lod_close = chunk_render_close.get_node("Radius").shape.radius + +onready var chunk_half_size = $"Chunk/Size".shape.radius +onready var chunk_size = chunk_half_size * 2.0 + +func _ready(): + ChunkLoader.world = self + ChunkGen.setup_monuments() + +func _on_ChunkRenderDistance_area_entered(area:Area): + if area.lod < area.LOD.DISTANCE: + area.lod = area.LOD.DISTANCE + area.lod_update() + +func _on_ChunkRenderMid_area_entered(area:Area): + if area.lod < area.LOD.MID: + area.lod = area.LOD.MID + area.lod_update() + +func _on_ChunkRenderClose_area_entered(area:Area): + if area.lod < area.LOD.CLOSE: + area.lod = area.LOD.CLOSE + area.lod_update() + +func _on_ChunkRenderDistance_area_exited(area:Area): + free_chunk(area) + +func _on_ChunkRenderMid_area_exited(area:Area): + area.lod = area.LOD.DISTANCE + area.lod_update() + +func _on_ChunkRenderClose_area_exited(area:Area): + area.lod = area.LOD.MID + area.lod_update() + +func travel(direction:Vector3): + var heading = _traveler.global_transform.basis + heading = Basis(Vector3.UP*heading.get_euler().y) + direction = -direction + direction = heading * direction + direction = direction.normalized() + $"Chunks".add_central_force(direction*acceleration) + +func _physics_process(_state): + ChunkLoader.chunk_update() + var stick = Input.get_axis("ship_down","ship_up") + if stick != 0.0: + self.travel(Vector3.FORWARD*stick) + +func free_chunk(chunk): + var coords = chunk.transform.origin + coords = Vector2(coords.x,coords.z) + coords = coords.snapped(Vector2(chunk_size,chunk_size)) + ChunkLoader.free_chunk(coords) diff --git a/world/World.tscn b/world/World.tscn new file mode 100644 index 0000000..e5b4a67 --- /dev/null +++ b/world/World.tscn @@ -0,0 +1,65 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://world/World.gd" type="Script" id=1] +[ext_resource path="res://world/chunk/Chunk.tscn" type="PackedScene" id=3] + +[sub_resource type="SphereShape" id=24] +radius = 1000.0 + +[sub_resource type="SphereShape" id=25] +radius = 500.0 + +[sub_resource type="SphereShape" id=26] +radius = 150.0 + +[sub_resource type="BoxShape" id=23] + +[node name="World" type="Spatial"] +script = ExtResource( 1 ) +acceleration = 50.0 + +[node name="ChunkRenderDistance" type="Area" parent="."] +collision_layer = 0 +collision_mask = 32 + +[node name="Radius" type="CollisionShape" parent="ChunkRenderDistance"] +shape = SubResource( 24 ) + +[node name="ChunkRenderMid" type="Area" parent="."] +collision_layer = 0 +collision_mask = 32 + +[node name="Radius" type="CollisionShape" parent="ChunkRenderMid"] +shape = SubResource( 25 ) + +[node name="ChunkRenderClose" type="Area" parent="."] +collision_layer = 0 +collision_mask = 32 + +[node name="Radius" type="CollisionShape" parent="ChunkRenderClose"] +shape = SubResource( 26 ) + +[node name="Chunk" parent="." instance=ExtResource( 3 )] +visible = false +collision_layer = 0 + +[node name="Chunks" type="RigidBody" parent="."] +collision_layer = 0 +collision_mask = 0 +can_sleep = false +axis_lock_linear_y = true +axis_lock_angular_x = true +axis_lock_angular_y = true +axis_lock_angular_z = true +linear_damp = 0.5 + +[node name="CollisionShape" type="CollisionShape" parent="Chunks"] +shape = SubResource( 23 ) + + +[connection signal="area_entered" from="ChunkRenderDistance" to="." method="_on_ChunkRenderDistance_area_entered"] +[connection signal="area_exited" from="ChunkRenderDistance" to="." method="_on_ChunkRenderDistance_area_exited"] +[connection signal="area_entered" from="ChunkRenderMid" to="." method="_on_ChunkRenderMid_area_entered"] +[connection signal="area_exited" from="ChunkRenderMid" to="." method="_on_ChunkRenderMid_area_exited"] +[connection signal="area_entered" from="ChunkRenderClose" to="." method="_on_ChunkRenderClose_area_entered"] +[connection signal="area_exited" from="ChunkRenderClose" to="." method="_on_ChunkRenderClose_area_exited"] diff --git a/world/chunk/Chunk.gd b/world/chunk/Chunk.gd new file mode 100644 index 0000000..4356caf --- /dev/null +++ b/world/chunk/Chunk.gd @@ -0,0 +1,32 @@ +extends Area + +enum LOD {DISTANCE,MID,CLOSE} +var lod = -1 + +onready var lod_distance = $"gen_tree/lod_distance" +onready var lod_mid = $"gen_tree/lod_mid" +onready var lod_close = $"gen_tree/lod_close" + +onready var _collision_enabled = lod_close.collision_layer + +func _ready(): + lod_update() + +func lod_update(): + match lod: + LOD.CLOSE: + lod_distance.visible = false + lod_mid.visible = true + lod_close.collision_layer = _collision_enabled + LOD.MID: + lod_distance.visible = false + lod_mid.visible = true + lod_close.collision_layer = 0 + LOD.DISTANCE: + lod_distance.visible = true + lod_mid.visible = false + lod_close.collision_layer = 0 + _: + lod_distance.visible = true + lod_mid.visible = false + lod_close.collision_layer = 0 diff --git a/world/chunk/Chunk.tscn b/world/chunk/Chunk.tscn new file mode 100644 index 0000000..5377ae9 --- /dev/null +++ b/world/chunk/Chunk.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://world/chunk/Chunk.gd" type="Script" id=1] +[ext_resource path="res://world/chunk/helper/ChunkedCSGMesh.gd" type="Script" id=2] + +[sub_resource type="SphereShape" id=1] +radius = 50.0 + +[sub_resource type="SpatialMaterial" id=3] +flags_unshaded = true +params_cull_mode = 2 +albedo_color = Color( 0.937255, 0, 1, 1 ) + +[sub_resource type="PlaneMesh" id=2] +size = Vector2( 100, 100 ) + +[sub_resource type="PlaneMesh" id=4] +size = Vector2( 98, 98 ) + +[node name="Chunk" type="Area"] +collision_layer = 32 +collision_mask = 0 +script = ExtResource( 1 ) + +[node name="Size" type="CollisionShape" parent="."] +shape = SubResource( 1 ) + +[node name="Border" type="CSGMesh" parent="."] +material_override = SubResource( 3 ) +script = ExtResource( 2 ) +_mesh = SubResource( 2 ) + +[node name="CSGMesh" type="CSGMesh" parent="Border"] +operation = 2 +script = ExtResource( 2 ) +_mesh = SubResource( 4 ) + +[node name="gen_tree" type="Spatial" parent="."] + +[node name="lod_distance" type="Spatial" parent="gen_tree"] + +[node name="lod_mid" type="Spatial" parent="gen_tree"] + +[node name="lod_close" type="StaticBody" parent="gen_tree"] +collision_layer = 8 +collision_mask = 0 diff --git a/world/chunk/ChunkGen.gd b/world/chunk/ChunkGen.gd new file mode 100644 index 0000000..994d624 --- /dev/null +++ b/world/chunk/ChunkGen.gd @@ -0,0 +1,123 @@ +extends Node + +onready var noise = OpenSimplexNoise.new() +onready var rng = RandomNumberGenerator.new() +var _seed + +var monuments = [] + +func _ready(): + #randomize() + #self._seed = randi() + self._seed = 0 + self.noise.seed = self._seed + self.noise.seed = 0 + self.noise.period = 16 + self.noise.persistence = 0 + self.rng.seed = self._seed + +func setup_monuments(): + monuments.push_back(DockMonument.new(Transform(Basis().rotated(Vector3.UP,0.0),Vector3(0.0,0.0,-600.0)))) + monuments.push_back(DockMonument.new(Transform(Basis().rotated(Vector3.UP,PI),Vector3(0.0,0.0,600.0)))) + +func rng_2dv(coords:Vector2): + self.rng.seed = hash(coords) + +func gen_chunk(chunk,dummy=false): + if dummy: + return + var monument = get_monument_at_chunk(ChunkLoader.v2_coords(chunk.transform.origin)) + if monument != null: + gen_monument(chunk, monument) + else: + gen_distance(chunk,chunk.get_node("gen_tree/lod_distance")) + gen_mid(chunk,chunk.get_node("gen_tree/lod_mid")) + gen_close(chunk,chunk.get_node("gen_tree/lod_close")) + +func get_monument_at_chunk(chunk_coords:Vector2): + for monument in monuments: + if monument.is_chunk_in_monument(chunk_coords): + return monument + return null + +func gen_monument(chunk, monument): + var offset_to_origin = monument.origin_chunk - ChunkLoader.v2_coords(chunk.transform.origin) + var inst = monument.scene.instance() + inst.transform.origin = ChunkLoader.v3_coords(offset_to_origin) + inst.transform.basis = monument.xform.basis + chunk.add_child(inst) + +func gen_distance(chunk,tree): + gen_lowres_rocks(chunk,tree) + +func gen_mid(chunk,tree): + gen_rocks(chunk,tree) + +func gen_close(chunk,tree): + gen_rock_hitboxes(chunk,tree) + +func iterate_chunk(chunk,tree,step:Vector2,cb:FuncRef,data): + var chunk_half_size = ChunkLoader.world.chunk_half_size + var chunk_size_rounded = Vector2(chunk_half_size,chunk_half_size).snapped(step) + for x in range(-chunk_size_rounded.x,chunk_size_rounded.x,step.x): + for y in range(-chunk_size_rounded.y,chunk_size_rounded.y,step.y): + cb.call_func(chunk,tree,Vector2(x,y),data) + +func make_multimesh(name,cnt,mesh): + var multi_inst = MultiMeshInstance.new() + multi_inst.name = name + var multi = MultiMesh.new() + multi_inst.multimesh = multi + multi.transform_format = MultiMesh.TRANSFORM_3D + multi.instance_count = cnt + multi.visible_instance_count = 0 + multi.mesh = mesh + return multi_inst + +var rock_mesh = preload("res://world/obstacles/Rock_mesh.tres") +var rock_mat = preload("res://world/obstacles/Rock_mat.tres") +func gen_rocks(chunk,tree): + rock_mesh.material = rock_mat + var multi = make_multimesh("rocks",200,rock_mesh) + tree.add_child(multi) + iterate_chunk(chunk, multi.multimesh, Vector2(10.0,10.0), funcref(self,"rock_rng"), [0.4,0.6,1.0,4.0,1.0,funcref(self,"make_rock")]) + +var rock_lowres_mesh = preload("res://world/obstacles/Rock_lowres_mesh.tres") +func gen_lowres_rocks(chunk,tree): + rock_lowres_mesh.material = rock_mat + var multi = make_multimesh("rocks",50,rock_lowres_mesh) + tree.add_child(multi) + iterate_chunk(chunk, multi.multimesh, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0.4,0.6,2.0,8.0,0.5,funcref(self,"make_rock")]) + +var rock_coll = preload("res://world/obstacles/Rock_coll.tres") +func gen_rock_hitboxes(chunk,tree): + iterate_chunk(chunk, tree, Vector2(20.0,20.0), funcref(self,"rock_rng"), [0.4,0.6,1.0,4.0,1.0,funcref(self,"make_rock_hitbox")]) + +func rock_rng(chunk,rocks,chunk_coords:Vector2,data): + var coords = ChunkLoader.v3_coords(chunk_coords) + var basis = Basis() + var world_coords = chunk_coords + ChunkLoader.v2_coords(chunk.transform.origin) + self.rng_2dv(world_coords) + var rng_val = self.rng.randf_range(0.0,TAU) + basis = Basis(Vector3.UP,rng_val) * basis + var noise_val = self.noise.get_noise_2dv(world_coords * 0.125) + if noise_val < data[0]: + return + noise_val = min(noise_val,data[1]) + noise_val -= data[0] + noise_val /= data[1] - data[0] + noise_val = lerp(data[2],data[3],noise_val) + basis = basis.scaled(Vector3.ONE*noise_val) + basis = basis.scaled(Vector3(1.0,data[4],1.0)) + coords.y += (noise_val*data[4]*5.0)-5.0 + data[5].call_func(rocks,Transform(basis,coords)) + +func make_rock(rocks,xform:Transform): + rocks.visible_instance_count += 1 + rocks.set_instance_transform(rocks.visible_instance_count-1, xform) + +func make_rock_hitbox(rocks,xform:Transform): + var shape = CollisionShape.new() + shape.shape = rock_coll + shape.transform = xform + rocks.add_child(shape) diff --git a/world/chunk/ChunkLoader.gd b/world/chunk/ChunkLoader.gd new file mode 100644 index 0000000..0ea422a --- /dev/null +++ b/world/chunk/ChunkLoader.gd @@ -0,0 +1,131 @@ +extends Node + +var world = null + +var Chunk = preload("res://world/chunk/Chunk.tscn") +var loaded_chunks = {} +var freed_chunks = {} +var chunk_thread = Thread.new() +var mtx = Mutex.new() +var sgnl = Semaphore.new() +var exit = false +var chunk_to_load = null +var chunk_to_len +var chunk_to_dummy + +func _ready(): + chunk_thread.start(self, "chunk_loader") + +func _exit_tree(): + mtx.lock() + exit = true + sgnl.post() + mtx.unlock() + chunk_thread.wait_to_finish() + +func v2_coords(coords:Vector3): + return Vector2(coords.x,coords.z) + +func chunk_coords(coords:Vector2): + return coords.snapped(Vector2(world.chunk_size,world.chunk_size)) + +func v3_coords(coords:Vector2): + return Vector3(coords.x,0.0,coords.y) + +func free_chunk(coords:Vector2): + var monument = ChunkGen.get_monument_at_chunk(coords) + if monument != null && monument.loaded_chunk != null && monument.loaded_chunk == coords: + return + if !loaded_chunks.has(coords): + return + freed_chunks[coords] = loaded_chunks[coords] + loaded_chunks.erase(coords) + +func clean_chunks(): + var cleaned = {} + for chunk in freed_chunks.keys(): + var c = freed_chunks[chunk].get_ref() + if c == null: + cleaned[chunk] = c + continue + c.queue_free() + for chunk in cleaned.keys(): + freed_chunks.erase(chunk) + +func chunk_update(): + var chunks = {} + var gen_center = -v2_coords(world.get_node("Chunks").transform.origin) + var gen_radius = world.lod_distance + var gen_radius_rounded = stepify(gen_radius, world.chunk_size) + for x in range(-gen_radius_rounded, gen_radius_rounded+world.chunk_size, world.chunk_size): + for y in range(-gen_radius_rounded, gen_radius_rounded+world.chunk_size, world.chunk_size): + var gen_coords = Vector2(x,y) + var coords_len = gen_coords.length() + if coords_len > gen_radius: + continue + var coords = chunk_coords(gen_coords + gen_center) + chunks[coords] = coords_len + var closest_unloaded_chunk = null + var closest_len = 0.0 + for chunk in chunks.keys(): + if !loaded_chunks.has(chunk): + var chunk_len = chunks[chunk] + if closest_unloaded_chunk == null || closest_len > chunk_len: + closest_unloaded_chunk = chunk + closest_len = chunk_len + if closest_unloaded_chunk != null: + var dummy = false + var monument = ChunkGen.get_monument_at_chunk(closest_unloaded_chunk) + if monument != null && monument.loaded_chunk != null: + dummy = true + mtx.lock() + if chunk_to_load == null: + chunk_to_load = closest_unloaded_chunk + chunk_to_len = closest_len + chunk_to_dummy = dummy + sgnl.post() + mtx.unlock() + for monument in ChunkGen.monuments: + if monument.loaded_chunk != null: + var loaded = false + for chunk in chunks.keys(): + if monument.chunks.has(chunk): + loaded = true + break + if !loaded: + monument.loaded_chunk = null + for chunk in loaded_chunks.keys(): + if !chunks.has(chunk): + free_chunk(chunk) + clean_chunks() + +func chunk_loader(): + while true: + sgnl.wait() + mtx.lock() + var x = exit + var coords = chunk_to_load + var lod = chunk_to_len + var dummy = chunk_to_dummy + mtx.unlock() + if x: + break + var chunk = Chunk.instance() + chunk.transform.origin = Vector3(coords.x,0.0,coords.y) + lod -= world.chunk_size + var tmp = world.get_node("Chunk") + chunk.lod = tmp.LOD.CLOSE if lod <= world.lod_close else tmp.LOD.MID if lod <= world.lod_mid else tmp.LOD.DISTANCE + ChunkGen.gen_chunk(chunk,dummy) + self.call_deferred("finish_chunk", chunk) + +func finish_chunk(chunk): + mtx.lock() + chunk_to_load = null + mtx.unlock() + world.get_node("Chunks").add_child(chunk) + var coords = v2_coords(chunk.transform.origin) + loaded_chunks[coords] = weakref(chunk) + var monument = ChunkGen.get_monument_at_chunk(coords) + if monument != null: + if monument.loaded_chunk == null: + monument.loaded_chunk = coords diff --git a/world/chunk/helper/ChunkedCSGMesh.gd b/world/chunk/helper/ChunkedCSGMesh.gd new file mode 100644 index 0000000..2b8c6db --- /dev/null +++ b/world/chunk/helper/ChunkedCSGMesh.gd @@ -0,0 +1,6 @@ +extends CSGMesh + +export(Mesh) var _mesh + +func _ready(): + self.mesh = _mesh diff --git a/world/chunk/helper/ChunkedMeshInstance.gd b/world/chunk/helper/ChunkedMeshInstance.gd new file mode 100644 index 0000000..dde7eda --- /dev/null +++ b/world/chunk/helper/ChunkedMeshInstance.gd @@ -0,0 +1,6 @@ +extends MeshInstance + +export(Mesh) var _mesh + +func _ready(): + self.mesh = _mesh diff --git a/world/chunk/helper/ChunkedSprite3D.gd b/world/chunk/helper/ChunkedSprite3D.gd new file mode 100644 index 0000000..c9e0be9 --- /dev/null +++ b/world/chunk/helper/ChunkedSprite3D.gd @@ -0,0 +1,6 @@ +extends Sprite3D + +export(Texture) var _tex + +func _ready(): + self.texture = _tex diff --git a/world/monuments/Dock.tscn b/world/monuments/Dock.tscn new file mode 100644 index 0000000..5a21576 --- /dev/null +++ b/world/monuments/Dock.tscn @@ -0,0 +1,163 @@ +[gd_scene load_steps=14 format=2] + +[sub_resource type="OpenSimplexNoise" id=1] +period = 128.0 +persistence = 1.0 +lacunarity = 4.0 + +[sub_resource type="NoiseTexture" id=2] +noise = SubResource( 1 ) + +[sub_resource type="NoiseTexture" id=3] +seamless = true +as_normalmap = true +noise = SubResource( 1 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.905882, 0.823529, 0.427451, 1 ) +albedo_texture = SubResource( 2 ) +emission_enabled = true +emission = Color( 0.905882, 0.823529, 0.427451, 1 ) +emission_energy = 0.2 +emission_operator = 0 +emission_on_uv2 = false +normal_enabled = true +normal_scale = 1.0 +normal_texture = SubResource( 3 ) +uv1_triplanar = true + +[sub_resource type="SphereMesh" id=5] +material = SubResource( 4 ) +radius = 50.0 +height = 50.0 + +[sub_resource type="SpatialMaterial" id=6] +emission_enabled = true +emission = Color( 1, 1, 1, 1 ) +emission_energy = 0.25 +emission_operator = 0 +emission_on_uv2 = false + +[sub_resource type="CubeMesh" id=7] +material = SubResource( 6 ) +size = Vector3( 150, 50, 100 ) + +[sub_resource type="Gradient" id=8] +interpolation_mode = 1 +offsets = PoolRealArray( 0.0724138, 0.52069 ) +colors = PoolColorArray( 1, 1, 1, 1, 0, 0, 0, 1 ) + +[sub_resource type="GradientTexture2D" id=9] +gradient = SubResource( 8 ) +width = 5 +height = 5 +fill = 1 +fill_from = Vector2( 0.5, 0.5 ) +repeat = 1 + +[sub_resource type="SpatialMaterial" id=10] +albedo_color = Color( 0.521569, 0.298039, 0.00392157, 1 ) +albedo_texture = SubResource( 9 ) +uv1_triplanar = true + +[sub_resource type="PrismMesh" id=11] +material = SubResource( 10 ) +size = Vector3( 150, 50, 100 ) + +[sub_resource type="CubeMesh" id=12] +material = SubResource( 10 ) +size = Vector3( 5, 50, 150 ) + +[sub_resource type="CubeMesh" id=13] +material = SubResource( 10 ) +size = Vector3( 100, 5, 30 ) + +[node name="Dock" type="Spatial"] + +[node name="Shore" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -15, 0 ) + +[node name="MeshInstance" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -100, 0, 0 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance2" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 100, 0, 0 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance7" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -100, 0, 70 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance8" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 100, 0, 70 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance3" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -30, 0, -50 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance4" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30, 0, -50 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance5" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -30, 0, -140 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance9" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -115, 0, -50 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance10" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -115, 0, -140 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance6" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 30, 0, -140 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance11" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 115, 0, -50 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="MeshInstance12" type="MeshInstance" parent="Shore"] +transform = Transform( -4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 115, 0, -140 ) +mesh = SubResource( 5 ) +skeleton = NodePath("../..") + +[node name="House" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 25, -80 ) + +[node name="MeshInstance" type="MeshInstance" parent="House"] +mesh = SubResource( 7 ) + +[node name="MeshInstance2" type="MeshInstance" parent="House"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 50, 0 ) +mesh = SubResource( 11 ) + +[node name="Dock" type="Spatial" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -10, 50 ) + +[node name="MeshInstance" type="MeshInstance" parent="Dock"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0 ) +mesh = SubResource( 12 ) + +[node name="MeshInstance2" type="MeshInstance" parent="Dock"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0 ) +mesh = SubResource( 12 ) + +[node name="MeshInstance3" type="MeshInstance" parent="Dock"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -40 ) +mesh = SubResource( 13 ) diff --git a/world/monuments/DockMonument.gd b/world/monuments/DockMonument.gd new file mode 100644 index 0000000..2ac0c71 --- /dev/null +++ b/world/monuments/DockMonument.gd @@ -0,0 +1,19 @@ +extends Monument +class_name DockMonument + +var packed_scene = preload("res://world/monuments/Dock.tscn") + +func _init(xform:Transform).(xform,packed_scene,_chunks(),_origin()): + pass + +func _chunks(): + var chunk_size = ChunkLoader.world.chunk_size + var c = {} + var width = stepify(200.0,chunk_size) + for x in range(-width,width+chunk_size,chunk_size): + for y in range(-width,width+chunk_size,chunk_size): + c[Vector2(x,y)] = true + return c + +func _origin(): + return Vector2(0.0,0.0) diff --git a/world/monuments/Monument.gd b/world/monuments/Monument.gd new file mode 100644 index 0000000..86074f1 --- /dev/null +++ b/world/monuments/Monument.gd @@ -0,0 +1,21 @@ +class_name Monument + +var xform:Transform = Transform(Basis(),Vector3.ZERO) +var scene:PackedScene = null +var chunks = {} +var origin_chunk = Vector2.ZERO +var loaded_chunk = null + +func is_chunk_in_monument(chunk_coords:Vector2): + return self.chunks.has(chunk_coords) + +func _init(transform,scn,member_chunks, origin): + self.xform = transform + self.xform.origin = ChunkLoader.v3_coords(ChunkLoader.chunk_coords(ChunkLoader.v2_coords(self.xform.origin))) + self.scene = scn + var org = ChunkLoader.chunk_coords(ChunkLoader.v2_coords(self.xform.origin)) + for c in member_chunks.keys(): + var c2 = ChunkLoader.v2_coords(self.xform.basis * ChunkLoader.v3_coords(c)) + self.chunks[ChunkLoader.chunk_coords(c2)+org] = member_chunks[c] + origin = ChunkLoader.v2_coords(self.xform.basis * ChunkLoader.v3_coords(origin)) + self.origin_chunk = ChunkLoader.chunk_coords(origin)+org diff --git a/world/monuments/lighthouse/frame.material b/world/monuments/lighthouse/frame.material Binary files differnew file mode 100644 index 0000000..ee5c337 --- /dev/null +++ b/world/monuments/lighthouse/frame.material diff --git a/world/monuments/lighthouse/light.material b/world/monuments/lighthouse/light.material Binary files differnew file mode 100644 index 0000000..1bed6c4 --- /dev/null +++ b/world/monuments/lighthouse/light.material diff --git a/world/monuments/lighthouse/lighthouse.bin b/world/monuments/lighthouse/lighthouse.bin Binary files differnew file mode 100644 index 0000000..ebff487 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.bin diff --git a/world/monuments/lighthouse/lighthouse.blend b/world/monuments/lighthouse/lighthouse.blend Binary files differnew file mode 100644 index 0000000..66032c4 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.blend diff --git a/world/monuments/lighthouse/lighthouse.gd b/world/monuments/lighthouse/lighthouse.gd new file mode 100644 index 0000000..742bad0 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.gd @@ -0,0 +1,6 @@ +extends Spatial + +onready var anim = $AnimationPlayer + +func _ready(): + anim.play("spin_light") diff --git a/world/monuments/lighthouse/lighthouse.gltf b/world/monuments/lighthouse/lighthouse.gltf new file mode 100644 index 0000000..c35c00e --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.gltf @@ -0,0 +1,334 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v3.2.43", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 1 + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "light", + "rotation" : [ + 0.7071068286895752, + 0, + 0, + 0.7071068286895752 + ], + "translation" : [ + 0, + 165.63571166992188, + 0 + ] + }, + { + "children" : [ + 0 + ], + "mesh" : 1, + "name" : "lighthouse" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "frame", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "doubleSided" : true, + "name" : "light", + "pbrMetallicRoughness" : { + "baseColorFactor" : [ + 0.800000011920929, + 0.800000011920929, + 0.800000011920929, + 1 + ], + "metallicFactor" : 0, + "roughnessFactor" : 0.5 + } + }, + { + "alphaMode" : "BLEND", + "doubleSided" : true, + "name" : "lighthouse_baked", + "normalTexture" : { + "index" : 0 + }, + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 1 + }, + "metallicFactor" : 0, + "metallicRoughnessTexture" : { + "index" : 2 + } + } + } + ], + "meshes" : [ + { + "name" : "Cylinder.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1, + "TEXCOORD_0" : 2 + }, + "indices" : 3, + "material" : 0 + }, + { + "attributes" : { + "POSITION" : 4, + "NORMAL" : 5, + "TEXCOORD_0" : 6 + }, + "indices" : 7, + "material" : 1 + } + ] + }, + { + "name" : "Cylinder", + "primitives" : [ + { + "attributes" : { + "POSITION" : 8, + "NORMAL" : 9, + "TEXCOORD_0" : 10 + }, + "indices" : 11, + "material" : 2 + } + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + }, + { + "sampler" : 0, + "source" : 1 + }, + { + "sampler" : 0, + "source" : 2 + } + ], + "images" : [ + { + "mimeType" : "image/png", + "name" : "lighthouse_normal", + "uri" : "lighthouse_normal.png" + }, + { + "mimeType" : "image/png", + "name" : "lighthouse_color.png-lighthouse_alpha.png", + "uri" : "lighthouse_color_png-lighthouse_alpha_png.png" + }, + { + "mimeType" : "image/png", + "name" : "lighthouse_roughness", + "uri" : "lighthouse_roughness.png" + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 210, + "max" : [ + 5.64951229095459, + 4.4629106521606445, + 13.288947105407715 + ], + "min" : [ + -6.005587577819824, + -4.4629106521606445, + -4.4629106521606445 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 210, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 210, + "type" : "VEC2" + }, + { + "bufferView" : 3, + "componentType" : 5123, + "count" : 552, + "type" : "SCALAR" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 32, + "max" : [ + 3.8446998596191406, + 3.766223430633545, + 3.8446998596191406 + ], + "min" : [ + -3.8446998596191406, + -3.766223430633545, + -3.8446998596191406 + ], + "type" : "VEC3" + }, + { + "bufferView" : 5, + "componentType" : 5126, + "count" : 32, + "type" : "VEC3" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 32, + "type" : "VEC2" + }, + { + "bufferView" : 7, + "componentType" : 5123, + "count" : 84, + "type" : "SCALAR" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 1799, + "max" : [ + 17.421993255615234, + 220.5261993408203, + 17.421993255615234 + ], + "min" : [ + -17.421993255615234, + -1.8970633391290903e-05, + -17.421993255615234 + ], + "type" : "VEC3" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 1799, + "type" : "VEC3" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 1799, + "type" : "VEC2" + }, + { + "bufferView" : 11, + "componentType" : 5123, + "count" : 6324, + "type" : "SCALAR" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 2520, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 2520, + "byteOffset" : 2520 + }, + { + "buffer" : 0, + "byteLength" : 1680, + "byteOffset" : 5040 + }, + { + "buffer" : 0, + "byteLength" : 1104, + "byteOffset" : 6720 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 7824 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 8208 + }, + { + "buffer" : 0, + "byteLength" : 256, + "byteOffset" : 8592 + }, + { + "buffer" : 0, + "byteLength" : 168, + "byteOffset" : 8848 + }, + { + "buffer" : 0, + "byteLength" : 21588, + "byteOffset" : 9016 + }, + { + "buffer" : 0, + "byteLength" : 21588, + "byteOffset" : 30604 + }, + { + "buffer" : 0, + "byteLength" : 14392, + "byteOffset" : 52192 + }, + { + "buffer" : 0, + "byteLength" : 12648, + "byteOffset" : 66584 + } + ], + "samplers" : [ + { + "magFilter" : 9729, + "minFilter" : 9987 + } + ], + "buffers" : [ + { + "byteLength" : 79232, + "uri" : "lighthouse.bin" + } + ] +} diff --git a/world/monuments/lighthouse/lighthouse.gltf.import b/world/monuments/lighthouse/lighthouse.gltf.import new file mode 100644 index 0000000..a3fec4e --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.gltf.import @@ -0,0 +1,1065 @@ +[remap] + +importer="scene" +type="PackedScene" +path="res://.import/lighthouse.gltf-348510f5a2683ba7ecc55d0138589c98.scn" + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse.gltf" +dest_files=[ "res://.import/lighthouse.gltf-348510f5a2683ba7ecc55d0138589c98.scn" ] + +[params] + +nodes/root_type="Spatial" +nodes/root_name="Scene Root" +nodes/root_scale=1.0 +nodes/custom_script="" +nodes/storage=0 +nodes/use_legacy_names=false +materials/location=1 +materials/storage=1 +materials/keep_on_reimport=true +meshes/octahedral_compression=true +meshes/compress=4286 +meshes/ensure_tangents=true +meshes/storage=0 +meshes/light_baking=0 +meshes/lightmap_texel_size=0.1 +skins/use_named_skins=true +external_files/store_in_subdir=false +animation/import=true +animation/fps=15 +animation/filter_script="" +animation/storage=false +animation/keep_custom_tracks=false +animation/optimizer/enabled=true +animation/optimizer/max_linear_error=0.05 +animation/optimizer/max_angular_error=0.01 +animation/optimizer/max_angle=22 +animation/optimizer/remove_unused_tracks=true +animation/clips/amount=0 +animation/clip_1/name="" +animation/clip_1/start_frame=0 +animation/clip_1/end_frame=0 +animation/clip_1/loops=false +animation/clip_2/name="" +animation/clip_2/start_frame=0 +animation/clip_2/end_frame=0 +animation/clip_2/loops=false +animation/clip_3/name="" +animation/clip_3/start_frame=0 +animation/clip_3/end_frame=0 +animation/clip_3/loops=false +animation/clip_4/name="" +animation/clip_4/start_frame=0 +animation/clip_4/end_frame=0 +animation/clip_4/loops=false +animation/clip_5/name="" +animation/clip_5/start_frame=0 +animation/clip_5/end_frame=0 +animation/clip_5/loops=false +animation/clip_6/name="" +animation/clip_6/start_frame=0 +animation/clip_6/end_frame=0 +animation/clip_6/loops=false +animation/clip_7/name="" +animation/clip_7/start_frame=0 +animation/clip_7/end_frame=0 +animation/clip_7/loops=false +animation/clip_8/name="" +animation/clip_8/start_frame=0 +animation/clip_8/end_frame=0 +animation/clip_8/loops=false +animation/clip_9/name="" +animation/clip_9/start_frame=0 +animation/clip_9/end_frame=0 +animation/clip_9/loops=false +animation/clip_10/name="" +animation/clip_10/start_frame=0 +animation/clip_10/end_frame=0 +animation/clip_10/loops=false +animation/clip_11/name="" +animation/clip_11/start_frame=0 +animation/clip_11/end_frame=0 +animation/clip_11/loops=false +animation/clip_12/name="" +animation/clip_12/start_frame=0 +animation/clip_12/end_frame=0 +animation/clip_12/loops=false +animation/clip_13/name="" +animation/clip_13/start_frame=0 +animation/clip_13/end_frame=0 +animation/clip_13/loops=false +animation/clip_14/name="" +animation/clip_14/start_frame=0 +animation/clip_14/end_frame=0 +animation/clip_14/loops=false +animation/clip_15/name="" +animation/clip_15/start_frame=0 +animation/clip_15/end_frame=0 +animation/clip_15/loops=false +animation/clip_16/name="" +animation/clip_16/start_frame=0 +animation/clip_16/end_frame=0 +animation/clip_16/loops=false +animation/clip_17/name="" +animation/clip_17/start_frame=0 +animation/clip_17/end_frame=0 +animation/clip_17/loops=false +animation/clip_18/name="" +animation/clip_18/start_frame=0 +animation/clip_18/end_frame=0 +animation/clip_18/loops=false +animation/clip_19/name="" +animation/clip_19/start_frame=0 +animation/clip_19/end_frame=0 +animation/clip_19/loops=false +animation/clip_20/name="" +animation/clip_20/start_frame=0 +animation/clip_20/end_frame=0 +animation/clip_20/loops=false +animation/clip_21/name="" +animation/clip_21/start_frame=0 +animation/clip_21/end_frame=0 +animation/clip_21/loops=false +animation/clip_22/name="" +animation/clip_22/start_frame=0 +animation/clip_22/end_frame=0 +animation/clip_22/loops=false +animation/clip_23/name="" +animation/clip_23/start_frame=0 +animation/clip_23/end_frame=0 +animation/clip_23/loops=false +animation/clip_24/name="" +animation/clip_24/start_frame=0 +animation/clip_24/end_frame=0 +animation/clip_24/loops=false +animation/clip_25/name="" +animation/clip_25/start_frame=0 +animation/clip_25/end_frame=0 +animation/clip_25/loops=false +animation/clip_26/name="" +animation/clip_26/start_frame=0 +animation/clip_26/end_frame=0 +animation/clip_26/loops=false +animation/clip_27/name="" +animation/clip_27/start_frame=0 +animation/clip_27/end_frame=0 +animation/clip_27/loops=false +animation/clip_28/name="" +animation/clip_28/start_frame=0 +animation/clip_28/end_frame=0 +animation/clip_28/loops=false +animation/clip_29/name="" +animation/clip_29/start_frame=0 +animation/clip_29/end_frame=0 +animation/clip_29/loops=false +animation/clip_30/name="" +animation/clip_30/start_frame=0 +animation/clip_30/end_frame=0 +animation/clip_30/loops=false +animation/clip_31/name="" +animation/clip_31/start_frame=0 +animation/clip_31/end_frame=0 +animation/clip_31/loops=false +animation/clip_32/name="" +animation/clip_32/start_frame=0 +animation/clip_32/end_frame=0 +animation/clip_32/loops=false +animation/clip_33/name="" +animation/clip_33/start_frame=0 +animation/clip_33/end_frame=0 +animation/clip_33/loops=false +animation/clip_34/name="" +animation/clip_34/start_frame=0 +animation/clip_34/end_frame=0 +animation/clip_34/loops=false +animation/clip_35/name="" +animation/clip_35/start_frame=0 +animation/clip_35/end_frame=0 +animation/clip_35/loops=false +animation/clip_36/name="" +animation/clip_36/start_frame=0 +animation/clip_36/end_frame=0 +animation/clip_36/loops=false +animation/clip_37/name="" +animation/clip_37/start_frame=0 +animation/clip_37/end_frame=0 +animation/clip_37/loops=false +animation/clip_38/name="" +animation/clip_38/start_frame=0 +animation/clip_38/end_frame=0 +animation/clip_38/loops=false +animation/clip_39/name="" +animation/clip_39/start_frame=0 +animation/clip_39/end_frame=0 +animation/clip_39/loops=false +animation/clip_40/name="" +animation/clip_40/start_frame=0 +animation/clip_40/end_frame=0 +animation/clip_40/loops=false +animation/clip_41/name="" +animation/clip_41/start_frame=0 +animation/clip_41/end_frame=0 +animation/clip_41/loops=false +animation/clip_42/name="" +animation/clip_42/start_frame=0 +animation/clip_42/end_frame=0 +animation/clip_42/loops=false +animation/clip_43/name="" +animation/clip_43/start_frame=0 +animation/clip_43/end_frame=0 +animation/clip_43/loops=false +animation/clip_44/name="" +animation/clip_44/start_frame=0 +animation/clip_44/end_frame=0 +animation/clip_44/loops=false +animation/clip_45/name="" +animation/clip_45/start_frame=0 +animation/clip_45/end_frame=0 +animation/clip_45/loops=false +animation/clip_46/name="" +animation/clip_46/start_frame=0 +animation/clip_46/end_frame=0 +animation/clip_46/loops=false +animation/clip_47/name="" +animation/clip_47/start_frame=0 +animation/clip_47/end_frame=0 +animation/clip_47/loops=false +animation/clip_48/name="" +animation/clip_48/start_frame=0 +animation/clip_48/end_frame=0 +animation/clip_48/loops=false +animation/clip_49/name="" +animation/clip_49/start_frame=0 +animation/clip_49/end_frame=0 +animation/clip_49/loops=false +animation/clip_50/name="" +animation/clip_50/start_frame=0 +animation/clip_50/end_frame=0 +animation/clip_50/loops=false +animation/clip_51/name="" +animation/clip_51/start_frame=0 +animation/clip_51/end_frame=0 +animation/clip_51/loops=false +animation/clip_52/name="" +animation/clip_52/start_frame=0 +animation/clip_52/end_frame=0 +animation/clip_52/loops=false +animation/clip_53/name="" +animation/clip_53/start_frame=0 +animation/clip_53/end_frame=0 +animation/clip_53/loops=false +animation/clip_54/name="" +animation/clip_54/start_frame=0 +animation/clip_54/end_frame=0 +animation/clip_54/loops=false +animation/clip_55/name="" +animation/clip_55/start_frame=0 +animation/clip_55/end_frame=0 +animation/clip_55/loops=false +animation/clip_56/name="" +animation/clip_56/start_frame=0 +animation/clip_56/end_frame=0 +animation/clip_56/loops=false +animation/clip_57/name="" +animation/clip_57/start_frame=0 +animation/clip_57/end_frame=0 +animation/clip_57/loops=false +animation/clip_58/name="" +animation/clip_58/start_frame=0 +animation/clip_58/end_frame=0 +animation/clip_58/loops=false +animation/clip_59/name="" +animation/clip_59/start_frame=0 +animation/clip_59/end_frame=0 +animation/clip_59/loops=false +animation/clip_60/name="" +animation/clip_60/start_frame=0 +animation/clip_60/end_frame=0 +animation/clip_60/loops=false +animation/clip_61/name="" +animation/clip_61/start_frame=0 +animation/clip_61/end_frame=0 +animation/clip_61/loops=false +animation/clip_62/name="" +animation/clip_62/start_frame=0 +animation/clip_62/end_frame=0 +animation/clip_62/loops=false +animation/clip_63/name="" +animation/clip_63/start_frame=0 +animation/clip_63/end_frame=0 +animation/clip_63/loops=false +animation/clip_64/name="" +animation/clip_64/start_frame=0 +animation/clip_64/end_frame=0 +animation/clip_64/loops=false +animation/clip_65/name="" +animation/clip_65/start_frame=0 +animation/clip_65/end_frame=0 +animation/clip_65/loops=false +animation/clip_66/name="" +animation/clip_66/start_frame=0 +animation/clip_66/end_frame=0 +animation/clip_66/loops=false +animation/clip_67/name="" +animation/clip_67/start_frame=0 +animation/clip_67/end_frame=0 +animation/clip_67/loops=false +animation/clip_68/name="" +animation/clip_68/start_frame=0 +animation/clip_68/end_frame=0 +animation/clip_68/loops=false +animation/clip_69/name="" +animation/clip_69/start_frame=0 +animation/clip_69/end_frame=0 +animation/clip_69/loops=false +animation/clip_70/name="" +animation/clip_70/start_frame=0 +animation/clip_70/end_frame=0 +animation/clip_70/loops=false +animation/clip_71/name="" +animation/clip_71/start_frame=0 +animation/clip_71/end_frame=0 +animation/clip_71/loops=false +animation/clip_72/name="" +animation/clip_72/start_frame=0 +animation/clip_72/end_frame=0 +animation/clip_72/loops=false +animation/clip_73/name="" +animation/clip_73/start_frame=0 +animation/clip_73/end_frame=0 +animation/clip_73/loops=false +animation/clip_74/name="" +animation/clip_74/start_frame=0 +animation/clip_74/end_frame=0 +animation/clip_74/loops=false +animation/clip_75/name="" +animation/clip_75/start_frame=0 +animation/clip_75/end_frame=0 +animation/clip_75/loops=false +animation/clip_76/name="" +animation/clip_76/start_frame=0 +animation/clip_76/end_frame=0 +animation/clip_76/loops=false +animation/clip_77/name="" +animation/clip_77/start_frame=0 +animation/clip_77/end_frame=0 +animation/clip_77/loops=false +animation/clip_78/name="" +animation/clip_78/start_frame=0 +animation/clip_78/end_frame=0 +animation/clip_78/loops=false +animation/clip_79/name="" +animation/clip_79/start_frame=0 +animation/clip_79/end_frame=0 +animation/clip_79/loops=false +animation/clip_80/name="" +animation/clip_80/start_frame=0 +animation/clip_80/end_frame=0 +animation/clip_80/loops=false +animation/clip_81/name="" +animation/clip_81/start_frame=0 +animation/clip_81/end_frame=0 +animation/clip_81/loops=false +animation/clip_82/name="" +animation/clip_82/start_frame=0 +animation/clip_82/end_frame=0 +animation/clip_82/loops=false +animation/clip_83/name="" +animation/clip_83/start_frame=0 +animation/clip_83/end_frame=0 +animation/clip_83/loops=false +animation/clip_84/name="" +animation/clip_84/start_frame=0 +animation/clip_84/end_frame=0 +animation/clip_84/loops=false +animation/clip_85/name="" +animation/clip_85/start_frame=0 +animation/clip_85/end_frame=0 +animation/clip_85/loops=false +animation/clip_86/name="" +animation/clip_86/start_frame=0 +animation/clip_86/end_frame=0 +animation/clip_86/loops=false +animation/clip_87/name="" +animation/clip_87/start_frame=0 +animation/clip_87/end_frame=0 +animation/clip_87/loops=false +animation/clip_88/name="" +animation/clip_88/start_frame=0 +animation/clip_88/end_frame=0 +animation/clip_88/loops=false +animation/clip_89/name="" +animation/clip_89/start_frame=0 +animation/clip_89/end_frame=0 +animation/clip_89/loops=false +animation/clip_90/name="" +animation/clip_90/start_frame=0 +animation/clip_90/end_frame=0 +animation/clip_90/loops=false +animation/clip_91/name="" +animation/clip_91/start_frame=0 +animation/clip_91/end_frame=0 +animation/clip_91/loops=false +animation/clip_92/name="" +animation/clip_92/start_frame=0 +animation/clip_92/end_frame=0 +animation/clip_92/loops=false +animation/clip_93/name="" +animation/clip_93/start_frame=0 +animation/clip_93/end_frame=0 +animation/clip_93/loops=false +animation/clip_94/name="" +animation/clip_94/start_frame=0 +animation/clip_94/end_frame=0 +animation/clip_94/loops=false +animation/clip_95/name="" +animation/clip_95/start_frame=0 +animation/clip_95/end_frame=0 +animation/clip_95/loops=false +animation/clip_96/name="" +animation/clip_96/start_frame=0 +animation/clip_96/end_frame=0 +animation/clip_96/loops=false +animation/clip_97/name="" +animation/clip_97/start_frame=0 +animation/clip_97/end_frame=0 +animation/clip_97/loops=false +animation/clip_98/name="" +animation/clip_98/start_frame=0 +animation/clip_98/end_frame=0 +animation/clip_98/loops=false +animation/clip_99/name="" +animation/clip_99/start_frame=0 +animation/clip_99/end_frame=0 +animation/clip_99/loops=false +animation/clip_100/name="" +animation/clip_100/start_frame=0 +animation/clip_100/end_frame=0 +animation/clip_100/loops=false +animation/clip_101/name="" +animation/clip_101/start_frame=0 +animation/clip_101/end_frame=0 +animation/clip_101/loops=false +animation/clip_102/name="" +animation/clip_102/start_frame=0 +animation/clip_102/end_frame=0 +animation/clip_102/loops=false +animation/clip_103/name="" +animation/clip_103/start_frame=0 +animation/clip_103/end_frame=0 +animation/clip_103/loops=false +animation/clip_104/name="" +animation/clip_104/start_frame=0 +animation/clip_104/end_frame=0 +animation/clip_104/loops=false +animation/clip_105/name="" +animation/clip_105/start_frame=0 +animation/clip_105/end_frame=0 +animation/clip_105/loops=false +animation/clip_106/name="" +animation/clip_106/start_frame=0 +animation/clip_106/end_frame=0 +animation/clip_106/loops=false +animation/clip_107/name="" +animation/clip_107/start_frame=0 +animation/clip_107/end_frame=0 +animation/clip_107/loops=false +animation/clip_108/name="" +animation/clip_108/start_frame=0 +animation/clip_108/end_frame=0 +animation/clip_108/loops=false +animation/clip_109/name="" +animation/clip_109/start_frame=0 +animation/clip_109/end_frame=0 +animation/clip_109/loops=false +animation/clip_110/name="" +animation/clip_110/start_frame=0 +animation/clip_110/end_frame=0 +animation/clip_110/loops=false +animation/clip_111/name="" +animation/clip_111/start_frame=0 +animation/clip_111/end_frame=0 +animation/clip_111/loops=false +animation/clip_112/name="" +animation/clip_112/start_frame=0 +animation/clip_112/end_frame=0 +animation/clip_112/loops=false +animation/clip_113/name="" +animation/clip_113/start_frame=0 +animation/clip_113/end_frame=0 +animation/clip_113/loops=false +animation/clip_114/name="" +animation/clip_114/start_frame=0 +animation/clip_114/end_frame=0 +animation/clip_114/loops=false +animation/clip_115/name="" +animation/clip_115/start_frame=0 +animation/clip_115/end_frame=0 +animation/clip_115/loops=false +animation/clip_116/name="" +animation/clip_116/start_frame=0 +animation/clip_116/end_frame=0 +animation/clip_116/loops=false +animation/clip_117/name="" +animation/clip_117/start_frame=0 +animation/clip_117/end_frame=0 +animation/clip_117/loops=false +animation/clip_118/name="" +animation/clip_118/start_frame=0 +animation/clip_118/end_frame=0 +animation/clip_118/loops=false +animation/clip_119/name="" +animation/clip_119/start_frame=0 +animation/clip_119/end_frame=0 +animation/clip_119/loops=false +animation/clip_120/name="" +animation/clip_120/start_frame=0 +animation/clip_120/end_frame=0 +animation/clip_120/loops=false +animation/clip_121/name="" +animation/clip_121/start_frame=0 +animation/clip_121/end_frame=0 +animation/clip_121/loops=false +animation/clip_122/name="" +animation/clip_122/start_frame=0 +animation/clip_122/end_frame=0 +animation/clip_122/loops=false +animation/clip_123/name="" +animation/clip_123/start_frame=0 +animation/clip_123/end_frame=0 +animation/clip_123/loops=false +animation/clip_124/name="" +animation/clip_124/start_frame=0 +animation/clip_124/end_frame=0 +animation/clip_124/loops=false +animation/clip_125/name="" +animation/clip_125/start_frame=0 +animation/clip_125/end_frame=0 +animation/clip_125/loops=false +animation/clip_126/name="" +animation/clip_126/start_frame=0 +animation/clip_126/end_frame=0 +animation/clip_126/loops=false +animation/clip_127/name="" +animation/clip_127/start_frame=0 +animation/clip_127/end_frame=0 +animation/clip_127/loops=false +animation/clip_128/name="" +animation/clip_128/start_frame=0 +animation/clip_128/end_frame=0 +animation/clip_128/loops=false +animation/clip_129/name="" +animation/clip_129/start_frame=0 +animation/clip_129/end_frame=0 +animation/clip_129/loops=false +animation/clip_130/name="" +animation/clip_130/start_frame=0 +animation/clip_130/end_frame=0 +animation/clip_130/loops=false +animation/clip_131/name="" +animation/clip_131/start_frame=0 +animation/clip_131/end_frame=0 +animation/clip_131/loops=false +animation/clip_132/name="" +animation/clip_132/start_frame=0 +animation/clip_132/end_frame=0 +animation/clip_132/loops=false +animation/clip_133/name="" +animation/clip_133/start_frame=0 +animation/clip_133/end_frame=0 +animation/clip_133/loops=false +animation/clip_134/name="" +animation/clip_134/start_frame=0 +animation/clip_134/end_frame=0 +animation/clip_134/loops=false +animation/clip_135/name="" +animation/clip_135/start_frame=0 +animation/clip_135/end_frame=0 +animation/clip_135/loops=false +animation/clip_136/name="" +animation/clip_136/start_frame=0 +animation/clip_136/end_frame=0 +animation/clip_136/loops=false +animation/clip_137/name="" +animation/clip_137/start_frame=0 +animation/clip_137/end_frame=0 +animation/clip_137/loops=false +animation/clip_138/name="" +animation/clip_138/start_frame=0 +animation/clip_138/end_frame=0 +animation/clip_138/loops=false +animation/clip_139/name="" +animation/clip_139/start_frame=0 +animation/clip_139/end_frame=0 +animation/clip_139/loops=false +animation/clip_140/name="" +animation/clip_140/start_frame=0 +animation/clip_140/end_frame=0 +animation/clip_140/loops=false +animation/clip_141/name="" +animation/clip_141/start_frame=0 +animation/clip_141/end_frame=0 +animation/clip_141/loops=false +animation/clip_142/name="" +animation/clip_142/start_frame=0 +animation/clip_142/end_frame=0 +animation/clip_142/loops=false +animation/clip_143/name="" +animation/clip_143/start_frame=0 +animation/clip_143/end_frame=0 +animation/clip_143/loops=false +animation/clip_144/name="" +animation/clip_144/start_frame=0 +animation/clip_144/end_frame=0 +animation/clip_144/loops=false +animation/clip_145/name="" +animation/clip_145/start_frame=0 +animation/clip_145/end_frame=0 +animation/clip_145/loops=false +animation/clip_146/name="" +animation/clip_146/start_frame=0 +animation/clip_146/end_frame=0 +animation/clip_146/loops=false +animation/clip_147/name="" +animation/clip_147/start_frame=0 +animation/clip_147/end_frame=0 +animation/clip_147/loops=false +animation/clip_148/name="" +animation/clip_148/start_frame=0 +animation/clip_148/end_frame=0 +animation/clip_148/loops=false +animation/clip_149/name="" +animation/clip_149/start_frame=0 +animation/clip_149/end_frame=0 +animation/clip_149/loops=false +animation/clip_150/name="" +animation/clip_150/start_frame=0 +animation/clip_150/end_frame=0 +animation/clip_150/loops=false +animation/clip_151/name="" +animation/clip_151/start_frame=0 +animation/clip_151/end_frame=0 +animation/clip_151/loops=false +animation/clip_152/name="" +animation/clip_152/start_frame=0 +animation/clip_152/end_frame=0 +animation/clip_152/loops=false +animation/clip_153/name="" +animation/clip_153/start_frame=0 +animation/clip_153/end_frame=0 +animation/clip_153/loops=false +animation/clip_154/name="" +animation/clip_154/start_frame=0 +animation/clip_154/end_frame=0 +animation/clip_154/loops=false +animation/clip_155/name="" +animation/clip_155/start_frame=0 +animation/clip_155/end_frame=0 +animation/clip_155/loops=false +animation/clip_156/name="" +animation/clip_156/start_frame=0 +animation/clip_156/end_frame=0 +animation/clip_156/loops=false +animation/clip_157/name="" +animation/clip_157/start_frame=0 +animation/clip_157/end_frame=0 +animation/clip_157/loops=false +animation/clip_158/name="" +animation/clip_158/start_frame=0 +animation/clip_158/end_frame=0 +animation/clip_158/loops=false +animation/clip_159/name="" +animation/clip_159/start_frame=0 +animation/clip_159/end_frame=0 +animation/clip_159/loops=false +animation/clip_160/name="" +animation/clip_160/start_frame=0 +animation/clip_160/end_frame=0 +animation/clip_160/loops=false +animation/clip_161/name="" +animation/clip_161/start_frame=0 +animation/clip_161/end_frame=0 +animation/clip_161/loops=false +animation/clip_162/name="" +animation/clip_162/start_frame=0 +animation/clip_162/end_frame=0 +animation/clip_162/loops=false +animation/clip_163/name="" +animation/clip_163/start_frame=0 +animation/clip_163/end_frame=0 +animation/clip_163/loops=false +animation/clip_164/name="" +animation/clip_164/start_frame=0 +animation/clip_164/end_frame=0 +animation/clip_164/loops=false +animation/clip_165/name="" +animation/clip_165/start_frame=0 +animation/clip_165/end_frame=0 +animation/clip_165/loops=false +animation/clip_166/name="" +animation/clip_166/start_frame=0 +animation/clip_166/end_frame=0 +animation/clip_166/loops=false +animation/clip_167/name="" +animation/clip_167/start_frame=0 +animation/clip_167/end_frame=0 +animation/clip_167/loops=false +animation/clip_168/name="" +animation/clip_168/start_frame=0 +animation/clip_168/end_frame=0 +animation/clip_168/loops=false +animation/clip_169/name="" +animation/clip_169/start_frame=0 +animation/clip_169/end_frame=0 +animation/clip_169/loops=false +animation/clip_170/name="" +animation/clip_170/start_frame=0 +animation/clip_170/end_frame=0 +animation/clip_170/loops=false +animation/clip_171/name="" +animation/clip_171/start_frame=0 +animation/clip_171/end_frame=0 +animation/clip_171/loops=false +animation/clip_172/name="" +animation/clip_172/start_frame=0 +animation/clip_172/end_frame=0 +animation/clip_172/loops=false +animation/clip_173/name="" +animation/clip_173/start_frame=0 +animation/clip_173/end_frame=0 +animation/clip_173/loops=false +animation/clip_174/name="" +animation/clip_174/start_frame=0 +animation/clip_174/end_frame=0 +animation/clip_174/loops=false +animation/clip_175/name="" +animation/clip_175/start_frame=0 +animation/clip_175/end_frame=0 +animation/clip_175/loops=false +animation/clip_176/name="" +animation/clip_176/start_frame=0 +animation/clip_176/end_frame=0 +animation/clip_176/loops=false +animation/clip_177/name="" +animation/clip_177/start_frame=0 +animation/clip_177/end_frame=0 +animation/clip_177/loops=false +animation/clip_178/name="" +animation/clip_178/start_frame=0 +animation/clip_178/end_frame=0 +animation/clip_178/loops=false +animation/clip_179/name="" +animation/clip_179/start_frame=0 +animation/clip_179/end_frame=0 +animation/clip_179/loops=false +animation/clip_180/name="" +animation/clip_180/start_frame=0 +animation/clip_180/end_frame=0 +animation/clip_180/loops=false +animation/clip_181/name="" +animation/clip_181/start_frame=0 +animation/clip_181/end_frame=0 +animation/clip_181/loops=false +animation/clip_182/name="" +animation/clip_182/start_frame=0 +animation/clip_182/end_frame=0 +animation/clip_182/loops=false +animation/clip_183/name="" +animation/clip_183/start_frame=0 +animation/clip_183/end_frame=0 +animation/clip_183/loops=false +animation/clip_184/name="" +animation/clip_184/start_frame=0 +animation/clip_184/end_frame=0 +animation/clip_184/loops=false +animation/clip_185/name="" +animation/clip_185/start_frame=0 +animation/clip_185/end_frame=0 +animation/clip_185/loops=false +animation/clip_186/name="" +animation/clip_186/start_frame=0 +animation/clip_186/end_frame=0 +animation/clip_186/loops=false +animation/clip_187/name="" +animation/clip_187/start_frame=0 +animation/clip_187/end_frame=0 +animation/clip_187/loops=false +animation/clip_188/name="" +animation/clip_188/start_frame=0 +animation/clip_188/end_frame=0 +animation/clip_188/loops=false +animation/clip_189/name="" +animation/clip_189/start_frame=0 +animation/clip_189/end_frame=0 +animation/clip_189/loops=false +animation/clip_190/name="" +animation/clip_190/start_frame=0 +animation/clip_190/end_frame=0 +animation/clip_190/loops=false +animation/clip_191/name="" +animation/clip_191/start_frame=0 +animation/clip_191/end_frame=0 +animation/clip_191/loops=false +animation/clip_192/name="" +animation/clip_192/start_frame=0 +animation/clip_192/end_frame=0 +animation/clip_192/loops=false +animation/clip_193/name="" +animation/clip_193/start_frame=0 +animation/clip_193/end_frame=0 +animation/clip_193/loops=false +animation/clip_194/name="" +animation/clip_194/start_frame=0 +animation/clip_194/end_frame=0 +animation/clip_194/loops=false +animation/clip_195/name="" +animation/clip_195/start_frame=0 +animation/clip_195/end_frame=0 +animation/clip_195/loops=false +animation/clip_196/name="" +animation/clip_196/start_frame=0 +animation/clip_196/end_frame=0 +animation/clip_196/loops=false +animation/clip_197/name="" +animation/clip_197/start_frame=0 +animation/clip_197/end_frame=0 +animation/clip_197/loops=false +animation/clip_198/name="" +animation/clip_198/start_frame=0 +animation/clip_198/end_frame=0 +animation/clip_198/loops=false +animation/clip_199/name="" +animation/clip_199/start_frame=0 +animation/clip_199/end_frame=0 +animation/clip_199/loops=false +animation/clip_200/name="" +animation/clip_200/start_frame=0 +animation/clip_200/end_frame=0 +animation/clip_200/loops=false +animation/clip_201/name="" +animation/clip_201/start_frame=0 +animation/clip_201/end_frame=0 +animation/clip_201/loops=false +animation/clip_202/name="" +animation/clip_202/start_frame=0 +animation/clip_202/end_frame=0 +animation/clip_202/loops=false +animation/clip_203/name="" +animation/clip_203/start_frame=0 +animation/clip_203/end_frame=0 +animation/clip_203/loops=false +animation/clip_204/name="" +animation/clip_204/start_frame=0 +animation/clip_204/end_frame=0 +animation/clip_204/loops=false +animation/clip_205/name="" +animation/clip_205/start_frame=0 +animation/clip_205/end_frame=0 +animation/clip_205/loops=false +animation/clip_206/name="" +animation/clip_206/start_frame=0 +animation/clip_206/end_frame=0 +animation/clip_206/loops=false +animation/clip_207/name="" +animation/clip_207/start_frame=0 +animation/clip_207/end_frame=0 +animation/clip_207/loops=false +animation/clip_208/name="" +animation/clip_208/start_frame=0 +animation/clip_208/end_frame=0 +animation/clip_208/loops=false +animation/clip_209/name="" +animation/clip_209/start_frame=0 +animation/clip_209/end_frame=0 +animation/clip_209/loops=false +animation/clip_210/name="" +animation/clip_210/start_frame=0 +animation/clip_210/end_frame=0 +animation/clip_210/loops=false +animation/clip_211/name="" +animation/clip_211/start_frame=0 +animation/clip_211/end_frame=0 +animation/clip_211/loops=false +animation/clip_212/name="" +animation/clip_212/start_frame=0 +animation/clip_212/end_frame=0 +animation/clip_212/loops=false +animation/clip_213/name="" +animation/clip_213/start_frame=0 +animation/clip_213/end_frame=0 +animation/clip_213/loops=false +animation/clip_214/name="" +animation/clip_214/start_frame=0 +animation/clip_214/end_frame=0 +animation/clip_214/loops=false +animation/clip_215/name="" +animation/clip_215/start_frame=0 +animation/clip_215/end_frame=0 +animation/clip_215/loops=false +animation/clip_216/name="" +animation/clip_216/start_frame=0 +animation/clip_216/end_frame=0 +animation/clip_216/loops=false +animation/clip_217/name="" +animation/clip_217/start_frame=0 +animation/clip_217/end_frame=0 +animation/clip_217/loops=false +animation/clip_218/name="" +animation/clip_218/start_frame=0 +animation/clip_218/end_frame=0 +animation/clip_218/loops=false +animation/clip_219/name="" +animation/clip_219/start_frame=0 +animation/clip_219/end_frame=0 +animation/clip_219/loops=false +animation/clip_220/name="" +animation/clip_220/start_frame=0 +animation/clip_220/end_frame=0 +animation/clip_220/loops=false +animation/clip_221/name="" +animation/clip_221/start_frame=0 +animation/clip_221/end_frame=0 +animation/clip_221/loops=false +animation/clip_222/name="" +animation/clip_222/start_frame=0 +animation/clip_222/end_frame=0 +animation/clip_222/loops=false +animation/clip_223/name="" +animation/clip_223/start_frame=0 +animation/clip_223/end_frame=0 +animation/clip_223/loops=false +animation/clip_224/name="" +animation/clip_224/start_frame=0 +animation/clip_224/end_frame=0 +animation/clip_224/loops=false +animation/clip_225/name="" +animation/clip_225/start_frame=0 +animation/clip_225/end_frame=0 +animation/clip_225/loops=false +animation/clip_226/name="" +animation/clip_226/start_frame=0 +animation/clip_226/end_frame=0 +animation/clip_226/loops=false +animation/clip_227/name="" +animation/clip_227/start_frame=0 +animation/clip_227/end_frame=0 +animation/clip_227/loops=false +animation/clip_228/name="" +animation/clip_228/start_frame=0 +animation/clip_228/end_frame=0 +animation/clip_228/loops=false +animation/clip_229/name="" +animation/clip_229/start_frame=0 +animation/clip_229/end_frame=0 +animation/clip_229/loops=false +animation/clip_230/name="" +animation/clip_230/start_frame=0 +animation/clip_230/end_frame=0 +animation/clip_230/loops=false +animation/clip_231/name="" +animation/clip_231/start_frame=0 +animation/clip_231/end_frame=0 +animation/clip_231/loops=false +animation/clip_232/name="" +animation/clip_232/start_frame=0 +animation/clip_232/end_frame=0 +animation/clip_232/loops=false +animation/clip_233/name="" +animation/clip_233/start_frame=0 +animation/clip_233/end_frame=0 +animation/clip_233/loops=false +animation/clip_234/name="" +animation/clip_234/start_frame=0 +animation/clip_234/end_frame=0 +animation/clip_234/loops=false +animation/clip_235/name="" +animation/clip_235/start_frame=0 +animation/clip_235/end_frame=0 +animation/clip_235/loops=false +animation/clip_236/name="" +animation/clip_236/start_frame=0 +animation/clip_236/end_frame=0 +animation/clip_236/loops=false +animation/clip_237/name="" +animation/clip_237/start_frame=0 +animation/clip_237/end_frame=0 +animation/clip_237/loops=false +animation/clip_238/name="" +animation/clip_238/start_frame=0 +animation/clip_238/end_frame=0 +animation/clip_238/loops=false +animation/clip_239/name="" +animation/clip_239/start_frame=0 +animation/clip_239/end_frame=0 +animation/clip_239/loops=false +animation/clip_240/name="" +animation/clip_240/start_frame=0 +animation/clip_240/end_frame=0 +animation/clip_240/loops=false +animation/clip_241/name="" +animation/clip_241/start_frame=0 +animation/clip_241/end_frame=0 +animation/clip_241/loops=false +animation/clip_242/name="" +animation/clip_242/start_frame=0 +animation/clip_242/end_frame=0 +animation/clip_242/loops=false +animation/clip_243/name="" +animation/clip_243/start_frame=0 +animation/clip_243/end_frame=0 +animation/clip_243/loops=false +animation/clip_244/name="" +animation/clip_244/start_frame=0 +animation/clip_244/end_frame=0 +animation/clip_244/loops=false +animation/clip_245/name="" +animation/clip_245/start_frame=0 +animation/clip_245/end_frame=0 +animation/clip_245/loops=false +animation/clip_246/name="" +animation/clip_246/start_frame=0 +animation/clip_246/end_frame=0 +animation/clip_246/loops=false +animation/clip_247/name="" +animation/clip_247/start_frame=0 +animation/clip_247/end_frame=0 +animation/clip_247/loops=false +animation/clip_248/name="" +animation/clip_248/start_frame=0 +animation/clip_248/end_frame=0 +animation/clip_248/loops=false +animation/clip_249/name="" +animation/clip_249/start_frame=0 +animation/clip_249/end_frame=0 +animation/clip_249/loops=false +animation/clip_250/name="" +animation/clip_250/start_frame=0 +animation/clip_250/end_frame=0 +animation/clip_250/loops=false +animation/clip_251/name="" +animation/clip_251/start_frame=0 +animation/clip_251/end_frame=0 +animation/clip_251/loops=false +animation/clip_252/name="" +animation/clip_252/start_frame=0 +animation/clip_252/end_frame=0 +animation/clip_252/loops=false +animation/clip_253/name="" +animation/clip_253/start_frame=0 +animation/clip_253/end_frame=0 +animation/clip_253/loops=false +animation/clip_254/name="" +animation/clip_254/start_frame=0 +animation/clip_254/end_frame=0 +animation/clip_254/loops=false +animation/clip_255/name="" +animation/clip_255/start_frame=0 +animation/clip_255/end_frame=0 +animation/clip_255/loops=false +animation/clip_256/name="" +animation/clip_256/start_frame=0 +animation/clip_256/end_frame=0 +animation/clip_256/loops=false diff --git a/world/monuments/lighthouse/lighthouse.tscn b/world/monuments/lighthouse/lighthouse.tscn new file mode 100644 index 0000000..7997649 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://world/monuments/lighthouse/lighthouse.gltf" type="PackedScene" id=1] +[ext_resource path="res://world/monuments/lighthouse/lighthouse.gd" type="Script" id=2] + +[sub_resource type="SpatialMaterial" id=1] +albedo_color = Color( 0.0470588, 0.00392157, 0.00392157, 1 ) + +[sub_resource type="SpatialMaterial" id=2] +emission_enabled = true +emission = Color( 1, 0.996078, 0.74902, 1 ) +emission_energy = 1.0 +emission_operator = 0 +emission_on_uv2 = false + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("lighthouse/light:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 90, 0, 0 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "spin_light" +length = 5.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("lighthouse/light:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 90, 0, 0 ), Vector3( 90, 0, 360 ) ] +} + +[node name="lighthouse" instance=ExtResource( 1 )] +script = ExtResource( 2 ) + +[node name="OmniLight" type="OmniLight" parent="." index="0"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 165.193, 0 ) +light_color = Color( 1, 0.92549, 0.768627, 1 ) +shadow_enabled = true +omni_range = 76.7922 + +[node name="light" parent="lighthouse" index="0"] +transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 165.636, 0 ) +material/0 = SubResource( 1 ) +material/1 = SubResource( 2 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="2"] +anims/RESET = SubResource( 3 ) +anims/spin_light = SubResource( 4 ) diff --git a/world/monuments/lighthouse/lighthouse_alpha.png b/world/monuments/lighthouse/lighthouse_alpha.png Binary files differnew file mode 100644 index 0000000..d53b738 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_alpha.png diff --git a/world/monuments/lighthouse/lighthouse_alpha.png.import b/world/monuments/lighthouse/lighthouse_alpha.png.import new file mode 100644 index 0000000..22b763e --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_alpha.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lighthouse_alpha.png-41f0ac1436cc9af220dfc8185e3a0320.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_alpha.png" +dest_files=[ "res://.import/lighthouse_alpha.png-41f0ac1436cc9af220dfc8185e3a0320.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/world/monuments/lighthouse/lighthouse_baked.material b/world/monuments/lighthouse/lighthouse_baked.material Binary files differnew file mode 100644 index 0000000..7b09edd --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_baked.material diff --git a/world/monuments/lighthouse/lighthouse_color.png b/world/monuments/lighthouse/lighthouse_color.png Binary files differnew file mode 100644 index 0000000..f0206d6 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_color.png diff --git a/world/monuments/lighthouse/lighthouse_color.png.import b/world/monuments/lighthouse/lighthouse_color.png.import new file mode 100644 index 0000000..2a1af66 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_color.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lighthouse_color.png-7cc6dff7bffc0de9a0cf209cd8ec5894.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_color.png" +dest_files=[ "res://.import/lighthouse_color.png-7cc6dff7bffc0de9a0cf209cd8ec5894.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png b/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png Binary files differnew file mode 100644 index 0000000..329c335 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png diff --git a/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png.import b/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png.import new file mode 100644 index 0000000..2bb17c4 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/lighthouse_color_png-lighthouse_alpha_png.png-a979403086310babf23d79bee5de48f0.s3tc.stex" +path.etc2="res://.import/lighthouse_color_png-lighthouse_alpha_png.png-a979403086310babf23d79bee5de48f0.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_color_png-lighthouse_alpha_png.png" +dest_files=[ "res://.import/lighthouse_color_png-lighthouse_alpha_png.png-a979403086310babf23d79bee5de48f0.s3tc.stex", "res://.import/lighthouse_color_png-lighthouse_alpha_png.png-a979403086310babf23d79bee5de48f0.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=1 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/world/monuments/lighthouse/lighthouse_disp.png b/world/monuments/lighthouse/lighthouse_disp.png Binary files differnew file mode 100644 index 0000000..96071db --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_disp.png diff --git a/world/monuments/lighthouse/lighthouse_disp.png.import b/world/monuments/lighthouse/lighthouse_disp.png.import new file mode 100644 index 0000000..82b2a8d --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_disp.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lighthouse_disp.png-5d8f126cba54b9aad429c03c72f8c283.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_disp.png" +dest_files=[ "res://.import/lighthouse_disp.png-5d8f126cba54b9aad429c03c72f8c283.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/world/monuments/lighthouse/lighthouse_normal.png b/world/monuments/lighthouse/lighthouse_normal.png Binary files differnew file mode 100644 index 0000000..c861d72 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_normal.png diff --git a/world/monuments/lighthouse/lighthouse_normal.png.import b/world/monuments/lighthouse/lighthouse_normal.png.import new file mode 100644 index 0000000..4c707ab --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_normal.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/lighthouse_normal.png-dcfc77c9d86223c115a12d566dbecc9a.s3tc.stex" +path.etc2="res://.import/lighthouse_normal.png-dcfc77c9d86223c115a12d566dbecc9a.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_normal.png" +dest_files=[ "res://.import/lighthouse_normal.png-dcfc77c9d86223c115a12d566dbecc9a.s3tc.stex", "res://.import/lighthouse_normal.png-dcfc77c9d86223c115a12d566dbecc9a.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=1 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/world/monuments/lighthouse/lighthouse_roughness.png b/world/monuments/lighthouse/lighthouse_roughness.png Binary files differnew file mode 100644 index 0000000..f1cb110 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_roughness.png diff --git a/world/monuments/lighthouse/lighthouse_roughness.png.import b/world/monuments/lighthouse/lighthouse_roughness.png.import new file mode 100644 index 0000000..5be64c9 --- /dev/null +++ b/world/monuments/lighthouse/lighthouse_roughness.png.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="StreamTexture" +path.s3tc="res://.import/lighthouse_roughness.png-80a5c2ae5bb756fd1ff8b9b8b5bd4766.s3tc.stex" +path.etc2="res://.import/lighthouse_roughness.png-80a5c2ae5bb756fd1ff8b9b8b5bd4766.etc2.stex" +metadata={ +"imported_formats": [ "s3tc", "etc2" ], +"vram_texture": true +} + +[deps] + +source_file="res://world/monuments/lighthouse/lighthouse_roughness.png" +dest_files=[ "res://.import/lighthouse_roughness.png-80a5c2ae5bb756fd1ff8b9b8b5bd4766.s3tc.stex", "res://.import/lighthouse_roughness.png-80a5c2ae5bb756fd1ff8b9b8b5bd4766.etc2.stex" ] + +[params] + +compress/mode=2 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=true +flags/filter=true +flags/mipmaps=true +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/world/obstacles/Rock_coll.tres b/world/obstacles/Rock_coll.tres new file mode 100644 index 0000000..b06d080 --- /dev/null +++ b/world/obstacles/Rock_coll.tres @@ -0,0 +1,4 @@ +[gd_resource type="ConvexPolygonShape" format=2] + +[resource] +points = PoolVector3Array( 2.5, -5, 2.5, 2.5, -5, -2.5, -2.5, -5, -2.5, -2.5, -5, 2.5, 0, 5, 2.5, 0, 5, -2.5 ) diff --git a/world/obstacles/Rock_lowres_mesh.tres b/world/obstacles/Rock_lowres_mesh.tres new file mode 100644 index 0000000..910d7f6 --- /dev/null +++ b/world/obstacles/Rock_lowres_mesh.tres @@ -0,0 +1,4 @@ +[gd_resource type="CubeMesh" format=2] + +[resource] +size = Vector3( 5, 10, 5 ) diff --git a/world/obstacles/Rock_mat.tres b/world/obstacles/Rock_mat.tres new file mode 100644 index 0000000..8547487 --- /dev/null +++ b/world/obstacles/Rock_mat.tres @@ -0,0 +1,21 @@ +[gd_resource type="SpatialMaterial" load_steps=4 format=2] + +[sub_resource type="OpenSimplexNoise" id=3] +octaves = 4 +period = 32.0 + +[sub_resource type="NoiseTexture" id=4] +noise = SubResource( 3 ) + +[sub_resource type="NoiseTexture" id=5] +seamless = true +as_normalmap = true +bump_strength = 32.0 +noise = SubResource( 3 ) + +[resource] +albedo_color = Color( 0.231373, 0.231373, 0.231373, 1 ) +albedo_texture = SubResource( 4 ) +normal_enabled = true +normal_scale = 1.0 +normal_texture = SubResource( 5 ) diff --git a/world/obstacles/Rock_mesh.tres b/world/obstacles/Rock_mesh.tres new file mode 100644 index 0000000..bced5b6 --- /dev/null +++ b/world/obstacles/Rock_mesh.tres @@ -0,0 +1,4 @@ +[gd_resource type="PrismMesh" format=2] + +[resource] +size = Vector3( 5, 10, 5 ) |