diff --git a/Materials/Black Hair.tres b/Materials/Black Hair.tres new file mode 100644 index 0000000..756a710 --- /dev/null +++ b/Materials/Black Hair.tres @@ -0,0 +1,12 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://2a27fe7w8jef"] + +[resource] +albedo_color = Color(0.0666928, 0.0646792, 0.0591421, 1) +metallic = 1.0 +roughness = 0.41 +normal_enabled = true +anisotropy_enabled = true +subsurf_scatter_enabled = true +subsurf_scatter_strength = 1.0 +subsurf_scatter_transmittance_depth = 3.016 +subsurf_scatter_transmittance_boost = 1.0 diff --git a/Materials/Chica.gdshader b/Materials/Chica.gdshader new file mode 100644 index 0000000..366b242 --- /dev/null +++ b/Materials/Chica.gdshader @@ -0,0 +1,39 @@ +shader_type spatial; +render_mode blend_mix, depth_draw_opaque, cull_back, diffuse_burley, specular_schlick_ggx; + +uniform sampler2D diffuse_texture; +uniform sampler2D normal_map: hint_normal; +uniform float normal_scale : hint_range(-16.0, 16.0); +uniform sampler2D mask_map; +uniform sampler2D paint_map; + +uniform vec3 paint_color_r : source_color; +uniform vec3 paint_color_g: source_color; +uniform vec3 paint_color_b: source_color; +uniform vec3 paint_color_a: source_color; + + + +void fragment() { + vec2 uv = UV; + + vec4 base_color = texture(diffuse_texture, uv); + vec4 paint = texture(paint_map, uv); + vec4 masks = texture(mask_map, uv); + + // Mix base with paint colors by channels + vec3 paint_result = base_color.rgb; + paint_result = mix(paint_result, paint_color_r, paint.r); + paint_result = mix(paint_result, paint_color_g, paint.g); + paint_result = mix(paint_result, paint_color_b, paint.b); + paint_result = mix(paint_result, paint_color_a, paint.a); + + ALBEDO = paint_result; + + EMISSION = paint_result * masks.b; + ROUGHNESS = masks.g; + METALLIC = masks.r; + + NORMAL_MAP = texture(normal_map, uv).rgb; + NORMAL_MAP_DEPTH = normal_scale; +} diff --git a/Materials/Chica.gdshader.uid b/Materials/Chica.gdshader.uid new file mode 100644 index 0000000..cb8572d --- /dev/null +++ b/Materials/Chica.gdshader.uid @@ -0,0 +1 @@ +uid://des8a3glk3x31 diff --git a/Materials/Chica.tres b/Materials/Chica.tres new file mode 100644 index 0000000..7ea69b1 --- /dev/null +++ b/Materials/Chica.tres @@ -0,0 +1,20 @@ +[gd_resource type="ShaderMaterial" load_steps=6 format=3 uid="uid://b51m30fupimsx"] + +[ext_resource type="Shader" uid="uid://des8a3glk3x31" path="res://Materials/Chica.gdshader" id="1_g0agl"] +[ext_resource type="Texture2D" uid="uid://fldji252qpey" path="res://Textures/Chica_Main.png" id="2_72hyw"] +[ext_resource type="Texture2D" uid="uid://cev65j6tjoli8" path="res://Textures/Chica_MaskMap.png" id="3_6qvbf"] +[ext_resource type="Texture2D" uid="uid://bnrc4uavbcu8f" path="res://Textures/Chica_NormalMap.png" id="4_wheg1"] +[ext_resource type="Texture2D" uid="uid://c6rqou6artl3b" path="res://Textures/Chica_PaintMap.png" id="5_vlian"] + +[resource] +render_priority = 0 +shader = ExtResource("1_g0agl") +shader_parameter/diffuse_texture = ExtResource("2_72hyw") +shader_parameter/normal_map = ExtResource("4_wheg1") +shader_parameter/normal_scale = 1.0 +shader_parameter/mask_map = ExtResource("3_6qvbf") +shader_parameter/paint_map = ExtResource("5_vlian") +shader_parameter/paint_color_r = Color(0.901961, 0.745098, 0.239216, 1) +shader_parameter/paint_color_g = Color(0.85098, 0.533333, 0.254902, 1) +shader_parameter/paint_color_b = Color(0.647059, 0.12549, 0.0980392, 1) +shader_parameter/paint_color_a = Color(0, 0, 0, 1) diff --git a/Materials/Yellow Hair.tres b/Materials/Yellow Hair.tres new file mode 100644 index 0000000..f8386f6 --- /dev/null +++ b/Materials/Yellow Hair.tres @@ -0,0 +1,12 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bimexjbcml72"] + +[resource] +albedo_color = Color(0.901961, 0.745098, 0.239216, 1) +metallic = 1.0 +roughness = 0.41 +normal_enabled = true +anisotropy_enabled = true +subsurf_scatter_enabled = true +subsurf_scatter_strength = 1.0 +subsurf_scatter_transmittance_depth = 3.016 +subsurf_scatter_transmittance_boost = 1.0 diff --git a/Models/Animatronics/Chica/Chica.fbx b/Models/Animatronics/Chica/Chica.fbx new file mode 100644 index 0000000..87967b1 Binary files /dev/null and b/Models/Animatronics/Chica/Chica.fbx differ diff --git a/Models/Animatronics/Chica/Chica.fbx.import b/Models/Animatronics/Chica/Chica.fbx.import new file mode 100644 index 0000000..01ae999 --- /dev/null +++ b/Models/Animatronics/Chica/Chica.fbx.import @@ -0,0 +1,57 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://m7s5j51nrkg1" +path="res://.godot/imported/Chica.fbx-d7cc11b983dd0e55edccc1e316069a29.scn" + +[deps] + +source_file="res://Models/Animatronics/Chica/Chica.fbx" +dest_files=["res://.godot/imported/Chica.fbx-d7cc11b983dd0e55edccc1e316069a29.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=true +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={ +"materials": { +"Chica Main": { +"use_external/enabled": true, +"use_external/path": "uid://b51m30fupimsx" +}, +"Material.017": { +"use_external/enabled": true, +"use_external/path": "uid://2a27fe7w8jef" +}, +"hair yellow": { +"use_external/enabled": true, +"use_external/path": "uid://bimexjbcml72" +}, +"hair yellow.001": { +"use_external/enabled": true, +"use_external/path": "uid://2a27fe7w8jef" +} +} +} +fbx/importer=0 +fbx/allow_geometry_helper_nodes=false +fbx/embedded_image_handling=1 diff --git a/Scenes/Animatables/Chica.tscn b/Scenes/Animatables/Chica.tscn new file mode 100644 index 0000000..0ec7449 --- /dev/null +++ b/Scenes/Animatables/Chica.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=5 format=3 uid="uid://cry2msqosqx0u"] + +[ext_resource type="PackedScene" uid="uid://m7s5j51nrkg1" path="res://Models/Animatronics/Chica/Chica.fbx" id="1_4j8or"] +[ext_resource type="Script" uid="uid://iqrmm33dxvui" path="res://Scripts/GL_Animatronic.gd" id="1_vcqxk"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vcqxk"] + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_aslrn"] +graph_offset = Vector2(-475.5, -2.24493) +nodes/Animation/node = SubResource("AnimationNodeAnimation_vcqxk") +nodes/Animation/position = Vector2(-180, 120) + +[node name="Chica" type="Node3D" groups=["AA_CHICA"]] +script = ExtResource("1_vcqxk") + +[node name="Chica" parent="." instance=ExtResource("1_4j8or")] + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource("AnimationNodeBlendTree_aslrn") diff --git a/Scenes/Levels/Freddy's.VoxelGI_data.res b/Scenes/Levels/Freddy's.VoxelGI_data.res new file mode 100644 index 0000000..ec0194e Binary files /dev/null and b/Scenes/Levels/Freddy's.VoxelGI_data.res differ diff --git a/Scenes/Levels/Freddy's.tscn b/Scenes/Levels/Freddy's.tscn new file mode 100644 index 0000000..e4907f1 --- /dev/null +++ b/Scenes/Levels/Freddy's.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=9 format=3 uid="uid://doe47bro2kqt6"] + +[ext_resource type="PackedScene" uid="uid://cry2msqosqx0u" path="res://Scenes/Animatables/Chica.tscn" id="1_5nprb"] +[ext_resource type="Script" uid="uid://8vyuhyx0xogt" path="res://Scripts/freecam.gd" id="2_stiks"] +[ext_resource type="VoxelGIData" uid="uid://ckgscns47hws6" path="res://Scenes/Levels/Freddy's.VoxelGI_data.res" id="3_1u053"] +[ext_resource type="Script" uid="uid://c5uawj66escut" path="res://Scripts/GL_Spotlight.gd" id="3_2ymb8"] +[ext_resource type="PackedScene" uid="uid://c57u187iciexi" path="res://Scenes/UI/Node Map.tscn" id="5_h0i1e"] + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_stiks"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_1u053"] + +[sub_resource type="Environment" id="Environment_h0i1e"] +background_mode = 1 +tonemap_mode = 4 +ssr_enabled = true +ssao_enabled = true +ssil_enabled = true +ssil_intensity = 3.0 +glow_enabled = true +fog_enabled = true +fog_light_color = Color(0, 0, 0, 1) + +[node name="Freddy\'s" type="Node3D"] + +[node name="World Boundary" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0211427, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="World Boundary"] +shape = SubResource("WorldBoundaryShape3D_stiks") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(5, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0) +mesh = SubResource("PlaneMesh_1u053") + +[node name="Chica" parent="." instance=ExtResource("1_5nprb")] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 4.76837e-07, 1.47296, -2.35951) + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.42203, 4.45495, 0.192916) +light_energy = 0.575 +light_size = 0.106 +shadow_enabled = true +omni_range = 8.156 +omni_attenuation = 2.0 + +[node name="OmniLight3D2" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.87906, 4.18335, 0.548465) +light_size = 0.106 +shadow_enabled = true +omni_range = 8.156 +omni_attenuation = 2.0 + +[node name="OmniLight3D3" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.975392, 4.18335, -5.09868) +light_size = 0.106 +shadow_enabled = true +omni_range = 8.156 +omni_attenuation = 2.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_h0i1e") + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.01889, 2.26498, -0.257163) +script = ExtResource("2_stiks") +toggle_key = 4194305 +overlay_text = false + +[node name="SpotLight3D" type="SpotLight3D" parent="."] +transform = Transform3D(0.976123, 0.0551107, -0.210113, -0.00945105, 0.97714, 0.212388, 0.217015, -0.205331, 0.954329, -0.581223, 3.60596, 4.08111) +light_color = Color(0.944285, 0.839984, 0.7003, 1) +light_energy = 500.0 +light_size = 0.124 +shadow_enabled = true +spot_range = 7.605 +spot_attenuation = 2.0 +spot_angle = 5.59 +spot_angle_attenuation = 0.329877 + +[node name="Node" type="Node" parent="SpotLight3D" groups=["L_SPOT_CHICA"]] +script = ExtResource("3_2ymb8") +canChangeColor = true +canChangeSize = true + +[node name="ReflectionProbe" type="ReflectionProbe" parent="."] + +[node name="VoxelGI" type="VoxelGI" parent="."] +data = ExtResource("3_1u053") + +[node name="NodeMap" parent="." instance=ExtResource("5_h0i1e")] diff --git a/Scenes/Node Types/Chica.tscn b/Scenes/Node Types/Chica.tscn new file mode 100644 index 0000000..06a1fa9 --- /dev/null +++ b/Scenes/Node Types/Chica.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://d4gx38pme7hnp"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_6fnvm"] +[ext_resource type="Script" uid="uid://t8bsiegtsiwo" path="res://Scripts/GL_Output.gd" id="2_6fnvm"] + +[node name="Node" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_6fnvm")] +layout_mode = 0 +offset_bottom = 100.0 +script = ExtResource("2_6fnvm") +identification = "AA_CHICA" +names = PackedStringArray("Jaw") +types = PackedStringArray("float") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/ChicaSpot.tscn b/Scenes/Node Types/ChicaSpot.tscn new file mode 100644 index 0000000..01a29e4 --- /dev/null +++ b/Scenes/Node Types/ChicaSpot.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://dxay21t1j6ha1"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_vck43"] +[ext_resource type="Script" uid="uid://t8bsiegtsiwo" path="res://Scripts/GL_Output.gd" id="2_1p1hk"] + +[node name="Node" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_vck43")] +layout_mode = 0 +offset_bottom = 100.0 +script = ExtResource("2_1p1hk") +identification = "L_SPOT_CHICA" +names = PackedStringArray("intensity", "color", "size") +types = PackedStringArray("float", "color", "float") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Float.tscn b/Scenes/Node Types/Float.tscn index 60d2546..03629bb 100644 --- a/Scenes/Node Types/Float.tscn +++ b/Scenes/Node Types/Float.tscn @@ -3,14 +3,13 @@ [ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_cnobp"] [ext_resource type="Script" uid="uid://b325grg0122jn" path="res://Scripts/GL_Float.gd" id="2_cnobp"] -[node name="Sine" type="Control"] +[node name="Node" type="Control"] layout_mode = 3 anchors_preset = 0 mouse_filter = 1 [node name="Node" parent="." instance=ExtResource("1_cnobp")] layout_mode = 0 -offset_right = 200.0 script = ExtResource("2_cnobp") [connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] diff --git a/Scenes/Node Types/Keystroke Ramp.tscn b/Scenes/Node Types/Keystroke Ramp.tscn new file mode 100644 index 0000000..82c7105 --- /dev/null +++ b/Scenes/Node Types/Keystroke Ramp.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://cbd4dlsco2wls"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_lgcd0"] +[ext_resource type="Script" uid="uid://dhw0vlsb0bb8r" path="res://Scripts/GL_Keystroke_Ramp.gd" id="2_lgcd0"] + +[node name="Node" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_lgcd0")] +layout_mode = 0 +script = ExtResource("2_lgcd0") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Keystrokes.tscn b/Scenes/Node Types/Keystrokes.tscn new file mode 100644 index 0000000..99c5579 --- /dev/null +++ b/Scenes/Node Types/Keystrokes.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://jmwqwspljwjc"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_ua37n"] +[ext_resource type="Script" uid="uid://e6v6exlrhtaq" path="res://Scripts/GL_Keystrokes.gd" id="2_ua37n"] + +[node name="Node" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_ua37n")] +layout_mode = 0 +script = ExtResource("2_ua37n") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Mix Colors.tscn b/Scenes/Node Types/Mix Colors.tscn new file mode 100644 index 0000000..9730651 --- /dev/null +++ b/Scenes/Node Types/Mix Colors.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://c2wexxs2psg84"] + +[ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_4ojwp"] +[ext_resource type="Script" uid="uid://dum3u4w3aa3s0" path="res://Scripts/GL_Mix_Colors.gd" id="2_4ojwp"] + +[node name="Node" type="Control"] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 1 + +[node name="Node" parent="." instance=ExtResource("1_4ojwp")] +layout_mode = 0 +script = ExtResource("2_4ojwp") + +[connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] +[connection signal="mouse_exited" from="Node" to="Node" method="mouse_exit"] diff --git a/Scenes/Node Types/Random.tscn b/Scenes/Node Types/Random.tscn index 9aea24f..589c250 100644 --- a/Scenes/Node Types/Random.tscn +++ b/Scenes/Node Types/Random.tscn @@ -3,14 +3,14 @@ [ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_wswgt"] [ext_resource type="Script" uid="uid://3vek1806nwqj" path="res://Scripts/GL_Random.gd" id="2_wswgt"] -[node name="Sine" type="Control"] +[node name="Node" type="Control"] layout_mode = 3 anchors_preset = 0 mouse_filter = 1 [node name="Node" parent="." instance=ExtResource("1_wswgt")] layout_mode = 0 -offset_right = 200.0 +offset_bottom = 100.0 script = ExtResource("2_wswgt") [connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] diff --git a/Scenes/Node Types/Sine.tscn b/Scenes/Node Types/Sine.tscn index dff98c4..a46f5b4 100644 --- a/Scenes/Node Types/Sine.tscn +++ b/Scenes/Node Types/Sine.tscn @@ -3,14 +3,14 @@ [ext_resource type="PackedScene" uid="uid://b0arjg8r75f8y" path="res://Scenes/Nodes/Node.tscn" id="1_m6pki"] [ext_resource type="Script" uid="uid://cetd8fp5y2ls0" path="res://Scripts/GL_Sine.gd" id="2_claki"] -[node name="Sine" type="Control"] +[node name="Node" type="Control"] layout_mode = 3 anchors_preset = 0 mouse_filter = 1 [node name="Node" parent="." instance=ExtResource("1_m6pki")] layout_mode = 0 -offset_right = 200.0 +offset_bottom = 100.0 script = ExtResource("2_claki") [connection signal="mouse_entered" from="Node" to="Node" method="mouse_enter"] diff --git a/Scenes/Nodes/Node Row.tscn b/Scenes/Nodes/Node Row.tscn index 77163a7..e0cda79 100644 --- a/Scenes/Nodes/Node Row.tscn +++ b/Scenes/Nodes/Node Row.tscn @@ -15,10 +15,8 @@ script = ExtResource("1_fygh4") [node name="Label" type="Label" parent="."] layout_mode = 2 -size_flags_horizontal = 3 mouse_filter = 1 text = "Testtesttesttesttest" -clip_text = true [node name="Pick Float" type="HSlider" parent="."] visible = false diff --git a/Scenes/Nodes/Node.tscn b/Scenes/Nodes/Node.tscn index e0a91e6..42aa5ec 100644 --- a/Scenes/Nodes/Node.tscn +++ b/Scenes/Nodes/Node.tscn @@ -2,20 +2,18 @@ [ext_resource type="Theme" uid="uid://b3wjoiiv6sq22" path="res://UI/Themes/Default.tres" id="1_arhwt"] -[node name="Node" type="Panel"] +[node name="Node" type="PanelContainer"] +clip_contents = true custom_minimum_size = Vector2(200, 100) offset_right = 200.0 -offset_bottom = 50.0 +offset_bottom = 100.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 mouse_default_cursor_shape = 6 theme = ExtResource("1_arhwt") [node name="Margins" type="MarginContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 +layout_mode = 2 [node name="Holder" type="VBoxContainer" parent="Margins"] layout_mode = 2 diff --git a/Scenes/UI/Node Map.tscn b/Scenes/UI/Node Map.tscn index 4d30195..d089c2f 100644 --- a/Scenes/UI/Node Map.tscn +++ b/Scenes/UI/Node Map.tscn @@ -1,7 +1,14 @@ -[gd_scene load_steps=2 format=3 uid="uid://c57u187iciexi"] +[gd_scene load_steps=5 format=3 uid="uid://c57u187iciexi"] +[ext_resource type="Script" uid="uid://i4p62x8fnqpn" path="res://Scripts/GL_Node_Map.gd" id="1_jyqbx"] [ext_resource type="PackedScene" uid="uid://mowdu1i1rldt" path="res://Scenes/UI/Search.tscn" id="1_xwfut"] +[sub_resource type="Gradient" id="Gradient_xwfut"] +colors = PackedColorArray(0.448074, 0.0582233, 0.099986, 1, 0.330802, 0.066494, 0.0423852, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_jyqbx"] +gradient = SubResource("Gradient_xwfut") + [node name="NodeMap" type="Control"] layout_mode = 3 anchors_preset = 15 @@ -9,6 +16,16 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +script = ExtResource("1_jyqbx") + +[node name="Background" type="TextureRect" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("GradientTexture1D_jyqbx") [node name="Search" parent="." instance=ExtResource("1_xwfut")] layout_mode = 1 diff --git a/Scripts/GL_Animatable.gd b/Scripts/GL_Animatable.gd new file mode 100644 index 0000000..a01d5b8 --- /dev/null +++ b/Scripts/GL_Animatable.gd @@ -0,0 +1,5 @@ +extends Node +class_name GL_Animatable + +func _sent_signals(signal_ID:String,the_signal): + pass diff --git a/Scripts/GL_Animatable.gd.uid b/Scripts/GL_Animatable.gd.uid new file mode 100644 index 0000000..c852ebc --- /dev/null +++ b/Scripts/GL_Animatable.gd.uid @@ -0,0 +1 @@ +uid://hetlgruo7m0b diff --git a/Scripts/GL_Animatronic.gd b/Scripts/GL_Animatronic.gd new file mode 100644 index 0000000..2398dff --- /dev/null +++ b/Scripts/GL_Animatronic.gd @@ -0,0 +1,22 @@ +extends GL_Animatable + +var anim_tree: AnimationTree +var blend_tree: AnimationNodeBlendTree + +# Assuming this node has a child node with an AnimationPlayer +func _ready(): + # Grab the AnimationPlayer from the first child + var anim_player := get_child(0).get_node("AnimationPlayer") as AnimationPlayer + + # Initialize the AnimationTree and set up the blend tree + anim_tree = AnimationTree.new() + add_child(anim_tree) + + # Create and assign the root node for the blend tree + anim_tree.tree_root = AnimationNodeBlendTree.new() + anim_tree.active = true + + blend_tree = anim_tree.tree_root as AnimationNodeBlendTree + +func _sent_signals(anim_name: String, value: float): + pass diff --git a/Scripts/GL_Animatronic.gd.uid b/Scripts/GL_Animatronic.gd.uid new file mode 100644 index 0000000..31b8fec --- /dev/null +++ b/Scripts/GL_Animatronic.gd.uid @@ -0,0 +1 @@ +uid://iqrmm33dxvui diff --git a/Scripts/GL_Keystroke_Ramp.gd b/Scripts/GL_Keystroke_Ramp.gd new file mode 100644 index 0000000..a8868ab --- /dev/null +++ b/Scripts/GL_Keystroke_Ramp.gd @@ -0,0 +1,50 @@ +extends GL_Node + +var key_to_value = { + KEY_1: 1.0 / 10, + KEY_2: 2.0 / 10, + KEY_3: 3.0 / 10, + KEY_4: 4.0 / 10, + KEY_5: 5.0 / 10, + KEY_6: 6.0 / 10, + KEY_7: 7.0 / 10, + KEY_8: 8.0 / 10, + KEY_9: 9.0 / 10, + KEY_0: 1.0, +} + +var toggle_to_value = { + KEY_1: 0, + KEY_2: 1.0 / 9, + KEY_3: 2.0 / 9, + KEY_4: 3.0 / 9, + KEY_5: 4.0 / 9, + KEY_6: 5.0 / 9, + KEY_7: 6.0 / 9, + KEY_8: 7.0 / 9, + KEY_9: 8.0 / 9, + KEY_0: 1.0, +} + +func _ready(): + _set_title("Keystroke Ramp") + _create_row("Output", null, 0.0, false, 0.0, 0) + _create_row("Toggle", null, null, true, false, 0) + +func _process(delta): + super._process(delta) + + if rows["Toggle"]["pickValue"]: + for key in toggle_to_value.keys(): + if Input.is_key_pressed(key) or Input.is_key_pressed(key + (KEY_KP_0 - KEY_0)): + rows["Output"]["output"] = toggle_to_value[key] + break + else: + var output_value := 0.0 + for key in key_to_value.keys(): + if Input.is_key_pressed(key) or Input.is_key_pressed(key + (KEY_KP_0 - KEY_0)): + output_value = key_to_value[key] + break + rows["Output"]["output"] = output_value + + _send_input("Output") diff --git a/Scripts/GL_Keystroke_Ramp.gd.uid b/Scripts/GL_Keystroke_Ramp.gd.uid new file mode 100644 index 0000000..8275319 --- /dev/null +++ b/Scripts/GL_Keystroke_Ramp.gd.uid @@ -0,0 +1 @@ +uid://dhw0vlsb0bb8r diff --git a/Scripts/GL_Keystrokes.gd b/Scripts/GL_Keystrokes.gd new file mode 100644 index 0000000..c0aa740 --- /dev/null +++ b/Scripts/GL_Keystrokes.gd @@ -0,0 +1,35 @@ +extends GL_Node + +func _ready(): + _set_title("Keystrokes") + _create_row("KEY #1",null,false,false,0.0,1) + _create_row("KEY #2",null,false,false,0.0,1) + _create_row("KEY #3",null,false,false,0.0,1) + _create_row("KEY #4",null,false,false,0.0,1) + _create_row("KEY #5",null,false,false,0.0,1) + _create_row("KEY #6",null,false,false,0.0,1) + _create_row("KEY #7",null,false,false,0.0,1) + _create_row("KEY #8",null,false,false,0.0,1) + _create_row("KEY #9",null,false,false,0.0,1) + _create_row("KEY #0",null,false,false,0.0,1) + pass +func _process(delta): + super._process(delta) + + var key_map = { + "KEY #1": KEY_1, + "KEY #2": KEY_2, + "KEY #3": KEY_3, + "KEY #4": KEY_4, + "KEY #5": KEY_5, + "KEY #6": KEY_6, + "KEY #7": KEY_7, + "KEY #8": KEY_8, + "KEY #9": KEY_9, + "KEY #0": KEY_0, + } + + for key_name in key_map.keys(): + var is_pressed = Input.is_key_pressed(key_map[key_name]) or Input.is_key_pressed(key_map[key_name] + (KEY_KP_0 - KEY_0)) + rows[key_name]["output"] = is_pressed + _send_input(key_name) diff --git a/Scripts/GL_Keystrokes.gd.uid b/Scripts/GL_Keystrokes.gd.uid new file mode 100644 index 0000000..adb7631 --- /dev/null +++ b/Scripts/GL_Keystrokes.gd.uid @@ -0,0 +1 @@ +uid://e6v6exlrhtaq diff --git a/Scripts/GL_Mix_Colors.gd b/Scripts/GL_Mix_Colors.gd new file mode 100644 index 0000000..8998cc9 --- /dev/null +++ b/Scripts/GL_Mix_Colors.gd @@ -0,0 +1,18 @@ +extends GL_Node + +func _ready(): + _set_title("Mix Colors") + _create_row("Factor",0.0,Color.WHITE,false,null,0) + _create_row("Color A",Color.RED,null,true,Color.RED,0) + _create_row("Color B",Color.BLUE,null,true,Color.BLUE,0) + pass + +func _process(delta): + super._process(delta) + + for key in rows: + if rows[key]["picker"] == true && rows[key]["backConnected"] == false: + rows[key]["input"] = rows[key]["pickValue"] + + rows["Factor"]["output"] = rows["Color A"]["input"].lerp(rows["Color B"]["input"],rows["Factor"]["input"]) + _send_input("Factor") diff --git a/Scripts/GL_Mix_Colors.gd.uid b/Scripts/GL_Mix_Colors.gd.uid new file mode 100644 index 0000000..9fe461e --- /dev/null +++ b/Scripts/GL_Mix_Colors.gd.uid @@ -0,0 +1 @@ +uid://dum3u4w3aa3s0 diff --git a/Scripts/GL_Node.gd b/Scripts/GL_Node.gd index 36b3e18..2b1f77e 100644 --- a/Scripts/GL_Node.gd +++ b/Scripts/GL_Node.gd @@ -1,4 +1,4 @@ -extends Panel +extends PanelContainer class_name GL_Node var rows : Dictionary var uuid : int #REMEMBER TO SET THIS ON CREATION @@ -31,7 +31,6 @@ func _update_visuals(): for key in rows: var nodeRow = load("res://Scenes/Nodes/Node Row.tscn").instantiate() holder.add_child(nodeRow) - nodeRow.name = str(key) (nodeRow.get_node("Label") as Label).text = str(key) var input = nodeRow.get_node("Input") as GL_Node_Point var output = nodeRow.get_node("Output") as GL_Node_Point @@ -46,13 +45,14 @@ func _update_visuals(): var slider = nodeRow.get_node("Pick Float") as HSlider slider.max_value = rows[key]["pickFloatMax"] slider.value = rows[key]["pickValue"] - TYPE_BOOL: - assignPick(nodeRow.get_node("Pick Bool"),str(key)) - (nodeRow.get_node("Pick Float") as ColorPickerButton).color = rows[key]["pickValue"] TYPE_COLOR: assignPick(nodeRow.get_node("Pick Color"),str(key)) - (nodeRow.get_node("Pick Float") as CheckButton).button_pressed = rows[key]["pickValue"] - + (nodeRow.get_node("Pick Color") as ColorPickerButton).color = rows[key]["pickValue"] + TYPE_BOOL: + assignPick(nodeRow.get_node("Pick Bool"),str(key)) + (nodeRow.get_node("Pick Bool") as CheckButton).button_pressed = rows[key]["pickValue"] + else: + (nodeRow.get_node("Label") as Label).size_flags_horizontal = Control.SIZE_EXPAND_FILL _set_inout_type(nodeRow.get_node("Input") as Button,rows[key]["input"]) _set_inout_type(nodeRow.get_node("Output") as Button,rows[key]["output"]) @@ -63,12 +63,15 @@ func assignPick(pick:GL_Node_Picker,key:String): pick.valueName = key func give_input_point_pos(name:String) -> Vector2: - var holder = get_node("Margins").get_node("Holder").get_node(name) + var holder = get_node("Margins").get_node("Holder") if holder == null: return global_position else: - holder = holder.get_node("Input") as GL_Node_Point - return holder.global_position + Vector2(holder.size.x/2,holder.size.y/2) + for child in holder.get_children(): + if child.name != "Title" && (child.get_node("Label") as Label).text == name: + holder = child.get_node("Input") as GL_Node_Point + return holder.global_position + Vector2(holder.size.x/2,holder.size.y/2) + return Vector2.ZERO func _set_inout_type(label:Button, value): match typeof(value): @@ -93,7 +96,10 @@ func _create_row(name:String,input,output,picker:bool,pickDefault,pickFloatMaxim func _recieve_input(inputName:String,value): if rows.has(inputName): - rows[inputName]["input"] = value + if typeof(rows[inputName]["input"]) == TYPE_FLOAT && typeof(value) == TYPE_BOOL: + rows[inputName]["input"] = float(value) + else: + rows[inputName]["input"] = value func _send_input(output_name: String): if not rows.has(output_name): @@ -120,8 +126,9 @@ func _create_connection(target:GL_Node,input_name:String,output_name:String): return if typeof(rows[output_name].get("output", null)) != typeof(target.rows[input_name].get("input",null)): - print("Type mismatch: cannot connect " + output_name + " to " + target.name) - return + if !(typeof(rows[output_name].get("output", null)) == TYPE_BOOL && typeof(target.rows[input_name].get("input",null)) == TYPE_FLOAT): + print("Type mismatch: cannot connect " + output_name + " to " + target.name) + return var thenew = { "target": target, diff --git a/Scripts/GL_Node_Map.gd b/Scripts/GL_Node_Map.gd new file mode 100644 index 0000000..c5ec899 --- /dev/null +++ b/Scripts/GL_Node_Map.gd @@ -0,0 +1,21 @@ +extends Control +var background:TextureRect + +func _ready(): + visible = false + background = get_node("Background") + +func _input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed: + match(event.keycode): + KEY_ESCAPE: + visible = not visible + if visible: + background.self_modulate.a = 1 + KEY_TAB: + background.self_modulate.a = abs(background.self_modulate.a - 1) + + if visible: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + else: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) diff --git a/Scripts/GL_Node_Map.gd.uid b/Scripts/GL_Node_Map.gd.uid new file mode 100644 index 0000000..de72f1c --- /dev/null +++ b/Scripts/GL_Node_Map.gd.uid @@ -0,0 +1 @@ +uid://i4p62x8fnqpn diff --git a/Scripts/GL_Node_Point.gd b/Scripts/GL_Node_Point.gd index 286c2c1..c2df894 100644 --- a/Scripts/GL_Node_Point.gd +++ b/Scripts/GL_Node_Point.gd @@ -13,7 +13,8 @@ func _process(delta): if dragging: if previewLine == null: previewLine = _create_line() - previewLine.points[1] = get_viewport().get_mouse_position() - previewLine.global_position + previewLine.points[0] = global_position + Vector2(size.x / 2, size.y / 2) + previewLine.points[1] = get_viewport().get_mouse_position()# - previewLine.global_position var connections = mainNode.rows[valueName].get("connections",[]) if connections != []: @@ -30,7 +31,8 @@ func _process(delta): child.default_color = Color.BLACK TYPE_COLOR: child.default_color = output - child.points[1] = (connections[iter]["target"] as GL_Node).give_input_point_pos(connections[iter]["input_name"]) - child.global_position + child.points[0] = global_position + Vector2(size.x / 2, size.y / 2) + child.points[1] = (connections[iter]["target"] as GL_Node).give_input_point_pos(connections[iter]["input_name"])# - child.global_position iter += 1 func _create_line() -> Line2D: @@ -40,9 +42,10 @@ func _create_line() -> Line2D: previewLine.default_color = Color.WHITE previewLine.add_point(Vector2.ZERO) previewLine.add_point(Vector2.ZERO) - previewLine.points[0] = Vector2(size.x / 2, size.y / 2) previewLine.begin_cap_mode = Line2D.LINE_CAP_ROUND previewLine.end_cap_mode = Line2D.LINE_CAP_ROUND + previewLine.antialiased = true + previewLine.top_level = true add_child(previewLine) return previewLine diff --git a/Scripts/GL_Output.gd b/Scripts/GL_Output.gd new file mode 100644 index 0000000..cdd5420 --- /dev/null +++ b/Scripts/GL_Output.gd @@ -0,0 +1,29 @@ +extends GL_Node + +@export var identification : String +@export var names : PackedStringArray +@export var types : PackedStringArray + +func _ready(): + _set_title(identification) + for i in names.size(): + match(types[i].to_lower()): + "float": + _create_row(str(names[i]),0.01,null,true,0.5,1) + "color": + _create_row(str(names[i]),Color.WHITE,null,true,Color.WHITE,0) + "bool": + _create_row(str(names[i]),false,null,true,false,0) + pass + +func _process(delta): + super._process(delta) + + for key in rows: + if rows[key]["picker"] == true && rows[key]["backConnected"] == false: + rows[key]["input"] = rows[key]["pickValue"] + + for node in get_tree().get_nodes_in_group(identification): + if node is GL_Animatable: + for key in rows: + node._sent_signals(key,rows[key]["input"]) diff --git a/Scripts/GL_Output.gd.uid b/Scripts/GL_Output.gd.uid new file mode 100644 index 0000000..2b3965d --- /dev/null +++ b/Scripts/GL_Output.gd.uid @@ -0,0 +1 @@ +uid://t8bsiegtsiwo diff --git a/Scripts/GL_Random.gd b/Scripts/GL_Random.gd index af006df..c26c2ae 100644 --- a/Scripts/GL_Random.gd +++ b/Scripts/GL_Random.gd @@ -1,14 +1,21 @@ extends GL_Node var rng : RandomNumberGenerator +var timing : float func _ready(): _set_title("Random") _create_row("Output",null,0.0,false,null,0) + _create_row("Time",0.01,null,true,0.01,5) rng = RandomNumberGenerator.new() rng.seed = Time.get_ticks_msec() pass func _process(delta): super._process(delta) - rows["Output"]["output"] = rng.randf() + if rows["Time"]["picker"] == true && rows["Time"]["backConnected"] == false: + rows["Time"]["input"] = rows["Time"]["pickValue"] + timing -= delta + if timing <= 0: + timing = rows["Time"]["input"] + rows["Output"]["output"] = rng.randf() _send_input("Output") diff --git a/Scripts/GL_Search.gd b/Scripts/GL_Search.gd index 88557e0..019fd34 100644 --- a/Scripts/GL_Search.gd +++ b/Scripts/GL_Search.gd @@ -1,6 +1,15 @@ extends Control -var rows : Dictionary = {"Sine":99,"Random":99,"Float":99} +var rows : Dictionary = { + "Sine":99, + "Random":99, + "Float":99, + "Chica":1, + "ChicaSpot":1, + "Keystrokes":1, + "Keystroke Ramp":1, + "Mix Colors":1, + } var searching : bool var lastMousePos : Vector2 @@ -39,7 +48,7 @@ func _set_rows(): func _create_node(name:String): var node = load("res://Scenes/Node Types/" + name + ".tscn").instantiate() - get_tree().root.add_child(node) + get_parent().add_child(node) node = (node as Control).get_child(0) as GL_Node node.position = lastMousePos node._create_uuid() diff --git a/Scripts/GL_Sine.gd b/Scripts/GL_Sine.gd index 4898744..acb1da8 100644 --- a/Scripts/GL_Sine.gd +++ b/Scripts/GL_Sine.gd @@ -3,12 +3,12 @@ extends GL_Node func _ready(): _set_title("Sine") _create_row("Output",null,0.0,false,null,0) - _create_row("Length",0.01,null,true,0.01,0.05) + _create_row("Time",0.01,null,true,0.01,0.05) pass func _process(delta): super._process(delta) - if rows["Length"]["picker"] == true && rows["Length"]["backConnected"] == false: - rows["Length"]["input"] = rows["Length"]["pickValue"] - rows["Output"]["output"] = (sin(Time.get_ticks_msec() * rows["Length"].get("input",1)) / 2) + 0.5 + if rows["Time"]["picker"] == true && rows["Time"]["backConnected"] == false: + rows["Time"]["input"] = rows["Time"]["pickValue"] + rows["Output"]["output"] = (sin(Time.get_ticks_msec() * rows["Time"].get("input",1)) / 2) + 0.5 _send_input("Output") diff --git a/Scripts/GL_Spotlight.gd b/Scripts/GL_Spotlight.gd new file mode 100644 index 0000000..1982cc2 --- /dev/null +++ b/Scripts/GL_Spotlight.gd @@ -0,0 +1,20 @@ +extends GL_Animatable +var light:SpotLight3D +@export var canChangeColor:bool = false +@export var canChangeSize:bool = false +@export var energyMultiplier:float = 500 + +func _ready(): + light = self.get_parent() + +func _sent_signals(signal_ID:String,the_signal): + match(signal_ID): + "intensity": + light.light_energy = the_signal * energyMultiplier + "color": + if canChangeColor: + light.light_color = the_signal + "size": + if canChangeSize: + light.spot_angle = the_signal * 90 + pass diff --git a/Scripts/GL_Spotlight.gd.uid b/Scripts/GL_Spotlight.gd.uid new file mode 100644 index 0000000..9c0566a --- /dev/null +++ b/Scripts/GL_Spotlight.gd.uid @@ -0,0 +1 @@ +uid://c5uawj66escut diff --git a/Scripts/freecam.gd b/Scripts/freecam.gd new file mode 100644 index 0000000..7848c95 --- /dev/null +++ b/Scripts/freecam.gd @@ -0,0 +1,146 @@ +extends Camera3D + +## Camera with flying script attached to it. +class_name Freecam3D + +## +## Camera with toggleable freecam mode for prototyping when creating levels, shaders, lighting, etc. +## +## Usage: Run your game, press and fly around freely. Uses Minecraft-like controls. +## + +## Customize your own toggle key to avoid collisions with your current mappings. +@export var toggle_key: Key = KEY_TAB +## Speed up / down by scrolling the mouse whell down / up +@export var invert_speed_controls: bool = false + +@export var overlay_text: bool = true + +## Pivot node for camera looking around +@onready var pivot := Node3D.new() +## Main parent for camera overlay. +@onready var screen_overlay := VBoxContainer.new() +## Container for the chat-like event log. +@onready var event_log := VBoxContainer.new() + +const MAX_SPEED := 0.25 +const MIN_SPEED := 0.01 +const ACCELERATION := 0.1 +const MOUSE_SENSITIVITY := 0.002 + +## Whether or not the camera can move. +var movement_active := false: + set(val): + movement_active = val + display_message("[Movement ON]" if movement_active else "[Movement OFF]") + +## The current maximum speed. Lower or higher it by scrolling the mouse wheel. +var target_speed := MIN_SPEED +## Movement velocity. +var velocity := Vector3.ZERO + + +## Sets up pivot and UI overlay elements. +func _setup_nodes() -> void: + self.add_sibling(pivot) + pivot.position = position + pivot.rotation = rotation + pivot.name = "FreecamPivot" + self.reparent(pivot) + self.position = Vector3.ZERO + self.rotation = Vector3.ZERO + # UI stuff + screen_overlay.add_theme_constant_override("Separation", 8) + self.add_child(screen_overlay) + screen_overlay.add_child(_make_label("Debug Camera")) + screen_overlay.add_spacer(false) + + screen_overlay.add_child(event_log) + screen_overlay.visible = overlay_text + + +func _ready() -> void: + _setup_nodes.call_deferred() + _add_keybindings() + movement_active = true + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + + + +func _process(delta: float) -> void: + + if Input.is_action_just_released("__debug_camera_toggle"): + movement_active = not movement_active + + if movement_active: + var dir = Vector3.ZERO + if Input.is_action_pressed("__debug_camera_forward"): dir.z -= 1 + if Input.is_action_pressed("__debug_camera_back"): dir.z += 1 + if Input.is_action_pressed("__debug_camera_left"): dir.x -= 1 + if Input.is_action_pressed("__debug_camera_right"): dir.x += 1 + if Input.is_action_pressed("__debug_camera_up"): dir.y += 1 + if Input.is_action_pressed("__debug_camera_down"): dir.y -= 1 + + dir = dir.normalized() + dir = dir.rotated(Vector3.UP, pivot.rotation.y) + + velocity = lerp(velocity, dir * target_speed, ACCELERATION) + pivot.position += velocity + + +func _input(event: InputEvent) -> void: + if movement_active: + # Turn around + if event is InputEventMouseMotion: + pivot.rotate_y(-event.relative.x * MOUSE_SENSITIVITY) + rotate_x(-event.relative.y * MOUSE_SENSITIVITY) + rotation.x = clamp(rotation.x, -PI/2, PI/2) + + var speed_up = func(): + target_speed = clamp(target_speed + 0.015, MIN_SPEED, MAX_SPEED) + display_message("[Speed up] " + str(target_speed)) + + var slow_down = func(): + target_speed = clamp(target_speed - 0.015, MIN_SPEED, MAX_SPEED) + display_message("[Slow down] " + str(target_speed)) + + # Speed up and down with the mouse wheel + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_WHEEL_UP and event.pressed: + slow_down.call() if invert_speed_controls else speed_up.call() + + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN and event.pressed: + speed_up.call() if invert_speed_controls else slow_down.call() + + +## Pushes new message label into "chat" and removes the old ones if necessary +func display_message(text: String) -> void: + while event_log.get_child_count() >= 3: + event_log.remove_child(event_log.get_child(0)) + + event_log.add_child(_make_label(text)) + + +func _make_label(text: String) -> Label: + var l = Label.new() + l.text = text + return l + + +func _add_keybindings() -> void: + var actions = InputMap.get_actions() + if "__debug_camera_forward" not in actions: _add_key_input_action("__debug_camera_forward", KEY_W) + if "__debug_camera_back" not in actions: _add_key_input_action("__debug_camera_back", KEY_S) + if "__debug_camera_left" not in actions: _add_key_input_action("__debug_camera_left", KEY_A) + if "__debug_camera_right" not in actions: _add_key_input_action("__debug_camera_right", KEY_D) + if "__debug_camera_up" not in actions: _add_key_input_action("__debug_camera_up", KEY_E) + if "__debug_camera_down" not in actions: _add_key_input_action("__debug_camera_down", KEY_Q) + if "__debug_camera_toggle" not in actions: _add_key_input_action("__debug_camera_toggle", toggle_key) + + +func _add_key_input_action(name: String, key: Key) -> void: + var ev = InputEventKey.new() + ev.physical_keycode = key + + InputMap.add_action(name) + InputMap.action_add_event(name, ev) diff --git a/Scripts/freecam.gd.uid b/Scripts/freecam.gd.uid new file mode 100644 index 0000000..1f58977 --- /dev/null +++ b/Scripts/freecam.gd.uid @@ -0,0 +1 @@ +uid://8vyuhyx0xogt diff --git a/Textures/Chica_Main.png.import b/Textures/Chica_Main.png.import index 4658016..dbc9f6f 100644 --- a/Textures/Chica_Main.png.import +++ b/Textures/Chica_Main.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://fldji252qpey" -path="res://.godot/imported/Chica_Main.png-ed504f430467d4015fe315fea792d4a0.ctex" +path.s3tc="res://.godot/imported/Chica_Main.png-ed504f430467d4015fe315fea792d4a0.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://Textures/Chica_Main.png" -dest_files=["res://.godot/imported/Chica_Main.png-ed504f430467d4015fe315fea792d4a0.ctex"] +dest_files=["res://.godot/imported/Chica_Main.png-ed504f430467d4015fe315fea792d4a0.s3tc.ctex"] [params] -compress/mode=0 +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=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -31,4 +32,4 @@ 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 +detect_3d/compress_to=0 diff --git a/Textures/Chica_MaskMap.png.import b/Textures/Chica_MaskMap.png.import index 4f6ebea..3c9c882 100644 --- a/Textures/Chica_MaskMap.png.import +++ b/Textures/Chica_MaskMap.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://cev65j6tjoli8" -path="res://.godot/imported/Chica_MaskMap.png-da402b4bd0fd237cfcfffbc191e529e9.ctex" +path.s3tc="res://.godot/imported/Chica_MaskMap.png-da402b4bd0fd237cfcfffbc191e529e9.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://Textures/Chica_MaskMap.png" -dest_files=["res://.godot/imported/Chica_MaskMap.png-da402b4bd0fd237cfcfffbc191e529e9.ctex"] +dest_files=["res://.godot/imported/Chica_MaskMap.png-da402b4bd0fd237cfcfffbc191e529e9.s3tc.ctex"] [params] -compress/mode=0 +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=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -31,4 +32,4 @@ 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 +detect_3d/compress_to=0 diff --git a/Textures/Chica_NormalMap.png.import b/Textures/Chica_NormalMap.png.import index 8739e69..16ae777 100644 --- a/Textures/Chica_NormalMap.png.import +++ b/Textures/Chica_NormalMap.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://bnrc4uavbcu8f" -path="res://.godot/imported/Chica_NormalMap.png-69cc3ac2b8ef303f803e39dc3c32c557.ctex" +path.s3tc="res://.godot/imported/Chica_NormalMap.png-69cc3ac2b8ef303f803e39dc3c32c557.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://Textures/Chica_NormalMap.png" -dest_files=["res://.godot/imported/Chica_NormalMap.png-69cc3ac2b8ef303f803e39dc3c32c557.ctex"] +dest_files=["res://.godot/imported/Chica_NormalMap.png-69cc3ac2b8ef303f803e39dc3c32c557.s3tc.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/hdr_compression=1 -compress/normal_map=0 +compress/normal_map=1 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -31,4 +32,4 @@ 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 +detect_3d/compress_to=0 diff --git a/Textures/Chica_PaintMap.png.import b/Textures/Chica_PaintMap.png.import index 7d6ad76..9610b06 100644 --- a/Textures/Chica_PaintMap.png.import +++ b/Textures/Chica_PaintMap.png.import @@ -3,25 +3,26 @@ importer="texture" type="CompressedTexture2D" uid="uid://c6rqou6artl3b" -path="res://.godot/imported/Chica_PaintMap.png-27b54e518bdb0ae4e5ae98e1172bf606.ctex" +path.s3tc="res://.godot/imported/Chica_PaintMap.png-27b54e518bdb0ae4e5ae98e1172bf606.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://Textures/Chica_PaintMap.png" -dest_files=["res://.godot/imported/Chica_PaintMap.png-27b54e518bdb0ae4e5ae98e1172bf606.ctex"] +dest_files=["res://.godot/imported/Chica_PaintMap.png-27b54e518bdb0ae4e5ae98e1172bf606.s3tc.ctex"] [params] -compress/mode=0 +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=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -31,4 +32,4 @@ 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 +detect_3d/compress_to=0 diff --git a/UI/Themes/Default.tres b/UI/Themes/Default.tres index 58cbc50..4829b5a 100644 --- a/UI/Themes/Default.tres +++ b/UI/Themes/Default.tres @@ -11,3 +11,4 @@ MarginContainer/constants/margin_left = 10 MarginContainer/constants/margin_right = 10 MarginContainer/constants/margin_top = 10 Panel/styles/panel = ExtResource("1_ne1i0") +PanelContainer/styles/panel = ExtResource("1_ne1i0") diff --git a/project.godot b/project.godot index a2369ac..0dff237 100644 --- a/project.godot +++ b/project.godot @@ -13,10 +13,14 @@ config_version=5 config/name="Give LIFE" config/description="The sequel to Faz-Anim" config/version="0.1a" -run/main_scene="uid://c57u187iciexi" +run/main_scene="uid://doe47bro2kqt6" config/features=PackedStringArray("4.4", "Forward Plus") config/icon="uid://c1usct57qv2oa" [filesystem] import/blender/enabled=false + +[rendering] + +anti_aliasing/quality/use_taa=true