Changed the way materials are stored on some dev models
- also adjusted some stuff and added a few passivestar plugins/tools.
@ -37,6 +37,29 @@ import_script/path=""
|
||||
materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={}
|
||||
_subresources={
|
||||
"materials": {
|
||||
"Material": {
|
||||
"use_external/enabled": false,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/Material.tres",
|
||||
"use_external/path": "uid://bke0ojvbhqtnt"
|
||||
},
|
||||
"prototype_grid_dark": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
|
||||
"use_external/path": "uid://bye8jd50tg7wl"
|
||||
},
|
||||
"prototype_grid_orange": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
|
||||
"use_external/path": "uid://uejce7ra2gcy"
|
||||
},
|
||||
"prototype_grid_red": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_red.tres",
|
||||
"use_external/path": "uid://lvm62memxs5k"
|
||||
}
|
||||
}
|
||||
}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/embedded_image_handling=0
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://srvm3v1grugk"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://srvm3v1grugk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_0kdur"]
|
||||
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_cxrf3"]
|
||||
@ -9,12 +9,15 @@
|
||||
[ext_resource type="PackedScene" uid="uid://do54no1h1pv8i" path="res://_development/ayuroo/models/circus_tent/circus_tent_inside.glb" id="6_kb2k5"]
|
||||
[ext_resource type="LightmapGIData" uid="uid://c0mcaeg0ikvmo" path="res://_development/ayuroo/levels/_experimental/_layout_test.lmbake" id="7_cv3fe"]
|
||||
[ext_resource type="Script" uid="uid://dbcy7qdq4hqlg" path="res://addons/lightmap_probe_grid/lightmap_probe_grid.gd" id="9_p8lkr"]
|
||||
[ext_resource type="Material" uid="uid://c4uudb0m5p048" path="res://tools/lightbeam/lightbeam_material.tres" id="10_283a8"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_cv3fe"]
|
||||
tonemap_mode = 2
|
||||
glow_strength = 1.25
|
||||
glow_bloom = 1.0
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_vl7nw"]
|
||||
|
||||
[node name="LayoutTest" type="Node3D"]
|
||||
script = ExtResource("1_0kdur")
|
||||
metadata/_custom_type_script = "uid://cigop0ivp5vvu"
|
||||
@ -353,23 +356,24 @@ omni_range = 83.0
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||
|
||||
[node name="ReflectionProbe" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.35)
|
||||
size = Vector3(14, 6.8, 5.3)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.5)
|
||||
size = Vector3(14, 6.8, 5)
|
||||
interior = true
|
||||
|
||||
[node name="ReflectionProbe2" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.049999952, 4.2, -2.0000005)
|
||||
size = Vector3(6.1, 10, 16)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.2, -2.0000005)
|
||||
size = Vector3(6, 10, 16)
|
||||
interior = true
|
||||
|
||||
[node name="ReflectionProbe3" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.3999996, 6.0999994, -13)
|
||||
size = Vector3(15, 6.2000003, 10)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8999996, 5.999999, -13.5)
|
||||
size = Vector3(16.2, 6, 11)
|
||||
origin_offset = Vector3(0, 0, -1.42)
|
||||
interior = true
|
||||
|
||||
[node name="ReflectionProbe4" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8999996, 6.2, -22.5)
|
||||
size = Vector3(16, 6, 13)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 6.2, -23)
|
||||
size = Vector3(16, 6, 12)
|
||||
interior = true
|
||||
|
||||
[node name="LightmapProbeGrid" type="Node3D" parent="LightmapGI"]
|
||||
@ -1079,3 +1083,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, -4.24
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_cv3fe")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(44, 0, 0, 0, -4.371139e-08, -31, 0, 1, -1.3550531e-06, 0, 48, -51.4)
|
||||
material_override = ExtResource("10_283a8")
|
||||
mesh = SubResource("PlaneMesh_vl7nw")
|
||||
|
||||
@ -38,15 +38,16 @@ materials/extract=0
|
||||
materials/extract_format=0
|
||||
materials/extract_path=""
|
||||
_subresources={
|
||||
"meshes": {
|
||||
"Main_Cylinder": {
|
||||
"generate/lightmap_uv": 2,
|
||||
"generate/lods": 2,
|
||||
"generate/shadow_meshes": 0,
|
||||
"lods/normal_merge_angle": 20.0,
|
||||
"save_to_file/enabled": false,
|
||||
"save_to_file/fallback_path": "",
|
||||
"save_to_file/path": ""
|
||||
"materials": {
|
||||
"prototype_grid_dark": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
|
||||
"use_external/path": "uid://bye8jd50tg7wl"
|
||||
},
|
||||
"prototype_grid_orange": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
|
||||
"use_external/path": "uid://uejce7ra2gcy"
|
||||
}
|
||||
},
|
||||
"nodes": {
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
@ -1,44 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dputr5bj2tbgh"
|
||||
path.s3tc="res://.godot/imported/_test_level_texture_13.png-a0514b44f564dc67d27b95473e4540f6.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "5220913b82328d262f5516be440341d3"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/levels/_experimental/_test_level_texture_13.png"
|
||||
dest_files=["res://.godot/imported/_test_level_texture_13.png-a0514b44f564dc67d27b95473e4540f6.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -0,0 +1,10 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bye8jd50tg7wl"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://dw3af4ir446rk" path="res://assets/materials/dev/dark/texture_13.png" id="1_pfrvh"]
|
||||
|
||||
[resource]
|
||||
resource_name = "prototype_grid_dark"
|
||||
albedo_texture = ExtResource("1_pfrvh")
|
||||
roughness = 0.5
|
||||
uv1_scale = Vector3(2, 2, 1)
|
||||
uv1_offset = Vector3(0, -1, 0)
|
||||
@ -0,0 +1,10 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://uejce7ra2gcy"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_67eg5"]
|
||||
|
||||
[resource]
|
||||
resource_name = "prototype_grid_orange"
|
||||
albedo_texture = ExtResource("1_67eg5")
|
||||
roughness = 0.5
|
||||
uv1_scale = Vector3(2, 2, 1)
|
||||
uv1_offset = Vector3(0, -1, 0)
|
||||
@ -0,0 +1,10 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://lvm62memxs5k"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_vv0ty"]
|
||||
|
||||
[resource]
|
||||
resource_name = "prototype_grid_red"
|
||||
albedo_texture = ExtResource("1_vv0ty")
|
||||
roughness = 0.5
|
||||
uv1_scale = Vector3(2, 2, 1)
|
||||
uv1_offset = Vector3(0, -1, 0)
|
||||
@ -40,16 +40,21 @@ materials/extract_path=""
|
||||
_subresources={
|
||||
"materials": {
|
||||
"prototype_grid_orange": {
|
||||
"use_external/enabled": false,
|
||||
"use_external/fallback_path": "",
|
||||
"use_external/path": ""
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/prototype_grid_orange.tres",
|
||||
"use_external/path": "uid://dknefw4cwovq"
|
||||
},
|
||||
"prototype_grid_red": {
|
||||
"use_external/enabled": true,
|
||||
"use_external/fallback_path": "res://assets/materials/cloth/red_cloth.tres",
|
||||
"use_external/path": "uid://coc0q5sjnejkb"
|
||||
"use_external/path": "uid://d2wd6sxagg32u"
|
||||
},
|
||||
"skylight": {
|
||||
"use_external/enabled": false,
|
||||
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/skylight.tres",
|
||||
"use_external/path": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
gltf/naming_version=0
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/embedded_image_handling=0
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bxipfm03yci3a"
|
||||
path.s3tc="res://.godot/imported/circus_tent_inside_texture_02.png-bf8619fb6ee6cd04a4b97816e89764fe.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png"
|
||||
dest_files=["res://.godot/imported/circus_tent_inside_texture_02.png-bf8619fb6ee6cd04a4b97816e89764fe.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -1,44 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b1ap5aiudw4xe"
|
||||
path.s3tc="res://.godot/imported/circus_tent_inside_texture_02_1.png-d0f41eb5896b9fac8cfbc4d5ec507d5f.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "671c567d75d6cffe7d16440771c026c5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png"
|
||||
dest_files=["res://.godot/imported/circus_tent_inside_texture_02_1.png-d0f41eb5896b9fac8cfbc4d5ec507d5f.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -52,4 +52,4 @@ _subresources={
|
||||
}
|
||||
}
|
||||
gltf/naming_version=2
|
||||
gltf/embedded_image_handling=1
|
||||
gltf/embedded_image_handling=0
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bve8ckrjjnnl6"
|
||||
path.s3tc="res://.godot/imported/circus_tent_outside_texture_02.png-a2700e20b834c39be78b89df01505add.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png"
|
||||
dest_files=["res://.godot/imported/circus_tent_outside_texture_02.png-a2700e20b834c39be78b89df01505add.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://gfin457shn1d"
|
||||
path.s3tc="res://.godot/imported/circus_tent_outside_texture_02_1.png-6cf227f1bd9069a72d323a69b9e2a746.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "671c567d75d6cffe7d16440771c026c5"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png"
|
||||
dest_files=["res://.godot/imported/circus_tent_outside_texture_02_1.png-6cf227f1bd9069a72d323a69b9e2a746.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@ -1,10 +1,10 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dknefw4cwovq"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bve8ckrjjnnl6" path="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png" id="1_52pi3"]
|
||||
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_8tkn2"]
|
||||
|
||||
[resource]
|
||||
resource_name = "prototype_grid_orange"
|
||||
albedo_texture = ExtResource("1_52pi3")
|
||||
albedo_texture = ExtResource("1_8tkn2")
|
||||
roughness = 0.97
|
||||
uv1_scale = Vector3(2, 2, 1)
|
||||
uv1_offset = Vector3(0, -1, 0)
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dictg13b71nlf"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://gfin457shn1d" path="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png" id="1_g6aqn"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_gjyc6"]
|
||||
|
||||
[resource]
|
||||
resource_name = "prototype_grid_red"
|
||||
albedo_texture = ExtResource("1_g6aqn")
|
||||
albedo_texture = ExtResource("1_gjyc6")
|
||||
roughness = 0.97
|
||||
uv1_scale = Vector3(2, 2, 1)
|
||||
uv1_offset = Vector3(0, -1, 0)
|
||||
|
||||
83
source/addons/accelerator_keys/accelerator_keys.gd
Normal file
@ -0,0 +1,83 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
var _popup_data: Dictionary[PopupMenu, Dictionary] = {}
|
||||
var _opened_popups: Array[PopupMenu] = []
|
||||
|
||||
func _enter_tree() -> void:
|
||||
get_tree().node_added.connect(_on_node_added)
|
||||
for popup in get_tree().root.find_children("", "PopupMenu", true, false):
|
||||
_setup_popup(popup)
|
||||
|
||||
func _exit_tree() -> void:
|
||||
get_tree().node_added.disconnect(_on_node_added)
|
||||
for popup in get_tree().root.find_children("", "PopupMenu", true, false):
|
||||
_cleanup_popup(popup)
|
||||
|
||||
func _on_node_added(node: Node) -> void:
|
||||
if node is PopupMenu and not (node in _popup_data):
|
||||
_setup_popup(node)
|
||||
|
||||
func _setup_popup(popup: PopupMenu) -> void:
|
||||
var data := {
|
||||
"popup_callable": _on_popup.bind(popup),
|
||||
"input_callable": _on_input.bind(popup),
|
||||
"letter_indices": {},
|
||||
"number_indices": []
|
||||
}
|
||||
popup.about_to_popup.connect(data.popup_callable)
|
||||
popup.window_input.connect(data.input_callable)
|
||||
popup.allow_search = false
|
||||
_popup_data[popup] = data
|
||||
|
||||
func _cleanup_popup(popup: PopupMenu) -> void:
|
||||
var data = _popup_data.get(popup, null)
|
||||
if data:
|
||||
popup.about_to_popup.disconnect(data.popup_callable)
|
||||
popup.window_input.disconnect(data.input_callable)
|
||||
popup.allow_search = true
|
||||
_popup_data.erase(popup)
|
||||
|
||||
func _on_popup(popup: PopupMenu) -> void:
|
||||
var data = _popup_data[popup]
|
||||
data.letter_indices.clear()
|
||||
data.number_indices.clear()
|
||||
|
||||
for i in popup.get_item_count():
|
||||
if popup.is_item_separator(i):
|
||||
continue
|
||||
var text := popup.get_item_text(i).remove_char(0x0332)
|
||||
for j in text.length():
|
||||
var char := text[j].to_lower()
|
||||
if char >= "a" and char <= "z" and not char in data.letter_indices:
|
||||
data.letter_indices[char] = i
|
||||
popup.set_item_text(i, text.insert(j + 1, "\u0332"))
|
||||
break
|
||||
data.number_indices.append(i)
|
||||
|
||||
func _on_input(event: InputEvent, popup: PopupMenu) -> void:
|
||||
if not (event is InputEventKey and event.is_pressed()):
|
||||
return
|
||||
|
||||
var data = _popup_data[popup]
|
||||
var idx := -1
|
||||
if event.keycode >= KEY_0 and event.keycode <= KEY_9:
|
||||
var num = (event.keycode - KEY_1) % 10 + (10 if event.shift_pressed else 0)
|
||||
if num >= 0 and num < data.number_indices.size():
|
||||
idx = data.number_indices[num]
|
||||
elif event.keycode >= KEY_A and event.keycode <= KEY_Z:
|
||||
idx = data.letter_indices.get(char(event.keycode).to_lower(), -1)
|
||||
if idx < 0:
|
||||
return
|
||||
|
||||
popup.index_pressed.emit(idx)
|
||||
popup.id_pressed.emit(popup.get_item_id(idx))
|
||||
|
||||
_opened_popups.append(popup)
|
||||
var submenu = popup.get_item_submenu_node(idx)
|
||||
if submenu:
|
||||
submenu.popup(Rect2(popup.position + Vector2i(popup.size.x, 0), Vector2.ZERO))
|
||||
else:
|
||||
for opened_popup in _opened_popups:
|
||||
opened_popup.hide()
|
||||
_opened_popups.clear()
|
||||
1
source/addons/accelerator_keys/accelerator_keys.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://dov6u0npmv86o
|
||||
7
source/addons/accelerator_keys/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="Accelerator Keys"
|
||||
description="Adds support for accelerator keys (digits and letters) for all Godot menus with visual highlighting"
|
||||
author=""
|
||||
version=""
|
||||
script="accelerator_keys.gd"
|
||||
7
source/addons/reflection_probe_preview/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
||||
[plugin]
|
||||
|
||||
name="Reflection Probe Preview"
|
||||
description="Draws a preview of the selected reflection probe in the 3D viewport"
|
||||
author=""
|
||||
version=""
|
||||
script="reflection_probe_preview.gd"
|
||||
@ -0,0 +1,56 @@
|
||||
@tool
|
||||
extends EditorPlugin
|
||||
|
||||
var _instance: RID
|
||||
var _mesh: Mesh
|
||||
var _probe: ReflectionProbe
|
||||
|
||||
func _enter_tree() -> void:
|
||||
EditorInterface.get_selection().selection_changed.connect(_update_preview)
|
||||
_create_instance()
|
||||
|
||||
func _exit_tree() -> void:
|
||||
EditorInterface.get_selection().selection_changed.disconnect(_update_preview)
|
||||
_clear_instance()
|
||||
|
||||
func _create_instance() -> void:
|
||||
_instance = RenderingServer.instance_create()
|
||||
|
||||
_mesh = SphereMesh.new()
|
||||
_mesh.radius = 0.5
|
||||
_mesh.height = _mesh.radius * 2.0
|
||||
|
||||
var material = StandardMaterial3D.new()
|
||||
material.roughness = 0
|
||||
material.metallic = 1
|
||||
_mesh.surface_set_material(0, material)
|
||||
|
||||
RenderingServer.instance_geometry_set_cast_shadows_setting(_instance, RenderingServer.SHADOW_CASTING_SETTING_OFF)
|
||||
RenderingServer.instance_set_base(_instance, _mesh)
|
||||
|
||||
func _clear_instance() -> void:
|
||||
if _instance:
|
||||
RenderingServer.free_rid(_instance)
|
||||
if _mesh:
|
||||
RenderingServer.free_rid(_mesh)
|
||||
|
||||
func _update_preview() -> void:
|
||||
var selection = EditorInterface.get_selection().get_selected_nodes()
|
||||
if selection.size() == 1 and selection[0] is ReflectionProbe:
|
||||
_probe = selection[0]
|
||||
var scenario: RID = EditorInterface.get_edited_scene_root().get_world_3d().scenario
|
||||
RenderingServer.instance_set_scenario(_instance, scenario)
|
||||
RenderingServer.instance_set_visible(_instance, true)
|
||||
return
|
||||
|
||||
RenderingServer.instance_set_visible(_instance, false)
|
||||
_probe = null
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if not _instance.is_valid() or not _probe:
|
||||
return
|
||||
|
||||
var probe_transform = _probe.global_transform
|
||||
var origin_offset = _probe.origin_offset
|
||||
var instance_transform = probe_transform * Transform3D(Basis(), origin_offset)
|
||||
RenderingServer.instance_set_transform(_instance, instance_transform)
|
||||
@ -0,0 +1 @@
|
||||
uid://s872hv3tf78c
|
||||
@ -3,19 +3,20 @@
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dw3af4ir446rk"
|
||||
path="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.ctex"
|
||||
path.s3tc="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.s3tc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/materials/dev/dark/texture_13.png"
|
||||
dest_files=["res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.ctex"]
|
||||
dest_files=["res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/mode=2
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
|
||||
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=""
|
||||
@ -37,4 +38,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
|
||||
|
||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@ -2,20 +2,17 @@
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cno3emivftt23"
|
||||
path.s3tc="res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"
|
||||
uid="uid://bwo1s4wl34tyt"
|
||||
path.s3tc="res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://_development/ayuroo/levels/_experimental/_test_level_texture_02.png"
|
||||
dest_files=["res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"]
|
||||
source_file="res://assets/materials/dev/red/texture_02.png"
|
||||
dest_files=["res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
@ -42,7 +42,7 @@ settings/addon_root_folder="res://addons/debug_draw_3d"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PackedStringArray("res://addons/Todo_Manager/plugin.cfg", "res://addons/bbcode_edit.editor/plugin.cfg", "res://addons/boxconstructor/plugin.cfg", "res://addons/controller_icons/plugin.cfg", "res://addons/godot_3d_cursor/plugin.cfg", "res://addons/lightmap_probe_grid/plugin.cfg", "res://addons/logger/plugin.cfg", "res://addons/panku_console/plugin.cfg", "res://addons/proto_shape/plugin.cfg", "res://addons/run-configs/plugin.cfg", "res://addons/version_display/plugin.cfg")
|
||||
enabled=PackedStringArray("res://addons/Todo_Manager/plugin.cfg", "res://addons/accelerator_keys/plugin.cfg", "res://addons/bbcode_edit.editor/plugin.cfg", "res://addons/boxconstructor/plugin.cfg", "res://addons/controller_icons/plugin.cfg", "res://addons/godot_3d_cursor/plugin.cfg", "res://addons/lightmap_probe_grid/plugin.cfg", "res://addons/logger/plugin.cfg", "res://addons/panku_console/plugin.cfg", "res://addons/proto_shape/plugin.cfg", "res://addons/reflection_probe_preview/plugin.cfg", "res://addons/run-configs/plugin.cfg", "res://addons/version_display/plugin.cfg")
|
||||
|
||||
[file_customization]
|
||||
|
||||
|
||||
@ -28,9 +28,9 @@ extends Marker3D
|
||||
func _process(_delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
# For some reason, Godot doesn't like this when exporting the game...
|
||||
#var editor_selection: EditorSelection = EditorInterface.get_selection()
|
||||
#
|
||||
#if editor_selection.get_selected_nodes().has(self):
|
||||
var editor_selection: Object = Engine.get_singleton(&"EditorInterface").get_selection()#EditorInterface.get_selection()
|
||||
|
||||
if editor_selection.get_selected_nodes().has(self):
|
||||
DebugDraw3D.draw_sphere(global_position, min_radius, Color.RED)
|
||||
DebugDraw3D.draw_sphere(global_position, max_radius, Color.SKY_BLUE)
|
||||
elif continues_shake:
|
||||
|
||||
104
source/tools/lightbeam/lightbeam.gdshader
Normal file
@ -0,0 +1,104 @@
|
||||
shader_type spatial;
|
||||
render_mode unshaded, blend_add;
|
||||
|
||||
uniform vec4 color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform bool use_second_color = false;
|
||||
uniform vec4 second_color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||
uniform float cone_start_width : hint_range(0.0, 1.0, 0.01) = 0.02;
|
||||
uniform float cone_curve : hint_range(0, 1.0, 0.01) = 0.3;
|
||||
uniform float beam_sharpness : hint_range(0.01, 1.0, 0.01) = 0.25;
|
||||
uniform float beam_fade : hint_range(0.1, 10.0, 0.1) = 4.0;
|
||||
uniform bool use_gradient = false;
|
||||
uniform sampler2D gradient: source_color, repeat_disable;
|
||||
uniform float proximity_fade_distance : hint_range(0.0, 4096.0, 0.01) = 0.75;
|
||||
uniform sampler2D depth_texture : hint_depth_texture, repeat_disable, filter_nearest;
|
||||
|
||||
uniform float z_fade_start : hint_range(0.0, 1.0, 0.01) = 0.5;
|
||||
uniform float z_fade_end : hint_range(0.0, 1.0, 0.01) = 0.8;
|
||||
|
||||
uniform bool use_noise = false;
|
||||
uniform sampler2D noise_texture : source_color, filter_linear_mipmap, repeat_enable;
|
||||
uniform float noise_scale : hint_range(0.1, 10.0, 0.1) = 1.0;
|
||||
uniform float noise_intensity : hint_range(0.0, 1.0, 0.01) = 0.5;
|
||||
uniform vec2 noise_scroll_speed = vec2(0.01, 0.01);
|
||||
uniform float noise_distortion_intensity : hint_range(0.0, 0.1, 0.001) = 0.01;
|
||||
uniform vec2 noise_distortion_scroll_speed = vec2(-0.02, -0.01);
|
||||
|
||||
varying float z_axis_fade;
|
||||
|
||||
void vertex() {
|
||||
vec3 local_z = normalize(MODEL_MATRIX[2].xyz);
|
||||
vec3 to_camera = normalize(CAMERA_POSITION_WORLD - NODE_POSITION_WORLD);
|
||||
vec3 local_x = normalize(cross(to_camera, local_z));
|
||||
vec3 local_y = normalize(cross(local_z, local_x));
|
||||
|
||||
MODELVIEW_MATRIX = VIEW_MATRIX * mat4(
|
||||
vec4(local_x * length(MODEL_MATRIX[0].xyz), 0.0),
|
||||
vec4(local_y * length(MODEL_MATRIX[1].xyz), 0.0),
|
||||
MODEL_MATRIX[2],
|
||||
MODEL_MATRIX[3]
|
||||
);
|
||||
|
||||
z_axis_fade = smoothstep(z_fade_end, z_fade_start, abs(dot(to_camera, local_z)));
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec2 uv = UV;
|
||||
|
||||
vec3 input_color;
|
||||
float input_alpha;
|
||||
if (use_second_color) {
|
||||
input_color = mix(color.rgb, second_color.rgb, uv.y);
|
||||
input_alpha = mix(color.a, second_color.a, uv.y);
|
||||
} else {
|
||||
input_color = color.rgb;
|
||||
input_alpha = color.a;
|
||||
}
|
||||
|
||||
// Calculate cone width at current position along the cone length
|
||||
float cone_progress_y = pow(uv.y, 1.0 - cone_curve);
|
||||
float width = mix(cone_start_width, 1.0, cone_progress_y);
|
||||
float half_width = width * 0.5;
|
||||
|
||||
// Create horizontal mask
|
||||
float distance_from_center_x = abs(uv.x - 0.5);
|
||||
float beam_edge_start = half_width - (half_width * (1.0 - beam_sharpness));
|
||||
float horizontal_mask = 1.0 - smoothstep(beam_edge_start, half_width, distance_from_center_x);
|
||||
|
||||
// Create vertical mask
|
||||
float vertical_mask = pow(max(1.0 - uv.y, 0.001), beam_fade);
|
||||
vertical_mask *= smoothstep(0.0, cone_start_width * 0.5, uv.y);
|
||||
|
||||
// Overlay gradient
|
||||
if (use_gradient) {
|
||||
float gradient_coord = distance_from_center_x / half_width;
|
||||
float gradient_value = texture(gradient, vec2(gradient_coord, 0.5)).r;
|
||||
horizontal_mask *= mix(1.0, gradient_value, 1.0 - (vertical_mask * vertical_mask));
|
||||
}
|
||||
|
||||
// Overlay noise
|
||||
if (use_noise) {
|
||||
vec2 distortion_offset = noise_distortion_scroll_speed * TIME + NODE_POSITION_WORLD.xz;
|
||||
vec2 distortion_sample = texture(noise_texture, uv * noise_scale + distortion_offset).rg;
|
||||
vec2 distortion_uv = uv + (distortion_sample - 0.5) * 2.0 * noise_distortion_intensity;
|
||||
|
||||
vec2 scroll_offset1 = noise_scroll_speed * TIME + NODE_POSITION_WORLD.xz;
|
||||
vec2 scroll_offset2 = vec2(-noise_scroll_speed.x * 0.7, noise_scroll_speed.y * 1.3) * TIME + NODE_POSITION_WORLD.xz;
|
||||
|
||||
float noise_sample1 = texture(noise_texture, distortion_uv * noise_scale + scroll_offset1).r;
|
||||
float noise_sample2 = texture(noise_texture, distortion_uv * noise_scale + scroll_offset2).r;
|
||||
float combined_noise = mix(1.0, noise_sample1 * noise_sample2, 1.0 - vertical_mask);
|
||||
|
||||
horizontal_mask *= mix(1.0, combined_noise, noise_intensity);
|
||||
}
|
||||
|
||||
ALBEDO = input_color;
|
||||
|
||||
ALPHA = horizontal_mask * vertical_mask * input_alpha * z_axis_fade;
|
||||
|
||||
// Proximity Fade
|
||||
float proximity_depth_tex = textureLod(depth_texture, SCREEN_UV, 0.0).r;
|
||||
vec4 proximity_view_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, proximity_depth_tex, 1.0);
|
||||
proximity_view_pos.xyz /= proximity_view_pos.w;
|
||||
ALPHA *= clamp(1.0 - smoothstep(proximity_view_pos.z + proximity_fade_distance, proximity_view_pos.z, VERTEX.z), 0.0, 1.0);
|
||||
}
|
||||
1
source/tools/lightbeam/lightbeam.gdshader.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://c77hfyht2fpxt
|
||||
44
source/tools/lightbeam/lightbeam_material.tres
Normal file
@ -0,0 +1,44 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=6 format=3 uid="uid://c4uudb0m5p048"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://c77hfyht2fpxt" path="res://tools/lightbeam/lightbeam.gdshader" id="1_4nd3r"]
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_h2jn1"]
|
||||
interpolation_mode = 2
|
||||
offsets = PackedFloat32Array(0.004115226, 0.11728395, 0.18724279, 0.28189301, 0.38477367, 0.4341564, 0.63786006, 1)
|
||||
colors = PackedColorArray(1, 1, 1, 1, 0.923899, 0.9239001, 0.9238985, 1, 0.90349716, 0.90349704, 0.90349674, 1, 0.8460438, 0.846044, 0.84604335, 1, 0.696885, 0.6968867, 0.6968853, 1, 0.6556004, 0.6556013, 0.65559965, 1, 0.6364806, 0.63648057, 0.6364794, 1, 0.061926693, 0.061926708, 0.061926648, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_0fp8q"]
|
||||
gradient = SubResource("Gradient_h2jn1")
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_h2jn1"]
|
||||
noise_type = 0
|
||||
fractal_weighted_strength = 0.3
|
||||
domain_warp_enabled = true
|
||||
domain_warp_frequency = 0.01
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0fp8q"]
|
||||
noise = SubResource("FastNoiseLite_h2jn1")
|
||||
seamless = true
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_4nd3r")
|
||||
shader_parameter/color = Color(0.8084624, 0.97797644, 1.0627335, 1)
|
||||
shader_parameter/use_second_color = true
|
||||
shader_parameter/second_color = Color(0.637, 0.6734, 0.91, 1)
|
||||
shader_parameter/cone_start_width = 0.02
|
||||
shader_parameter/cone_curve = 0.0999999977648
|
||||
shader_parameter/beam_sharpness = 0.00999999977648
|
||||
shader_parameter/beam_fade = 3.0000000447036004
|
||||
shader_parameter/use_gradient = true
|
||||
shader_parameter/gradient = SubResource("GradientTexture1D_0fp8q")
|
||||
shader_parameter/proximity_fade_distance = 1.499999966472
|
||||
shader_parameter/z_fade_start = 0.499999988824
|
||||
shader_parameter/z_fade_end = 0.8
|
||||
shader_parameter/use_noise = true
|
||||
shader_parameter/noise_texture = SubResource("NoiseTexture2D_0fp8q")
|
||||
shader_parameter/noise_scale = 1.0000000149012
|
||||
shader_parameter/noise_intensity = 0.5
|
||||
shader_parameter/noise_scroll_speed = Vector2(0.01, 0.01)
|
||||
shader_parameter/noise_distortion_intensity = 0.01
|
||||
shader_parameter/noise_distortion_scroll_speed = Vector2(-0.02, -0.01)
|
||||