diff --git a/design/fairy_lights.blend b/design/fairy_lights.blend new file mode 100644 index 0000000..5752dd3 --- /dev/null +++ b/design/fairy_lights.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c881fcd0d24a9082f1907821b21c4d73e485a48a83f88c6aeed452fe0f7b4478 +size 1154684 diff --git a/src/addons/LineRenderer/line_plugin.gd b/src/addons/LineRenderer/line_plugin.gd new file mode 100644 index 0000000..5dbab1b --- /dev/null +++ b/src/addons/LineRenderer/line_plugin.gd @@ -0,0 +1,11 @@ +@tool +extends EditorPlugin + +func _enter_tree(): + # Initialization of the plugin goes here. + add_custom_type("LineRenderer3D", "MeshInstance3D", preload("line_renderer.gd"), preload("line_render_icon.svg")) + + +func _exit_tree(): + # Clean-up of the plugin goes here. + remove_custom_type("Line Renderer 3D") diff --git a/src/addons/LineRenderer/line_render_icon.svg b/src/addons/LineRenderer/line_render_icon.svg new file mode 100644 index 0000000..aa4d895 --- /dev/null +++ b/src/addons/LineRenderer/line_render_icon.svg @@ -0,0 +1,127 @@ + + + + diff --git a/src/addons/LineRenderer/line_render_icon.svg.import b/src/addons/LineRenderer/line_render_icon.svg.import new file mode 100644 index 0000000..ffd167a --- /dev/null +++ b/src/addons/LineRenderer/line_render_icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drumkfhf8d2tn" +path="res://.godot/imported/line_render_icon.svg-9fabbd2cfeb579cc989ccd151dbe0a0b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/LineRenderer/line_render_icon.svg" +dest_files=["res://.godot/imported/line_render_icon.svg-9fabbd2cfeb579cc989ccd151dbe0a0b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/src/addons/LineRenderer/line_renderer.gd b/src/addons/LineRenderer/line_renderer.gd new file mode 100644 index 0000000..a5ce4f7 --- /dev/null +++ b/src/addons/LineRenderer/line_renderer.gd @@ -0,0 +1,171 @@ +@tool +extends MeshInstance3D +class_name LineRenderer3D + +@export var points: Array[Vector3] = [Vector3(0,0,0),Vector3(0,5,0)]: + set(new_points): points = new_points +@export var start_thickness:float = 0.1: + set(new_start_thickness): start_thickness = new_start_thickness +@export var end_thickness:float = 0.1: + set(new_end_thickness): end_thickness = new_end_thickness +@export var corner_resolution:int = 5: + set(new_corner_resolution): corner_resolution = new_corner_resolution +@export var cap_resolution:int = 5: + set(new_cap_resolution): cap_resolution = new_cap_resolution +@export var draw_caps:bool = true: + set(new_draw_caps): draw_caps = new_draw_caps +@export var draw_crners:bool = true: + set(new_draw_crners): draw_crners = new_draw_crners +@export var use_global_coords:bool = true: + set(new_use_global_coords): use_global_coords = new_use_global_coords +@export var tile_texture:bool = true: + set(new_tile_texture): tile_texture = new_tile_texture + +var camera : Camera3D +var cameraOrigin : Vector3 + +func _enter_tree(): + mesh = ImmediateMesh.new() + +func _ready(): + pass + +func _process(_delta): + if points.size() < 2: + return + + camera = get_viewport().get_camera_3d() + if camera == null: + return + cameraOrigin = to_local(camera.get_global_transform().origin) + + var progressStep:float = 1.0 / points.size(); + var progress:float = 0; + var thickness:float = lerp(start_thickness, end_thickness, progress); + var nextThickness:float = lerp(start_thickness, end_thickness, progress + progressStep); + + var surface:SurfaceTool = SurfaceTool.new() + surface.begin(Mesh.PRIMITIVE_TRIANGLES) + + for i in range(points.size() - 1): + var A:Vector3 = points[i] + var B:Vector3 = points[i+1] + + if use_global_coords: + A = to_local(A) + B = to_local(B) + + var AB:Vector3 = B - A; + var orthogonalABStart:Vector3 = (cameraOrigin - ((A + B) / 2)).cross(AB).normalized() * thickness; + var orthogonalABEnd:Vector3 = (cameraOrigin - ((A + B) / 2)).cross(AB).normalized() * nextThickness; + + var AtoABStart:Vector3 = A + orthogonalABStart + var AfromABStart:Vector3 = A - orthogonalABStart + var BtoABEnd:Vector3 = B + orthogonalABEnd + var BfromABEnd:Vector3 = B - orthogonalABEnd + + if i == 0: + if draw_caps: + cap(surface, A, B, thickness, cap_resolution) + + if tile_texture: + var ABLen = AB.length() + var ABFloor = floor(ABLen) + var ABFrac = ABLen - ABFloor + + surface.set_uv(Vector2(ABFloor, 0)) + surface.add_vertex(AtoABStart) + surface.set_uv(Vector2(-ABFrac, 0)) + surface.add_vertex(BtoABEnd) + surface.set_uv(Vector2(ABFloor, 1)) + surface.add_vertex(AfromABStart) + surface.set_uv(Vector2(-ABFrac, 0)) + surface.add_vertex(BtoABEnd) + surface.set_uv(Vector2(-ABFrac, 1)) + surface.add_vertex(BfromABEnd) + surface.set_uv(Vector2(ABFloor, 1)) + surface.add_vertex(AfromABStart) + else: + surface.set_uv(Vector2(1, 0)) + surface.add_vertex(AtoABStart) + surface.set_uv(Vector2(0, 0)) + surface.add_vertex(BtoABEnd) + surface.set_uv(Vector2(1, 1)) + surface.add_vertex(AfromABStart) + surface.set_uv(Vector2(0, 0)) + surface.add_vertex(BtoABEnd) + surface.set_uv(Vector2(0, 1)) + surface.add_vertex(BfromABEnd) + surface.set_uv(Vector2(1, 1)) + surface.add_vertex(AfromABStart) + + if i == points.size() - 2: + if draw_caps: + cap(surface, B, A, nextThickness, cap_resolution) + else: + if draw_crners: + var C = points[i+2] + if use_global_coords: + C = to_local(C) + + var BC = C - B; + var orthogonalBCStart = (cameraOrigin - ((B + C) / 2)).cross(BC).normalized() * nextThickness; + + var angleDot = AB.dot(orthogonalBCStart) + + if angleDot > 0 and not angleDot == 1: + corner(surface, B, BtoABEnd, B + orthogonalBCStart, corner_resolution) + elif angleDot < 0 and not angleDot == -1: + corner(surface, B, B - orthogonalBCStart, BfromABEnd, corner_resolution) + + progress += progressStep; + thickness = lerp(start_thickness, end_thickness, progress); + nextThickness = lerp(start_thickness, end_thickness, progress + progressStep); + + surface.generate_normals() + surface.generate_tangents() + mesh = surface.commit() + +func cap(surface: SurfaceTool, center:Vector3, pivot:Vector3, thickness:float, cap_resolution:int): + var orthogonal:Vector3 = (cameraOrigin - center).cross(center - pivot).normalized() * thickness; + var axis:Vector3 = (center - cameraOrigin).normalized(); + + var vertex_array:Array = [] + for i in range(cap_resolution + 1): + vertex_array.append(Vector3(0,0,0)) + vertex_array[0] = center + orthogonal; + vertex_array[cap_resolution] = center - orthogonal; + + for i in range(1, cap_resolution): + vertex_array[i] = center + (orthogonal.rotated(axis, lerp(0.0, PI, float(i) / cap_resolution))); + + for i in range(1, cap_resolution + 1): + surface.set_uv(Vector2(0, (i - 1) / cap_resolution)) + surface.add_vertex(vertex_array[i - 1]); + surface.set_uv(Vector2(0, (i - 1) / cap_resolution)) + surface.add_vertex(vertex_array[i]); + surface.set_uv(Vector2(0.5, 0.5)) + surface.add_vertex(center); + +func corner(surface: SurfaceTool, center:Vector3, start:Vector3, end:Vector3, cap_resolution:int): + var vertex_array:Array = [] + for i in range(cap_resolution + 1): + vertex_array.append(Vector3(0,0,0)) + vertex_array[0] = start; + vertex_array[cap_resolution] = end; + + var axis:Vector3 = start.cross(end).normalized() + var offset:Vector3 = start - center + var angle:float = offset.angle_to(end - center) + + for i in range(1, cap_resolution): + vertex_array[i] = center + offset.rotated(axis, lerp(0.0, angle, float(i) / cap_resolution)); + + for i in range(1, cap_resolution + 1): + surface.set_uv(Vector2(0, (i - 1) / cap_resolution)) + surface.add_vertex(vertex_array[i - 1]); + surface.set_uv(Vector2(0, (i - 1) / cap_resolution)) + surface.add_vertex(vertex_array[i]); + surface.set_uv(Vector2(0.5, 0.5)) + surface.add_vertex(center); + diff --git a/src/addons/LineRenderer/plugin.cfg b/src/addons/LineRenderer/plugin.cfg new file mode 100644 index 0000000..14efb9b --- /dev/null +++ b/src/addons/LineRenderer/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="LineRenderer" +description="A simple line renderer for Godot 4.0, useful for rendering cylindrical volume such as lasers, trails, etc. Based on the Godot 3.0 version by @dbp8890 at https://github.com/dbp8890/line-renderer ported by @LemiSt24, which is based on the helpful C# implementation by @paulohyy at https://github.com/paulohyy/linerenderer and added some additional features such as UV tiling." +author="betalars" +version="1.0" +script="line_plugin.gd" diff --git a/src/base-environments/youth_room/fairylights.tscn b/src/base-environments/youth_room/fairylights.tscn new file mode 100644 index 0000000..d504639 --- /dev/null +++ b/src/base-environments/youth_room/fairylights.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=9 format=3 uid="uid://cg70r0102t8nl"] + +[ext_resource type="Texture2D" uid="uid://i75aktvgsdwg" path="res://base-environments/youth_room/import/textures/wires_normal.png" id="1_p3lcj"] +[ext_resource type="Texture2D" uid="uid://chisldkpt6bf5" path="res://base-environments/youth_room/import/textures/wires_albedo.png" id="1_xsr58"] +[ext_resource type="Script" path="res://addons/LineRenderer/line_renderer.gd" id="2_javfj"] +[ext_resource type="ArrayMesh" uid="uid://f5fr2e5gq313" path="res://base-environments/youth_room/shaders/fairy_light_diode.res" id="4_qh8yy"] + +[sub_resource type="GDScript" id="GDScript_2caij"] +script/source = "@tool +extends Node3D + +@export var light_array: Array[Vector3]: + set(points): + light_array = points + if is_inside_tree(): + rebuild() + +@onready var wires:LineRenderer3D = $wires +@onready var diodes:MultiMeshInstance3D = $diodes +@export var seed:int = 42 +var rng = RandomNumberGenerator.new() +@export var size:float = 0.1: + set(new_size): + size = new_size + rebuild() + if is_inside_tree(): + wires.end_thickness = size*0.1 + wires.start_thickness = size*0.1 + +# Called when the node enters the scene tree for the first time. +func _ready(): + rebuild() + +func rebuild(): + rng.seed = seed + rng.state = 0 + for child in wires.get_children(): child.free() + wires.points = light_array + diodes.multimesh.instance_count = light_array.size() + var meshBuffer:PackedFloat32Array + for point in light_array: + rng + var base:Basis = Basis(Vector3(rng.randf_range(-1, 1), rng.randf_range(-1, 1), rng.randf_range(-1, 1)).normalized(), rng.randf_range(0, PI*2)) + base = base.scaled(Vector3(size, size, size)) + meshBuffer.append_array([base.x.x, base.x.y, base.x.z, point.x, base.y.x, base.y.y, base.y.z, point.y, base.z.x, base.z.y, base.z.z, point.z]) + diodes.multimesh.buffer = meshBuffer +" + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5ca5e"] +transparency = 2 +alpha_scissor_threshold = 0.5 +alpha_antialiasing_mode = 0 +cull_mode = 2 +albedo_color = Color(0.368627, 0.368627, 0.368627, 1) +albedo_texture = ExtResource("1_xsr58") +normal_enabled = true +normal_texture = ExtResource("1_p3lcj") + +[sub_resource type="ImmediateMesh" id="ImmediateMesh_u31or"] + +[sub_resource type="MultiMesh" id="MultiMesh_ic3h7"] +transform_format = 1 +instance_count = 30 +mesh = ExtResource("4_qh8yy") +buffer = PackedFloat32Array(0.0998169, 0.00482103, -0.00365424, -0.545, -0.00428558, 0.0989875, 0.0135316, 0.915, 0.0042696, -0.0133502, 0.0990128, 1.035, 0.0700075, -0.0358849, 0.0617351, -0.47, 0.0525334, 0.0844406, -0.0104897, 0.855, -0.0483653, 0.0397751, 0.0779663, 0.905, 0.0042587, 0.0920312, -0.0388859, -0.44, -0.00571533, 0.0390819, 0.0918692, 0.871, 0.0997457, -0.00168997, 0.00692427, 0.78, 0.0219999, -0.0870806, -0.0439656, -0.385, 0.0800974, 0.041851, -0.0428124, 0.91, 0.0556813, -0.0257966, 0.0789565, 0.69, 0.0923335, 0.0288341, -0.0253597, -0.38, -0.0359662, 0.088075, -0.0308096, 0.995, 0.0134518, 0.0375685, 0.0916933, 0.595, 0.0410372, 0.0236122, 0.0880819, -0.39, -0.0818364, -0.0330796, 0.0469951, 0.925, 0.0402337, -0.0913685, 0.00574842, 0.465, 0.0963897, 0.0249758, -0.00923199, -0.364, -0.025153, 0.0967818, -0.000788714, 0.86, 0.0087379, 0.00308236, 0.0995698, 0.211, 0.0905162, -0.0353528, 0.0236008, -0.295, 0.00980512, 0.0713907, 0.0693341, 0.82, -0.0413604, -0.0604445, 0.0680866, 0.06, 0.0999699, -0.000440024, 0.00241425, -0.255, 0.00037743, 0.0999657, 0.0025912, 0.805, -0.00242483, -0.00258131, 0.0999373, -0.15, 0.0666952, -0.0744692, 0.00246829, -0.175, 0.0669796, 0.0613729, 0.0417982, 0.83, -0.0326417, -0.0262242, 0.090812, -0.355, 0.00827521, 0.0528018, -0.0845191, -0.135, 0.0951837, -0.0293119, -0.00899272, 0.955, -0.0295225, -0.0797043, -0.0526844, -0.515, 0.0983988, -0.0102168, 0.0146044, -0.025, 0.00642553, 0.0967642, 0.0244007, 0.78, -0.0166249, -0.0230716, 0.0958714, -0.615, -0.0341773, -0.0716575, -0.0608039, 0.115, 0.0144934, 0.059907, -0.078747, 0.63, 0.0928539, -0.0357262, -0.010089, -0.695, -0.0232891, -0.0711249, 0.066324, 0.245, 0.0795472, -0.0531651, -0.0290812, 0.555, 0.0559451, 0.0459861, 0.0689595, -0.745, -0.0599926, -0.0254553, -0.075848, 0.37, -0.0708402, 0.0609612, 0.0355725, 0.595, 0.0371828, 0.0750717, -0.0546048, -0.805, 0.0107775, 0.0912119, 0.0395505, 0.455, 0.0273445, -0.0409675, 0.0870284, 0.745, 0.0955831, 0.00143545, -0.0293567, -0.84, 0.0745873, 0.00700857, -0.0662391, 0.505, -0.0366242, 0.0873785, -0.0319947, 0.89, 0.0556363, 0.0481236, 0.0677401, -0.87, -0.0524777, -0.0408163, -0.0747002, 0.445, -0.0771795, -0.0142038, 0.0619805, 1.175, -0.0359084, 0.0901791, -0.024048, -0.87, 0.0652616, -0.0746751, 0.0128275, 0.26, -0.071962, -0.0663868, -0.0203536, 1.28, 0.0237149, 0.00405218, -0.0970628, -0.815, 0.0477617, -0.0860534, 0.0177096, 0.125, -0.0450234, -0.00666441, 0.089042, 1.35, -0.0754435, -0.0505014, -0.0419272, -0.8, 0.0526553, -0.07791, -0.0340215, -0.037, -0.0570784, -0.00274075, -0.0820643, 1.479, 0.0630038, 0.0626301, -0.0459129, -0.834, 0.0726285, 0.053708, 0.0429017, -0.2, -0.0349996, 0.0826095, -0.0441667, 1.601, -0.0591619, 0.0170622, 0.0787956, -0.851, 0.0581542, 0.0297762, -0.0757065, -0.359, -0.0464154, 0.0885717, -0.000817926, 1.769, 0.0668109, 0.0356151, 0.0653289, -0.85, 0.0875991, -0.0425381, 0.0227357, -0.5, 0.0336438, 0.0876653, 0.0343932, 1.949, -0.0345616, -0.022479, 0.0911054, -0.85, 0.0946831, -0.0299322, -0.0117972, -0.594, 0.0199689, 0.0259233, 0.0944946, 2.126, -0.0252261, -0.0918261, 0.0305222, -0.85, 0.0626413, -0.0766232, 0.0143161, -0.634, 0.0779479, 0.0616799, -0.0109416, 2.238, -0.000446323, 0.0180131, 0.0983633, -0.85, 0.0510754, -0.0397606, 0.076226, -0.634, -0.0155809, 0.0829139, 0.0536891, 2.035, -0.084549, -0.0392986, 0.0361536, -0.85, -0.055891, -0.072196, -0.0407913, -0.614, -0.0700671, 0.0148083, 0.0697948, 1.875, -0.0443486, 0.0675903, -0.0588622, -0.85, -0.0545317, 0.0517385, -0.0659501, -0.65, 0.0389976, 0.0853039, 0.0346761, 1.655, 0.0741989, -0.00680947, -0.0666945, -0.85, 0.0858331, 0.0430527, -0.0279131, -0.65, 0.0302511, -0.0864024, -0.040243, 1.475, -0.0414433, 0.0260978, -0.0871858, -0.87) + +[node name="fairylights" type="Node3D"] +script = SubResource("GDScript_2caij") +light_array = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)]) + +[node name="wires" type="MeshInstance3D" parent="."] +material_override = SubResource("StandardMaterial3D_5ca5e") +mesh = SubResource("ImmediateMesh_u31or") +script = ExtResource("2_javfj") +points = Array[Vector3]([Vector3(0, 0, 0), Vector3(0, 1, 0)]) +start_thickness = 0.01 +end_thickness = 0.01 +use_global_coords = false +tile_texture = false + +[node name="diodes" type="MultiMeshInstance3D" parent="."] +multimesh = SubResource("MultiMesh_ic3h7") diff --git a/src/base-environments/youth_room/import/fairy_light.glb b/src/base-environments/youth_room/import/fairy_light.glb new file mode 100644 index 0000000..9db55f0 --- /dev/null +++ b/src/base-environments/youth_room/import/fairy_light.glb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d30738973e1394e8fefd24b3f946f1ef755ff0f0c6f6c1b41c619ce67c4209 +size 7268 diff --git a/src/base-environments/youth_room/import/fairy_light.glb.import b/src/base-environments/youth_room/import/fairy_light.glb.import new file mode 100644 index 0000000..d107425 --- /dev/null +++ b/src/base-environments/youth_room/import/fairy_light.glb.import @@ -0,0 +1,57 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://cat2o0tdxahiq" +path="res://.godot/imported/fairy_light.glb-23acffacc6593c5a8045d4a2c6c8f3f3.scn" + +[deps] + +source_file="res://base-environments/youth_room/import/fairy_light.glb" +dest_files=["res://.godot/imported/fairy_light.glb-23acffacc6593c5a8045d4a2c6c8f3f3.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +import_script/path="" +_subresources={ +"materials": { +"emit": { +"use_external/enabled": true, +"use_external/path": "res://base-environments/youth_room/shaders/fairylight.material" +}, +"halo": { +"use_external/enabled": true, +"use_external/path": "res://base-environments/youth_room/shaders/fairylight_halo.material" +} +}, +"meshes": { +"fairy_light_diode": { +"generate/lightmap_uv": 0, +"generate/lods": 0, +"generate/shadow_meshes": 0, +"lods/normal_merge_angle": 60.0, +"lods/normal_split_angle": 25.0, +"save_to_file/enabled": true, +"save_to_file/make_streamable": "", +"save_to_file/path": "res://base-environments/youth_room/shaders/fairy_light_diode.res" +} +} +} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/src/base-environments/youth_room/import/textures/wires_albedo.png b/src/base-environments/youth_room/import/textures/wires_albedo.png new file mode 100644 index 0000000..05cc0e4 --- /dev/null +++ b/src/base-environments/youth_room/import/textures/wires_albedo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0fdd70e286ea86b67ae82c759f18b25a5cace622171e90b6c51049d2d9bfb1c +size 15878 diff --git a/src/base-environments/youth_room/import/textures/wires_albedo.png.import b/src/base-environments/youth_room/import/textures/wires_albedo.png.import new file mode 100644 index 0000000..7f8554c --- /dev/null +++ b/src/base-environments/youth_room/import/textures/wires_albedo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://chisldkpt6bf5" +path.s3tc="res://.godot/imported/wires_albedo.png-e2ca1c0cfbd554203dfd9c0e487f3b1c.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://base-environments/youth_room/import/textures/wires_albedo.png" +dest_files=["res://.godot/imported/wires_albedo.png-e2ca1c0cfbd554203dfd9c0e487f3b1c.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/src/base-environments/youth_room/import/textures/wires_normal.png b/src/base-environments/youth_room/import/textures/wires_normal.png new file mode 100644 index 0000000..0e030d7 --- /dev/null +++ b/src/base-environments/youth_room/import/textures/wires_normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34452323e72ecbe69b53627b27150552214668bc4d9d271f05a095d5369ad148 +size 22811 diff --git a/src/base-environments/youth_room/import/textures/wires_normal.png.import b/src/base-environments/youth_room/import/textures/wires_normal.png.import new file mode 100644 index 0000000..2b2a41c --- /dev/null +++ b/src/base-environments/youth_room/import/textures/wires_normal.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://i75aktvgsdwg" +path.s3tc="res://.godot/imported/wires_normal.png-a1ed398b6f0bdd3bf06fa8d9f72a947e.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://base-environments/youth_room/import/textures/wires_normal.png" +dest_files=["res://.godot/imported/wires_normal.png-a1ed398b6f0bdd3bf06fa8d9f72a947e.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="res://base-environments/youth_room/import/textures/wires_normal.png" +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 diff --git a/src/base-environments/youth_room/shaders/fairy_light_diode.res b/src/base-environments/youth_room/shaders/fairy_light_diode.res new file mode 100644 index 0000000..596929b Binary files /dev/null and b/src/base-environments/youth_room/shaders/fairy_light_diode.res differ diff --git a/src/base-environments/youth_room/shaders/fairylight.material b/src/base-environments/youth_room/shaders/fairylight.material new file mode 100644 index 0000000..a8d2bc1 Binary files /dev/null and b/src/base-environments/youth_room/shaders/fairylight.material differ diff --git a/src/base-environments/youth_room/shaders/fairylight_halo.material b/src/base-environments/youth_room/shaders/fairylight_halo.material new file mode 100644 index 0000000..4bdb3a6 Binary files /dev/null and b/src/base-environments/youth_room/shaders/fairylight_halo.material differ diff --git a/src/project.godot b/src/project.godot index 1ce75fd..9c4bcb8 100644 --- a/src/project.godot +++ b/src/project.godot @@ -38,7 +38,7 @@ mouse_cursor/custom_image="res://import/interface-elements/cursor.png" [editor_plugins] -enabled=PackedStringArray() +enabled=PackedStringArray("res://addons/LineRenderer/plugin.cfg") [filesystem]