diff --git a/source/src/core/dynamic_area_loader/dynamic_area_loader.gd b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd similarity index 100% rename from source/src/core/dynamic_area_loader/dynamic_area_loader.gd rename to source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd diff --git a/source/src/core/dynamic_area_loader/dynamic_area_loader.gd.uid b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd.uid similarity index 100% rename from source/src/core/dynamic_area_loader/dynamic_area_loader.gd.uid rename to source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd.uid diff --git a/source/src/core/dynamic_area_loader/dynamic_area_loader.svg b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg similarity index 100% rename from source/src/core/dynamic_area_loader/dynamic_area_loader.svg rename to source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg diff --git a/source/src/core/dynamic_area_loader/dynamic_area_loader.svg.import b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg.import similarity index 75% rename from source/src/core/dynamic_area_loader/dynamic_area_loader.svg.import rename to source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg.import index e979f30..7e45300 100644 --- a/source/src/core/dynamic_area_loader/dynamic_area_loader.svg.import +++ b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://4qsmkgrm8frw" -path="res://.godot/imported/dynamic_area_loader.svg-bb5edbb9d069c941e62133cf9dbec682.ctex" +path="res://.godot/imported/dynamic_area_loader.svg-fa3950f3b8a6d937b7e13d9057d16e83.ctex" metadata={ "has_editor_variant": true, "vram_texture": false @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://src/core/dynamic_area_loader/dynamic_area_loader.svg" -dest_files=["res://.godot/imported/dynamic_area_loader.svg-bb5edbb9d069c941e62133cf9dbec682.ctex"] +source_file="res://_development/ayuroo/dynamic_area_loader/dynamic_area_loader.svg" +dest_files=["res://.godot/imported/dynamic_area_loader.svg-fa3950f3b8a6d937b7e13d9057d16e83.ctex"] [params] diff --git a/source/src/core/dynamic_area_loader/dynamic_area_loader.tscn b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.tscn similarity index 78% rename from source/src/core/dynamic_area_loader/dynamic_area_loader.tscn rename to source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.tscn index bacb15d..9821ddf 100644 --- a/source/src/core/dynamic_area_loader/dynamic_area_loader.tscn +++ b/source/_development/ayuroo/dynamic_area_loader/dynamic_area_loader.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://hrdl2qmxv3ve"] -[ext_resource type="Script" uid="uid://bj2bhtdul8xct" path="res://src/core/dynamic_area_loader/dynamic_area_loader.gd" id="1_gcydo"] +[ext_resource type="Script" uid="uid://bj2bhtdul8xct" path="res://_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd" id="1_gcydo"] [node name="DynamicAreaLoader" type="Area3D"] collision_layer = 0 diff --git a/source/_development/ayuroo/heartbeat_effect.gd b/source/_development/ayuroo/heartbeat_effect.gd new file mode 100644 index 0000000..42b1786 --- /dev/null +++ b/source/_development/ayuroo/heartbeat_effect.gd @@ -0,0 +1,16 @@ +extends Node3D + +@export var heartbeat_max_distance: float = 25.0 +@export_exp_easing("attenuation") var falloff: float = 3.5 + +@onready var beat_vibration: VibrationComponent = $BeatVibration + + +func _physics_process(_delta: float) -> void: + var player: PlayerCharacter = GameGlobals.get_player() + + if is_instance_valid(player): + var distance: float = Utils.node_distance(self, player) + var strength: float = remap(distance, 0.0, heartbeat_max_distance, 1.0, 0.0) + strength = ease(strength, falloff) + beat_vibration.magnitude_multiplier = strength diff --git a/source/_development/ayuroo/heartbeat_effect.gd.uid b/source/_development/ayuroo/heartbeat_effect.gd.uid new file mode 100644 index 0000000..43fb805 --- /dev/null +++ b/source/_development/ayuroo/heartbeat_effect.gd.uid @@ -0,0 +1 @@ +uid://dybhpfhrqsk6y diff --git a/source/_development/ayuroo/heartbeat_effect.tscn b/source/_development/ayuroo/heartbeat_effect.tscn new file mode 100644 index 0000000..cb5d1b3 --- /dev/null +++ b/source/_development/ayuroo/heartbeat_effect.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=3 uid="uid://b57cpxwxpn40j"] + +[ext_resource type="Script" uid="uid://dybhpfhrqsk6y" path="res://_development/ayuroo/heartbeat_effect.gd" id="1_gjfos"] +[ext_resource type="Script" uid="uid://bbwtct3hoxwws" path="res://src/core/vibration_component.gd" id="2_h7kji"] + +[sub_resource type="Animation" id="Animation_akavr"] +resource_name = "heartbeat_anim" +loop_mode = 1 +tracks/0/type = "method" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("BeatVibration") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_5124f"] +_data = { +&"heartbeat_anim": SubResource("Animation_akavr") +} + +[node name="HeartbeatEffect" type="Node3D"] +script = ExtResource("1_gjfos") +heartbeat_max_distance = 60.0 +falloff = 1.75 + +[node name="BeatVibration" type="Node" parent="."] +script = ExtResource("2_h7kji") +weak_magnitude = 1.0 +strong_magnitude = 1.0 +metadata/_custom_type_script = "uid://bbwtct3hoxwws" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_5124f") +} +autoplay = "heartbeat_anim" diff --git a/source/_development/ayuroo/holor_magician_teleporting_movement_example.tscn b/source/_development/ayuroo/holor_magician_teleporting_movement_example.tscn new file mode 100644 index 0000000..9bec7ea --- /dev/null +++ b/source/_development/ayuroo/holor_magician_teleporting_movement_example.tscn @@ -0,0 +1,166 @@ +[gd_scene load_steps=10 format=3 uid="uid://cer6jlrgjjiud"] + +[ext_resource type="PackedScene" uid="uid://k3edwxkml8dd" path="res://src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn" id="1_rj064"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_rj064"] +sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) +ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) + +[sub_resource type="Sky" id="Sky_wrunm"] +sky_material = SubResource("ProceduralSkyMaterial_rj064") + +[sub_resource type="Environment" id="Environment_ryav0"] +background_mode = 2 +sky = SubResource("Sky_wrunm") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rj064"] +transparency = 4 +albedo_color = Color(1, 1, 1, 0.6156863) + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_bl7je"] + +[sub_resource type="Animation" id="Animation_wrunm"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Character:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Character:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_rj064"] +resource_name = "teleport" +length = 2.5 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Character:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.23333338, 0.33333334, 0.6333333, 0.73333335, 1.0333333, 1.1333332, 1.4666667, 1.5666667, 1.8666668, 1.9666667, 2.2833333, 2.3833334, 2.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(1, 1, 1), Vector3(0.5, 0.05, 0.5), Vector3(0.5, 0.05, 0.5), Vector3(1, 1, 1), Vector3(1, 1, 1), Vector3(0.5, 0.05, 0.5), Vector3(0.5, 0.05, 0.5), Vector3(1, 1, 1), Vector3(1, 1, 1), Vector3(0.5, 0.05, 0.5), Vector3(0.5, 0.05, 0.5), Vector3(1, 1, 1), Vector3(1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Character:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.33333334, 0.43333334, 0.6333333, 1.1666666, 1.3333334, 1.9999998, 2.2, 2.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(4, 0, 0), Vector3(4, 0, 0), Vector3(-3.5992231, 0, -5), Vector3(-3.5992231, 0, -5), Vector3(0, 0, 0), Vector3(0, 0, 0)] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("HologramProjectorFloor") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.33333337, 2.2), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [false], +"method": &"set_glowing" +}, { +"args": [true], +"method": &"set_glowing" +}] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HologramProjectorFloor2") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.6333333, 1.1666667), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [true], +"method": &"set_glowing" +}, { +"args": [false], +"method": &"set_glowing" +}] +} +tracks/4/type = "method" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HologramProjectorFloor3") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(1.3333334, 2), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [true], +"method": &"set_glowing" +}, { +"args": [false], +"method": &"set_glowing" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ryav0"] +_data = { +&"RESET": SubResource("Animation_wrunm"), +&"teleport": SubResource("Animation_rj064") +} + +[node name="Node3D" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_ryav0") + +[node name="Character" type="Node3D" parent="."] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="Character"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +material_override = SubResource("StandardMaterial3D_rj064") +mesh = SubResource("CapsuleMesh_bl7je") +skeleton = NodePath("../..") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_ryav0") +} +autoplay = "teleport" + +[node name="HologramProjectorFloor" parent="." instance=ExtResource("1_rj064")] + +[node name="HologramProjectorFloor2" parent="." instance=ExtResource("1_rj064")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0) + +[node name="HologramProjectorFloor3" parent="." instance=ExtResource("1_rj064")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.6, 0, -5) + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(0.94264144, 0, -0.33380684, 0, 1, 0, 0.33380684, 0, 0.94264144, 0.175, 1.04, 2.02) +fov = 90.0 diff --git a/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import b/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import deleted file mode 100644 index 9499137..0000000 --- a/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3.import +++ /dev/null @@ -1,19 +0,0 @@ -[remap] - -importer="mp3" -type="AudioStreamMP3" -uid="uid://ddfnb7m4ufpmu" -path="res://.godot/imported/Liquid Gold.mp3-22723f81c2494a2c1e2a1680e9834f48.mp3str" - -[deps] - -source_file="res://_development/ayuroo/levels/_chase_test/Liquid Gold.mp3" -dest_files=["res://.godot/imported/Liquid Gold.mp3-22723f81c2494a2c1e2a1680e9834f48.mp3str"] - -[params] - -loop=false -loop_offset=0.0 -bpm=80.0 -beat_count=0 -bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test.gd b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd index 88f1f67..6760fe3 100644 --- a/source/_development/ayuroo/levels/_chase_test/_chase_test.gd +++ b/source/_development/ayuroo/levels/_chase_test/_chase_test.gd @@ -3,7 +3,11 @@ extends Level signal beat_tick(beat: int) const SPEED_TRANSITION_DISTANCE: float = 0.1 -const BPM: int = 160 + +@export var chase_anim: StringName = &"" +@export var debug_from_marker: StringName = &"" +@export var bpm: float = 160.0 +@export var debug_play_beat_tick: bool = false var _previous_beat: int = 0 @@ -12,13 +16,18 @@ var _previous_beat: int = 0 @onready var music_animation: AnimationPlayer = $MusicAnimation @onready var debug_visualizer: MeshInstance3D = $ProgressTrack/PlayerDesiredProgress/DebugVisualizer @onready var music: AudioStreamPlayer = $Music +@onready var beat_sfx: AudioStreamPlayer = $Beat +@onready var bar_sfx: AudioStreamPlayer = $Bar func _ready() -> void: InputManager.set_mouse_captured(true) beat_tick.connect(_on_beat_tick) - GameGlobals.player.global_position = PlayerSpawnPoint.get_spawn_point_by_identifier(&"ChaseBeginning").global_position + #if OS.is_debug_build(): + #var spawnpoint := PlayerSpawnPoint.get_spawnpoint_by_identifier(&"ChaseInfrontBeginning") + ##var spawnpoint := PlayerSpawnPoint.get_spawnpoint_by_identifier(&"ChaseBeginning") + #GameGlobals.player.global_position = spawnpoint.global_position func _process(_delta: float) -> void: @@ -29,7 +38,7 @@ func _process(_delta: float) -> void: var _current_time: float = music_animation.current_animation_position + AudioServer.get_time_since_last_mix() SPrint.print_msgf("Current Music-Time: %s" % _current_time) _current_time -= AudioServer.get_output_latency() - var beat := int(_current_time * BPM / 60.0) + var beat := int(_current_time * bpm / 60.0) if _previous_beat != beat: _previous_beat = beat @@ -37,9 +46,13 @@ func _process(_delta: float) -> void: func _physics_process(delta: float) -> void: + if not music_animation.is_playing(): + return + var player_character: PlayerCharacter = GameGlobals.player - var player_offset: float = progress_track.curve.get_closest_offset(player_character.global_position) + var local_position: Vector3 = progress_track.to_local(player_character.global_position) + var player_offset: float = progress_track.curve.get_closest_offset(local_position) var desired_speed_scale: float = remap( (player_desired_progress.progress - player_offset) + SPEED_TRANSITION_DISTANCE, 0.0, SPEED_TRANSITION_DISTANCE, @@ -47,14 +60,25 @@ func _physics_process(delta: float) -> void: ) player_character.speed_scale = move_toward( player_character.speed_scale, - clampf(desired_speed_scale, 0.1, 1.05), + clampf(desired_speed_scale, 0.1, 1.1), delta ) func _on_start_chase_area_body_entered(_body: Node3D) -> void: - music_animation.play(&"main_track") + if not OS.is_debug_build() or debug_from_marker.is_empty(): + music_animation.play(chase_anim) + else: + music_animation.play_section_with_markers(chase_anim, debug_from_marker) + await get_tree().process_frame + + var player: PlayerCharacter = GameGlobals.get_player() + if is_instance_valid(player): + player.global_position = debug_visualizer.global_position func _on_beat_tick(beat: int) -> void: + if debug_play_beat_tick: + beat_sfx.play() + debug_visualizer.scale = Vector3.ONE * (1.25 if beat % 2 == 0 else 1.0) diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn b/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn deleted file mode 100644 index c221bc0..0000000 --- a/source/_development/ayuroo/levels/_chase_test/_chase_test.tscn +++ /dev/null @@ -1,129 +0,0 @@ -[gd_scene load_steps=17 format=3 uid="uid://d013wo01v8lr5"] - -[ext_resource type="Script" uid="uid://cdgei0ihcem0n" path="res://_development/ayuroo/levels/_chase_test/_chase_test.gd" id="1_tqtrq"] -[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_14tye"] -[ext_resource type="AnimationLibrary" uid="uid://ck15gq8qw1rfg" path="res://_development/ayuroo/levels/_chase_test/_chase_anim.tres" id="2_gsfaw"] -[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/player_spawn_point.gd" id="3_hw8mu"] -[ext_resource type="Script" uid="uid://dp6jy00a6xuhk" path="res://tools/beat_measurer.gd" id="4_hw8mu"] -[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="5_yax8p"] -[ext_resource type="PackedScene" uid="uid://kne8gkorpuop" path="res://src/ui/menus/death_screen/death_screen.tscn" id="6_u6lfm"] -[ext_resource type="Script" uid="uid://bbwtct3hoxwws" path="res://src/core/vibration_component.gd" id="7_mop3m"] -[ext_resource type="PackedScene" uid="uid://dawmen0hlfaaq" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="8_ff8bp"] -[ext_resource type="PackedScene" uid="uid://srvm3v1grugk" path="res://_development/ayuroo/levels/_experimental/_layout_test.tscn" id="9_gsfaw"] - -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tqtrq"] -sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) -ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1) - -[sub_resource type="Sky" id="Sky_yax8p"] -sky_material = SubResource("ProceduralSkyMaterial_tqtrq") - -[sub_resource type="Environment" id="Environment_u6lfm"] -background_mode = 2 -sky = SubResource("Sky_yax8p") -tonemap_mode = 2 -glow_enabled = true - -[sub_resource type="Curve3D" id="Curve3D_tqtrq"] -_data = { -"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1150), -"tilts": PackedFloat32Array(0, 0) -} -point_count = 2 - -[sub_resource type="SphereMesh" id="SphereMesh_tqtrq"] -radius = 0.15 -height = 0.3 - -[sub_resource type="BoxShape3D" id="BoxShape3D_gsfaw"] -size = Vector3(14, 5, 1) - -[node name="ChaseTest" type="Node3D"] -script = ExtResource("1_tqtrq") -metadata/_custom_type_script = "uid://cigop0ivp5vvu" - -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] -transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0) -shadow_enabled = true -directional_shadow_max_distance = 1.0 - -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource("Environment_u6lfm") - -[node name="Music" type="AudioStreamPlayer" parent="."] -volume_db = -6.0 - -[node name="MusicAnimation" type="AnimationPlayer" parent="."] -callback_mode_process = 0 -libraries = { -&"": ExtResource("2_gsfaw") -} - -[node name="PlayerSpawnPoint" type="Marker3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) -script = ExtResource("3_hw8mu") -spawn_id = &"ChaseBeginning" -metadata/_custom_type_script = "uid://3hlvt5k34xva" - -[node name="ProgressTrack" type="Path3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -curve = SubResource("Curve3D_tqtrq") - -[node name="PlayerDesiredProgress" type="PathFollow3D" parent="ProgressTrack"] -rotation_mode = 0 -loop = false - -[node name="DebugVisualizer" type="MeshInstance3D" parent="ProgressTrack/PlayerDesiredProgress"] -mesh = SubResource("SphereMesh_tqtrq") - -[node name="BeatMeasurer" type="Node" parent="ProgressTrack" node_paths=PackedStringArray("path")] -script = ExtResource("4_hw8mu") -path = NodePath("..") -track_duration = 208.54 -track_bpm = 160 -metadata/_custom_type_script = "uid://dp6jy00a6xuhk" - -[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."] -use_collision = true - -[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -580) -size = Vector3(14, 1, 1161) -material = ExtResource("2_14tye") - -[node name="Saws" type="Node3D" parent="."] - -[node name="ResetSaw" parent="Saws" instance=ExtResource("5_yax8p")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1, -1006.4116) - -[node name="Saw" parent="Saws" instance=ExtResource("5_yax8p")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -46) - -[node name="Saw2" parent="Saws" instance=ExtResource("5_yax8p")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -53) - -[node name="VibrationComponent" type="Node" parent="."] -script = ExtResource("7_mop3m") -duration = 0.1 -delay = 0.188 -strong_magnitude = 0.0 -metadata/_custom_type_script = "uid://bbwtct3hoxwws" - -[node name="Menus" type="CanvasLayer" parent="."] - -[node name="DeathScreen" parent="Menus" instance=ExtResource("6_u6lfm")] - -[node name="PauseMenu" parent="Menus" instance=ExtResource("8_ff8bp")] - -[node name="LayoutTest" parent="." instance=ExtResource("9_gsfaw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.5, 28) - -[node name="StartChaseArea" type="Area3D" parent="."] -collision_layer = 0 -collision_mask = 2 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="StartChaseArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) -shape = SubResource("BoxShape3D_gsfaw") - -[connection signal="body_entered" from="StartChaseArea" to="." method="_on_start_chase_area_body_entered"] diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_test_world.tscn b/source/_development/ayuroo/levels/_chase_test/_chase_test_world.tscn new file mode 100644 index 0000000..cfb29c9 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_test_world.tscn @@ -0,0 +1,131 @@ +[gd_scene load_steps=12 format=3 uid="uid://btjepmbw1mq6j"] + +[ext_resource type="PackedScene" uid="uid://8y3swwnmxwg2" path="res://src/core/world/world.tscn" id="1_7hw7e"] +[ext_resource type="Script" uid="uid://dfnb036hysorj" path="res://src/core/world/level/level_loader.gd" id="2_5eifk"] +[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/spawnpoint/player_spawn_point.gd" id="3_5eifk"] +[ext_resource type="PackedScene" uid="uid://drr80goa61wrx" path="res://src/core/world/level/level_area.tscn" id="4_clslv"] +[ext_resource type="Script" uid="uid://u2s0spt1rud4" path="res://src/core/game_state_overrider.gd" id="6_gynur"] +[ext_resource type="Script" uid="uid://bfv3de7iqflhv" path="res://src/core/damage/death_area.gd" id="6_tys81"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_77q0j"] +size = Vector3(29, 14, 149) + +[sub_resource type="BoxShape3D" id="BoxShape3D_clslv"] +size = Vector3(29, 14, 1175) + +[sub_resource type="BoxShape3D" id="BoxShape3D_gynur"] +size = Vector3(29, 14, 1762) + +[sub_resource type="BoxShape3D" id="BoxShape3D_tys81"] +size = Vector3(1, 2, 0.5) + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_gynur"] + +[node name="ChaseTestWorld" instance=ExtResource("1_7hw7e")] +initial_spawn_id = &"Staircase" +debug_spawn_point = &"ChaseInfrontBeginning" + +[node name="Spawnpoints" type="Node" parent="." index="0"] + +[node name="SpawnStaircase" type="Marker3D" parent="Spawnpoints" index="0"] +script = ExtResource("3_5eifk") +spawn_id = &"Staircase" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="SpawnInfrontChase" type="Marker3D" parent="Spawnpoints" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, -26) +script = ExtResource("3_5eifk") +spawn_id = &"ChaseInfrontBeginning" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="SpawnChaseBeginning" type="Marker3D" parent="Spawnpoints" index="2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, -28) +script = ExtResource("3_5eifk") +spawn_id = &"ChaseBeginning" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="LevelLoaders" type="Node" parent="." index="1"] + +[node name="LoaderLayoutTest" type="Marker3D" parent="LevelLoaders" index="0"] +script = ExtResource("2_5eifk") +scene_path = "uid://srvm3v1grugk" +load_threaded = false +override_level_id = false +level_id = &"LayoutTest" +metadata/_custom_type_script = "uid://dfnb036hysorj" + +[node name="LoaderChaseLGTest" type="Marker3D" parent="LevelLoaders" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 3.5, -37.5) +script = ExtResource("2_5eifk") +scene_path = "uid://d013wo01v8lr5" +override_level_id = false +level_id = &"ChaseTest" +metadata/_custom_type_script = "uid://dfnb036hysorj" + +[node name="LoaderChaseEFTest" type="Marker3D" parent="LevelLoaders" index="2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 3.5, -37.5) +script = ExtResource("2_5eifk") +scene_path = "uid://bdkbqhgw8nhh6" +override_level_id = false +level_id = &"ChaseTest" +metadata/_custom_type_script = "uid://dfnb036hysorj" + +[node name="LevelAreas" type="Node" parent="." index="2"] + +[node name="LayoutTestArea" parent="LevelAreas" index="0" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("4_clslv")] +level_loader = NodePath("../../LevelLoaders/LoaderLayoutTest") +loaded_if_spawnpoint = [NodePath("../../Spawnpoints/SpawnStaircase"), NodePath("../../Spawnpoints/SpawnChaseBeginning"), NodePath("../../Spawnpoints/SpawnInfrontChase")] +keep_loaded_duration = 20.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/LayoutTestArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.5, -69) +shape = SubResource("BoxShape3D_77q0j") +debug_color = Color(1, 1, 0, 0.41960785) + +[node name="ChaseLGArea" parent="LevelAreas" index="1" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("4_clslv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 0) +level_loader = NodePath("../../LevelLoaders/LoaderChaseLGTest") +loaded_if_spawnpoint = [NodePath("../../Spawnpoints/SpawnChaseBeginning")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/ChaseLGArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.5, -613.54346) +shape = SubResource("BoxShape3D_clslv") +debug_color = Color(1, 1, 0, 0.41960785) + +[node name="ChaseEFArea" parent="LevelAreas" index="2" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("4_clslv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.5, 0, 0) +level_loader = NodePath("../../LevelLoaders/LoaderChaseEFTest") +loaded_if_spawnpoint = [NodePath("../../Spawnpoints/SpawnChaseBeginning")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/ChaseEFArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.5, -907.04346) +shape = SubResource("BoxShape3D_gynur") +debug_color = Color(1, 1, 0, 0.41960785) + +[node name="Checkpoints" type="Node" parent="." index="3"] + +[node name="GameStateOverrider" type="Area3D" parent="Checkpoints" index="0" node_paths=PackedStringArray("level_loader", "spawnpoint")] +collision_layer = 0 +collision_mask = 2 +script = ExtResource("6_gynur") +do_save = false +override_chapter_index = false +level_loader = NodePath("../../LevelLoaders/LoaderLayoutTest") +spawnpoint = NodePath("../../Spawnpoints/SpawnInfrontChase") +use_player_transform = false +metadata/_custom_type_script = "uid://u2s0spt1rud4" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Checkpoints/GameStateOverrider" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -23.751904) +shape = SubResource("BoxShape3D_tys81") + +[node name="DeathArea" type="Area3D" parent="." index="4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -7, 0) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("6_tys81") +death_type = 1 +metadata/_custom_type_script = "uid://bfv3de7iqflhv" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="DeathArea" index="0"] +shape = SubResource("WorldBoundaryShape3D_gynur") diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_world_info.tres b/source/_development/ayuroo/levels/_chase_test/_chase_world_info.tres new file mode 100644 index 0000000..71848eb --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/_chase_world_info.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="WorldInfo" load_steps=6 format=3 uid="uid://d0y8d244covqn"] + +[ext_resource type="Script" uid="uid://dlf1vq0qej6bs" path="res://src/core/world/world_info.gd" id="1_5vaia"] +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_akwq6"] +[ext_resource type="Resource" uid="uid://dc6x0whf4601" path="res://_development/ayuroo/levels/_experimental/level_layout_test.tres" id="2_ik5w1"] +[ext_resource type="Resource" uid="uid://stvk354xpola" path="res://_development/ayuroo/levels/_chase_test/everlasting_fun/level_everlasting_fun.tres" id="2_riadp"] +[ext_resource type="Resource" uid="uid://o7u7x13isl7e" path="res://_development/ayuroo/levels/_chase_test/liquid_gold/level_liquid_gold.tres" id="3_ik5w1"] + +[resource] +script = ExtResource("1_5vaia") +world_path = "uid://btjepmbw1mq6j" +initial_level = &"LayoutTest" +levels = Array[ExtResource("1_akwq6")]([ExtResource("2_ik5w1"), ExtResource("2_riadp"), ExtResource("3_ik5w1")]) +metadata/_custom_type_script = "uid://dlf1vq0qej6bs" diff --git a/source/_development/ayuroo/levels/_chase_test/bar.ogg b/source/_development/ayuroo/levels/_chase_test/bar.ogg new file mode 100644 index 0000000..a672c9b Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/bar.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/bar.ogg.import b/source/_development/ayuroo/levels/_chase_test/bar.ogg.import new file mode 100644 index 0000000..2e6813c --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/bar.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bycnxkxch1dmo" +path="res://.godot/imported/bar.ogg-ba9604d6d5e0363a87b05d7ba864b7b8.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/bar.ogg" +dest_files=["res://.godot/imported/bar.ogg-ba9604d6d5e0363a87b05d7ba864b7b8.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/beat.ogg b/source/_development/ayuroo/levels/_chase_test/beat.ogg new file mode 100644 index 0000000..963eb4f Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/beat.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/beat.ogg.import b/source/_development/ayuroo/levels/_chase_test/beat.ogg.import new file mode 100644 index 0000000..e526740 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/beat.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://c6eyxsodomokn" +path="res://.godot/imported/beat.ogg-bcda8bfd4ebb685197697e4166af0061.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/beat.ogg" +dest_files=["res://.godot/imported/beat.ogg-bcda8bfd4ebb685197697e4166af0061.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3 b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3 new file mode 100644 index 0000000..19fa281 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3 differ diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3.import b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3.import new file mode 100644 index 0000000..c0ea045 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://dxx77jtvkpmdh" +path="res://.godot/imported/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3-fef5003c96572304e3d1534cc4fc1c8f.mp3str" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3" +dest_files=["res://.godot/imported/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3-fef5003c96572304e3d1534cc4fc1c8f.mp3str"] + +[params] + +loop=false +loop_offset=0.0 +bpm=176.0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_anim.tres b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_anim.tres new file mode 100644 index 0000000..582a286 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_anim.tres @@ -0,0 +1,3044 @@ +[gd_resource type="AnimationLibrary" load_steps=4 format=3 uid="uid://ct8oebsc01o7j"] + +[ext_resource type="AudioStream" uid="uid://dxx77jtvkpmdh" path="res://_development/ayuroo/levels/_chase_test/everlasting_fun/Everlasting Fun (Derivative Version) 【INDIGO PARK FAN MUSIC VIDEO.mp3" id="1_prlov"] + +[sub_resource type="Animation" id="Animation_tqtrq"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("ProgressTrack/PlayerDesiredProgress:progress_ratio") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Saws/Saw:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.5, -46)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Saws/Saw2:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.5, -53)] +} +tracks/3/type = "bezier" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HeavyBeatVibration:magnitude_multiplier") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HeavyBeatVibration:duration") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.075] +} + +[sub_resource type="Animation" id="Animation_uxiet"] +resource_name = "everlasting_fun" +length = 290.06 +step = 0.0427 +markers = [{ +"color": Color(1, 1, 1, 1), +"name": &"Intro", +"time": 0.0 +}, { +"color": Color(1, 1, 1, 1), +"name": &"IntroEnd", +"time": 40.333332 +}, { +"color": Color(1, 1, 1, 1), +"name": &"Pre-Final Phase", +"time": 205.78261 +}] +tracks/0/type = "audio" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Music") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("1_prlov") +}], +"times": PackedFloat32Array(0) +} +tracks/0/use_blend = true +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ProgressTrack/PlayerDesiredProgress:progress_ratio") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 290.06), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = false +tracks/2/path = NodePath("LightBeatVibration") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(40.333336, 40.666668, 41, 41.333336, 41.666668, 42, 42.333336, 42.666668, 43, 43.333332, 43.666668, 44, 44.333332, 44.666668, 48.666668, 49, 49.333336, 49.666668, 50, 50.333336, 50.666668, 51, 51.333336, 51.666668, 52, 52.333336, 52.666668, 53, 53.333336, 53.66667, 54, 54.333336, 54.66667, 55, 55.333336, 55.66667, 56, 56.333336, 56.66667, 57, 57.333336, 57.66667, 58.000004, 58.333336, 58.666668, 59.000004, 59.333336, 59.666668, 60.000004, 60.333336, 60.666668, 61.000004, 61.333336, 61.666668, 62.000004, 62.333336, 62.666668, 63.000004, 63.333336, 63.666668, 64, 64.333336, 64.66667, 65, 65.333336, 65.66667, 66, 66.333336, 66.66667, 67, 67.333336, 67.66667, 68, 68.333336, 68.66667, 69, 69.333336, 69.66667, 70, 70.333336, 70.66667, 71, 71.333336, 71.66667, 72, 72.333336, 72.66667, 73, 73.333336, 73.66667, 74, 74.333336, 74.66667, 75, 75.333336, 75.66667, 76, 76.333336, 76.66667, 77, 77.333336, 77.66667, 78, 78.333336, 78.66667, 79, 79.333336, 79.66667, 80, 80.333336, 80.666664, 81, 81.333336, 81.666664, 82, 82.333336, 82.666664, 83, 83.333336, 83.666664, 84, 84.333336, 84.666664, 85, 85.333336, 85.666664, 86, 86.333336, 86.666664, 87, 87.333336, 87.666664, 88, 88.333336, 88.666664, 89, 89.333336, 89.666664, 90, 90.333336, 90.666664, 91, 91.333336, 91.666664, 92, 92.333336, 92.666664, 94.333336, 94.666664, 95, 95.333336, 95.66667, 96, 96.333336, 96.66667, 97, 97.333336, 97.66667, 98, 98.333336, 98.66667, 99, 99.333336, 99.66667, 100, 100.333336, 100.66667, 101, 101.333336, 101.66667, 102, 102.333336, 102.66667, 103, 103.333336, 125, 125.333336, 125.66667, 126, 126.333336, 126.66667, 127, 127.333336, 127.66667, 128, 128.33334, 128.66667, 129, 129.33334, 129.66667, 130, 130.33334, 130.66667, 131, 131.33334, 131.66667, 132, 132.33334, 132.66667, 133, 133.33334, 133.66667, 134, 134.33334, 134.66667, 135, 135.33334, 135.66667, 136, 136.33334, 136.66667, 137, 137.33334, 137.66667, 138, 138.33334, 138.66667, 139, 139.33334, 139.66667, 140, 140.33334, 140.66667, 141, 141.33334, 141.66667, 142, 142.33334, 142.66667, 143, 143.33334, 143.66667, 144, 144.33334, 144.66667, 145, 145.33334, 145.66667, 146, 146.33334, 146.66667, 147, 147.33334, 147.66667, 149.33334, 150, 150.66667, 151.33334, 151.66667, 152, 152.66667, 153.33334, 154, 154.66667, 155.33334, 156, 156.66667, 157.33334, 158, 158.66667, 159.33334, 160, 160.66666, 161.33334, 162, 162.66666, 163.33334, 164, 164.66666, 165.33334, 166, 166.66666, 167.33334, 168, 168.66666, 169.33334, 170, 170.33334, 170.66666, 171, 171.33334, 171.66666, 172, 172.33334, 172.66666, 173, 173.33334, 173.66666, 174, 174.33334, 174.66666, 175, 175.33334, 175.66667, 176, 176.33334, 176.66667, 177, 177.33334, 177.66667, 178, 178.33334, 178.66667, 179, 179.33334, 179.66667, 180, 180.33334, 180.66667, 181, 181.33334, 181.66667, 182, 182.33334, 182.66667, 183, 183.33334, 183.66667, 184, 184.33334, 184.66667, 185, 185.33334, 185.66667, 186, 186.33334, 186.66667, 187, 187.33334, 187.66667, 188, 188.33334, 188.66667, 189, 189.33334, 189.66667, 190, 190.33334, 190.66667, 191, 191.33334, 191.66667, 192, 192.33334, 192.66667, 193, 193.33334, 193.66667, 194, 194.33334, 194.66667, 195, 196.66667, 197, 197.33334, 197.66667, 199, 199.33334, 199.66667, 200, 200.33334, 200.66667, 201, 201.33334, 201.66667, 202, 202.33334, 202.66667, 203, 203.33334, 203.66667, 204, 204.33334, 204.66667, 205, 205.66667, 206, 206.33334, 206.66667, 207, 207.33334, 207.66667, 208, 208.33334, 208.66667, 209, 209.33334, 209.66667, 210, 210.33334, 210.66667, 211, 211.33334, 211.66667, 212, 212.33334, 212.66667, 213, 213.33334, 213.66667, 214, 214.33334, 214.66667, 215, 215.33334, 215.66667, 216, 216.33334, 216.66667, 217, 217.33334, 217.66667, 218, 218.33334, 218.66667, 219, 219.33334, 219.66667, 220, 220.33334, 220.66667, 221, 221.33334, 221.66667, 222, 222.33334, 222.66667, 223, 223.33334, 223.66667, 224, 224.33334, 224.66667, 225, 225.33334, 225.66667, 226, 226.33334, 226.66667, 227, 227.33334, 227.66667, 228, 228.33334, 228.66667, 229.33334, 229.66667, 230, 230.33334, 230.66667, 231, 231.33334, 232, 232.33334, 232.66667, 233, 233.33334, 233.66667, 234, 234.66667, 235, 235.33334, 235.66667, 236, 236.33334, 236.66667, 237, 237.33334, 237.66667, 238, 238.33334, 238.66667, 239, 239.33334, 239.66667, 240, 240.33334, 240.66666, 241, 241.33334, 241.66666, 242, 242.33334, 242.66666, 243, 243.33334, 243.66666, 244, 244.33334, 244.66666, 245, 245.33334, 245.66666, 246, 246.33334, 246.66666, 247, 247.33334, 247.66666, 248, 248.33334, 248.66666, 249, 249.33334, 249.66666, 250, 250.33334, 251, 251.66666, 252.33334, 253, 253.66666, 254.33334, 254.99998, 255.66667, 256.33337, 257, 257.6667, 258.33337, 259, 259.6667, 260.33337, 261, 261.6667, 262.33337, 263, 263.6667, 264.33337, 265, 265.6667, 266.33337, 267, 267.6667, 268.33337, 269, 269.6667, 270.33337, 271, 271.6667, 272.33337, 273, 273.6667, 274.33337, 275, 275.6667, 276.33337, 277, 277.6667, 278.33337, 279, 279.6667, 280.33337, 281, 281.6667, 282.33337, 283), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"values": [{ +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}] +} +tracks/3/type = "method" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HeavyBeatVibration") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(45.0485, 45.3474, 45.8598, 46.3722, 46.7138, 47.2262, 47.7386, 48.0802, 48.5499, 49.0623, 49.4039, 49.7455, 49.9163, 50.4287, 50.5141, 51.24, 51.7524, 52.094, 52.6064, 53.1188, 53.4604, 53.9728, 54.4425, 54.7841, 55.1257, 55.2965, 55.8089, 55.8943, 56.1505, 56.3213, 56.4921, 56.6629, 57.1753, 57.4742, 57.9866, 58.499, 58.8406, 59.353, 59.8654, 60.207, 60.5486, 60.7194, 61.0183, 62.0431, 62.5555, 62.8971, 63.3668, 63.8792, 64.2208, 64.7332, 65.2456, 65.5872, 65.9288, 66.0996, 66.612, 66.6974, 66.9536, 67.0817, 67.2525, 70.1134, 70.6258, 70.9674, 71.309, 71.4798, 72.163, 72.8462, 73.1451, 73.5294, 73.8283, 74.1699, 74.5115, 74.8531, 75.1947, 75.5363, 75.8779, 76.2195, 76.5611, 76.86, 77.2016, 77.5432, 77.8848, 78.2264, 78.568, 78.9096, 79.2512, 79.5928, 79.8917, 80.2333, 80.5749, 80.9165, 81.0873, 81.2581, 81.4289, 81.5997, 81.7705, 81.9413, 82.1121, 82.2829, 83.5212, 84.119, 84.4179, 84.973, 85.4854, 85.827, 86.3394, 86.7664, 87.1507, 87.4923, 87.6631, 88.2609, 88.4744, 88.6452, 88.816, 88.9868, 89.4565, 89.7554, 90.3532, 90.8229, 91.1645, 91.6769, 92.1893, 92.5309, 92.8725, 93.000595, 93.3422, 94.153496, 94.367, 94.879395, 95.221, 95.6907, 96.203094, 96.5447, 97.0998, 97.5268, 97.9111, 98.25271, 98.42351, 98.935905, 99.02131, 99.277504, 99.40561, 99.57641, 99.74721, 100.2596, 100.5158, 101.1136, 101.626, 101.9676, 102.4373, 102.9497, 103.2913, 103.6329, 103.803696, 104.1453, 104.4869, 104.8285, 126.392, 126.8617, 127.2033, 127.7157, 128.2281, 128.5697, 129.0821, 129.5945, 129.8934, 130.235, 130.4058, 130.9182, 131.0036, 131.7722, 132.2846, 132.6262, 133.1386, 133.6083, 133.9499, 134.4623, 134.9747, 135.3163, 135.6579, 135.8287, 136.64, 136.8108, 136.9816, 137.1524, 137.6648, 138.0064, 138.5188, 138.9885, 139.3728, 139.8425, 140.3549, 140.6965, 141.0381, 141.2089, 141.7213, 142.0629, 142.5326, 143.045, 143.3866, 143.899, 144.4114, 144.753, 145.2654, 145.7351, 146.0767, 146.4183, 146.5891, 147.1015, 147.1869, 147.4431, 147.6139, 147.7847, 170.2449, 170.5865, 170.9281, 171.2697, 171.61131, 171.95291, 172.29451, 172.63611, 172.9777, 174.0025, 175.07, 175.7532, 176.778, 177.80281, 178.1871, 178.5287, 179.55351, 180.57831, 181.2615, 182.2863, 183.31111, 183.6954, 184.037, 184.7202, 185.40341, 186.08661, 186.8125, 187.49571, 188.17891, 188.8621, 189.5453, 189.8869, 190.2285, 190.5701, 190.91171, 191.25331, 191.59491, 191.9792, 192.2781, 192.4489, 192.6197, 192.8332, 193.00401, 193.1748, 193.34561, 193.5164, 193.68721, 194.1569, 194.66931, 195.01091, 195.1817, 196.76161, 197.10321, 197.44481, 197.7864, 199.1101, 199.7933, 200.4765, 200.81808, 201.15968, 201.45859, 201.80019, 202.14178, 202.48338, 202.825, 203.1666, 203.33739, 203.5082, 203.67899, 203.8498, 204.02058, 204.1487, 204.31949, 204.4903, 204.66109, 204.8319, 205.00269, 205.1735, 205.8567, 206.3264, 206.71071, 207.1804, 207.69281, 208.03441, 208.58951, 209.0592, 209.4008, 209.7424, 209.91321, 210.3829, 210.511, 210.76721, 211.0661, 211.23691, 211.74931, 212.6033, 213.1157, 213.41461, 213.96971, 214.4394, 214.781, 215.1226, 215.29341, 215.63501, 215.97661, 216.4463, 216.61711, 217.1295, 217.4711, 217.9835, 218.49591, 218.83751, 219.3499, 219.81961, 220.16121, 220.5455, 220.6736, 221.186, 221.27141, 221.5276, 221.69841, 221.8692, 222.04001, 222.5097, 222.8513, 223.4064, 223.8761, 224.21771, 224.7301, 225.1998, 225.5841, 225.9257, 226.09651, 226.56621, 226.6943, 226.9078, 227.1213, 227.2494, 227.3775, 227.93259, 228.27419, 228.44499, 229.46979, 229.81139, 230.11029, 230.6227, 230.9643, 231.1778, 232.1599, 232.5015, 232.80038, 233.31279, 233.65439, 233.8252, 234.84999, 235.19159, 235.53319, 235.87479, 236.00288, 236.17369, 236.55798, 236.85689, 237.3693, 237.54008, 237.88168, 238.2233, 238.73569, 239.07729, 239.2481, 240.2302, 240.61449, 240.91339, 241.3831, 241.5539, 241.7674, 241.9809, 242.9203, 243.30461, 243.6035, 244.1159, 244.41481, 244.62831, 245.61041, 245.9947, 246.3363, 246.7206, 246.8487, 246.9768, 247.3184, 247.66, 248.17241, 248.3432, 248.6421), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"values": [{ +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}] +} +tracks/4/type = "bezier" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HeavyBeatVibration:magnitude_multiplier") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"handle_modes": PackedInt32Array(0, 2, 0, 2), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0, 2, -0.014231364, 0, 0.27043408, 0, 2, -0.014231364, 0, 0.27043408, 0, 1, -0.28466544, 0, 0, 0), +"times": PackedFloat32Array(196.4627, 196.5481, 198.0853, 198.1707) +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("HeavyBeatVibration:duration") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(196.4627, 196.5481, 198.0853, 198.1707), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [0.075, 0.15, 0.07894733995199203, 0.075] +} + +[resource] +_data = { +&"RESET": SubResource("Animation_tqtrq"), +&"everlasting_fun": SubResource("Animation_uxiet") +} diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_test.tscn b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_test.tscn new file mode 100644 index 0000000..17b7f1a --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_test.tscn @@ -0,0 +1,122 @@ +[gd_scene load_steps=14 format=3 uid="uid://bdkbqhgw8nhh6"] + +[ext_resource type="Script" uid="uid://cdgei0ihcem0n" path="res://_development/ayuroo/levels/_chase_test/_chase_test.gd" id="1_ksy85"] +[ext_resource type="AudioStream" uid="uid://bxka3egn4m01r" path="res://_development/ayuroo/levels/_chase_test/tick.ogg" id="2_2frp2"] +[ext_resource type="AnimationLibrary" uid="uid://ct8oebsc01o7j" path="res://_development/ayuroo/levels/_chase_test/everlasting_fun/_ef_chase_anim.tres" id="2_r4hpf"] +[ext_resource type="Script" uid="uid://dp6jy00a6xuhk" path="res://tools/beat_measurer.gd" id="3_c3hig"] +[ext_resource type="AudioStream" uid="uid://bji7bb0rrangg" path="res://_development/ayuroo/levels/_chase_test/tack.ogg" id="3_c4bhh"] +[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="4_gmmry"] +[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="5_86lpt"] +[ext_resource type="Script" uid="uid://bueqrebp8o36n" path="res://tools/anim_player_editor_calls.gd" id="5_c4bhh"] +[ext_resource type="Script" uid="uid://bbwtct3hoxwws" path="res://src/core/vibration_component.gd" id="6_t80us"] + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2frp2"] +playback_mode = 2 +streams_count = 2 +stream_0/stream = ExtResource("2_2frp2") +stream_1/stream = ExtResource("3_c4bhh") + +[sub_resource type="Curve3D" id="Curve3D_tqtrq"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1533), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="SphereMesh" id="SphereMesh_tqtrq"] +radius = 0.15 +height = 0.3 + +[sub_resource type="BoxShape3D" id="BoxShape3D_gsfaw"] +size = Vector3(14, 5, 1) + +[node name="ChaseTest" type="Node3D"] +script = ExtResource("1_ksy85") +chase_anim = &"everlasting_fun" +debug_from_marker = &"IntroEnd" +bpm = 176.0 +metadata/_custom_type_script = "uid://cigop0ivp5vvu" + +[node name="Music" type="AudioStreamPlayer" parent="."] +volume_db = -6.0 + +[node name="Beat" type="AudioStreamPlayer" parent="."] +stream = SubResource("AudioStreamRandomizer_2frp2") +volume_db = -3.0 +max_polyphony = 4 + +[node name="Bar" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_c4bhh") +volume_db = -6.0 + +[node name="MusicAnimation" type="AnimationPlayer" parent="."] +callback_mode_process = 0 +libraries = { +&"": ExtResource("2_r4hpf") +} +script = ExtResource("5_c4bhh") + +[node name="ProgressTrack" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +curve = SubResource("Curve3D_tqtrq") + +[node name="PlayerDesiredProgress" type="PathFollow3D" parent="ProgressTrack"] +rotation_mode = 0 +loop = false + +[node name="DebugVisualizer" type="MeshInstance3D" parent="ProgressTrack/PlayerDesiredProgress"] +mesh = SubResource("SphereMesh_tqtrq") + +[node name="BeatMeasurer" type="Node" parent="ProgressTrack" node_paths=PackedStringArray("path")] +script = ExtResource("3_c3hig") +path = NodePath("..") +track_duration = 290.06 +track_bpm = 176 +metadata/_custom_type_script = "uid://dp6jy00a6xuhk" + +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -767.75) +size = Vector3(14, 1, 1536.5) +material = ExtResource("4_gmmry") + +[node name="Saws" type="Node3D" parent="."] + +[node name="ResetSaw" parent="Saws" instance=ExtResource("5_86lpt")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1, -1511.1943) + +[node name="Saw" parent="Saws" instance=ExtResource("5_86lpt")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -46) + +[node name="Saw2" parent="Saws" instance=ExtResource("5_86lpt")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -53) + +[node name="HeavyBeatVibration" type="Node" parent="."] +script = ExtResource("6_t80us") +duration = 0.075 +sync_to_audio = true +weak_magnitude = 0.25 +strong_magnitude = 0.5 +magnitude_multiplier = 0.0 +metadata/_custom_type_script = "uid://bbwtct3hoxwws" + +[node name="LightBeatVibration" type="Node" parent="."] +script = ExtResource("6_t80us") +duration = 0.075 +delay = 0.125 +sync_to_audio = true +strong_magnitude = 0.0 +metadata/_custom_type_script = "uid://bbwtct3hoxwws" + +[node name="StartChaseArea" type="Area3D" parent="."] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StartChaseArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) +shape = SubResource("BoxShape3D_gsfaw") + +[connection signal="started_vibration" from="HeavyBeatVibration" to="Beat" method="play"] +[connection signal="body_entered" from="StartChaseArea" to="." method="_on_start_chase_area_body_entered"] diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/level_everlasting_fun.tres b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/level_everlasting_fun.tres new file mode 100644 index 0000000..549df24 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/level_everlasting_fun.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LevelInfo" load_steps=2 format=3 uid="uid://stvk354xpola"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_85ilw"] + +[resource] +script = ExtResource("1_85ilw") +level_path = "uid://bdkbqhgw8nhh6" +level_id = &"EverlastingFun" +metadata/_custom_type_script = "uid://dhaus6vq5oigj" diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg new file mode 100644 index 0000000..c023387 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg.import b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg.import new file mode 100644 index 0000000..19ae8f6 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://ccsijhfcbaqx0" +path="res://.godot/imported/bass_filtered.ogg-2411c7db56777a627b361ecd634f0496.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered.ogg" +dest_files=["res://.godot/imported/bass_filtered.ogg-2411c7db56777a627b361ecd634f0496.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg new file mode 100644 index 0000000..43d9b79 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg.import b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg.import new file mode 100644 index 0000000..03e234f --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://4kmkg4m5da1u" +path="res://.godot/imported/bass_filtered2.ogg-f005cb269ff931fb707dbe27834b4ad9.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/everlasting_fun/music/bass_filtered2.ogg" +dest_files=["res://.godot/imported/bass_filtered2.ogg-f005cb269ff931fb707dbe27834b4ad9.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.aup3 b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.aup3 new file mode 100644 index 0000000..6d34666 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.aup3 differ diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.rar b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.rar new file mode 100644 index 0000000..0290b01 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/everlasting_fun_bpm_frustration.rar differ diff --git a/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/song_80_bpm.aup3 b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/song_80_bpm.aup3 new file mode 100644 index 0000000..793f4b1 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/everlasting_fun/music/song_80_bpm.aup3 differ diff --git a/source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3 b/source/_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3 similarity index 100% rename from source/_development/ayuroo/levels/_chase_test/Liquid Gold.mp3 rename to source/_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3 diff --git a/source/_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3.import b/source/_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3.import new file mode 100644 index 0000000..26f1c55 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://ddfnb7m4ufpmu" +path="res://.godot/imported/Liquid Gold.mp3-6d2cb1e626d7f1dcf7172550bf2c5308.mp3str" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3" +dest_files=["res://.godot/imported/Liquid Gold.mp3-6d2cb1e626d7f1dcf7172550bf2c5308.mp3str"] + +[params] + +loop=false +loop_offset=0.0 +bpm=80.0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/_chase_anim.tres b/source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_anim.tres similarity index 84% rename from source/_development/ayuroo/levels/_chase_test/_chase_anim.tres rename to source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_anim.tres index b223e9b..84893c0 100644 --- a/source/_development/ayuroo/levels/_chase_test/_chase_anim.tres +++ b/source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_anim.tres @@ -1,6 +1,6 @@ [gd_resource type="AnimationLibrary" load_steps=4 format=3 uid="uid://ck15gq8qw1rfg"] -[ext_resource type="AudioStream" uid="uid://ddfnb7m4ufpmu" path="res://_development/ayuroo/levels/_chase_test/Liquid Gold.mp3" id="1_58hp1"] +[ext_resource type="AudioStream" uid="uid://ddfnb7m4ufpmu" path="res://_development/ayuroo/levels/_chase_test/liquid_gold/Liquid Gold.mp3" id="1_58hp1"] [sub_resource type="Animation" id="Animation_tqtrq"] length = 0.001 @@ -103,8 +103,8 @@ tracks/4/path = NodePath("VibrationComponent") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(2.625, 4.5, 6, 6.75, 7.5, 8.25, 9, 9.1875, 9.375, 9.5625, 9.75, 9.9375, 10.125, 10.3125, 10.5, 12, 12.375, 12.75, 13.125, 13.5, 13.875, 14.25, 14.625, 15, 15.375, 15.75, 16.125, 16.5, 16.875, 17.25, 17.625, 18, 18.375, 18.75, 19.125, 19.5, 19.875, 20.25, 20.625, 21, 21.375, 21.75, 22.125, 22.5, 22.875, 23.25, 23.625, 24, 24.75, 25.5, 26.25, 27, 27.75, 28.5, 28.875, 29.25, 30, 30.75, 31.5, 32.25, 33, 33.75, 34.5, 34.875, 35.25, 36, 36.75, 37.5, 38.25, 39, 39.75, 40.5, 41.25, 42, 42.75, 43.5, 44.25, 45, 45.375, 45.75, 46.125, 47.625, 48, 48.375, 48.75, 49.125, 49.5, 49.875, 50.25, 50.625, 51, 51.375, 51.75, 52.125, 52.5, 52.875, 53.25, 53.625, 54, 54.375, 54.75, 55.125, 55.5, 55.875, 56.25, 56.625, 57, 57.375, 57.75, 58.125, 58.5, 58.875, 59.25, 59.625, 60, 60.375, 60.75, 61.125, 61.5, 61.875, 62.25, 62.625, 63, 63.375, 63.75, 64.125, 64.5, 64.875, 65.25, 65.625, 66, 66.375, 66.75, 67.125, 67.5, 67.875, 68.25, 68.625, 69, 69.375, 69.75, 70.125, 70.5, 70.875, 71.25, 71.625, 72, 77.625, 78, 78.375, 78.75, 79.125, 79.5, 79.875, 80.25, 80.625, 81, 81.375, 81.75, 82.125, 82.5, 82.875, 83.25, 83.625, 84, 84.375, 84.75, 85.125, 85.5, 85.875, 86.25, 86.625, 87, 87.375, 87.75, 88.125, 88.5, 88.875, 89.25, 89.625, 90, 90.375, 90.75, 91.125, 91.5, 91.875, 92.25, 92.625, 93, 93.375, 93.75, 94.125, 94.5, 94.875, 95.25, 95.625, 96, 96.375, 96.75, 97.125, 97.5, 97.875, 98.25, 98.625, 99, 99.375, 99.75, 100.125, 100.5, 101.625, 102, 102.375, 102.75, 103.125, 103.5, 103.875, 104.25, 104.625, 105, 105.375, 105.75, 106.125, 106.5, 106.875, 107.25, 107.625, 108, 108.375, 108.75, 109.125, 109.5, 109.875, 110.25, 110.625, 111, 111.375, 111.75, 112.125, 112.5, 112.875, 113.25, 113.625, 114, 114.375, 114.75, 115.125, 115.5, 115.875, 116.25, 116.625, 117, 117.375, 117.75, 118.125, 118.5, 118.875, 119.25, 119.625, 120, 120.375, 120.75, 121.125, 121.5, 121.875, 122.25, 122.625, 123, 123.375, 123.75, 124.125, 124.5, 124.875, 125.25, 125.625, 126, 132, 138, 138.75, 139.5, 140.25, 141, 141.75, 142.5, 143.25, 144, 144.375, 144.75, 145.125, 145.5, 145.875, 146.25, 146.625, 147, 147.1875, 147.375, 147.5625, 147.75, 147.9375, 148.125, 148.29951, 148.5, 149.625, 150, 150.375, 150.75, 151.125, 151.5, 151.875, 152.25, 152.625, 153, 153.375, 153.75, 154.125, 154.5, 154.875, 155.25, 155.625, 156, 156.375, 156.75, 157.125, 157.5, 157.875, 158.25, 158.625, 159, 159.375, 159.75, 160.125, 160.5, 160.875, 161.25, 161.625, 162, 162.375, 162.75, 163.125, 163.5, 163.875, 164.25, 164.625, 165, 165.375, 165.75, 166.125, 166.5, 166.875, 167.25, 167.625, 168, 168.375, 168.75, 169.125, 169.5, 169.875, 170.25, 170.625, 171, 171.375, 171.75, 172.125, 172.5, 173.625, 174, 174.375, 174.75, 175.125, 175.5, 175.875, 176.25, 176.625, 177, 177.375, 177.75, 178.125, 178.5, 178.875, 179.25, 179.625, 180, 180.375, 180.75, 181.125, 181.5, 181.875, 182.25, 182.625, 183, 183.375, 183.75, 184.125, 184.5, 184.875, 185.25, 185.625, 186, 186.375, 186.75, 187.125, 187.5, 187.875, 188.25, 188.625, 189, 189.375, 189.75, 190.125, 190.5, 190.875, 191.25, 191.625, 192, 192.375, 192.75, 193.125, 193.5, 193.875, 194.25, 194.625, 195, 195.375, 195.75, 196.125, 196.5, 196.875, 197.25, 197.625, 198, 198.75, 199.5, 200.25, 201, 201.75), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), +"times": PackedFloat32Array(2.625, 4.5, 4.875, 5.25, 6, 6.75, 7.5, 8.25, 9, 9.1875, 9.375, 9.5625, 9.75, 9.9375, 10.125, 10.3125, 10.5, 11.625, 12, 12.375, 12.75, 13.125, 13.5, 13.875, 14.25, 14.625, 15, 15.375, 15.75, 16.125, 16.5, 16.875, 17.25, 17.625, 18, 18.375, 18.75, 19.125, 19.5, 19.875, 20.25, 20.625, 21, 21.375, 21.75, 22.125, 22.5, 22.875, 23.25, 23.625, 24, 24.75, 25.5, 26.25, 27, 27.75, 28.5, 28.875, 29.25, 30, 30.75, 31.5, 32.25, 33, 33.75, 34.5, 34.875, 35.25, 36, 36.75, 37.5, 38.25, 39, 39.75, 40.5, 41.25, 42, 42.375, 42.75, 43.125, 43.5, 43.875, 44.25, 45, 45.375, 45.75, 46.125, 47.625, 48, 48.375, 48.75, 49.125, 49.5, 49.875, 50.25, 50.625, 51, 51.375, 51.75, 52.125, 52.5, 52.875, 53.25, 53.625, 54, 54.375, 54.75, 55.125, 55.5, 55.875, 56.25, 56.625, 57, 57.375, 57.75, 58.125, 58.5, 58.875, 59.25, 59.625, 60, 60.375, 60.75, 61.125, 61.5, 61.875, 62.25, 62.625, 63, 63.375, 63.75, 64.125, 64.5, 64.875, 65.25, 65.625, 66, 66.375, 66.75, 67.125, 67.5, 67.875, 68.25, 68.625, 69, 69.375, 69.75, 70.125, 70.5, 70.875, 71.25, 71.625, 77.625, 78, 78.375, 78.75, 79.125, 79.5, 79.875, 80.25, 80.625, 81, 81.375, 81.75, 82.125, 82.5, 82.875, 83.25, 83.625, 84, 84.375, 84.75, 85.125, 85.5, 85.875, 86.25, 86.625, 87, 87.375, 87.75, 88.125, 88.5, 88.875, 89.25, 89.625, 90, 90.375, 90.75, 91.125, 91.5, 91.875, 92.25, 92.625, 93, 93.375, 93.75, 94.125, 94.5, 94.875, 95.25, 95.625, 96, 96.375, 96.75, 97.125, 97.5, 97.875, 98.25, 98.625, 99, 99.375, 99.75, 100.125, 101.625, 102, 102.375, 102.75, 103.125, 103.5, 103.875, 104.25, 104.625, 105, 105.375, 105.75, 106.125, 106.5, 106.875, 107.25, 107.625, 108, 108.375, 108.75, 109.125, 109.5, 109.875, 110.25, 110.625, 111, 111.375, 111.75, 112.125, 112.5, 112.875, 113.25, 113.625, 114, 114.375, 114.75, 115.125, 115.5, 115.875, 116.25, 116.625, 117, 117.375, 117.75, 118.125, 118.5, 118.875, 119.25, 119.625, 120, 120.375, 120.75, 121.125, 121.5, 121.875, 122.25, 122.625, 123, 123.375, 123.75, 124.125, 124.5, 124.875, 125.25, 125.625, 126, 132, 132.75, 133.5, 134.25, 135, 135.75, 136.5, 138, 138.75, 139.5, 140.25, 141, 141.75, 142.5, 143.25, 144, 144.375, 144.75, 145.125, 145.5, 145.875, 146.25, 146.625, 147, 147.1875, 147.375, 147.5625, 147.75, 147.9375, 148.125, 148.29951, 148.5, 149.625, 150, 150.375, 150.75, 151.125, 151.5, 151.875, 152.25, 152.625, 153, 153.375, 153.75, 154.125, 154.5, 154.875, 155.25, 155.625, 156, 156.375, 156.75, 157.125, 157.5, 157.875, 158.25, 158.625, 159, 159.375, 159.75, 160.125, 160.5, 160.875, 161.25, 161.625, 162, 162.375, 162.75, 163.125, 163.5, 163.875, 164.25, 164.625, 165, 165.375, 165.75, 166.125, 166.5, 166.875, 167.25, 167.625, 168, 168.375, 168.75, 169.125, 169.5, 169.875, 170.25, 170.625, 171, 171.375, 171.75, 172.125, 172.5, 173.625, 174, 174.375, 174.75, 175.125, 175.5, 175.875, 176.25, 176.625, 177, 177.375, 177.75, 178.125, 178.5, 178.875, 179.25, 179.625, 180, 180.375, 180.75, 181.125, 181.5, 181.875, 182.25, 182.625, 183, 183.375, 183.75, 184.125, 184.5, 184.875, 185.25, 185.625, 186, 186.375, 186.75, 187.125, 187.5, 187.875, 188.25, 188.625, 189, 189.375, 189.75, 190.125, 190.5, 190.875, 191.25, 191.625, 192, 192.375, 192.75, 193.125, 193.5, 193.875, 194.25, 194.625, 195, 195.375, 195.75, 196.125, 196.5, 196.875, 197.25, 197.625, 198, 198.75, 199.5, 200.25, 201, 201.75), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), "values": [{ "args": [], "method": &"vibrate" @@ -1407,11 +1407,41 @@ tracks/4/keys = { }, { "args": [], "method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" +}, { +"args": [], +"method": &"vibrate" }] } [resource] _data = { &"RESET": SubResource("Animation_tqtrq"), -&"main_track": SubResource("Animation_2iqw8") +&"liquid_gold": SubResource("Animation_2iqw8") } diff --git a/source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_test.tscn b/source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_test.tscn new file mode 100644 index 0000000..f8dce14 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_test.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=13 format=3 uid="uid://d013wo01v8lr5"] + +[ext_resource type="Script" uid="uid://cdgei0ihcem0n" path="res://_development/ayuroo/levels/_chase_test/_chase_test.gd" id="1_l86vi"] +[ext_resource type="AnimationLibrary" uid="uid://ck15gq8qw1rfg" path="res://_development/ayuroo/levels/_chase_test/liquid_gold/_lg_chase_anim.tres" id="2_kddul"] +[ext_resource type="AudioStream" uid="uid://c6eyxsodomokn" path="res://_development/ayuroo/levels/_chase_test/beat.ogg" id="2_pwoi6"] +[ext_resource type="Script" uid="uid://dp6jy00a6xuhk" path="res://tools/beat_measurer.gd" id="3_pwoi6"] +[ext_resource type="AudioStream" uid="uid://bycnxkxch1dmo" path="res://_development/ayuroo/levels/_chase_test/bar.ogg" id="3_ytnb7"] +[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="4_ytnb7"] +[ext_resource type="Script" uid="uid://bueqrebp8o36n" path="res://tools/anim_player_editor_calls.gd" id="5_1cy10"] +[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="5_i68vn"] +[ext_resource type="Script" uid="uid://bbwtct3hoxwws" path="res://src/core/vibration_component.gd" id="6_1cy10"] + +[sub_resource type="Curve3D" id="Curve3D_tqtrq"] +_data = { +"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1150), +"tilts": PackedFloat32Array(0, 0) +} +point_count = 2 + +[sub_resource type="SphereMesh" id="SphereMesh_tqtrq"] +radius = 0.15 +height = 0.3 + +[sub_resource type="BoxShape3D" id="BoxShape3D_gsfaw"] +size = Vector3(14, 5, 1) + +[node name="ChaseTest" type="Node3D"] +script = ExtResource("1_l86vi") +chase_anim = &"liquid_gold" +metadata/_custom_type_script = "uid://cigop0ivp5vvu" + +[node name="Music" type="AudioStreamPlayer" parent="."] +volume_db = -6.0 + +[node name="Beat" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_pwoi6") +volume_db = -6.0 + +[node name="Bar" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_ytnb7") +volume_db = -6.0 + +[node name="MusicAnimation" type="AnimationPlayer" parent="."] +callback_mode_process = 0 +libraries = { +&"": ExtResource("2_kddul") +} +script = ExtResource("5_1cy10") + +[node name="ProgressTrack" type="Path3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +curve = SubResource("Curve3D_tqtrq") + +[node name="PlayerDesiredProgress" type="PathFollow3D" parent="ProgressTrack"] +rotation_mode = 0 +loop = false + +[node name="DebugVisualizer" type="MeshInstance3D" parent="ProgressTrack/PlayerDesiredProgress"] +mesh = SubResource("SphereMesh_tqtrq") + +[node name="BeatMeasurer" type="Node" parent="ProgressTrack" node_paths=PackedStringArray("path")] +script = ExtResource("3_pwoi6") +path = NodePath("..") +track_duration = 208.54 +track_bpm = 160 +metadata/_custom_type_script = "uid://dp6jy00a6xuhk" + +[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -580) +size = Vector3(14, 1, 1161) +material = ExtResource("4_ytnb7") + +[node name="Saws" type="Node3D" parent="."] + +[node name="ResetSaw" parent="Saws" instance=ExtResource("5_i68vn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 1, -1144.4116) + +[node name="Saw" parent="Saws" instance=ExtResource("5_i68vn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -46) + +[node name="Saw2" parent="Saws" instance=ExtResource("5_i68vn")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -53) + +[node name="VibrationComponent" type="Node" parent="."] +script = ExtResource("6_1cy10") +duration = 0.1 +editor_delay = 0.125 +sync_to_audio = true +weak_magnitude = 0.25 +strong_magnitude = 0.5 +metadata/_custom_type_script = "uid://bbwtct3hoxwws" + +[node name="StartChaseArea" type="Area3D" parent="."] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StartChaseArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) +shape = SubResource("BoxShape3D_gsfaw") + +[connection signal="body_entered" from="StartChaseArea" to="." method="_on_start_chase_area_body_entered"] diff --git a/source/_development/ayuroo/levels/_chase_test/liquid_gold/level_liquid_gold.tres b/source/_development/ayuroo/levels/_chase_test/liquid_gold/level_liquid_gold.tres new file mode 100644 index 0000000..98aefb1 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/liquid_gold/level_liquid_gold.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LevelInfo" load_steps=2 format=3 uid="uid://o7u7x13isl7e"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_d8a7e"] + +[resource] +script = ExtResource("1_d8a7e") +level_path = "uid://d013wo01v8lr5" +level_id = &"LiquidGold" +metadata/_custom_type_script = "uid://dhaus6vq5oigj" diff --git a/source/_development/ayuroo/levels/_chase_test/tack.ogg b/source/_development/ayuroo/levels/_chase_test/tack.ogg new file mode 100644 index 0000000..8adba37 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/tack.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/tack.ogg.import b/source/_development/ayuroo/levels/_chase_test/tack.ogg.import new file mode 100644 index 0000000..17d4fd5 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/tack.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bji7bb0rrangg" +path="res://.godot/imported/tack.ogg-cd39970f45e3a933f4451b2a0a071d52.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/tack.ogg" +dest_files=["res://.godot/imported/tack.ogg-cd39970f45e3a933f4451b2a0a071d52.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_chase_test/tick.ogg b/source/_development/ayuroo/levels/_chase_test/tick.ogg new file mode 100644 index 0000000..6152fa4 Binary files /dev/null and b/source/_development/ayuroo/levels/_chase_test/tick.ogg differ diff --git a/source/_development/ayuroo/levels/_chase_test/tick.ogg.import b/source/_development/ayuroo/levels/_chase_test/tick.ogg.import new file mode 100644 index 0000000..6e41453 --- /dev/null +++ b/source/_development/ayuroo/levels/_chase_test/tick.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://bxka3egn4m01r" +path="res://.godot/imported/tick.ogg-6c7d8f870a6de2550d73f74e3425f11e.oggvorbisstr" + +[deps] + +source_file="res://_development/ayuroo/levels/_chase_test/tick.ogg" +dest_files=["res://.godot/imported/tick.ogg-6c7d8f870a6de2550d73f74e3425f11e.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/source/_development/ayuroo/levels/_dynamic_load_test/_dynamic_load_test_map.tscn b/source/_development/ayuroo/levels/_dynamic_load_test/_dynamic_load_test_map.tscn new file mode 100644 index 0000000..d28ba4e --- /dev/null +++ b/source/_development/ayuroo/levels/_dynamic_load_test/_dynamic_load_test_map.tscn @@ -0,0 +1,191 @@ +[gd_scene load_steps=19 format=3 uid="uid://d3ag4d4r8qcw7"] + +[ext_resource type="PackedScene" uid="uid://clhy3kiceqf2o" path="res://src/gameplay/characters/player/player_character.tscn" id="1_uvw2h"] +[ext_resource type="Script" uid="uid://bj2bhtdul8xct" path="res://_development/ayuroo/dynamic_area_loader/dynamic_area_loader.gd" id="2_vkr6n"] +[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/spawnpoint/player_spawn_point.gd" id="3_1q3mf"] +[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="4_mduwu"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_g60qb"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) + +[sub_resource type="Sky" id="Sky_yaqeo"] +sky_material = SubResource("ProceduralSkyMaterial_g60qb") + +[sub_resource type="Environment" id="Environment_4rgsp"] +background_mode = 2 +sky = SubResource("Sky_yaqeo") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_g60qb"] +albedo_color = Color(1, 0.426083, 0.0827108, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_g60qb"] +size = Vector3(9, 4, 9) + +[sub_resource type="BoxShape3D" id="BoxShape3D_yaqeo"] +size = Vector3(9, 4, 9) + +[sub_resource type="BoxShape3D" id="BoxShape3D_4rgsp"] +size = Vector3(12, 4, 7) + +[sub_resource type="BoxShape3D" id="BoxShape3D_m4fap"] +size = Vector3(4, 4, 11) + +[sub_resource type="BoxShape3D" id="BoxShape3D_k1ge7"] +size = Vector3(25, 4, 21.3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_ka7nb"] +size = Vector3(25, 4, 6) + +[sub_resource type="BoxShape3D" id="BoxShape3D_kaxur"] +size = Vector3(22, 4, 7) + +[sub_resource type="BoxShape3D" id="BoxShape3D_0qpgw"] +size = Vector3(9, 4, 25) + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_g60qb"] + +[sub_resource type="CylinderMesh" id="CylinderMesh_g60qb"] + +[node name="DynamicLoadTestMap" type="Node"] + +[node name="PlayerCharacter" parent="." instance=ExtResource("1_uvw2h")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866025, -0.433013, 0.25, 0, 0.5, 0.866025, -0.5, 0.75, -0.433013, 0, 0, 0) +shadow_enabled = true + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_4rgsp") + +[node name="Areas" type="Node" parent="."] + +[node name="AlwaysLoaded" type="CSGCombiner3D" parent="Areas"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 9) +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="Areas/AlwaysLoaded"] +size = Vector3(8, 1, 7) +material = SubResource("StandardMaterial3D_g60qb") + +[node name="PerformanceTestPlatform1" type="Area3D" parent="Areas" node_paths=PackedStringArray("placeholder_node")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 0) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("2_vkr6n") +placeholder_node = NodePath("Area1") +loaded_if_spawnpoint = Array[int]([0]) +metadata/_custom_type_script = "uid://bj2bhtdul8xct" + +[node name="Area1" parent="Areas/PerformanceTestPlatform1" instance_placeholder="res://src/maps/_dynamic_load_test/area_1.tscn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 2) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Areas/PerformanceTestPlatform1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 2) +shape = SubResource("BoxShape3D_g60qb") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="PerformanceTestPlatform2" type="Area3D" parent="Areas" node_paths=PackedStringArray("placeholder_node")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, -7) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("2_vkr6n") +placeholder_node = NodePath("Area2") +loaded_if_spawnpoint = Array[int]([1]) +metadata/_custom_type_script = "uid://bj2bhtdul8xct" + +[node name="Area2" parent="Areas/PerformanceTestPlatform2" instance_placeholder="res://src/maps/_dynamic_load_test/area_2.tscn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 2) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Areas/PerformanceTestPlatform2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 2) +shape = SubResource("BoxShape3D_yaqeo") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="Areas/PerformanceTestPlatform2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 0.5, 3.67773) +shape = SubResource("BoxShape3D_4rgsp") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="CollisionShape3D3" type="CollisionShape3D" parent="Areas/PerformanceTestPlatform2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 0.5, 5.67773) +shape = SubResource("BoxShape3D_m4fap") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="Hallway1Loader" type="Area3D" parent="Areas" node_paths=PackedStringArray("placeholder_node")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, -7) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("2_vkr6n") +placeholder_node = NodePath("Hallway1") +metadata/_custom_type_script = "uid://bj2bhtdul8xct" + +[node name="Hallway1" parent="Areas/Hallway1Loader" instance_placeholder="res://src/maps/_dynamic_load_test/hallway_1.tscn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 15) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Areas/Hallway1Loader"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 17.85) +shape = SubResource("BoxShape3D_k1ge7") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="Hallway2Loader" type="Area3D" parent="Areas" node_paths=PackedStringArray("placeholder_node")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, -7) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("2_vkr6n") +placeholder_node = NodePath("Hallway2") +metadata/_custom_type_script = "uid://bj2bhtdul8xct" + +[node name="Hallway2" parent="Areas/Hallway2Loader" instance_placeholder="res://src/maps/_dynamic_load_test/hallway_2.tscn"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 15) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Areas/Hallway2Loader"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 25.5) +shape = SubResource("BoxShape3D_ka7nb") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="Areas/Hallway2Loader"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.5, 0.5, 3.67773) +shape = SubResource("BoxShape3D_kaxur") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="CollisionShape3D3" type="CollisionShape3D" parent="Areas/Hallway2Loader"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0.5, 12.6777) +shape = SubResource("BoxShape3D_0qpgw") +debug_color = Color(0.678973, 0.504376, 0, 0.42) + +[node name="WorldFloor" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +metadata/_edit_lock_ = true +metadata/_edit_group_ = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="WorldFloor"] +shape = SubResource("WorldBoundaryShape3D_g60qb") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(5.58473, 6.33307, 0, -6.33307, 5.58473, 0, 0, 0, 8.44375, -13.6652, 0, -15.4998) +mesh = SubResource("CylinderMesh_g60qb") + +[node name="PlayerSpawnPoint" type="Marker3D" parent="."] +transform = Transform3D(0.330597, 0, 0.943772, 0, 1, 0, -0.943772, 0, 0.330597, 2.60837, 0.5, 3.3168) +script = ExtResource("3_1q3mf") +spawn_index = 3 +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="PlayerSpawnPoint2" type="Marker3D" parent="."] +transform = Transform3D(0.330597, 0, 0.943772, 0, 1, 0, -0.943772, 0, 0.330597, 2.60837, 0.5, -2.6832) +script = ExtResource("3_1q3mf") +spawn_index = 4 +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="PlayerSpawnPoint3" type="Marker3D" parent="."] +transform = Transform3D(0.43358, 0, -0.901115, 0, 1, 0, 0.901115, 0, 0.43358, -14.3916, 0.5, -2.6832) +script = ExtResource("3_1q3mf") +spawn_index = 2 +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="Saw" parent="." instance=ExtResource("4_mduwu")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.31477, 1.59362, 6.44809) diff --git a/source/_development/ayuroo/levels/_dynamic_load_test/area_1.tscn b/source/_development/ayuroo/levels/_dynamic_load_test/area_1.tscn new file mode 100644 index 0000000..39dcfe6 --- /dev/null +++ b/source/_development/ayuroo/levels/_dynamic_load_test/area_1.tscn @@ -0,0 +1,6426 @@ +[gd_scene load_steps=6 format=3 uid="uid://cae1iasqr2mf1"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2egex"] +albedo_color = Color(0.589291, 0.560155, 1, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_2egex"] +resource_local_to_scene = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_limus"] +resource_local_to_scene = true +width = 2048 +height = 2048 +noise = SubResource("FastNoiseLite_2egex") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_limus"] +resource_local_to_scene = true +albedo_texture = SubResource("NoiseTexture2D_limus") + +[sub_resource type="QuadMesh" id="QuadMesh_8n3f7"] + +[node name="Area1" type="CSGCombiner3D"] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +size = Vector3(8, 1, 7) +material = SubResource("StandardMaterial3D_2egex") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D6" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D7" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D8" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D9" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D10" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D11" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D12" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D13" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D14" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D15" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D16" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D17" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D18" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D19" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D20" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D21" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D22" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D23" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D24" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D25" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D26" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D27" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D28" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D29" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D30" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D31" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D32" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D33" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D34" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D35" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D36" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D37" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D38" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D39" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D40" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D41" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D42" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D43" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D44" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D45" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D46" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D47" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D48" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D49" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D50" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D51" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D52" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D53" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D54" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D55" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D56" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D57" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D58" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D59" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D60" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D61" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D62" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D63" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D64" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D65" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D66" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D67" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D68" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D69" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D70" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D71" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D72" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D73" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D74" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D75" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D76" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D77" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D78" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D79" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D80" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D81" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D82" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D83" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D84" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D85" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D86" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D87" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D88" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D89" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D90" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D91" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D92" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D93" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D94" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D95" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D96" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D97" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D98" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D99" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D100" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D101" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D102" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D103" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D104" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D105" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D106" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D107" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D108" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D109" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D110" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D111" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D112" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D113" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D114" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D115" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D116" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D117" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D118" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D119" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D120" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D121" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D122" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D123" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D124" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D125" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D126" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D127" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D128" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D129" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D130" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D131" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D132" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D133" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D134" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D135" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D136" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D137" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D138" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D139" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D140" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D141" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D142" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D143" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D144" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D145" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D146" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D147" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D148" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D149" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D150" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D151" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D152" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D153" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D154" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D155" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D156" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D157" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D158" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D159" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D160" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D161" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D162" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D163" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D164" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D165" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D166" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D167" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D168" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D169" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D170" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D171" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D172" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D173" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D174" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D175" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D176" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D177" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D178" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D179" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D180" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D181" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D182" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D183" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D184" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D185" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D186" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D187" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D188" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D189" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D190" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D191" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D192" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D193" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D194" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D195" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D196" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D197" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D198" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D199" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D200" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D201" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D202" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D203" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D204" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D205" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D206" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D207" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D208" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D209" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D210" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D211" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D212" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D213" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D214" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D215" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D216" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D217" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D218" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D219" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D220" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D221" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D222" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D223" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D224" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D225" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D226" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D227" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D228" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D229" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D230" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D231" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D232" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D233" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D234" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D235" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D236" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D237" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D238" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D239" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D240" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D241" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D242" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D243" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D244" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D245" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D246" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D247" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D248" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D249" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D250" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D251" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D252" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D253" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D254" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D255" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D256" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D257" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D258" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D259" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D260" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D261" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D262" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D263" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D264" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D265" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D266" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D267" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D268" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D269" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D270" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D271" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D272" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D273" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D274" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D275" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D276" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D277" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D278" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D279" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D280" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D281" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D282" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D283" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D284" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D285" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D286" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D287" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D288" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D289" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D290" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D291" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D292" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D293" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D294" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D295" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D296" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D297" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D298" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D299" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D300" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D301" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D302" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D303" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D304" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D305" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D306" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D307" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D308" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D309" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D310" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D311" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D312" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D313" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D314" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D315" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D316" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D317" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D318" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D319" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D320" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D321" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D322" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D323" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D324" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D325" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D326" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D327" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D328" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D329" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D330" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D331" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D332" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D333" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D334" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D335" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D336" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D337" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D338" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D339" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D340" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D341" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D342" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D343" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D344" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D345" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D346" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D347" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D348" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D349" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D350" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D351" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D352" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D353" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D354" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D355" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D356" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D357" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D358" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D359" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D360" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D361" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D362" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D363" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D364" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D365" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D366" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D367" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D368" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D369" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D370" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D371" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D372" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D373" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D374" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D375" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D376" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D377" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D378" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D379" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D380" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D381" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D382" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D383" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D384" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D385" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D386" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D387" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D388" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D389" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D390" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D391" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D392" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D393" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D394" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D395" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D396" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D397" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D398" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D399" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D400" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D401" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D402" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D403" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D404" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D405" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D406" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D407" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D408" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D409" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D410" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D411" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D412" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D413" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D414" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D415" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D416" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D417" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D418" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D419" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D420" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D421" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D422" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D423" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D424" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D425" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D426" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D427" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D428" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D429" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D430" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D431" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D432" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D433" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D434" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D435" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D436" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D437" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D438" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D439" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D440" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D441" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D442" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D443" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D444" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D445" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D446" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D447" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D448" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D449" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D450" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D451" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D452" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D453" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D454" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D455" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D456" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D457" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D458" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D459" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D460" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D461" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D462" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D463" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D464" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D465" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D466" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D467" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D468" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D469" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D470" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D471" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D472" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D473" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D474" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D475" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D476" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D477" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D478" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D479" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D480" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D481" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D482" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D483" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D484" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D485" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D486" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D487" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D488" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D489" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D490" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D491" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D492" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D493" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D494" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D495" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D496" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D497" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D498" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D499" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D500" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D501" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D502" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D503" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D504" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D505" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D506" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D507" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D508" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D509" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D510" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D511" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D512" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D513" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D514" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D515" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D516" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D517" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D518" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D519" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D520" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D521" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D522" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D523" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D524" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D525" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D526" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D527" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D528" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D529" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D530" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D531" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D532" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D533" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D534" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D535" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D536" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D537" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D538" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D539" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D540" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D541" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D542" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D543" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D544" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D545" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D546" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D547" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D548" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D549" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D550" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D551" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D552" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D553" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D554" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D555" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D556" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D557" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D558" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D559" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D560" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D561" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D562" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D563" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D564" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D565" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D566" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D567" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D568" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D569" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D570" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D571" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D572" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D573" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D574" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D575" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D576" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D577" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D578" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D579" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D580" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D581" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D582" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D583" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D584" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D585" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D586" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D587" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D588" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D589" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D590" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D591" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D592" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D593" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D594" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D595" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D596" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D597" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D598" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D599" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D600" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D601" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D602" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D603" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D604" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D605" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D606" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D607" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D608" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D609" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D610" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D611" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D612" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D613" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D614" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D615" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D616" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D617" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D618" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D619" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D620" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D621" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D622" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D623" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D624" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D625" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D626" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D627" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D628" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D629" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D630" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D631" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D632" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D633" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D634" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D635" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D636" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D637" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D638" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D639" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D640" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D641" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D642" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D643" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D644" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D645" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D646" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D647" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D648" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D649" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D650" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D651" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D652" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D653" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D654" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D655" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D656" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D657" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D658" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D659" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D660" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D661" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D662" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D663" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D664" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D665" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D666" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D667" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D668" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D669" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D670" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D671" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D672" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D673" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D674" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D675" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D676" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D677" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D678" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D679" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D680" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D681" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D682" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D683" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D684" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D685" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D686" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D687" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D688" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D689" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D690" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D691" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D692" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D693" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D694" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D695" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D696" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D697" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D698" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D699" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D700" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D701" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D702" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D703" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D704" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D705" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D706" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D707" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D708" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D709" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D710" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D711" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D712" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D713" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D714" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D715" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D716" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D717" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D718" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D719" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D720" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D721" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D722" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D723" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D724" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D725" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D726" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D727" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D728" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D729" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D730" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D731" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D732" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D733" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D734" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D735" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D736" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D737" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D738" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D739" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D740" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D741" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D742" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D743" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D744" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D745" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D746" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D747" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D748" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D749" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D750" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D751" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D752" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D753" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D754" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D755" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D756" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D757" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D758" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D759" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D760" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D761" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D762" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D763" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D764" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D765" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D766" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D767" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D768" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D769" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D770" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D771" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D772" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D773" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D774" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D775" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D776" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D777" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D778" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D779" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D780" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D781" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D782" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D783" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D784" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D785" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D786" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D787" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D788" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D789" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D790" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D791" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D792" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D793" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D794" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D795" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D796" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D797" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D798" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D799" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D800" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D801" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D802" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D803" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D804" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D805" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D806" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D807" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D808" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D809" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D810" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D811" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D812" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D813" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D814" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D815" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D816" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D817" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D818" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D819" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D820" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D821" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D822" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D823" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D824" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D825" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D826" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D827" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D828" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D829" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D830" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D831" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D832" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D833" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D834" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D835" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D836" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D837" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D838" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D839" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D840" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D841" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D842" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D843" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D844" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D845" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D846" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D847" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D848" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D849" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D850" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D851" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D852" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D853" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D854" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D855" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D856" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D857" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D858" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D859" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D860" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D861" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D862" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D863" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D864" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D865" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D866" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D867" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D868" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D869" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D870" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D871" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D872" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D873" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D874" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D875" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D876" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D877" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D878" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D879" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D880" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D881" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D882" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D883" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D884" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D885" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D886" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D887" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D888" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D889" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D890" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D891" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D892" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D893" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D894" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D895" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D896" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D897" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D898" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D899" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D900" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D901" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D902" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D903" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D904" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D905" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D906" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D907" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D908" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D909" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D910" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D911" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D912" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D913" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D914" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D915" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D916" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D917" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D918" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D919" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D920" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D921" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D922" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D923" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D924" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D925" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D926" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D927" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D928" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D929" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D930" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D931" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D932" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D933" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D934" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D935" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D936" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D937" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D938" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D939" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D940" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D941" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D942" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D943" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D944" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D945" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D946" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D947" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D948" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D949" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D950" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D951" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D952" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D953" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D954" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D955" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D956" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D957" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D958" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D959" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D960" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D961" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D962" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D963" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D964" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D965" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D966" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D967" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D968" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D969" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D970" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D971" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D972" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D973" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D974" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D975" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D976" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D977" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D978" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D979" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D980" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D981" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D982" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D983" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D984" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D985" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D986" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D987" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D988" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D989" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D990" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D991" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D992" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D993" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D994" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D995" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D996" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D997" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D998" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D999" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1000" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1001" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1002" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1003" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1004" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1005" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1006" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1007" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1008" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1009" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1010" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1011" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1012" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1013" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1014" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1015" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1016" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1017" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1018" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1019" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1020" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1021" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1022" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1023" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1024" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1025" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1026" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1027" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1028" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1029" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1030" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1031" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1032" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1033" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1034" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1035" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1036" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1037" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1038" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1039" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1040" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1041" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1042" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1043" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1044" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1045" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1046" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1047" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1048" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1049" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1050" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1051" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1052" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1053" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1054" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1055" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1056" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1057" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1058" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1059" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1060" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1061" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1062" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1063" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1064" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1065" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1066" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1067" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1068" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1069" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1070" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1071" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1072" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1073" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1074" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1075" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1076" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1077" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1078" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1079" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1080" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1081" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1082" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1083" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1084" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1085" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1086" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1087" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1088" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1089" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1090" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1091" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1092" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1093" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1094" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1095" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1096" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1097" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1098" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1099" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1100" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1101" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1102" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1103" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1104" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1105" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1106" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1107" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1108" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1109" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1110" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1111" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1112" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1113" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1114" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1115" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1116" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1117" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1118" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1119" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1120" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1121" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1122" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1123" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1124" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1125" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1126" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1127" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1128" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1129" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1130" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1131" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1132" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1133" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1134" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1135" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1136" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1137" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1138" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1139" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1140" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1141" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1142" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1143" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1144" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1145" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1146" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1147" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1148" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1149" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1150" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1151" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1152" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1153" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1154" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1155" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1156" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1157" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1158" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1159" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1160" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1161" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1162" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1163" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1164" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1165" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1166" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1167" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1168" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1169" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1170" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1171" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1172" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1173" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1174" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1175" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1176" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1177" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1178" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1179" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1180" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1181" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1182" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1183" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1184" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1185" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1186" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1187" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1188" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1189" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1190" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1191" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1192" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1193" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1194" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1195" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1196" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1197" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1198" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1199" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1200" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1201" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1202" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1203" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1204" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1205" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1206" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1207" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1208" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1209" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1210" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1211" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1212" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1213" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1214" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1215" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1216" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1217" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1218" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1219" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1220" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1221" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1222" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1223" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1224" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1225" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1226" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1227" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1228" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1229" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1230" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1231" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1232" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1233" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1234" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1235" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1236" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1237" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1238" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1239" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1240" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1241" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1242" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1243" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1244" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1245" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1246" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1247" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1248" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1249" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1250" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1251" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1252" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1253" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1254" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1255" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1256" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1257" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1258" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1259" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1260" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1261" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1262" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1263" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1264" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1265" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1266" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1267" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1268" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1269" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1270" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1271" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1272" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1273" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1274" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1275" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1276" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1277" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1278" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1279" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") + +[node name="MeshInstance3D1280" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_limus") +mesh = SubResource("QuadMesh_8n3f7") diff --git a/source/_development/ayuroo/levels/_dynamic_load_test/area_2.tscn b/source/_development/ayuroo/levels/_dynamic_load_test/area_2.tscn new file mode 100644 index 0000000..063aa83 --- /dev/null +++ b/source/_development/ayuroo/levels/_dynamic_load_test/area_2.tscn @@ -0,0 +1,6426 @@ +[gd_scene load_steps=6 format=3 uid="uid://f5ti7f6p5x03"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wp0cu"] +albedo_color = Color(0, 0.586893, 0.0976942, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_wp0cu"] +resource_local_to_scene = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_wp0cu"] +resource_local_to_scene = true +width = 2048 +height = 2048 +noise = SubResource("FastNoiseLite_wp0cu") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mg84x"] +resource_local_to_scene = true +albedo_texture = SubResource("NoiseTexture2D_wp0cu") + +[sub_resource type="QuadMesh" id="QuadMesh_0d8tl"] + +[node name="Area2" type="CSGCombiner3D"] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +size = Vector3(8, 1, 7) +material = SubResource("StandardMaterial3D_wp0cu") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D6" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D7" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D8" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D9" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D10" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D11" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D12" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D13" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D14" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D15" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D16" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D17" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D18" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D19" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D20" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D21" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D22" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D23" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D24" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D25" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D26" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D27" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D28" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D29" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D30" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D31" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D32" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D33" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D34" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D35" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D36" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D37" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D38" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D39" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D40" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D41" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D42" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D43" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D44" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D45" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D46" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D47" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D48" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D49" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D50" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D51" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D52" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D53" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D54" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D55" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D56" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D57" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D58" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D59" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D60" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D61" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D62" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D63" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D64" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D65" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D66" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D67" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D68" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D69" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D70" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D71" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D72" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D73" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D74" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D75" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D76" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D77" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D78" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D79" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D80" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D81" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D82" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D83" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D84" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D85" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D86" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D87" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D88" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D89" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D90" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D91" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D92" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D93" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D94" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D95" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D96" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D97" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D98" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D99" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D100" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D101" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D102" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D103" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D104" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D105" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D106" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D107" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D108" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D109" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D110" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D111" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D112" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D113" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D114" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D115" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D116" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D117" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D118" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D119" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D120" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D121" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D122" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D123" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D124" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D125" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D126" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D127" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D128" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D129" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D130" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D131" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D132" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D133" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D134" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D135" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D136" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D137" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D138" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D139" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D140" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D141" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D142" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D143" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D144" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D145" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D146" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D147" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D148" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D149" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D150" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D151" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D152" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D153" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D154" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D155" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D156" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D157" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D158" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D159" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D160" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D161" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D162" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D163" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D164" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D165" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D166" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D167" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D168" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D169" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D170" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D171" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D172" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D173" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D174" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D175" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D176" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D177" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D178" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D179" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D180" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D181" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D182" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D183" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D184" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D185" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D186" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D187" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D188" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D189" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D190" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D191" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D192" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D193" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D194" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D195" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D196" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D197" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D198" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D199" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D200" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D201" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D202" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D203" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D204" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D205" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D206" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D207" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D208" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D209" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D210" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D211" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D212" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D213" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D214" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D215" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D216" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D217" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D218" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D219" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D220" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D221" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D222" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D223" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D224" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D225" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D226" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D227" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D228" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D229" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D230" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D231" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D232" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D233" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D234" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D235" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D236" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D237" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D238" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D239" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D240" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D241" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D242" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D243" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D244" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D245" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D246" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D247" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D248" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D249" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D250" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D251" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D252" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D253" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D254" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D255" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D256" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D257" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D258" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D259" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D260" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D261" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D262" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D263" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D264" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D265" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D266" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D267" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D268" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D269" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D270" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D271" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D272" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D273" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D274" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D275" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D276" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D277" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D278" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D279" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D280" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D281" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D282" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D283" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D284" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D285" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D286" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D287" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D288" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D289" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D290" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D291" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D292" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D293" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D294" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D295" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D296" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D297" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D298" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D299" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D300" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D301" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D302" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D303" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D304" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D305" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D306" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D307" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D308" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D309" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D310" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D311" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D312" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D313" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D314" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D315" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D316" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D317" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D318" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D319" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D320" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D321" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D322" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D323" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D324" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D325" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D326" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D327" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D328" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D329" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D330" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D331" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D332" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D333" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D334" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D335" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D336" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D337" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D338" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D339" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D340" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D341" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D342" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D343" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D344" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D345" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D346" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D347" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D348" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D349" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D350" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D351" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D352" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D353" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D354" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D355" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D356" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D357" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D358" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D359" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D360" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D361" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D362" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D363" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D364" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D365" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D366" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D367" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D368" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D369" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D370" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D371" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D372" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D373" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D374" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D375" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D376" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D377" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D378" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D379" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D380" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D381" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D382" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D383" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D384" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D385" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D386" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D387" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D388" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D389" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D390" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D391" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D392" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D393" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D394" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D395" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D396" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D397" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D398" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D399" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D400" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D401" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D402" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D403" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D404" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D405" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D406" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D407" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D408" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D409" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D410" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D411" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D412" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D413" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D414" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D415" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D416" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D417" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D418" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D419" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D420" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D421" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D422" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D423" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D424" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D425" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D426" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D427" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D428" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D429" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D430" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D431" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D432" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D433" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D434" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D435" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D436" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D437" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D438" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D439" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D440" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D441" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D442" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D443" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D444" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D445" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D446" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D447" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D448" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D449" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D450" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D451" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D452" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D453" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D454" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D455" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D456" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D457" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D458" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D459" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D460" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D461" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D462" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D463" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D464" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D465" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D466" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D467" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D468" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D469" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D470" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D471" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D472" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D473" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D474" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D475" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D476" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D477" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D478" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D479" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D480" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D481" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D482" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D483" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D484" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D485" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D486" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D487" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D488" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D489" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D490" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D491" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D492" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D493" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D494" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D495" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D496" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D497" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D498" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D499" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D500" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D501" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D502" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D503" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D504" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D505" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D506" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D507" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D508" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D509" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D510" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D511" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D512" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D513" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D514" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D515" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D516" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D517" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D518" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D519" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D520" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D521" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D522" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D523" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D524" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D525" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D526" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D527" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D528" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D529" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D530" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D531" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D532" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D533" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D534" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D535" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D536" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D537" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D538" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D539" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D540" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D541" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D542" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D543" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D544" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D545" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D546" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D547" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D548" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D549" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D550" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D551" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D552" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D553" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D554" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D555" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D556" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D557" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D558" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D559" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D560" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D561" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D562" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D563" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D564" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D565" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D566" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D567" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D568" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D569" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D570" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D571" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D572" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D573" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D574" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D575" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D576" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D577" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D578" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D579" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D580" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D581" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D582" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D583" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D584" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D585" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D586" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D587" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D588" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D589" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D590" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D591" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D592" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D593" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D594" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D595" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D596" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D597" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D598" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D599" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D600" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D601" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D602" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D603" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D604" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D605" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D606" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D607" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D608" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D609" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D610" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D611" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D612" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D613" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D614" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D615" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D616" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D617" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D618" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D619" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D620" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D621" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D622" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D623" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D624" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D625" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D626" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D627" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D628" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D629" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D630" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D631" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D632" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D633" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D634" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D635" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D636" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D637" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D638" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D639" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D640" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D641" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D642" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D643" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D644" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D645" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D646" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D647" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D648" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D649" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D650" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D651" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D652" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D653" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D654" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D655" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D656" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D657" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D658" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D659" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D660" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D661" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D662" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D663" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D664" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D665" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D666" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D667" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D668" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D669" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D670" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D671" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D672" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D673" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D674" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D675" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D676" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D677" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D678" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D679" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D680" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D681" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D682" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D683" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D684" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D685" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D686" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D687" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D688" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D689" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D690" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D691" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D692" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D693" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D694" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D695" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D696" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D697" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D698" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D699" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D700" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D701" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D702" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D703" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D704" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D705" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D706" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D707" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D708" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D709" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D710" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D711" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D712" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D713" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D714" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D715" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D716" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D717" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D718" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D719" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D720" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D721" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D722" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D723" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D724" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D725" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D726" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D727" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D728" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D729" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D730" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D731" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D732" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D733" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D734" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D735" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D736" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D737" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D738" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D739" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D740" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D741" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D742" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D743" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D744" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D745" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D746" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D747" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D748" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D749" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D750" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D751" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D752" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D753" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D754" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D755" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D756" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D757" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D758" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D759" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D760" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D761" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D762" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D763" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D764" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D765" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D766" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D767" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D768" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D769" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D770" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D771" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D772" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D773" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D774" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D775" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D776" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D777" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D778" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D779" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D780" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D781" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D782" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D783" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D784" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D785" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D786" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D787" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D788" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D789" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D790" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D791" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D792" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D793" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D794" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D795" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D796" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D797" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D798" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D799" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D800" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D801" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D802" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D803" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D804" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D805" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D806" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D807" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D808" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D809" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D810" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D811" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D812" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D813" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D814" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D815" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D816" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D817" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D818" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D819" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D820" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D821" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D822" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D823" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D824" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D825" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D826" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D827" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D828" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D829" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D830" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D831" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D832" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D833" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D834" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D835" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D836" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D837" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D838" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D839" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D840" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D841" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D842" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D843" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D844" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D845" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D846" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D847" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D848" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D849" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D850" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D851" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D852" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D853" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D854" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D855" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D856" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D857" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D858" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D859" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D860" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D861" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D862" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D863" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D864" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D865" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D866" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D867" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D868" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D869" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D870" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D871" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D872" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D873" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D874" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D875" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D876" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D877" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D878" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D879" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D880" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D881" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D882" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D883" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D884" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D885" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D886" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D887" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D888" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D889" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D890" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D891" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D892" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D893" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D894" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D895" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D896" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D897" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D898" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D899" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D900" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D901" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D902" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D903" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D904" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D905" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D906" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D907" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D908" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D909" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D910" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D911" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D912" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D913" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D914" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D915" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D916" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D917" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D918" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D919" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D920" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D921" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D922" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D923" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D924" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D925" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D926" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D927" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D928" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D929" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D930" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D931" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D932" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D933" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D934" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D935" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D936" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D937" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D938" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D939" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D940" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D941" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D942" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D943" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D944" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D945" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D946" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D947" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D948" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D949" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D950" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D951" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D952" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D953" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D954" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D955" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D956" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D957" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D958" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D959" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D960" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D961" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D962" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D963" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D964" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D965" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D966" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D967" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D968" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D969" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D970" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D971" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D972" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D973" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D974" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D975" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D976" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D977" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D978" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D979" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D980" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D981" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D982" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D983" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D984" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D985" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D986" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D987" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D988" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D989" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D990" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D991" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D992" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D993" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D994" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D995" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D996" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D997" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D998" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D999" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1000" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1001" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1002" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1003" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1004" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1005" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1006" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1007" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1008" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1009" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1010" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1011" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1012" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1013" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1014" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1015" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1016" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1017" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1018" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1019" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1020" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1021" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1022" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1023" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1024" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1025" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1026" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1027" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1028" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1029" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1030" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1031" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1032" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1033" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1034" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1035" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1036" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1037" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1038" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1039" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1040" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1041" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1042" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1043" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1044" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1045" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1046" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1047" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1048" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1049" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1050" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1051" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1052" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1053" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1054" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1055" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1056" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1057" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1058" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1059" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1060" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1061" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1062" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1063" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1064" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1065" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1066" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1067" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1068" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1069" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1070" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1071" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1072" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1073" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1074" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1075" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1076" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1077" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1078" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1079" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1080" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1081" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1082" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1083" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1084" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1085" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1086" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1087" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1088" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1089" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1090" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1091" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1092" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1093" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1094" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1095" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1096" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1097" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1098" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1099" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1100" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1101" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1102" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1103" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1104" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1105" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1106" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1107" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1108" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1109" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1110" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1111" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1112" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1113" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1114" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1115" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1116" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1117" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1118" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1119" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1120" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1121" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1122" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1123" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1124" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1125" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1126" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1127" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1128" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1129" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1130" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1131" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1132" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1133" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1134" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1135" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1136" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1137" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1138" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1139" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1140" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1141" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1142" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1143" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1144" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1145" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1146" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1147" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1148" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1149" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1150" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1151" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1152" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1153" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1154" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1155" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1156" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1157" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1158" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1159" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1160" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1161" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1162" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1163" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1164" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1165" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1166" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1167" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1168" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1169" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1170" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1171" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1172" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1173" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1174" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1175" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1176" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1177" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1178" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1179" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1180" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1181" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1182" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1183" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1184" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1185" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1186" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1187" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1188" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1189" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1190" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1191" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1192" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1193" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1194" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1195" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1196" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1197" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1198" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1199" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1200" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1201" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1202" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1203" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1204" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1205" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1206" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1207" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1208" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1209" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1210" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1211" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1212" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1213" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1214" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1215" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1216" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1217" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1218" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1219" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1220" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1221" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1222" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1223" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1224" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1225" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1226" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1227" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1228" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1229" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1230" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1231" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1232" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1233" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1234" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1235" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1236" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1237" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1238" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1239" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1240" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1241" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1242" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1243" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1244" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1245" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1246" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1247" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1248" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1249" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1250" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1251" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1252" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1253" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1254" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1255" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1256" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1257" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1258" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1259" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1260" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1261" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1262" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1263" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1264" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1265" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1266" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1267" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1268" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1269" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1270" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1271" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1272" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1273" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1274" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1275" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1276" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1277" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1278" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1279" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") + +[node name="MeshInstance3D1280" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.810536, 0) +material_override = SubResource("StandardMaterial3D_mg84x") +mesh = SubResource("QuadMesh_0d8tl") diff --git a/source/_development/ayuroo/levels/_dynamic_load_test/hallway_1.tscn b/source/_development/ayuroo/levels/_dynamic_load_test/hallway_1.tscn new file mode 100644 index 0000000..c83b89c --- /dev/null +++ b/source/_development/ayuroo/levels/_dynamic_load_test/hallway_1.tscn @@ -0,0 +1,56 @@ +[gd_scene format=3 uid="uid://dr0gtcel5qdqg"] + +[node name="Hallway1" type="CSGCombiner3D"] +use_collision = true + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 1) +size = Vector3(8, 1, 3) + +[node name="Floor2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 0, 7.5) +size = Vector3(3, 1, 10) + +[node name="Floor3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5, 0, 10.5) +size = Vector3(21, 1, 4) + +[node name="Ceiling" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 5, 1) +size = Vector3(8, 1, 3) + +[node name="Ceiling2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.5, 5, 7.5) +size = Vector3(3, 1, 10) + +[node name="Ceiling3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5, 5, 10.5) +size = Vector3(21, 1, 4) + +[node name="Wall" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.5, 13) +size = Vector3(24, 6, 1) + +[node name="Wall2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, -1) +size = Vector3(8, 6, 1) + +[node name="Wall3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.5, 2.5, 8) +size = Vector3(17, 6, 1) + +[node name="Wall4" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 2.5, 3) +size = Vector3(5, 6, 1) + +[node name="Wall5" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 2.5, 6) +size = Vector3(1, 6, 15) + +[node name="Wall6" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.5, 2.5, 5.5) +size = Vector3(1, 6, 4) + +[node name="Wall7" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 2.5, 11) +size = Vector3(1, 6, 5) diff --git a/source/_development/ayuroo/levels/_dynamic_load_test/hallway_2.tscn b/source/_development/ayuroo/levels/_dynamic_load_test/hallway_2.tscn new file mode 100644 index 0000000..8dfb45d --- /dev/null +++ b/source/_development/ayuroo/levels/_dynamic_load_test/hallway_2.tscn @@ -0,0 +1,68 @@ +[gd_scene format=3 uid="uid://loo81pvlxlhh"] + +[node name="Hallway2" type="CSGCombiner3D"] +use_collision = true + +[node name="Floor" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 0, 1.5) +size = Vector3(3, 1, 14) + +[node name="Floor2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 0, -7) +size = Vector3(7, 1, 3) + +[node name="Floor3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.5, 0, -12) +size = Vector3(3, 1, 7) + +[node name="Floor4" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 0, -14) +size = Vector3(9, 1, 3) + +[node name="Wall" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 2.5, -16) +size = Vector3(12, 6, 1) + +[node name="Wall2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 2.5, -12) +size = Vector3(9, 6, 1) + +[node name="Wall3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 2.5, -9) +size = Vector3(5, 6, 1) + +[node name="Wall4" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.5, 2.5, -5) +size = Vector3(5, 6, 1) + +[node name="Wall5" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.5, 2.5, -11) +size = Vector3(1, 6, 11) + +[node name="Wall6" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 2.5, -10.5) +size = Vector3(1, 6, 2) + +[node name="Wall7" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 2.5, 0) +size = Vector3(1, 6, 17) + +[node name="Wall8" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 2.5, 2) +size = Vector3(1, 6, 13) + +[node name="Ceiling" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 5, 1.5) +size = Vector3(3, 1, 14) + +[node name="Ceiling2" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.5, 5, -7) +size = Vector3(7, 1, 3) + +[node name="Ceiling3" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.5, 5, -12) +size = Vector3(3, 1, 7) + +[node name="Ceiling4" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.5, 5, -14) +size = Vector3(9, 1, 3) diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent.glb b/source/_development/ayuroo/levels/_experimental/CircusTent.glb new file mode 100644 index 0000000..26a4da5 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/CircusTent.glb differ diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent.glb.import b/source/_development/ayuroo/levels/_experimental/CircusTent.glb.import new file mode 100644 index 0000000..af9d7e5 --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/CircusTent.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bootbqfud7nre" +path="res://.godot/imported/CircusTent.glb-0b97f9616c16e1aced60e18ac3a57bf0.scn" + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/CircusTent.glb" +dest_files=["res://.godot/imported/CircusTent.glb-0b97f9616c16e1aced60e18ac3a57bf0.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=2.0 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent.glb.unwrap_cache b/source/_development/ayuroo/levels/_experimental/CircusTent.glb.unwrap_cache new file mode 100644 index 0000000..544042b Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/CircusTent.glb.unwrap_cache differ diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png new file mode 100644 index 0000000..dec5b59 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png differ diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png.import b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png.import new file mode 100644 index 0000000..a3c4888 --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02.png.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t47dsnj63y0q" +path.s3tc="res://.godot/imported/CircusTent_texture_02.png-4e53f948574944f15359cfab26877cc1.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} +generator_parameters={ +"md5": "a4091b6db3fc67af97a848a98d5046da" +} + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/CircusTent_texture_02.png" +dest_files=["res://.godot/imported/CircusTent_texture_02.png-4e53f948574944f15359cfab26877cc1.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 diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png new file mode 100644 index 0000000..bf1cb17 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png differ diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png.import b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png.import new file mode 100644 index 0000000..02e29be --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pcmndib445ch" +path.s3tc="res://.godot/imported/CircusTent_texture_02_2.png-72d00f784254062ea8406c13e57b7f70.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} +generator_parameters={ +"md5": "671c567d75d6cffe7d16440771c026c5" +} + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/CircusTent_texture_02_2.png" +dest_files=["res://.godot/imported/CircusTent_texture_02_2.png-72d00f784254062ea8406c13e57b7f70.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 diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png new file mode 100644 index 0000000..13c4388 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png differ diff --git a/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png.import b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png.import new file mode 100644 index 0000000..42382be --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/CircusTent_texture_13.png.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ceoaurr14k8s0" +path.s3tc="res://.godot/imported/CircusTent_texture_13.png-733cbf96e6cf53acbb1f3cc2d83015cc.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} +generator_parameters={ +"md5": "5220913b82328d262f5516be440341d3" +} + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/CircusTent_texture_13.png" +dest_files=["res://.godot/imported/CircusTent_texture_13.png-733cbf96e6cf53acbb1f3cc2d83015cc.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 diff --git a/source/_development/ayuroo/levels/_experimental/_layout_test.exr b/source/_development/ayuroo/levels/_experimental/_layout_test.exr new file mode 100644 index 0000000..8f1af07 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_layout_test.exr differ diff --git a/source/_development/ayuroo/levels/_experimental/_layout_test.exr.import b/source/_development/ayuroo/levels/_experimental/_layout_test.exr.import new file mode 100644 index 0000000..8b0b90f --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/_layout_test.exr.import @@ -0,0 +1,29 @@ +[remap] + +importer="2d_array_texture" +type="CompressedTexture2DArray" +uid="uid://cwby3s5qgxau" +path.bptc="res://.godot/imported/_layout_test.exr-6f5dc0c4020d35a10bdf319a94bdf8f9.bptc.ctexarray" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/_layout_test.exr" +dest_files=["res://.godot/imported/_layout_test.exr-6f5dc0c4020d35a10bdf319a94bdf8f9.bptc.ctexarray"] + +[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/channel_pack=1 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=1 +slices/vertical=2 diff --git a/source/_development/ayuroo/levels/_experimental/_layout_test.lmbake b/source/_development/ayuroo/levels/_experimental/_layout_test.lmbake new file mode 100644 index 0000000..1c6adb7 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_layout_test.lmbake differ diff --git a/source/_development/ayuroo/levels/_experimental/_layout_test.tscn b/source/_development/ayuroo/levels/_experimental/_layout_test.tscn index 22399a3..18ddb8c 100644 --- a/source/_development/ayuroo/levels/_experimental/_layout_test.tscn +++ b/source/_development/ayuroo/levels/_experimental/_layout_test.tscn @@ -1,16 +1,27 @@ -[gd_scene load_steps=6 format=3 uid="uid://srvm3v1grugk"] +[gd_scene load_steps=11 format=3 uid="uid://srvm3v1grugk"] -[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/level/level.gd" id="1_0kdur"] +[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"] [ext_resource type="Script" uid="uid://briioihkxilxm" path="res://addons/proto_shape/proto_ramp/proto_ramp.gd" id="3_cv3fe"] [ext_resource type="Material" uid="uid://bwbwqb84pmji3" path="res://assets/materials/dev/orange/orange_04.tres" id="4_kb2k5"] -[ext_resource type="PackedScene" uid="uid://clhy3kiceqf2o" path="res://src/gameplay/characters/player/player_character.tscn" id="5_p8lkr"] +[ext_resource type="PackedScene" uid="uid://bootbqfud7nre" path="res://_development/ayuroo/levels/_experimental/CircusTent.glb" id="6_cv3fe"] +[ext_resource type="PackedScene" uid="uid://gjyynl2fnvj2" path="res://_development/ayuroo/levels/_experimental/_test_level.glb" id="6_cxrf3"] +[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"] + +[sub_resource type="Environment" id="Environment_cv3fe"] +tonemap_mode = 2 +glow_strength = 1.25 +glow_bloom = 1.0 [node name="LayoutTest" type="Node3D"] script = ExtResource("1_0kdur") metadata/_custom_type_script = "uid://cigop0ivp5vvu" [node name="Blockout" type="CSGCombiner3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -50, 0) +visible = false use_collision = true [node name="CSGBox3D" type="CSGBox3D" parent="Blockout"] @@ -275,20 +286,796 @@ calculation = 0 steps = 16 metadata/_custom_type_script = "uid://briioihkxilxm" -[node name="Lighting" type="Node3D" parent="."] +[node name="LightmapGI" type="LightmapGI" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +quality = 3 +supersampling = true +bounces = 5 +interior = true +texel_scale = 2.0 +generate_probes_subdiv = 4 +light_data = ExtResource("7_cv3fe") -[node name="SpotLight3D" type="SpotLight3D" parent="Lighting"] -transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 6, -4) -spot_range = 8.0 +[node name="CircusTentInside" parent="LightmapGI" instance=ExtResource("6_kb2k5")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -8, -51.474396) -[node name="OmniLight3D" type="OmniLight3D" parent="Lighting"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -12.5) +[node name="CircusTent2" parent="LightmapGI" instance=ExtResource("6_cv3fe")] +visible = false -[node name="OmniLight3D2" type="OmniLight3D" parent="Lighting"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -17.5) +[node name="Main" parent="LightmapGI" instance=ExtResource("6_cxrf3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) -[node name="OmniLight3D3" type="OmniLight3D" parent="Lighting"] +[node name="Lighting" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0) + +[node name="SpotLight3D" type="SpotLight3D" parent="LightmapGI/Lighting"] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 5.4, -4) +light_energy = 2.0 +light_bake_mode = 1 +spot_range = 14.0 +spot_angle = 63.718216 + +[node name="SpotLight3D2" type="SpotLight3D" parent="LightmapGI/Lighting"] +transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, -1, 61.4, -78) +light_energy = 10.0 +light_bake_mode = 1 +spot_range = 310.0 +spot_angle = 73.011505 + +[node name="OmniLight3D" type="OmniLight3D" parent="LightmapGI/Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -15.5) +light_energy = 2.0 +light_bake_mode = 1 +shadow_enabled = true +omni_range = 10.0 + +[node name="OmniLight3D2" type="OmniLight3D" parent="LightmapGI/Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -21.5) +light_energy = 2.0 +light_bake_mode = 1 +shadow_enabled = true +omni_range = 10.0 + +[node name="OmniLight3D3" type="OmniLight3D" parent="LightmapGI/Lighting"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -21.5) +light_energy = 2.0 +light_bake_mode = 1 +shadow_enabled = true +omni_range = 10.0 -[node name="PlayerCharacter" parent="." instance=ExtResource("5_p8lkr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9999999, 0) +[node name="OmniLight3D4" type="OmniLight3D" parent="LightmapGI/Lighting"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, -43.5) +light_energy = 2.0 +light_bake_mode = 1 +omni_range = 83.0 + +[node name="ReflectionProbes" type="Node3D" parent="LightmapGI"] +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) +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) +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) +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) +interior = true + +[node name="LightmapProbeGrid" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.1629105, 1.0473042, 3.522971) +script = ExtResource("9_p8lkr") +size = Vector3(11.510193, 3.0946074, 2.6259294) +probes_number = Vector3i(5, 3, 3) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 1.5473037, 1.3129647) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 1.5473037, 0) + +[node name="LightmapProbe 0, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 1.5473037, -1.3129647) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 0, 1.3129647) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 0, 0) + +[node name="LightmapProbe 0, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, 0, -1.3129647) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, -1.5473037, 1.3129647) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, -1.5473037, 0) + +[node name="LightmapProbe 0, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7550964, -1.5473037, -1.3129647) + +[node name="LightmapProbe 1, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, 1.5473037, 1.3129647) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, 1.5473037, 0) + +[node name="LightmapProbe 1, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, 1.5473037, -1.3129647) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, 0, 1.3129647) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, -1.5473037, 1.3129647) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, -1.5473037, 0) + +[node name="LightmapProbe 1, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.8775482, -1.5473037, -1.3129647) + +[node name="LightmapProbe 2, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5473037, 1.3129647) + +[node name="LightmapProbe 2, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5473037, 0) + +[node name="LightmapProbe 2, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5473037, -1.3129647) + +[node name="LightmapProbe 2, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.3129647) + +[node name="LightmapProbe 2, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.3129647) + +[node name="LightmapProbe 2, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5473037, 1.3129647) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5473037, 0) + +[node name="LightmapProbe 2, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5473037, -1.3129647) + +[node name="LightmapProbe 3, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, 1.5473037, 1.3129647) + +[node name="LightmapProbe 3, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, 1.5473037, 0) + +[node name="LightmapProbe 3, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, 1.5473037, -1.3129647) + +[node name="LightmapProbe 3, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, 0, 1.3129647) + +[node name="LightmapProbe 3, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, 0, -1.3129647) + +[node name="LightmapProbe 3, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, -1.5473037, 1.3129647) + +[node name="LightmapProbe 3, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, -1.5473037, 0) + +[node name="LightmapProbe 3, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8775482, -1.5473037, -1.3129647) + +[node name="LightmapProbe 4, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 1.5473037, 1.3129647) + +[node name="LightmapProbe 4, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 1.5473037, 0) + +[node name="LightmapProbe 4, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 1.5473037, -1.3129647) + +[node name="LightmapProbe 4, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 0, 1.3129647) + +[node name="LightmapProbe 4, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 0, 0) + +[node name="LightmapProbe 4, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, 0, -1.3129647) + +[node name="LightmapProbe 4, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, -1.5473037, 1.3129647) + +[node name="LightmapProbe 4, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, -1.5473037, 0) + +[node name="LightmapProbe 4, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7550964, -1.5473037, -1.3129647) + +[node name="LightmapProbeGrid2" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.068351865, 2.7555513, -4.830836) +script = ExtResource("9_p8lkr") +size = Vector3(4.6403966, 6.5111017, 9.133811) +probes_number = Vector3i(4, 3, 5) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 1, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 3.2555509, -2.2834525) + +[node name="LightmapProbe 1, 0, 4" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 3.2555509, -4.5669055) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 0, 4.5669055) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 0, 2.2834527) + +[node name="LightmapProbe 1, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 0, 0) + +[node name="LightmapProbe 1, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, 0, -2.2834525) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, -3.2555509, 4.5669055) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7733995, -3.2555509, 2.2834527) + +[node name="LightmapProbe 2, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 3.2555509, -2.2834525) + +[node name="LightmapProbe 2, 0, 4" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 3.2555509, -4.5669055) + +[node name="LightmapProbe 2, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 0, 4.5669055) + +[node name="LightmapProbe 2, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 0, 2.2834527) + +[node name="LightmapProbe 2, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 0, 0) + +[node name="LightmapProbe 2, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, 0, -2.2834525) + +[node name="LightmapProbe 2, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, -3.2555509, 4.5669055) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.77339935, -3.2555509, 2.2834527) + +[node name="LightmapProbeGrid3" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.1702933, 5.1552534, -15.174561) +script = ExtResource("9_p8lkr") +size = Vector3(13.117686, 3.1503634, 3.0525174) +probes_number = Vector3i(4, 3, 3) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, 1.5262587) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, 0) + +[node name="LightmapProbe 0, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, -1.5262587) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, 1.5262587) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, 0) + +[node name="LightmapProbe 0, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, -1.5262587) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, 1.5262587) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, 0) + +[node name="LightmapProbe 0, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, -1.5262587) + +[node name="LightmapProbe 1, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, 1.5262587) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, 0) + +[node name="LightmapProbe 1, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, -1.5262587) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, 1.5262587) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, 0) + +[node name="LightmapProbe 1, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, -1.5262587) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, 1.5262587) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, 0) + +[node name="LightmapProbe 1, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, -1.5262587) + +[node name="LightmapProbe 2, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, 1.5262587) + +[node name="LightmapProbe 2, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, 0) + +[node name="LightmapProbe 2, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, -1.5262587) + +[node name="LightmapProbe 2, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, 1.5262587) + +[node name="LightmapProbe 2, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, 0) + +[node name="LightmapProbe 2, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, -1.5262587) + +[node name="LightmapProbe 2, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, 1.5262587) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, 0) + +[node name="LightmapProbe 2, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, -1.5262587) + +[node name="LightmapProbe 3, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, 1.5262587) + +[node name="LightmapProbe 3, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, 0) + +[node name="LightmapProbe 3, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, -1.5262587) + +[node name="LightmapProbe 3, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, 1.5262587) + +[node name="LightmapProbe 3, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, 0) + +[node name="LightmapProbe 3, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, -1.5262587) + +[node name="LightmapProbe 3, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, 1.5262587) + +[node name="LightmapProbe 3, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, 0) + +[node name="LightmapProbe 3, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid3"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, -1.5262587) + +[node name="LightmapProbeGrid7" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.16657281, 5.1552534, -10.783033) +script = ExtResource("9_p8lkr") +size = Vector3(5.1102457, 3.1503634, 3.0513806) +probes_number = Vector3i(3, 3, 2) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, 1.5751817, 1.5256903) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, 1.5751817, -1.5256903) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, 0, 1.5256903) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, 0, -1.5256903) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, -1.5751817, 1.5256903) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5551229, -1.5751817, -1.5256903) + +[node name="LightmapProbe 1, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5751817, 1.5256903) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5751817, -1.5256903) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.5256903) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.5256903) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5751817, 1.5256903) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5751817, -1.5256903) + +[node name="LightmapProbe 2, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, 1.5751817, 1.5256903) + +[node name="LightmapProbe 2, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, 1.5751817, -1.5256903) + +[node name="LightmapProbe 2, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, 0, 1.5256903) + +[node name="LightmapProbe 2, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, 0, -1.5256903) + +[node name="LightmapProbe 2, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, -1.5751817, 1.5256903) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5551229, -1.5751817, -1.5256903) + +[node name="LightmapProbeGrid5" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.1702933, 5.1552534, -20.643461) +script = ExtResource("9_p8lkr") +size = Vector3(13.117686, 3.1503634, 6.0269423) +probes_number = Vector3i(4, 3, 4) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, 3.0134711) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, 1.0044904) + +[node name="LightmapProbe 0, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, -1.0044904) + +[node name="LightmapProbe 0, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 1.5751817, -3.0134711) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, 3.0134711) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, 1.0044904) + +[node name="LightmapProbe 0, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, -1.0044904) + +[node name="LightmapProbe 0, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, 0, -3.0134711) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, 3.0134711) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, 1.0044904) + +[node name="LightmapProbe 0, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, -1.0044904) + +[node name="LightmapProbe 0, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.558843, -1.5751817, -3.0134711) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, 1.0044904) + +[node name="LightmapProbe 1, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, -1.0044904) + +[node name="LightmapProbe 1, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 1.5751817, -3.0134711) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, 1.0044904) + +[node name="LightmapProbe 1, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, -1.0044904) + +[node name="LightmapProbe 1, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, 0, -3.0134711) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, 1.0044904) + +[node name="LightmapProbe 1, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, -1.0044904) + +[node name="LightmapProbe 1, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.1862812, -1.5751817, -3.0134711) + +[node name="LightmapProbe 2, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, 1.0044904) + +[node name="LightmapProbe 2, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, -1.0044904) + +[node name="LightmapProbe 2, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 1.5751817, -3.0134711) + +[node name="LightmapProbe 2, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, 1.0044904) + +[node name="LightmapProbe 2, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, -1.0044904) + +[node name="LightmapProbe 2, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, 0, -3.0134711) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, 1.0044904) + +[node name="LightmapProbe 2, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, -1.0044904) + +[node name="LightmapProbe 2, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.1862807, -1.5751817, -3.0134711) + +[node name="LightmapProbe 3, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, 1.0044904) + +[node name="LightmapProbe 3, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, -1.0044904) + +[node name="LightmapProbe 3, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 1.5751817, -3.0134711) + +[node name="LightmapProbe 3, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, 1.0044904) + +[node name="LightmapProbe 3, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, -1.0044904) + +[node name="LightmapProbe 3, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, 0, -3.0134711) + +[node name="LightmapProbe 3, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, 1.0044904) + +[node name="LightmapProbe 3, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, -1.0044904) + +[node name="LightmapProbe 3, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid5"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.558842, -1.5751817, -3.0134711) + +[node name="LightmapProbeGrid6" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.8476844, 5.1552534, -26.633574) +script = ExtResource("9_p8lkr") +size = Vector3(3.0817313, 3.1503634, 3.1212702) +probes_number = Vector3i(2, 3, 3) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 1.5751817, 1.5606351) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 1.5751817, 0) + +[node name="LightmapProbe 0, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 1.5751817, -1.5606351) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 0, 1.5606351) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 0, 0) + +[node name="LightmapProbe 0, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, 0, -1.5606351) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, -1.5751817, 1.5606351) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, -1.5751817, 0) + +[node name="LightmapProbe 0, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5408657, -1.5751817, -1.5606351) + +[node name="LightmapProbe 1, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, 1.5751817, 1.5606351) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, 1.5751817, 0) + +[node name="LightmapProbe 1, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, 1.5751817, -1.5606351) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, 0, 1.5606351) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, 0, 0) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, -1.5751817, 1.5606351) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5408657, -1.5751817, 0) + +[node name="LightmapProbeGrid4" type="Node3D" parent="LightmapGI"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31298542, 4.872013, -32.370583) +script = ExtResource("9_p8lkr") +size = Vector3(22.084244, 3.7168427, 8.489476) +probes_number = Vector3i(4, 3, 4) +far_distance = 1.0 +object_size = 1.0 +metadata/_custom_type_script = "uid://dbcy7qdq4hqlg" + +[node name="LightmapProbe 0, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 1.8584228, 4.244747) + +[node name="LightmapProbe 0, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 1.8584228, 1.414913) + +[node name="LightmapProbe 0, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 1.8584228, -1.414914) + +[node name="LightmapProbe 0, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 1.8584228, -4.244747) + +[node name="LightmapProbe 0, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 0, 4.244747) + +[node name="LightmapProbe 0, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 0, 1.414913) + +[node name="LightmapProbe 0, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 0, -1.414914) + +[node name="LightmapProbe 0, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, 0, -4.244747) + +[node name="LightmapProbe 0, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, -1.8584228, 4.244747) + +[node name="LightmapProbe 0, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, -1.8584228, 1.414913) + +[node name="LightmapProbe 0, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, -1.8584228, -1.414914) + +[node name="LightmapProbe 0, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.042128, -1.8584228, -4.244747) + +[node name="LightmapProbe 1, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 1.8584228, 4.244747) + +[node name="LightmapProbe 1, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 1.8584228, 1.414913) + +[node name="LightmapProbe 1, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 1.8584228, -1.414914) + +[node name="LightmapProbe 1, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 1.8584228, -4.244747) + +[node name="LightmapProbe 1, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 0, 4.244747) + +[node name="LightmapProbe 1, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 0, 1.414913) + +[node name="LightmapProbe 1, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 0, -1.414914) + +[node name="LightmapProbe 1, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, 0, -4.244747) + +[node name="LightmapProbe 1, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, -1.8584228, 4.244747) + +[node name="LightmapProbe 1, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, -1.8584228, 1.414913) + +[node name="LightmapProbe 1, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, -1.8584228, -1.414914) + +[node name="LightmapProbe 1, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.680708, -1.8584228, -4.244747) + +[node name="LightmapProbe 2, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 1.8584228, 4.244747) + +[node name="LightmapProbe 2, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 1.8584228, 1.414913) + +[node name="LightmapProbe 2, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 1.8584228, -1.414914) + +[node name="LightmapProbe 2, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 1.8584228, -4.244747) + +[node name="LightmapProbe 2, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 0, 4.244747) + +[node name="LightmapProbe 2, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 0, 1.414913) + +[node name="LightmapProbe 2, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 0, -1.414914) + +[node name="LightmapProbe 2, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, 0, -4.244747) + +[node name="LightmapProbe 2, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, -1.8584228, 4.244747) + +[node name="LightmapProbe 2, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, -1.8584228, 1.414913) + +[node name="LightmapProbe 2, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, -1.8584228, -1.414914) + +[node name="LightmapProbe 2, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.680709, -1.8584228, -4.244747) + +[node name="LightmapProbe 3, 0, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 1.8584228, 4.244747) + +[node name="LightmapProbe 3, 0, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 1.8584228, 1.414913) + +[node name="LightmapProbe 3, 0, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 1.8584228, -1.414914) + +[node name="LightmapProbe 3, 0, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 1.8584228, -4.244747) + +[node name="LightmapProbe 3, 1, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 0, 4.244747) + +[node name="LightmapProbe 3, 1, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 0, 1.414913) + +[node name="LightmapProbe 3, 1, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 0, -1.414914) + +[node name="LightmapProbe 3, 1, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, 0, -4.244747) + +[node name="LightmapProbe 3, 2, 0" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, 4.244747) + +[node name="LightmapProbe 3, 2, 1" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, 1.414913) + +[node name="LightmapProbe 3, 2, 2" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, -1.414914) + +[node name="LightmapProbe 3, 2, 3" type="LightmapProbe" parent="LightmapGI/LightmapProbeGrid4"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, -4.244747) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_cv3fe") diff --git a/source/_development/ayuroo/levels/_experimental/_test_level.blend b/source/_development/ayuroo/levels/_experimental/_test_level.blend new file mode 100644 index 0000000..4b88885 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level.blend differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level.blend1 b/source/_development/ayuroo/levels/_experimental/_test_level.blend1 new file mode 100644 index 0000000..b1cd95c Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level.blend1 differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level.glb b/source/_development/ayuroo/levels/_experimental/_test_level.glb new file mode 100644 index 0000000..ec456dd Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level.glb differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level.glb.import b/source/_development/ayuroo/levels/_experimental/_test_level.glb.import new file mode 100644 index 0000000..623a74e --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/_test_level.glb.import @@ -0,0 +1,59 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://gjyynl2fnvj2" +path="res://.godot/imported/_test_level.glb-c15adbbda92bd882ec1270fadbfafbef.scn" + +[deps] + +source_file="res://_development/ayuroo/levels/_experimental/_test_level.glb" +dest_files=["res://.godot/imported/_test_level.glb-c15adbbda92bd882ec1270fadbfafbef.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +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 +animation/import_rest_as_RESET=false +import_script/path="" +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": "" +} +}, +"nodes": { +"PATH:Cube": { +"generate/occluder": 1 +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/_development/ayuroo/levels/_experimental/_test_level.glb.unwrap_cache b/source/_development/ayuroo/levels/_experimental/_test_level.glb.unwrap_cache new file mode 100644 index 0000000..a1c5b79 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level.glb.unwrap_cache differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png b/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png new file mode 100644 index 0000000..dec5b59 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png.import b/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png.import new file mode 100644 index 0000000..7cf8d3a --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/_test_level_texture_02.png.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cno3emivftt23" +path.s3tc="res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.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"] + +[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 diff --git a/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png b/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png new file mode 100644 index 0000000..13c4388 Binary files /dev/null and b/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png differ diff --git a/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png.import b/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png.import new file mode 100644 index 0000000..16303c3 --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/_test_level_texture_13.png.import @@ -0,0 +1,44 @@ +[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 diff --git a/source/_development/ayuroo/levels/_experimental/level_layout_test.tres b/source/_development/ayuroo/levels/_experimental/level_layout_test.tres new file mode 100644 index 0000000..92aa000 --- /dev/null +++ b/source/_development/ayuroo/levels/_experimental/level_layout_test.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LevelInfo" load_steps=2 format=3 uid="uid://dc6x0whf4601"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_3pj77"] + +[resource] +script = ExtResource("1_3pj77") +level_path = "uid://srvm3v1grugk" +level_id = &"LayoutTest" +metadata/_custom_type_script = "uid://dhaus6vq5oigj" diff --git a/source/_development/ayuroo/levels/_test/_test_areas.tscn b/source/_development/ayuroo/levels/_test/_test_areas.tscn new file mode 100644 index 0000000..4cb03ba --- /dev/null +++ b/source/_development/ayuroo/levels/_test/_test_areas.tscn @@ -0,0 +1,423 @@ +[gd_scene load_steps=28 format=3 uid="uid://bf4p7da201ev5"] + +[ext_resource type="Script" uid="uid://dk4pqgs08xphi" path="res://src/core/camera/camera_shaker/camera_trauma_causer.gd" id="1_3ajg4"] +[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_8yfr8"] +[ext_resource type="Environment" uid="uid://xe70va0pjc6c" path="res://resources/game_environment.tres" id="1_f6q7b"] +[ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="2_amnsq"] +[ext_resource type="PackedScene" uid="uid://u56f1ks46ob6" path="res://src/gameplay/hazards/saw/saw.blend" id="3_f6q7b"] +[ext_resource type="Script" uid="uid://c2w177bb5r70x" path="res://addons/controller_icons/objects/ControllerIconTexture.gd" id="4_8yfr8"] +[ext_resource type="Script" uid="uid://cy2248x8tuoj4" path="res://src/gameplay/illusionary/illusionary_wall.gd" id="5_7g5fl"] +[ext_resource type="Shader" uid="uid://dvpk3m7f8x5pc" path="res://src/vfx/shaders/dissolving_wall/dissolving_wall.gdshader" id="6_5mjhv"] +[ext_resource type="Texture2D" uid="uid://jpmuawwwmwci" path="res://src/vfx/shaders/dissolving_wall/dissolving_wall_noise.tres" id="7_wa30a"] +[ext_resource type="PackedScene" uid="uid://bcu5jlicrvor3" path="res://src/core/chapter/chapter_area.tscn" id="8_itwv6"] +[ext_resource type="Script" uid="uid://chm33pvd77o5e" path="res://src/core/dialogue/voiceline_component.gd" id="9_b8a7g"] +[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/spawnpoint/player_spawn_point.gd" id="10_amnsq"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_j5wjh"] +height = 2.75 +radius = 0.8 + +[sub_resource type="Texture2D" id="Texture2D_mfdv2"] +resource_local_to_scene = false +resource_name = "" +script = ExtResource("4_8yfr8") +path = "run" +metadata/_custom_type_script = "uid://c2w177bb5r70x" + +[sub_resource type="Texture2D" id="Texture2D_iotsf"] +resource_local_to_scene = false +resource_name = "" +script = ExtResource("4_8yfr8") +path = "crouch" +metadata/_custom_type_script = "uid://c2w177bb5r70x" + +[sub_resource type="Texture2D" id="Texture2D_hve3p"] +resource_local_to_scene = false +resource_name = "" +script = ExtResource("4_8yfr8") +path = "jump" +metadata/_custom_type_script = "uid://c2w177bb5r70x" + +[sub_resource type="Gradient" id="Gradient_lc2xo"] + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_215e1"] +gradient = SubResource("Gradient_lc2xo") +fill_to = Vector2(0.66453, 0.262821) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_215e1"] +render_priority = 0 +shader = ExtResource("6_5mjhv") +shader_parameter/albedo = Color(1, 1, 1, 1) +shader_parameter/texture_albedo = SubResource("GradientTexture2D_215e1") +shader_parameter/texture_dissolve = ExtResource("7_wa30a") +shader_parameter/alpha_scissor_threshold = 0.0 +shader_parameter/roughness = 0.0 +shader_parameter/metallic_texture_channel = Vector4(0, 0, 0, 0) +shader_parameter/specular = 0.0 +shader_parameter/metallic = 0.0 +shader_parameter/uv1_blend_sharpness = 1.0 +shader_parameter/uv1_scale = Vector3(1, 1, 1) +shader_parameter/uv1_offset = Vector3(0, 0, 0) + +[sub_resource type="BoxMesh" id="BoxMesh_mfdv2"] +size = Vector3(4, 3, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_lc2xo"] +size = Vector3(4, 3, 5) + +[sub_resource type="BoxShape3D" id="BoxShape3D_iotsf"] +size = Vector3(4, 3, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_lc2xo"] +render_priority = 0 +shader = ExtResource("6_5mjhv") +shader_parameter/albedo = Color(1, 1, 1, 1) +shader_parameter/texture_albedo = SubResource("GradientTexture2D_215e1") +shader_parameter/texture_dissolve = ExtResource("7_wa30a") +shader_parameter/alpha_scissor_threshold = 0.0 +shader_parameter/roughness = 0.0 +shader_parameter/metallic_texture_channel = Vector4(0, 0, 0, 0) +shader_parameter/specular = 0.0 +shader_parameter/metallic = 0.0 +shader_parameter/uv1_blend_sharpness = 1.0 +shader_parameter/uv1_scale = Vector3(1, 1, 1) +shader_parameter/uv1_offset = Vector3(0, 0, 0) + +[sub_resource type="BoxMesh" id="BoxMesh_lc2xo"] +size = Vector3(4, 3, 4) + +[sub_resource type="BoxShape3D" id="BoxShape3D_215e1"] +size = Vector3(5, 3, 5) + +[sub_resource type="BoxShape3D" id="BoxShape3D_7sc4i"] +size = Vector3(4, 3, 4) + +[sub_resource type="BoxShape3D" id="BoxShape3D_hve3p"] +size = Vector3(31, 8, 21) + +[node name="TestAreas" type="Node3D"] +script = ExtResource("1_8yfr8") +metadata/_custom_type_script = "uid://cigop0ivp5vvu" + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = ExtResource("1_f6q7b") + +[node name="IntroArea" type="Node3D" parent="."] + +[node name="Blockout" type="Node3D" parent="IntroArea"] + +[node name="Outline" type="CSGCombiner3D" parent="IntroArea/Blockout"] +use_collision = true + +[node name="CSGBox3D" type="CSGBox3D" parent="IntroArea/Blockout/Outline"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, -4.5) +flip_faces = true +size = Vector3(4, 3, 11) + +[node name="CSGBox3D2" type="CSGBox3D" parent="IntroArea/Blockout/Outline"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, -22) +flip_faces = true +size = Vector3(31, 14, 25) + +[node name="TEMPRamps" type="CSGCombiner3D" parent="IntroArea/Blockout"] +use_collision = true + +[node name="Ramp" type="CSGBox3D" parent="IntroArea/Blockout/TEMPRamps"] +transform = Transform3D(1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, -12.1053, 2.01959, -23.9749) +size = Vector3(4, 1, 10) + +[node name="Ramp2" type="CSGBox3D" parent="IntroArea/Blockout/TEMPRamps"] +transform = Transform3D(1, 0, 0, 0, 0.965926, -0.258819, 0, 0.258819, 0.965926, -8.1053, 2.01959, -23.9749) +size = Vector3(4, 1, 10) + +[node name="Ramp3" type="CSGBox3D" parent="IntroArea/Blockout/TEMPRamps"] +transform = Transform3D(1, 0, 0, 0, 0.984808, -0.173648, 0, 0.173648, 0.984808, -5.1053, 1.71959, -23.9749) +size = Vector3(2, 1, 10) + +[node name="Ramp4" type="CSGBox3D" parent="IntroArea/Blockout/TEMPRamps"] +transform = Transform3D(1, 0, 0, 0, 0.996195, -0.0871558, 0, 0.0871558, 0.996195, -3.1053, 2.31959, -23.9749) +size = Vector3(2, 1, 10) + +[node name="CrouchAndStairTest" type="CSGCombiner3D" parent="IntroArea/Blockout"] +use_collision = true + +[node name="CSGBox3D3" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.10534, 0.919588, -15.1089) + +[node name="CSGBox3D4" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.10534, 1.11959, -15.1089) + +[node name="CSGBox3D5" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.10534, 1.31959, -15.1089) + +[node name="CSGBox3D6" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.10534, 1.51959, -15.1089) + +[node name="CSGBox3D7" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.10534, 1.71959, -15.1089) + +[node name="CSGBox3D8" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.10534, 1.91959, -15.1089) + +[node name="CSGBox3D9" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.10534, 2.11959, -15.1089) + +[node name="CSGBox3D10" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.10534, 2.31959, -15.1089) + +[node name="CSGBox3D11" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.1053, 2.51959, -15.1089) + +[node name="CSGBox3D12" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.1053, 2.71959, -15.1089) + +[node name="CSGBox3D13" type="CSGBox3D" parent="IntroArea/Blockout/CrouchAndStairTest"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12.1053, 2.91959, -15.1089) + +[node name="CameraTraumaCauser" type="Marker3D" parent="IntroArea/Blockout"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 1, -31) +script = ExtResource("1_3ajg4") +continues_shake = true +distance_falloff = 0.392292 +max_shake_intensity = 0.1 +metadata/_custom_type_script = "uid://dk4pqgs08xphi" + +[node name="OmniLight3D" type="OmniLight3D" parent="IntroArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6, -24) +omni_range = 20.0 + +[node name="Saw" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0.5, -25) + +[node name="Saw2" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.2, 0.5, -25) + +[node name="Saw3" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.4, 0.5, -25) + +[node name="Saw4" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.6, 0.5, -25) + +[node name="Saw5" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.8, 0.5, -25) + +[node name="Saw6" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 1, 0.5, -25) + +[node name="Saw7" parent="IntroArea" instance=ExtResource("2_amnsq")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 5, 0.5, -25) + +[node name="SawSkin" parent="IntroArea/Saw7" index="0"] +transform = Transform3D(-0.4491593, 0.82250214, 0, -0.82250214, -0.4491593, 0, 0, 0, 1, 0, 0, 0) + +[node name="SawSkin2" parent="IntroArea/Saw7/SawSkin" index="1" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.907697, -0.41963, -2.22045e-16, 0.41963, 0.907697, 0, -3.55271e-15, -3.55271e-15, 1, 0, 0, 0.0999999) + +[node name="SawSkin3" parent="IntroArea/Saw7/SawSkin" index="2" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.438149, 0.898906, -3.55271e-15, -0.898906, 0.438149, 0, 3.55271e-15, 1.77636e-15, 1, 0, 0, 0.2) + +[node name="SawSkin4" parent="IntroArea/Saw7/SawSkin" index="3" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.575553, 0.817769, 3.55271e-15, -0.817769, -0.575553, 5.32907e-15, 7.10543e-15, 0, 1, 0, 0, 0.3) + +[node name="SawSkin5" parent="IntroArea/Saw7/SawSkin" index="4" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.0698509, 0.997561, 3.55271e-15, -0.997561, 0.0698509, 6.38378e-15, 7.32747e-15, -7.10543e-15, 1, 0, 0, 0.4) + +[node name="SawSkin6" parent="IntroArea/Saw7/SawSkin" index="5" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.834063, 0.551677, 0, -0.551677, 0.834063, 7.10543e-15, 1.42109e-14, -6.21725e-15, 1, 0, 0, 0.5) + +[node name="SawSkin7" parent="IntroArea/Saw7/SawSkin" index="6" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.187532, -0.982263, -6.21725e-15, 0.982263, 0.187532, -3.55271e-15, 1.06581e-14, -7.77156e-15, 1, 0, 0, 0.599999) + +[node name="SawSkin8" parent="IntroArea/Saw7/SawSkin" index="7" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.997299, 0.0735269, 3.55271e-15, -0.0735269, -0.997299, -5.32907e-15, -3.55271e-15, -5.32907e-15, 1, 0, 0, 0.599999) + +[node name="SawSkin9" parent="IntroArea/Saw7/SawSkin" index="8" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.861875, -0.507134, -7.10543e-15, 0.507134, 0.861875, 3.55271e-15, -1.06581e-14, 0, 1, 0, 0, 0.699999) + +[node name="SawSkin10" parent="IntroArea/Saw7/SawSkin" index="9" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.642194, 0.766551, 7.10543e-15, -0.766551, -0.642194, -8.88178e-16, -7.10543e-15, 0, 1, 0, 0, 0.799999) + +[node name="SawSkin11" parent="IntroArea/Saw7/SawSkin" index="10" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.986419, -0.16429, -7.10543e-15, 0.16429, 0.986419, 0, -7.10543e-15, -3.55271e-15, 1, 0, 0, 0.899999) + +[node name="SawSkin12" parent="IntroArea/Saw7/SawSkin" index="11" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.962893, 0.269909, 7.10543e-15, -0.269909, -0.962893, 7.77156e-16, -1.06581e-14, -2.66454e-15, 1, 0, 0, 0.999999) + +[node name="SawSkin13" parent="IntroArea/Saw7/SawSkin" index="12" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.569512, -0.821991, -3.55271e-15, 0.821991, 0.569512, -7.10543e-15, -1.42109e-14, -4.44089e-15, 1, 0, 0, 1.1) + +[node name="SawSkin14" parent="IntroArea/Saw7/SawSkin" index="13" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.620221, 0.784436, -1.06581e-14, -0.784436, 0.620221, 5.32907e-15, -1.42109e-14, -5.32907e-15, 1, 0, 0, 1.2) + +[node name="SawSkin15" parent="IntroArea/Saw7/SawSkin" index="14" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.978, -0.208642, 1.06581e-14, 0.208642, -0.978, 3.10862e-15, -1.42109e-14, -3.55271e-15, 1, 0, 0, 1.3) + +[node name="SawSkin16" parent="IntroArea/Saw7/SawSkin" index="15" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.801411, 0.598117, 0, -0.598117, -0.801411, 0, -3.55271e-15, -3.55271e-15, 1, 0, 0, 1.4) + +[node name="SawSkin17" parent="IntroArea/Saw7/SawSkin" index="16" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.61442, -0.788984, 3.55271e-15, 0.788984, -0.61442, 4.44089e-16, 5.32907e-15, 0, 1, 0, 0, 1.5) + +[node name="SawSkin18" parent="IntroArea/Saw7/SawSkin" index="17" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.394174, -0.919041, -3.55271e-15, 0.919041, 0.394174, -5.9952e-15, 3.55271e-15, 0, 1, 0, 0, 1.6) + +[node name="SawSkin19" parent="IntroArea/Saw7/SawSkin" index="18" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.274452, -0.961605, -3.55271e-15, 0.961605, -0.274452, -7.10543e-15, 7.99361e-15, -7.10543e-15, 1, 0, 0, 1.7) + +[node name="SawSkin20" parent="IntroArea/Saw7/SawSkin" index="19" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.93005, -0.367446, 0, 0.367446, -0.93005, -7.10543e-15, 1.77636e-14, -3.55271e-15, 1, 0, 0, 1.8) + +[node name="SawSkin21" parent="IntroArea/Saw7/SawSkin" index="20" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.0194621, 0.999816, 7.10543e-15, -0.999816, 0.0194621, 4.66294e-15, 1.07692e-14, -7.10543e-15, 1, 0, 0, 1.9) + +[node name="SawSkin22" parent="IntroArea/Saw7/SawSkin" index="21" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.96059, -0.277995, -3.55271e-15, 0.277995, 0.96059, 4.44089e-15, -7.10543e-15, -5.32907e-15, 1, 0, 0, 1.9) + +[node name="SawSkin23" parent="IntroArea/Saw7/SawSkin" index="22" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.738498, 0.674265, 7.10543e-15, -0.674265, -0.738498, -2.22045e-15, -1.06581e-14, 0, 1, 0, 0, 2) + +[node name="SawSkin24" parent="IntroArea/Saw7/SawSkin" index="23" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.469959, -0.882696, -7.10543e-15, 0.882696, 0.469959, -6.66134e-16, -5.32907e-15, 3.55271e-15, 1, 0, 0, 2.1) + +[node name="SawSkin25" parent="IntroArea/Saw7/SawSkin" index="24" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.931191, 0.364552, 7.10543e-15, -0.364552, -0.931191, 1.33227e-15, -7.10543e-15, -3.55271e-15, 1, 0, 0, 2.2) + +[node name="SawSkin26" parent="IntroArea/Saw7/SawSkin" index="25" instance=ExtResource("3_f6q7b")] +transform = Transform3D(0.886351, -0.463031, -7.10543e-15, 0.463031, 0.886351, -2.44249e-15, -1.06581e-14, 0, 1, 0, 0, 2.3) + +[node name="SawSkin27" parent="IntroArea/Saw7/SawSkin" index="26" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.38739, 0.921924, 3.55271e-15, -0.921924, -0.38739, 7.54952e-15, -1.24345e-14, -7.10543e-15, 1, 0, 0, 2.4) + +[node name="SawSkin28" parent="IntroArea/Saw7/SawSkin" index="27" instance=ExtResource("3_f6q7b")] +transform = Transform3D(-0.768913, -0.639366, 1.06581e-14, 0.639366, -0.768913, -3.33067e-15, -1.06581e-14, 0, 1, 0, 0, 2.5) + +[node name="SawSkin29" parent="IntroArea/Saw7/SawSkin" index="28" instance=ExtResource("3_f6q7b")] +transform = Transform3D(1.00001, 0.00207399, -1.06581e-14, -0.00207399, 1.00001, -5.55112e-15, -1.77636e-14, -3.55271e-15, 0.999999, 0, 0, 2.6) + +[node name="CollisionShape3D" parent="IntroArea/Saw7/DeathArea" index="0"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 5.96046e-08, 1.275) +shape = SubResource("CylinderShape3D_j5wjh") + +[node name="RunPrompt" type="Sprite3D" parent="IntroArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.59307, -4.14257) +cast_shadow = 0 +gi_mode = 0 +visibility_range_begin = 0.75 +visibility_range_begin_margin = 0.25 +visibility_range_end = 5.0 +visibility_range_end_margin = 1.0 +visibility_range_fade_mode = 1 +double_sided = false +texture_filter = 1 +texture = SubResource("Texture2D_mfdv2") + +[node name="CrouchPrompt" type="Sprite3D" parent="IntroArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 1.59307, -18.1426) +cast_shadow = 0 +gi_mode = 0 +visibility_range_begin = 0.75 +visibility_range_begin_margin = 0.25 +visibility_range_end = 5.0 +visibility_range_end_margin = 1.0 +visibility_range_fade_mode = 1 +double_sided = false +texture_filter = 1 +texture = SubResource("Texture2D_iotsf") + +[node name="JumpPrompt" type="Sprite3D" parent="IntroArea"] +transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -3, 3.59307, -19.1426) +cast_shadow = 0 +gi_mode = 0 +visibility_range_begin = 0.75 +visibility_range_begin_margin = 0.25 +visibility_range_end = 5.0 +visibility_range_end_margin = 1.0 +visibility_range_fade_mode = 1 +double_sided = false +texture_filter = 1 +texture = SubResource("Texture2D_hve3p") + +[node name="IllusionaryWall" type="Node3D" parent="IntroArea" node_paths=PackedStringArray("static_body", "mesh", "appear_area", "disappear_area")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -8) +script = ExtResource("5_7g5fl") +static_body = NodePath("BlockingWall") +mesh = NodePath("DissolvingMesh") +appear_area = NodePath("AppearArea") +disappear_area = NodePath("AppearArea") +metadata/_custom_type_script = "uid://cy2248x8tuoj4" + +[node name="DissolvingMesh" type="MeshInstance3D" parent="IntroArea/IllusionaryWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0.00292015) +material_override = SubResource("ShaderMaterial_215e1") +mesh = SubResource("BoxMesh_mfdv2") + +[node name="AppearArea" type="Area3D" parent="IntroArea/IllusionaryWall"] +process_mode = 1 +collision_layer = 0 +collision_mask = 3 + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="IntroArea/IllusionaryWall/AppearArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +shape = SubResource("BoxShape3D_lc2xo") +debug_color = Color(0.933125, 2.06e-05, 0.645944, 0.42) + +[node name="BlockingWall" type="StaticBody3D" parent="IntroArea/IllusionaryWall"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="IntroArea/IllusionaryWall/BlockingWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +shape = SubResource("BoxShape3D_iotsf") + +[node name="IllusionaryWall2" type="Node3D" parent="IntroArea" node_paths=PackedStringArray("static_body", "mesh", "appear_area", "disappear_area")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.5, 1, -32.5) +script = ExtResource("5_7g5fl") +inverse = true +static_body = NodePath("BlockingWall") +mesh = NodePath("DissolvingMesh") +appear_area = NodePath("AppearArea") +disappear_area = NodePath("AppearArea") +metadata/_custom_type_script = "uid://cy2248x8tuoj4" + +[node name="DissolvingMesh" type="MeshInstance3D" parent="IntroArea/IllusionaryWall2"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +material_override = SubResource("ShaderMaterial_lc2xo") +mesh = SubResource("BoxMesh_lc2xo") + +[node name="AppearArea" type="Area3D" parent="IntroArea/IllusionaryWall2"] +process_mode = 1 +collision_layer = 0 +collision_mask = 3 + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="IntroArea/IllusionaryWall2/AppearArea"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0.5, 0.5) +shape = SubResource("BoxShape3D_215e1") +debug_color = Color(0.933125, 2.06e-05, 0.645944, 0.42) + +[node name="BlockingWall" type="StaticBody3D" parent="IntroArea/IllusionaryWall2"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="IntroArea/IllusionaryWall2/BlockingWall"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +shape = SubResource("BoxShape3D_7sc4i") + +[node name="ChapterArea" parent="." instance=ExtResource("8_itwv6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, -21) +chapter_index = 1 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="ChapterArea"] +shape = SubResource("BoxShape3D_hve3p") + +[node name="VoicelineComponent" type="Node" parent="."] +script = ExtResource("9_b8a7g") +metadata/_custom_type_script = "uid://chm33pvd77o5e" + +[node name="SpawnPoints" type="Node" parent="."] + +[node name="PlayerSpawnPoint" type="Marker3D" parent="SpawnPoints"] +script = ExtResource("10_amnsq") +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="PlayerSpawnPoint2" type="Marker3D" parent="SpawnPoints"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -15) +script = ExtResource("10_amnsq") +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[editable path="IntroArea/Saw7"] diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend new file mode 100644 index 0000000..a95f68a Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend1 b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend1 new file mode 100644 index 0000000..4a87004 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.blend1 differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb new file mode 100644 index 0000000..bbbb69b Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.import b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.import new file mode 100644 index 0000000..56517f1 --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.import @@ -0,0 +1,55 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://do54no1h1pv8i" +path="res://.godot/imported/circus_tent_inside.glb-f2d16e6fd6c77c2210ee6ff3ce64f43d.scn" + +[deps] + +source_file="res://_development/ayuroo/models/circus_tent/circus_tent_inside.glb" +dest_files=["res://.godot/imported/circus_tent_inside.glb-f2d16e6fd6c77c2210ee6ff3ce64f43d.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=2 +meshes/lightmap_texel_size=2.0 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"prototype_grid_orange": { +"use_external/enabled": false, +"use_external/fallback_path": "", +"use_external/path": "" +}, +"prototype_grid_red": { +"use_external/enabled": true, +"use_external/fallback_path": "res://assets/materials/cloth/red_cloth.tres", +"use_external/path": "uid://coc0q5sjnejkb" +} +} +} +gltf/naming_version=0 +gltf/embedded_image_handling=1 diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.unwrap_cache b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.unwrap_cache new file mode 100644 index 0000000..7cf0a48 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside.glb.unwrap_cache differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png new file mode 100644 index 0000000..dec5b59 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png.import b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png.import new file mode 100644 index 0000000..d6c4949 --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png.import @@ -0,0 +1,44 @@ +[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 diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png new file mode 100644 index 0000000..bf1cb17 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png.import b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png.import new file mode 100644 index 0000000..32574b2 --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png.import @@ -0,0 +1,44 @@ +[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 diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend new file mode 100644 index 0000000..bc71f48 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend1 b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend1 new file mode 100644 index 0000000..8ceaeaf Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.blend1 differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb new file mode 100644 index 0000000..7e890e1 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb.import b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb.import new file mode 100644 index 0000000..308e9e1 --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_outside.glb.import @@ -0,0 +1,55 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://btcrglmmn74yk" +path="res://.godot/imported/circus_tent_outside.glb-f6abe07355e411c161c7737a0c199717.scn" + +[deps] + +source_file="res://_development/ayuroo/models/circus_tent/circus_tent_outside.glb" +dest_files=["res://.godot/imported/circus_tent_outside.glb-f6abe07355e411c161c7737a0c199717.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={ +"materials": { +"prototype_grid_orange": { +"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://_development/ayuroo/models/circus_tent/prototype_grid_red.tres", +"use_external/path": "uid://dictg13b71nlf" +} +} +} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png new file mode 100644 index 0000000..dec5b59 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png.import b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png.import new file mode 100644 index 0000000..785a89a --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png.import @@ -0,0 +1,44 @@ +[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 diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png new file mode 100644 index 0000000..bf1cb17 Binary files /dev/null and b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png differ diff --git a/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png.import b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png.import new file mode 100644 index 0000000..a0298ac --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png.import @@ -0,0 +1,44 @@ +[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 diff --git a/source/_development/ayuroo/models/circus_tent/prototype_grid_orange.tres b/source/_development/ayuroo/models/circus_tent/prototype_grid_orange.tres new file mode 100644 index 0000000..74da8f1 --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/prototype_grid_orange.tres @@ -0,0 +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"] + +[resource] +resource_name = "prototype_grid_orange" +albedo_texture = ExtResource("1_52pi3") +roughness = 0.97 +uv1_scale = Vector3(2, 2, 1) +uv1_offset = Vector3(0, -1, 0) diff --git a/source/_development/ayuroo/models/circus_tent/prototype_grid_red.tres b/source/_development/ayuroo/models/circus_tent/prototype_grid_red.tres new file mode 100644 index 0000000..1d2950d --- /dev/null +++ b/source/_development/ayuroo/models/circus_tent/prototype_grid_red.tres @@ -0,0 +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"] + +[resource] +resource_name = "prototype_grid_red" +albedo_texture = ExtResource("1_g6aqn") +roughness = 0.97 +uv1_scale = Vector3(2, 2, 1) +uv1_offset = Vector3(0, -1, 0) diff --git a/source/_development/ayuroo/rich_text_effect/effects.tscn b/source/_development/ayuroo/rich_text_effect/effects.tscn new file mode 100644 index 0000000..d83cea9 --- /dev/null +++ b/source/_development/ayuroo/rich_text_effect/effects.tscn @@ -0,0 +1,66 @@ +[gd_scene load_steps=5 format=3 uid="uid://b3wpm3qll2e6g"] + +[ext_resource type="Script" uid="uid://41co2svrlbkc" path="res://src/ui/rich_effects/loading_text_effect.gd" id="1_f8j4s"] +[ext_resource type="Script" uid="uid://ysronki6hr11" path="res://src/ui/rich_effects/loading_text_effect_v2.gd" id="2_yf0e7"] + +[sub_resource type="RichTextEffect" id="RichTextEffect_pk08u"] +resource_name = "RichTextLoading" +script = ExtResource("1_f8j4s") +metadata/_custom_type_script = "uid://41co2svrlbkc" + +[sub_resource type="RichTextEffect" id="RichTextEffect_3pfe6"] +resource_name = "RichTextLoadingV2" +script = ExtResource("2_yf0e7") +metadata/_custom_type_script = "uid://ysronki6hr11" + +[node name="Effects" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label" type="RichTextLabel" parent="."] +clip_contents = false +layout_mode = 0 +offset_left = 122.0 +offset_top = 91.0 +offset_right = 197.0 +offset_bottom = 114.0 +bbcode_enabled = true +text = "[loading]Loading...[/loading]" +fit_content = true +autowrap_mode = 0 +custom_effects = [SubResource("RichTextEffect_pk08u")] + +[node name="Panel" type="Panel" parent="Label"] +show_behind_parent = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Label2" type="RichTextLabel" parent="."] +clip_contents = false +layout_mode = 0 +offset_left = 122.0 +offset_top = 142.0 +offset_right = 197.0 +offset_bottom = 165.0 +bbcode_enabled = true +text = "[loadingv2]Loading...[/loadingv2]" +fit_content = true +autowrap_mode = 0 +custom_effects = [SubResource("RichTextEffect_3pfe6")] + +[node name="Panel" type="Panel" parent="Label2"] +show_behind_parent = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 diff --git a/source/addons/StairsCharacter3D.zip b/source/addons/StairsCharacter3D.zip new file mode 100644 index 0000000..6ecff22 Binary files /dev/null and b/source/addons/StairsCharacter3D.zip differ diff --git a/source/addons/SunshineClouds2/CloudsDriverIcon.svg b/source/addons/SunshineClouds2/CloudsDriverIcon.svg new file mode 100644 index 0000000..d30e97a --- /dev/null +++ b/source/addons/SunshineClouds2/CloudsDriverIcon.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + diff --git a/source/addons/SunshineClouds2/CloudsDriverIcon.svg.import b/source/addons/SunshineClouds2/CloudsDriverIcon.svg.import new file mode 100644 index 0000000..385c343 --- /dev/null +++ b/source/addons/SunshineClouds2/CloudsDriverIcon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b404vxesyde33" +path="res://.godot/imported/CloudsDriverIcon.svg-faa29143230a8cbda673ccfc6652c810.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/CloudsDriverIcon.svg" +dest_files=["res://.godot/imported/CloudsDriverIcon.svg-faa29143230a8cbda673ccfc6652c810.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=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=128 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/CloudsInc.txt b/source/addons/SunshineClouds2/CloudsInc.txt new file mode 100644 index 0000000..ccc9695 --- /dev/null +++ b/source/addons/SunshineClouds2/CloudsInc.txt @@ -0,0 +1,233 @@ +#define SCENE_DATA_FLAGS_USE_AMBIENT_LIGHT (1 << 0) +#define SCENE_DATA_FLAGS_USE_AMBIENT_CUBEMAP (1 << 1) +#define SCENE_DATA_FLAGS_USE_REFLECTION_CUBEMAP (1 << 2) +#define SCENE_DATA_FLAGS_USE_ROUGHNESS_LIMITER (1 << 3) +#define SCENE_DATA_FLAGS_USE_FOG (1 << 4) +#define SCENE_DATA_FLAGS_USE_UV2_MATERIAL (1 << 5) +#define SCENE_DATA_FLAGS_USE_PANCAKE_SHADOWS (1 << 6) +#define SCENE_DATA_FLAGS_IN_SHADOW_PASS (1 << 7) +#define MAX_VIEWS 2 + +#define GODOT_VERSION_MAJOR 4 +#define GODOT_VERSION_MINOR 5 + + +struct SceneData { + #if (GODOT_VERSION_MAJOR == 4) && (GODOT_VERSION_MINOR == 4) + + // godot version 4.4 + highp mat4 projection_matrix; + highp mat4 inv_projection_matrix; + highp mat4 inv_view_matrix; + highp mat4 view_matrix; + + // only used for multiview + highp mat4 projection_matrix_view[MAX_VIEWS]; + highp mat4 inv_projection_matrix_view[MAX_VIEWS]; + highp vec4 eye_offset[MAX_VIEWS]; + + // Used for billboards to cast correct shadows. + highp mat4 main_cam_inv_view_matrix; + + highp vec2 viewport_size; + highp vec2 screen_pixel_size; + + // Use vec4s because std140 doesn't play nice with vec2s, z and w are wasted. + highp vec4 directional_penumbra_shadow_kernel[32]; + highp vec4 directional_soft_shadow_kernel[32]; + highp vec4 penumbra_shadow_kernel[32]; + highp vec4 soft_shadow_kernel[32]; + + mediump mat3 radiance_inverse_xform; + + mediump vec4 ambient_light_color_energy; + + mediump float ambient_color_sky_mix; + bool use_ambient_light; + bool use_ambient_cubemap; + bool use_reflection_cubemap; + + highp vec2 shadow_atlas_pixel_size; + highp vec2 directional_shadow_pixel_size; + + uint directional_light_count; + mediump float dual_paraboloid_side; + highp float z_far; + highp float z_near; + + bool roughness_limiter_enabled; + mediump float roughness_limiter_amount; + mediump float roughness_limiter_limit; + mediump float opaque_prepass_threshold; + + bool fog_enabled; + uint fog_mode; + highp float fog_density; + highp float fog_height; + + highp float fog_height_density; + highp float fog_depth_curve; + highp float fog_depth_begin; + highp float taa_frame_count; + + mediump vec3 fog_light_color; + highp float fog_depth_end; + + mediump float fog_sun_scatter; + mediump float fog_aerial_perspective; + highp float time; + mediump float reflection_multiplier; // one normally, zero when rendering reflections + + vec2 taa_jitter; + bool material_uv2_mode; + float emissive_exposure_normalization; + + float IBL_exposure_normalization; + bool pancake_shadows; + uint camera_visible_layers; + float pass_alpha_multiplier; + + #elif (GODOT_VERSION_MAJOR == 4) && (GODOT_VERSION_MINOR == 5) + /* 4.5 definition */ + mat4 projection_matrix; + mat4 inv_projection_matrix; + mat4 inv_view_matrix; + mat4 view_matrix; + + // only used for multiview + mat4 projection_matrix_view[MAX_VIEWS]; + mat4 inv_projection_matrix_view[MAX_VIEWS]; + vec4 eye_offset[MAX_VIEWS]; + + // Used for billboards to cast correct shadows. + mat4 main_cam_inv_view_matrix; + + vec2 viewport_size; + vec2 screen_pixel_size; + + // Use vec4s because std140 doesn't play nice with vec2s, z and w are wasted. + vec4 directional_penumbra_shadow_kernel[32]; + vec4 directional_soft_shadow_kernel[32]; + vec4 penumbra_shadow_kernel[32]; + vec4 soft_shadow_kernel[32]; + + vec2 shadow_atlas_pixel_size; + vec2 directional_shadow_pixel_size; + + uint directional_light_count; + float dual_paraboloid_side; + float z_far; + float z_near; + + float roughness_limiter_amount; + float roughness_limiter_limit; + float opaque_prepass_threshold; + uint flags; + + mat3 radiance_inverse_xform; + + vec4 ambient_light_color_energy; + + float ambient_color_sky_mix; + float fog_density; + float fog_height; + float fog_height_density; + + float fog_depth_curve; + float fog_depth_begin; + float fog_depth_end; + float fog_sun_scatter; + + vec3 fog_light_color; + float fog_aerial_perspective; + + float time; + float taa_frame_count; + vec2 taa_jitter; + + float emissive_exposure_normalization; + float IBL_exposure_normalization; + uint camera_visible_layers; + float pass_alpha_multiplier; + #endif +}; + +struct GenericData{ + vec3 extralargenoiseposition; + float extralargenoisescale; + + vec3 largenoiseposition; + float cloud_lighting_sharpness; + + vec3 mediumnoiseposition; + float lighting_step_distance; + + vec3 smallnoiseposition; + float atmospheric_density; + + vec4 ambientLightColor; + vec4 ambientGroundLightColor; + vec4 ambientfogdistancecolor; + + float small_noise_scale; + float min_step_distance; + float max_step_distance; + float lod_bias; + + float cloud_sharpness; + float directionalLightsCount; + float powderStrength; + float anisotropy; + + float cloud_floor; + float cloud_ceiling; + float max_step_count; + float max_lighting_step_count; + + float filterIndex; + float blurPower; + float blurQuality; + float curlPower; + + vec2 WindDirection; + float fogEffectGround; + float samplePointsCount; + + float pointLightsCount; + float pointEffectorCount; + float windSweptRange; + float windSweptPower; + + vec2 raster_size; + float large_noise_scale; + float medium_noise_scale; + + float time; + float cloud_coverage; + float cloud_density; + float small_noise_strength; + + float cloud_lighting_power; + float accumilation_decay; + float isAccumulationA; + float resolutionscale; +}; + +struct DirectionalLight { + vec4 direction; //w = shadow sample count + vec4 color; //a = intensity +}; + +struct PointLight { + vec4 position; //w = radius + vec4 color; //a = intensity +}; + +struct PointEffector { + vec3 position; //w = radius + float radius; + + float power; + float attenuation; + vec2 reserved; +}; \ No newline at end of file diff --git a/source/addons/SunshineClouds2/Dock/AccordionButton.gd b/source/addons/SunshineClouds2/Dock/AccordionButton.gd new file mode 100644 index 0000000..bac3218 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/AccordionButton.gd @@ -0,0 +1,37 @@ +@tool +extends Button +class_name AccordionButton + +#var downcaret : CompressedTexture2D = preload("res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg") +#var upcaret : CompressedTexture2D = preload("res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg") + +var curvisible : bool = false + +func _enter_tree() -> void: + icon = ResourceLoader.load("res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg") + expand_icon = true + icon_alignment = HORIZONTAL_ALIGNMENT_RIGHT + if (!pressed.is_connected(ButtonPressed.bind())): + pressed.connect(ButtonPressed.bind()) + +func ButtonPressed(): + curvisible = !curvisible + _handleVisibility() + +func Open(): + curvisible = true + _handleVisibility() + +func Close(): + curvisible = false + _handleVisibility() + +func _handleVisibility(): + if (!curvisible): + icon = ResourceLoader.load("res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg") + else: + icon = ResourceLoader.load("res://addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg") + + for child in get_parent().get_children(): + if (child != self and child is Control): + child.visible = curvisible diff --git a/source/addons/SunshineClouds2/Dock/AccordionButton.gd.uid b/source/addons/SunshineClouds2/Dock/AccordionButton.gd.uid new file mode 100644 index 0000000..7e1b1f9 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/AccordionButton.gd.uid @@ -0,0 +1 @@ +uid://cb3ho8b5lgx55 diff --git a/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd b/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd new file mode 100644 index 0000000..901bba1 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd @@ -0,0 +1,17 @@ +@tool +extends GridContainer + +@export var TargetColumnCount : int = 1 +@export var MinimumColumnSize : float = 100.0 + +func _enter_tree() -> void: + if (!self.resized.is_connected(OnSizeChange.bind())): + self.resized.connect(OnSizeChange.bind()) + +func OnSizeChange(): + if (TargetColumnCount <= 0): + TargetColumnCount = 0 + + var width = size.x + var newColumnCount : int = clamp(floor(width / MinimumColumnSize), 1, TargetColumnCount) + columns = newColumnCount diff --git a/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd.uid b/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd.uid new file mode 100644 index 0000000..8b5d83d --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/AdaptingGridContainer.gd.uid @@ -0,0 +1 @@ +uid://cb12y8ylifwet diff --git a/source/addons/SunshineClouds2/Dock/CloudsDrawBrush.tscn b/source/addons/SunshineClouds2/Dock/CloudsDrawBrush.tscn new file mode 100644 index 0000000..4b304d0 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/CloudsDrawBrush.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=3 uid="uid://bqphpk7wftndj"] + +[ext_resource type="Material" uid="uid://b3fgicfsq7yvh" path="res://addons/SunshineClouds2/Dock/Materials/DrawBrushToolsMaterial.tres" id="1_t2125"] + +[sub_resource type="PlaneMesh" id="PlaneMesh_gqrd6"] + +[node name="DrawBrush" type="MeshInstance3D"] +mesh = SubResource("PlaneMesh_gqrd6") +surface_material_override/0 = ExtResource("1_t2125") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +material_override = ExtResource("1_t2125") +mesh = SubResource("PlaneMesh_gqrd6") diff --git a/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd b/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd new file mode 100644 index 0000000..5eab380 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd @@ -0,0 +1,982 @@ +@tool +extends Control +class_name CloudsEditorController + +@export_category("Driver Tools") +@export var CloudsStatusLabel : Label +@export var CloudsActiveToggle : CheckButton +@export var CloudsDriverRefresh : Button +@export var CloudsDriverAccordianButton : AccordionButton +@export_category("Mask Tools") +@export var UseMaskToggle : CheckButton +@export var MaskStatusLabel : Label +@export var MaskFilePath : LineEdit +@export var MaskResolution : SpinBox +@export var MaskWidth : SpinBox +@export_category("Draw Tools") +@export var DrawWeightEnable : TextureButton +@export var DrawColorEnable : TextureButton +@export var DrawColorPicker : ColorPicker + +@export var DrawTools : Control +@export var DrawSharpness : HSlider +@export var DrawStrength : HSlider + +@export var compute_shader : RDShaderFile +@export var DrawingColor : Color +@export var InvertedDrawingColor : Color + +@export_range(100,50000,50) var DefaultBrushSize : float = 1000.0 +@export_range(100,50000,50) var DefaultCloudsHeight : float = 2000.0 + +var driver : SunshineCloudsDriverGD + +var currentRoot : Node + +var currentDrawingMask : RID = RID() + +enum DRAWINGMODE {none, weight, color, setValue} + +var drawScale : float +var currentCloudsHeight : float +var currentDrawMode : DRAWINGMODE = DRAWINGMODE.none +var drawingCurrently : bool = false +var drawInverted : bool = false +var drawBrushToolMaterial : BaseMaterial3D = preload("res://addons/SunshineClouds2/Dock/Materials/DrawBrushToolsMaterial.tres") +var drawBrushToolPrefab : PackedScene = preload("res://addons/SunshineClouds2/Dock/CloudsDrawBrush.tscn") +var drawBrushTool : MeshInstance3D + +#region Compute Variables +var computeEnabled : bool = false +var rd : RenderingDevice +var shader : RID = RID() +var pipeline : RID = RID() + +var uniform_set : RID +var push_constants : PackedByteArray + +var last_image_data : PackedByteArray = [] +#endregion + +var pause_updates : bool = false + + +func _enter_tree() -> void: + drawScale = DefaultBrushSize + +func _notification(what): + if what == NOTIFICATION_PREDELETE and is_instance_valid(self): + RenderingServer.call_on_render_thread(ClearCompute) + +func _process(delta: float) -> void: + + if (currentDrawMode != DRAWINGMODE.none): + + var selection = EditorInterface.get_selection() + if (selection.get_selected_nodes().size() == 0): + if (driver != null): + selection.add_node(driver) + + if (currentDrawMode == DRAWINGMODE.color): + drawBrushToolMaterial.albedo_color = DrawColorPicker.color + + if (drawingCurrently): + + RenderingServer.call_on_render_thread(ExecuteCompute.bindv([delta, false, Color.WHITE])) + +func InitialSceneLoad() -> void: + var sceneRoot = await FindSceneNode() + SceneChanged(sceneRoot) + print("initial scene load") + + await get_tree().create_timer(0.5).timeout + var version_info = Engine.get_version_info() + + var file = FileAccess.open("res://addons/SunshineClouds2/CloudsInc.txt", FileAccess.READ_WRITE) + var content = file.get_as_text() + var major_index = content.find("GODOT_VERSION_MAJOR") + 20 + var minor_index = content.find("GODOT_VERSION_MINOR") + 20 + + if content[major_index] != str(version_info.major) || content[minor_index] != str(version_info.minor): + print("Version conflict, updating and reimporting...") + content[major_index] = str(version_info.major) + content[minor_index] = str(version_info.minor) + file.store_string(content) + file.close() + + EditorInterface.get_resource_filesystem().reimport_files(["res://addons/SunshineClouds2/SunshineCloudsCompute.glsl", "res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl", "res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl"]) + await get_tree().create_timer(0.1).timeout + if driver != null && driver.clouds_resource != null: + driver.clouds_resource.refresh_compute() + + print("Version change may cause some errors during first load, these should not impact functionality, if there is impacted functionality please report it to the creator of the plugin.") + print("Version updated, launching normally.") + else: + print("Version correct, launching normally.") + file.close() + + +func RefreshSceneNode() -> void: + var sceneRoot = await FindSceneNode() + + SceneChanged(sceneRoot) + +func FindSceneNode() -> Node: + var editorInterface = EditorPlugin.new().get_editor_interface() + var sceneRoot = editorInterface.get_edited_scene_root() + var iterationcount: int = 300 #30 seconds of checking. + while sceneRoot == null && iterationcount > 0: + await get_tree().create_timer(0.1).timeout + iterationcount -= 1 + sceneRoot = editorInterface.get_edited_scene_root() + + return sceneRoot + +func SceneChanged(scene_root : Node): + + pause_updates = true + DrawWeightEnable.button_pressed = false + DrawColorEnable.button_pressed = false + last_image_data = [] + DisableDrawMode() + + currentRoot = scene_root + driver = RetrieveCloudsDriver(scene_root) + if (driver != null && driver.clouds_resource != null): + driver.clouds_resource.maskDrawnRid = RID() + + MaskWidth.value = driver.clouds_resource.mask_width_km + UseMaskToggle.button_pressed = driver.clouds_resource.extra_large_used_as_mask + + if ResourceLoader.exists(MaskFilePath.text): + var image = ResourceLoader.load(MaskFilePath.text) as Image + if image: + print("retrieved mask scale") + MaskResolution.value = image.get_width() + pause_updates = false + UpdateStatusDisplay() + +func RetrieveCloudsDriver(scene_root : Node) -> SunshineCloudsDriverGD: + if (scene_root != null): + for child in scene_root.get_children(): + if child is SunshineCloudsDriverGD: + return child + + var newDriver = RetrieveCloudsDriver(child) + if (newDriver): + return newDriver + + return null + +func UpdateStatusDisplay(): + + if (driver != null): + CloudsActiveToggle.disabled = false + CloudsActiveToggle.button_pressed = driver.update_continuously + CloudsDriverRefresh.visible = false + CloudsStatusLabel.text = "Clouds present" + + if ResourceLoader.exists(MaskFilePath.text): + MaskStatusLabel.text = "Mask Detected: " + MaskFilePath.text + DrawTools.visible = true + else: + MaskStatusLabel.text = "Mask Not Found." + DrawTools.visible = false + + else: + CloudsActiveToggle.disabled = true + CloudsActiveToggle.button_pressed = false + CloudsDriverRefresh.visible = true + DrawTools.visible = false + CloudsDriverAccordianButton.Open() + CloudsStatusLabel.text = "Clouds not present" + + + if driver != null && driver.clouds_resource != null: + UseMaskToggle.disabled = false + else: + UseMaskToggle.disabled = true + UseMaskToggle.button_pressed = false + + +func UpdateMaskSettings(): + if (pause_updates): + return + print("Update mask settings") + if (driver != null && driver.clouds_resource != null): + driver.clouds_resource.mask_width_km = MaskWidth.value + driver.clouds_resource.extra_large_used_as_mask = UseMaskToggle.button_pressed + if (!UseMaskToggle.button_pressed): + driver.clouds_resource.extra_large_noise_patterns = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres") + elif ResourceLoader.exists(MaskFilePath.text): + driver.clouds_resource.extra_large_noise_patterns = ResourceLoader.load(MaskFilePath.text) + + InitializeMaskTexture() + +func InitializeMaskTexture(): + #if (driver == null): + #return + + if not rd: + rd = RenderingServer.get_rendering_device() + if not rd: + return + #currentDrawingMask = driver.clouds_resource.mask_rid + #var useDriverData : bool = driver != null && driver.clouds_resource != null + # + print("initializing mask") + if ResourceLoader.exists(MaskFilePath.text): + print("loading mask") + var image = ResourceLoader.load(MaskFilePath.text) as CompressedTexture2D + if (!image || image.get_width() != MaskResolution.value): + print(MaskFilePath.text) + print("mask incorrect size found size:", image.get_width(), " desired:", MaskResolution.value) + image = Image.create(MaskResolution.value, MaskResolution.value, false, Image.FORMAT_RGBAF) + image.clear_mipmaps() + image.save_exr(MaskFilePath.text) + + var editorFileSystem := EditorInterface.get_resource_filesystem() + editorFileSystem.scan() + else: + var image = Image.create(MaskResolution.value, MaskResolution.value, false, Image.FORMAT_RGBAF) + image.clear_mipmaps() + image.save_exr(MaskFilePath.text) + + var editorFileSystem := EditorInterface.get_resource_filesystem() + editorFileSystem.scan() + + + + #driver.clouds_resource.mask_rid = currentDrawingMask + #driver.clouds_resource.extra_large_noise_patterns = ResourceLoader.load(MaskFilePath.text) + #driver.clouds_resource.last_size = Vector2i.ZERO + + RenderingServer.call_on_render_thread(InitializeCompute) + call_deferred("UpdateStatusDisplay") + +#region Draw mode + +#region Compute + +func InitializeCompute(): + computeEnabled = false + #if driver == null: + #return + + #currentDrawingMask = driver.clouds_resource.mask_rid + #if !currentDrawingMask.is_valid(): + #return + + if not rd: + rd = RenderingServer.get_rendering_device() + if not rd: + computeEnabled = false + printerr("No rendering device on load.") + return + ClearCompute() + if not compute_shader: + compute_shader = ResourceLoader.load("res://addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl") + + if not compute_shader: + computeEnabled = false + printerr("No Shader found for drawing tool.") + ClearCompute() + return + + var shader_spirv = compute_shader.get_spirv() + shader = rd.shader_create_from_spirv(shader_spirv) + if shader.is_valid(): + pipeline = rd.compute_pipeline_create(shader) + else: + computeEnabled = false + printerr("Shader failed to compile.") + ClearCompute() + return + + var uniforms_array : Array[RDUniform] = [] + + var newFormat : RDTextureFormat = RDTextureFormat.new() + newFormat.format = RenderingDevice.DATA_FORMAT_R32G32B32A32_SFLOAT + newFormat.height = MaskResolution.value + newFormat.width = MaskResolution.value + newFormat.usage_bits = RenderingDevice.TEXTURE_USAGE_STORAGE_BIT | RenderingDevice.TEXTURE_USAGE_SAMPLING_BIT | RenderingDevice.TEXTURE_USAGE_CAN_COPY_FROM_BIT + + var image : Image + if ResourceLoader.exists(MaskFilePath.text): + image = (ResourceLoader.load(MaskFilePath.text) as CompressedTexture2D).get_image() + + if image == null: + image = Image.create(MaskResolution.value, MaskResolution.value, false, Image.FORMAT_RGBAF) + + currentDrawingMask = rd.texture_create(newFormat, RDTextureView.new(), [image.get_data()]) + + if (driver != null && driver.clouds_resource != null): + driver.clouds_resource.update_mask(currentDrawingMask) + + var mask_uniform = RDUniform.new() + mask_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + mask_uniform.binding = 0 + mask_uniform.add_id(currentDrawingMask) + uniforms_array.append(mask_uniform) + + uniform_set = rd.uniform_set_create(uniforms_array, shader, 0) + computeEnabled = true + +func ClearCompute(): + if rd: + if shader.is_valid(): + rd.free_rid(shader) + shader = RID() + + if currentDrawingMask.is_valid(): + rd.free_rid(currentDrawingMask) + currentDrawingMask = RID() + +func ExecuteCompute(delta : float, setvalue : bool, setvalueColor : Color): + if (!computeEnabled): + return + + var resolution : float = MaskResolution.value + var drawPosition : Vector2 = Vector2.ZERO + var drawRadius = 0.0 + + if (!setvalue): + drawPosition = Vector2(drawBrushTool.global_position.x, drawBrushTool.global_position.z) + drawPosition = (drawPosition / (MaskWidth.value * 1000.0)) * resolution + drawPosition += Vector2(resolution * 0.5, resolution * 0.5) + + drawRadius = (drawBrushTool.scale.x / (MaskWidth.value * 1000.0)) * resolution + + var groups = ceil(resolution / 32) + 1 + var drawSharpness = DrawSharpness.value + var drawStrength = DrawStrength.value * delta + if (drawInverted): + drawStrength = -drawStrength + + var editingtype : float = 0.0 + if setvalue: + editingtype = 2.0 + elif currentDrawMode == DRAWINGMODE.color: + editingtype = 1.0 + + var ms = StreamPeerBuffer.new() + ms.put_float(drawPosition.x) + ms.put_float(drawPosition.y) + ms.put_float(drawRadius) + ms.put_float(drawSharpness) + + ms.put_float(drawStrength) + ms.put_float(editingtype) + ms.put_float(resolution) + ms.put_float(0.0) + + if (setvalue): + ms.put_float(setvalueColor.r) + ms.put_float(setvalueColor.g) + ms.put_float(setvalueColor.b) + ms.put_float(setvalueColor.a) + else: + ms.put_float(DrawColorPicker.color.r) + ms.put_float(DrawColorPicker.color.g) + ms.put_float(DrawColorPicker.color.b) + ms.put_float(0.0) + + push_constants = ms.get_data_array() + + var compute_list = rd.compute_list_begin() + rd.compute_list_bind_compute_pipeline(compute_list, pipeline) + rd.compute_list_bind_uniform_set(compute_list, uniform_set, 0) + rd.compute_list_set_push_constant(compute_list, push_constants, push_constants.size()) + rd.compute_list_dispatch(compute_list, groups, groups, 1) + rd.compute_list_end() + + + await RenderingServer.frame_post_draw + + rd.texture_get_data_async(currentDrawingMask, 0, CompleteRetreval) + +func CompleteRetreval(data): + last_image_data = data + #for byte in data: + #print(byte) + #print("RetrevalComplete ", data) + #var image = Image.create_from_data(MaskResolution.value, MaskResolution.value, false, Image.FORMAT_RGBAF, data) + ##rd.texture_update(RenderingServer.texture_get_rd_texture(currentMask.get_rid()),0, data) + #image.save_png(MaskFilePath.text) + + #var editorFileSystem := EditorInterface.get_resource_filesystem() + #editorFileSystem.scan() + +#endregion + +func IterateCursorLocation(viewport_camera: Camera3D, event:InputEventMouse): + if (is_instance_valid(driver) && driver.clouds_resource != null): + currentCloudsHeight = (driver.clouds_resource.cloud_floor + driver.clouds_resource.cloud_ceiling) / 2.0 + else: + currentCloudsHeight = DefaultCloudsHeight + var ray_origin = viewport_camera.project_ray_origin(event.position) + var ray_dir = viewport_camera.project_ray_normal(event.position) + + var result : float = RetrieveTravelDistance(ray_origin, ray_dir) + if (result == -1.0): + drawBrushTool.visible = false + else: + drawBrushTool.visible = true + drawBrushTool.global_position = ray_origin + ray_dir * result + drawBrushTool.global_position.y = driver.clouds_resource.cloud_floor + +func BeginCursorDraw(): + drawingCurrently = true + +func EndCursorDraw(): + drawingCurrently = false + +func ScaleDrawingCircleUp(): + drawScale = min(drawScale + (drawScale * 0.1), 100000.0) + SetDrawScale() + +func ScaleDrawingCircleDown(): + drawScale = max(drawScale - (drawScale * 0.1), 100.0) + SetDrawScale() + +func DrawModeCancel(): + DrawWeightEnable.button_pressed = false + DrawColorEnable.button_pressed = false + DisableDrawMode() + + +func SetDrawScale(): + if driver != null && driver.clouds_resource != null: + drawBrushTool.scale = Vector3(drawScale, driver.clouds_resource.cloud_ceiling - driver.clouds_resource.cloud_floor, drawScale) + else: + drawBrushTool.scale = Vector3(drawScale, 1000.0, drawScale) + +#region Draw Mode Toggles + +func FloodFill(): + var resultColor : Color = DrawColorPicker.color + resultColor.a = DrawStrength.value / DrawStrength.max_value + RenderingServer.call_on_render_thread(ExecuteCompute.bindv([0.0, true, resultColor])) + await get_tree().create_timer(0.2).timeout + call_deferred("DisableDrawMode") + +func DrawWeightToggled(): + DrawColorEnable.button_pressed = false + + if DrawWeightEnable.button_pressed && EnableDrawMode(): + currentDrawMode = DRAWINGMODE.weight + else: + DrawWeightEnable.button_pressed = false + +func DrawColorToggled(): + DrawWeightEnable.button_pressed = false + + if DrawColorEnable.button_pressed && EnableDrawMode(): + currentDrawMode = DRAWINGMODE.color + else: + DrawColorEnable.button_pressed = false + +func EnableDrawMode() -> bool: + if (!computeEnabled): + InitializeMaskTexture() + + if (!is_instance_valid(currentRoot)): + return false + drawBrushToolMaterial.albedo_color = DrawingColor + if (!is_instance_valid(drawBrushTool)): + drawBrushTool = drawBrushToolPrefab.instantiate() as MeshInstance3D + currentRoot.add_child(drawBrushTool) + SetDrawScale() + + return true + +func DisableDrawMode(): + DrawColorEnable.button_pressed = false + DrawWeightEnable.button_pressed = false + currentDrawMode = DRAWINGMODE.none + drawInverted = false + if (drawingCurrently): + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + drawingCurrently = false + + if (is_instance_valid(drawBrushTool)): + drawBrushTool.queue_free() + drawBrushTool = null + + if (last_image_data.size() > 0): + print("Saved image to disc") + var image = Image.create_from_data(MaskResolution.value, MaskResolution.value, false, Image.FORMAT_RGBAF, last_image_data) + + image.save_exr(MaskFilePath.text) + var editorFileSystem := EditorInterface.get_resource_filesystem() + editorFileSystem.scan() + + last_image_data = [] + + if (driver != null && driver.clouds_resource != null): + driver.clouds_resource.extra_large_noise_patterns = ResourceLoader.load(MaskFilePath.text) + +#endregion + +func SetDrawInvert(mode : bool): + if (currentDrawMode == DRAWINGMODE.weight && drawInverted != mode): + drawInverted = mode + drawBrushToolMaterial.albedo_color = InvertedDrawingColor if drawInverted else DrawingColor + + +#region draw tools helpers + +func RetrieveTravelDistance(pos : Vector3, dir :Vector3) -> float: + var t : float = (currentCloudsHeight - pos.y) / dir.y + if (dir.y == 0 || t < 0.0): + return -1.0 + + + return t * dir.length() + +#endregion + +#endregion + +#Updates +func SetCloudsUpdating(): + if (driver != null): + driver.update_continuously = CloudsActiveToggle.button_pressed + + UpdateStatusDisplay() + + +# +# +# +# +#@tool +#extends MeshInstance3D +#class_name WanderingTerrainDrawnStamp +# +# +#@export var visibleColorMat : ShaderMaterial = preload("res://addons/WanderingTerrain/Materials/StampMaterials/EraseChunkVisibleColorMat.tres") +#@export var highlightedColorMat : ShaderMaterial = preload("res://addons/WanderingTerrain/Materials/StampMaterials/EraseChunkHighlightedColorMat.tres") +#@export var thisStampIndex : Vector2 +#@export var currentHeightmapImageTexture: Texture2D +#@export var currentColormapImageTexture: Texture2D +#@export var currentSplatmapImageTexture: Texture2D +#@export var currentMaterial : ShaderMaterial +# +#var newHeightmapImage : Image +#var newColormapImage : Image +#var newSplatmapImage : Image +#var newHeightmapdrawingDirty : bool = false +#var newColormapdrawingDirty : bool = false +#var newSplatmapdrawingDirty : bool = false +#var pixelChanged : bool = false +# +#enum DrawingUpdateMode {sculpting, colorpainting, splatpainting} +# +#var thisRect : Rect2 +# +# +#func InitializeDrawnStamp(resolution : int, indexPosition : Vector2, position : Vector3, currentUpdateType : DrawingUpdateMode): + #add_to_group("WanderingTerrainSculptingStamps", true); + #thisStampIndex = indexPosition + #global_position = position + #currentMaterial = material_override.duplicate() + #material_override = currentMaterial + # + #UpdateDrawnStamp(resolution, currentUpdateType) +# +#func SetVisible(): + #currentMaterial.next_pass = visibleColorMat +# +#func SetHidden(): + #currentMaterial.next_pass = null +# +#func Highlight(): + #currentMaterial.next_pass = highlightedColorMat +# +#func Unhightlight(): + #currentMaterial.next_pass = visibleColorMat +# +#func CheckHasAnyUpdate() -> bool: + # + #if (pixelChanged || currentHeightmapImageTexture != null || currentColormapImageTexture != null || currentSplatmapImageTexture != null): + #return true + # + #return false +# +#func UpdateDrawnStamp(resolution : int, currentUpdateType : DrawingUpdateMode): + # + #match currentUpdateType: + #DrawingUpdateMode.sculpting: + # + #if (newHeightmapImage == null || newHeightmapImage.get_width() != resolution): + #if (currentHeightmapImageTexture != null && currentHeightmapImageTexture.get_width() == resolution): + #newHeightmapImage = currentHeightmapImageTexture.get_image() + #else: + #currentHeightmapImageTexture = null + #newHeightmapdrawingDirty = true + #newHeightmapImage = Image.create(resolution, resolution, false, Image.FORMAT_RGF) + #for x in resolution: + #for y in resolution: + #newHeightmapImage.set_pixel(x,y, Color(0.0,0.0,0.0,0.0)) + # + # + #var imageTexture = ImageTexture.create_from_image(newHeightmapImage) + #currentMaterial.set_shader_parameter("HeightMap", imageTexture) + # + #DrawingUpdateMode.colorpainting: + # + #if (newColormapImage == null || newColormapImage.get_width() != resolution): + #if (currentColormapImageTexture != null && currentColormapImageTexture.get_width() == resolution): + #newColormapImage = currentColormapImageTexture.get_image() + #else: + #currentColormapImageTexture = null + #newColormapdrawingDirty = true + #newColormapImage = Image.create(resolution, resolution, false, Image.FORMAT_RGBAF) + #for x in resolution: + #for y in resolution: + #newColormapImage.set_pixel(x,y, Color(0.0,0.0,0.0,0.0)) + # + #var imageTexture = ImageTexture.create_from_image(newColormapImage) + #currentMaterial.set_shader_parameter("ColorMap", imageTexture) + #currentMaterial.set_shader_parameter("HasColorMap", true); + # + #DrawingUpdateMode.splatpainting: + # + #if (newSplatmapImage == null || newSplatmapImage.get_width() != resolution): + #if (currentSplatmapImageTexture != null && currentSplatmapImageTexture.get_width() == resolution): + #newSplatmapImage = currentSplatmapImageTexture.get_image() + #else: + #currentSplatmapImageTexture = null + #newSplatmapdrawingDirty = true + #newSplatmapImage = Image.create(resolution, resolution, false, Image.FORMAT_RGBAF) + #for x in resolution: + #for y in resolution: + #newSplatmapImage.set_pixel(x,y, Color(0.0,0.0,0.0,0.0)) + # + #var imageTexture = ImageTexture.create_from_image(newSplatmapImage) + #currentMaterial.set_shader_parameter("SplatMap", imageTexture) + #currentMaterial.set_shader_parameter("HasSplatMap", true); + # + # + #thisRect = Rect2(Vector2(global_position.x - resolution / 2, global_position.z - resolution / 2),Vector2(resolution, resolution)) +# +#func IsInsideRect(targetPosition : Vector2, stampRadius : float) -> bool: + #if thisRect.has_point(targetPosition) || thisRect.has_point(targetPosition + (Vector2(global_position.x, global_position.z) - targetPosition).normalized() * stampRadius): + #return true + #return false +# +# +# +#func PackStamp(terrainController : WanderingTerrainController): + #if (newHeightmapdrawingDirty && newHeightmapImage != null): + #newHeightmapdrawingDirty = false + #var resultingResource = await terrainController.Editor_SaveImageToOutputFolder(newHeightmapImage, name + "_height_savedstamp", "exr") + #if (resultingResource != null): + #currentHeightmapImageTexture = resultingResource + #currentMaterial.set_shader_parameter("HeightMap", currentHeightmapImageTexture) + # + #if (newColormapdrawingDirty && newColormapImage != null): + #newColormapdrawingDirty = false + #var resultingResource = await terrainController.Editor_SaveImageToOutputFolder(newColormapImage, name + "_color_savedstamp", "exr") + #if (resultingResource != null): + #currentColormapImageTexture = resultingResource + #currentMaterial.set_shader_parameter("ColorMap", currentColormapImageTexture) + # + #if (newSplatmapdrawingDirty && newSplatmapImage != null): + #newSplatmapdrawingDirty = false + #var resultingResource = await terrainController.Editor_SaveImageToOutputFolder(newSplatmapImage, name + "_splatmap_savedstamp", "exr") + #if (resultingResource != null): + #currentSplatmapImageTexture = resultingResource + #currentMaterial.set_shader_parameter("SplatMap", currentSplatmapImageTexture) +# +#func ColorPainting_DrawOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, power : float, color : Color, layer : DrawingUpdateMode): + #var localPosition : Vector3 = targetPosition - global_position + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + #var currentImage : Image + #if (layer == DrawingUpdateMode.colorpainting): + #newColormapdrawingDirty = true + #currentImage = newColormapImage + #else: + #newSplatmapdrawingDirty = true + #currentImage = newSplatmapImage + # + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= currentImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= currentImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = currentImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + # + #if (thisColor.a == 0): + #thisColor.r = color.r + #thisColor.g = color.g + #thisColor.b = color.b + # + #thisColor.r = lerpf(thisColor.r, color.r, stampAlpha * power * 0.2) + #thisColor.g = lerpf(thisColor.g, color.g, stampAlpha * power * 0.2) + #thisColor.b = lerpf(thisColor.b, color.b, stampAlpha * power * 0.2) + # + ### Handles opacity, which always goes up. + #thisColor.a = clampf(thisColor.a + (stampAlpha * abs(power) * 0.2), 0.0, 1.0) + #currentImage.set_pixel(currentPos.x, currentPos.y, thisColor) + #pixelChanged = true + # + #var imageTexture = ImageTexture.create_from_image(currentImage) + # + #if (layer == DrawingUpdateMode.colorpainting): + #currentMaterial.set_shader_parameter("ColorMap", imageTexture) + #newColormapImage = currentImage + #else: + #currentMaterial.set_shader_parameter("SplatMap", imageTexture) + #newSplatmapImage = currentImage +# +#func ColorPainting_EraseOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, power : float, layer : DrawingUpdateMode): + #var localPosition : Vector3 = targetPosition - global_position + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + #var currentImage : Image + #if (layer == DrawingUpdateMode.colorpainting): + #newColormapdrawingDirty = true + #currentImage = newColormapImage + #else: + #newSplatmapdrawingDirty = true + #currentImage = newSplatmapImage + # + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= currentImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= currentImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = currentImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + # + #thisColor.a = clampf(thisColor.a - stampAlpha * power * 0.2, 0.0, 1.0) + # + #currentImage.set_pixel(currentPos.x, currentPos.y, thisColor) + # + #var imageTexture = ImageTexture.create_from_image(currentImage) + # + #if (layer == DrawingUpdateMode.colorpainting): + #currentMaterial.set_shader_parameter("ColorMap", imageTexture) + #newColormapImage = currentImage + #else: + #currentMaterial.set_shader_parameter("SplatMap", imageTexture) + #newSplatmapImage = currentImage +# +#func Sculpt_EraseOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, power : float): + #newHeightmapdrawingDirty = true + # + #var localPosition : Vector3 = targetPosition - global_position + # + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float +# + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= newHeightmapImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= newHeightmapImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = newHeightmapImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + ##thisColor.r += (0.5 - thisColor.r) * stampAlpha * power * 0.2 + #thisColor.g = clampf(thisColor.g - stampAlpha * power * 0.2, 0.0, 1.0) + #newHeightmapImage.set_pixel(currentPos.x, currentPos.y, thisColor) + # + #var imageTexture = ImageTexture.create_from_image(newHeightmapImage) + # + #currentMaterial.set_shader_parameter("HeightMap", imageTexture) +# +#func Sculpt_SmoothOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, power : float, worldScale : float): + #newHeightmapdrawingDirty = true + # + #var localPosition : Vector3 = targetPosition - global_position + # + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float + #var heightValue : float = clamp((targetPosition.y) / worldScale, 0.0, 1.0) + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= newHeightmapImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= newHeightmapImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = newHeightmapImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + #thisColor.r = clampf(thisColor.r + ((heightValue - thisColor.r) * stampAlpha * power * 0.2), 0.0, 1.0) + #thisColor.g = clampf(thisColor.g + ((0.0 - thisColor.g) * stampAlpha * power * 0.05), 0.0, 1.0) + # + #newHeightmapImage.set_pixel(currentPos.x, currentPos.y, thisColor) + #pixelChanged = true + # + #var imageTexture = ImageTexture.create_from_image(newHeightmapImage) + # + #currentMaterial.set_shader_parameter("HeightMap", imageTexture) +# +# +#func Sculpt_DrawOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, power : float, worldScale : float): + #newHeightmapdrawingDirty = true + # + #var localPosition : Vector3 = targetPosition - global_position + # + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float + #var heightValue = clamp(targetPosition.y / worldScale, 0.0, 1.0) + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= newHeightmapImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= newHeightmapImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = newHeightmapImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + ### Handles actual value. + #if (thisColor.g == 0): + #thisColor.r = heightValue + #thisColor.r = clampf(thisColor.r + (stampAlpha * power * 0.05), 0.0, 1.0) + ### Handles opacity, which always goes up. + #thisColor.g = clampf(thisColor.g + (stampAlpha * abs(power) * 0.05), 0.0, 1.0) + #newHeightmapImage.set_pixel(currentPos.x, currentPos.y, thisColor) + #pixelChanged = true + # + #var imageTexture = ImageTexture.create_from_image(newHeightmapImage) + # + #currentMaterial.set_shader_parameter("HeightMap", imageTexture) +# +#func Sculpt_SetHeightOnImage(targetPosition : Vector3, stampRadius : float, stampImage : Image, heightValue : float, power : float, worldScale : float): + #newHeightmapdrawingDirty = true + # + #var localPosition : Vector3 = targetPosition - global_position + # + #var localPositionPixelSpace := Vector2(localPosition.x + 256, localPosition.z + 256) + #var stampScale : float = stampImage.get_width() / stampRadius + #var stampActualResolution : float = (stampImage.get_width() / stampScale) + 1 + # + #var stampPos : Vector2 = Vector2(localPositionPixelSpace.x, localPositionPixelSpace.y) + #var stampTopCornerPos : Vector2 = Vector2(localPositionPixelSpace.x - stampActualResolution / 2, localPositionPixelSpace.y - stampActualResolution / 2 ) + #var currentPos : Vector2 + #var thisColor: Color + #var stampAlpha: float + #var currentHeight = clamp(targetPosition.y / worldScale, 0.0, 1.0) + #heightValue = clamp(heightValue / worldScale, 0.0, 1.0) + #var hasNoAlpha = stampImage.detect_alpha() == Image.ALPHA_NONE + # + #for x in stampActualResolution: + #if (stampTopCornerPos.x + x >= newHeightmapImage.get_width() || x * stampScale >= stampImage.get_width()): + #break + #for y in stampActualResolution: + #if (stampTopCornerPos.y + y >= newHeightmapImage.get_height() || y * stampScale >= stampImage.get_width()): + #break + #currentPos.x = stampTopCornerPos.x + x + #currentPos.y = stampTopCornerPos.y + y + #if (currentPos.x < 0 || currentPos.y < 0): + #continue + # + #thisColor = newHeightmapImage.get_pixelv(currentPos) + #if (hasNoAlpha): + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).r + #else: + #stampAlpha = stampImage.get_pixel(x * stampScale,y * stampScale).a + # + #if (thisColor.g == 0): + #thisColor.r = currentHeight + # + #thisColor.r = clampf(thisColor.r + ((heightValue - thisColor.r) * stampAlpha * power), 0.0, 1.0) + ### Handles opacity, which always goes up. + #thisColor.g = clampf(thisColor.g + (stampAlpha * abs(power) * 0.2), 0.0, 1.0) + #newHeightmapImage.set_pixel(currentPos.x, currentPos.y, thisColor) + #pixelChanged = true + # + #var imageTexture = ImageTexture.create_from_image(newHeightmapImage) + # + #currentMaterial.set_shader_parameter("HeightMap", imageTexture) diff --git a/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd.uid b/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd.uid new file mode 100644 index 0000000..b7f10e5 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/CloudsEditorController.gd.uid @@ -0,0 +1 @@ +uid://dnan3ytl8evv1 diff --git a/source/addons/SunshineClouds2/Dock/CloudsEditorDock.tscn b/source/addons/SunshineClouds2/Dock/CloudsEditorDock.tscn new file mode 100644 index 0000000..34216b6 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/CloudsEditorDock.tscn @@ -0,0 +1,349 @@ +[gd_scene load_steps=18 format=3 uid="uid://bsmrb5nocmcin"] + +[ext_resource type="Script" uid="uid://dnan3ytl8evv1" path="res://addons/SunshineClouds2/Dock/CloudsEditorController.gd" id="1_c42ej"] +[ext_resource type="Texture2D" uid="uid://l06i8g7p2msv" path="res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg" id="2_8dri0"] +[ext_resource type="Texture2D" uid="uid://b404vxesyde33" path="res://addons/SunshineClouds2/CloudsDriverIcon.svg" id="2_tc6ic"] +[ext_resource type="Script" uid="uid://cb3ho8b5lgx55" path="res://addons/SunshineClouds2/Dock/AccordionButton.gd" id="2_wp1ai"] +[ext_resource type="StyleBox" uid="uid://dl1aqqpt5iprl" path="res://addons/SunshineClouds2/Dock/DockPanelStyle.tres" id="2_x2oe8"] +[ext_resource type="RDShaderFile" uid="uid://ck1yv82gbxncv" path="res://addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl" id="2_yqrwx"] +[ext_resource type="Texture2D" uid="uid://dwbw6ov5xxrkq" path="res://addons/SunshineClouds2/Dock/Icons/cloud-solid.svg" id="7_8l8c2"] +[ext_resource type="Texture2D" uid="uid://s862ukpen76d" path="res://addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg" id="8_w3q10"] +[ext_resource type="Texture2D" uid="uid://lr3flf2kgx3g" path="res://addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg" id="9_kg56n"] +[ext_resource type="Texture2D" uid="uid://dpwhekui78xl1" path="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg" id="10_6j812"] +[ext_resource type="Texture2D" uid="uid://ctwabn07mc0k7" path="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg" id="11_20jq1"] +[ext_resource type="Texture2D" uid="uid://d0orkqlt3nybm" path="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg" id="12_lwakg"] +[ext_resource type="Script" uid="uid://cb12y8ylifwet" path="res://addons/SunshineClouds2/Dock/AdaptingGridContainer.gd" id="13_w3q10"] + +[sub_resource type="LabelSettings" id="LabelSettings_yqrwx"] +font_size = 24 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tc6ic"] +bg_color = Color(0.257374, 0.311252, 0.386689, 0.564706) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yqrwx"] +bg_color = Color(0.0680232, 0.0903094, 0.121509, 0.564706) + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ml10g"] + +[node name="CloudsEditor" type="Control" node_paths=PackedStringArray("CloudsStatusLabel", "CloudsActiveToggle", "CloudsDriverRefresh", "CloudsDriverAccordianButton", "UseMaskToggle", "MaskStatusLabel", "MaskFilePath", "MaskResolution", "MaskWidth", "DrawWeightEnable", "DrawColorEnable", "DrawColorPicker", "DrawTools", "DrawSharpness", "DrawStrength")] +clip_contents = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = 278.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_c42ej") +CloudsStatusLabel = NodePath("ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer/Label") +CloudsActiveToggle = NodePath("ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer/CheckButton") +CloudsDriverRefresh = NodePath("ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer/DriverQueryButton") +CloudsDriverAccordianButton = NodePath("ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/AccordionButton") +UseMaskToggle = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MaskUsageCheckButton") +MaskStatusLabel = NodePath("ScrollContainer/VBoxContainer/MaskStatusOutput") +MaskFilePath = NodePath("ScrollContainer/VBoxContainer/HBoxContainer/LineEdit") +MaskResolution = NodePath("ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Resolution/SpinBox") +MaskWidth = NodePath("ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Width/SpinBox") +DrawWeightEnable = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/CloudsWeight") +DrawColorEnable = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/CloudsColor") +DrawColorPicker = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/ColorPicker") +DrawTools = NodePath("ScrollContainer/VBoxContainer/DrawTools") +DrawSharpness = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer/Sharpness") +DrawStrength = NodePath("ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer/Strength") +compute_shader = ExtResource("2_yqrwx") +DrawingColor = Color(0.769578, 0.731927, 0.149317, 1) +InvertedDrawingColor = Color(0.765928, 0.254294, 0.0203708, 1) + +[node name="ScrollContainer" type="ScrollContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +horizontal_scroll_mode = 0 + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer2" type="HBoxContainer" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +text = "Sunshine Clouds Editor" +label_settings = SubResource("LabelSettings_yqrwx") + +[node name="TextureRect" type="TextureRect" parent="ScrollContainer/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +texture = ExtResource("2_tc6ic") +expand_mode = 3 + +[node name="HSeparator2" type="HSeparator" parent="ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 18.49) +layout_mode = 2 + +[node name="MaskStatusOutput" type="Label" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Mask Detected: res://CloudsMask.png" + +[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Mask Path:" + +[node name="LineEdit" type="LineEdit" parent="ScrollContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "res://CloudsMask.exr" + +[node name="MaskBuildButton" type="Button" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +text = "Refresh Mask Reference" + +[node name="MaskSettings" type="PanelContainer" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = ExtResource("2_x2oe8") + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/MaskSettings"] +layout_mode = 2 + +[node name="AccordionButton" type="Button" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer"] +layout_mode = 2 +theme_override_styles/hover = SubResource("StyleBoxFlat_tc6ic") +theme_override_styles/pressed = SubResource("StyleBoxFlat_yqrwx") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ml10g") +text = "Mask Settings" +icon = ExtResource("2_8dri0") +alignment = 0 +icon_alignment = 2 +expand_icon = true +script = ExtResource("2_wp1ai") +metadata/_custom_type_script = "uid://cb3ho8b5lgx55" + +[node name="Resolution" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer"] +visible = false +layout_mode = 2 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Resolution"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Mask Resolution" + +[node name="SpinBox" type="SpinBox" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Resolution"] +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 32.0 +max_value = 1024.0 +value = 128.0 + +[node name="Width" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer"] +visible = false +layout_mode = 2 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Width"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Mask Width" + +[node name="SpinBox" type="SpinBox" parent="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Width"] +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 12.0 +max_value = 1024.0 +value = 32.0 +suffix = "km" + +[node name="PanelContainer" type="PanelContainer" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = ExtResource("2_x2oe8") + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer"] +layout_mode = 2 + +[node name="AccordionButton" type="Button" parent="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/hover = SubResource("StyleBoxFlat_tc6ic") +theme_override_styles/pressed = SubResource("StyleBoxFlat_yqrwx") +theme_override_styles/normal = SubResource("StyleBoxEmpty_ml10g") +text = "Driver Controls +" +icon = ExtResource("2_8dri0") +alignment = 0 +icon_alignment = 2 +expand_icon = true +script = ExtResource("2_wp1ai") +metadata/_custom_type_script = "uid://cb3ho8b5lgx55" + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Clouds not present" + +[node name="CheckButton" type="CheckButton" parent="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer"] +layout_mode = 2 +text = "Clouds Updating" + +[node name="DriverQueryButton" type="Button" parent="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer"] +visible = false +layout_mode = 2 +size_flags_horizontal = 0 +text = "Search for Driver" + +[node name="DrawTools" type="PanelContainer" parent="ScrollContainer/VBoxContainer"] +layout_mode = 2 +theme_override_styles/panel = ExtResource("2_x2oe8") + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/DrawTools"] +layout_mode = 2 + +[node name="MaskUsageCheckButton" type="CheckButton" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer"] +layout_mode = 2 +text = "Clouds Mask Enabled" + +[node name="MarginContainer2" type="MarginContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="Label" type="Label" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer2"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 +text = "Draw mode allows for creation of clouds directly using a mask texture. + +When mask mode is disabled, the extra large noise pattern is used to add large scale structures to the world, when mask usage is enabled it is treated as a stationary mask in the world, with rgb being used to tint the clouds, and the alpha used to draw clouds. + +Drawing Controls (When drawing either weight, or color): +Scroll Wheel: Scale up and down brush size +Left Mouse Button: Paint Clouds +Ctrl+Left Mouse Button: Erase Clouds +Escape: Disable draw mode" +autowrap_mode = 3 + +[node name="HSeparator" type="HSeparator" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer"] +custom_minimum_size = Vector2(0, 17.4) +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 10 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 10 + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="CloudsWeight" type="TextureButton" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(50, 50) +layout_mode = 2 +tooltip_text = "Draw Cloud Weight" +focus_mode = 0 +toggle_mode = true +texture_normal = ExtResource("7_8l8c2") +texture_pressed = ExtResource("8_w3q10") +texture_hover = ExtResource("9_kg56n") +ignore_texture_size = true +stretch_mode = 4 + +[node name="CloudsColor" type="TextureButton" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(50, 50) +layout_mode = 2 +tooltip_text = "Draw Cloud Color" +focus_mode = 0 +toggle_mode = true +texture_normal = ExtResource("10_6j812") +texture_pressed = ExtResource("11_20jq1") +texture_hover = ExtResource("12_lwakg") +ignore_texture_size = true +stretch_mode = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 25 +alignment = 2 + +[node name="Button" type="Button" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/HBoxContainer"] +layout_mode = 2 +tooltip_text = "Will fill the mask with the selected color and draw strength (This cannot be undone, make backups of your mask texture)." +focus_mode = 0 +theme_override_colors/font_hover_color = Color(1, 0.1, 0, 0.968627) +theme_override_colors/font_color = Color(0.94, 0.313333, 0, 0.682353) +text = "Flood Fill mask" + +[node name="HSeparator" type="HSeparator" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 17.4) +layout_mode = 2 + +[node name="GridContainer" type="GridContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 20 +columns = 2 +script = ExtResource("13_w3q10") +TargetColumnCount = 2 +MinimumColumnSize = 250.0 + +[node name="ColorPicker" type="ColorPicker" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 0 +size_flags_vertical = 0 +theme_override_constants/sv_width = 240 +theme_override_constants/sv_height = 155 +edit_alpha = false +color_mode = 3 +sampler_visible = false +presets_visible = false + +[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label2" type="Label" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer"] +layout_mode = 2 +text = "Draw Strength:" + +[node name="Strength" type="HSlider" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer"] +layout_mode = 2 +max_value = 5.0 +step = 0.0 +value = 0.5 + +[node name="Label3" type="Label" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer"] +layout_mode = 2 +text = "Draw Sharpness:" + +[node name="Sharpness" type="HSlider" parent="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/GridContainer/VBoxContainer"] +layout_mode = 2 +min_value = 0.05 +max_value = 0.95 +step = 0.0 +value = 0.2 + +[node name="HSeparator" type="HSeparator" parent="ScrollContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 50) +layout_mode = 2 + +[connection signal="text_submitted" from="ScrollContainer/VBoxContainer/HBoxContainer/LineEdit" to="." method="UpdateMaskSettings" unbinds=1] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/MaskBuildButton" to="." method="UpdateMaskSettings"] +[connection signal="value_changed" from="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Resolution/SpinBox" to="." method="UpdateMaskSettings" unbinds=1] +[connection signal="value_changed" from="ScrollContainer/VBoxContainer/MaskSettings/VBoxContainer/Width/SpinBox" to="." method="UpdateMaskSettings" unbinds=1] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer/CheckButton" to="." method="SetCloudsUpdating"] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/PanelContainer/VBoxContainer/VBoxContainer/DriverQueryButton" to="." method="RefreshSceneNode"] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MaskUsageCheckButton" to="." method="UpdateMaskSettings"] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/CloudsWeight" to="." method="DrawWeightToggled"] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/CloudsColor" to="." method="DrawColorToggled"] +[connection signal="pressed" from="ScrollContainer/VBoxContainer/DrawTools/VBoxContainer/MarginContainer/VBoxContainer/HBoxContainer/HBoxContainer/Button" to="." method="FloodFill"] diff --git a/source/addons/SunshineClouds2/Dock/DockPanelStyle.tres b/source/addons/SunshineClouds2/Dock/DockPanelStyle.tres new file mode 100644 index 0000000..a11d038 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/DockPanelStyle.tres @@ -0,0 +1,4 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://dl1aqqpt5iprl"] + +[resource] +bg_color = Color(0.1302, 0.16345, 0.21, 0.564706) diff --git a/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg b/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg new file mode 100644 index 0000000..b004732 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg.import b/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg.import new file mode 100644 index 0000000..c002675 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l06i8g7p2msv" +path="res://.godot/imported/caret-down-solid.svg-b4d9f42bb77b5f046534db9fb6ce3529.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/caret-down-solid.svg" +dest_files=["res://.godot/imported/caret-down-solid.svg-b4d9f42bb77b5f046534db9fb6ce3529.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg b/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg new file mode 100644 index 0000000..c8e6734 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg.import b/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg.import new file mode 100644 index 0000000..9e1c2aa --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://smkr8vss70le" +path="res://.godot/imported/caret-up-solid.svg-d500cf31184acfd701f905947788a1ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/caret-up-solid.svg" +dest_files=["res://.godot/imported/caret-up-solid.svg-d500cf31184acfd701f905947788a1ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg new file mode 100644 index 0000000..e6320fa --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg.import b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg.import new file mode 100644 index 0000000..9128ab9 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://lr3flf2kgx3g" +path="res://.godot/imported/cloud-solid-hovered.svg-5915ad0b501f94dd6ac2943fa2d9b9ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/cloud-solid-hovered.svg" +dest_files=["res://.godot/imported/cloud-solid-hovered.svg-5915ad0b501f94dd6ac2943fa2d9b9ee.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg new file mode 100644 index 0000000..2bf52ea --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg.import b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg.import new file mode 100644 index 0000000..d34e6a2 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s862ukpen76d" +path="res://.godot/imported/cloud-solid-toggled.svg-9ab110cc1532b9330c92af51d0a84250.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/cloud-solid-toggled.svg" +dest_files=["res://.godot/imported/cloud-solid-toggled.svg-9ab110cc1532b9330c92af51d0a84250.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg new file mode 100644 index 0000000..ccc8b22 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg.import b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg.import new file mode 100644 index 0000000..bb8e2ef --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/cloud-solid.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwbw6ov5xxrkq" +path="res://.godot/imported/cloud-solid.svg-aeca2f6427f3dee8809ef0f3335ef2ec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/cloud-solid.svg" +dest_files=["res://.godot/imported/cloud-solid.svg-aeca2f6427f3dee8809ef0f3335ef2ec.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg new file mode 100644 index 0000000..73f15f1 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg.import b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg.import new file mode 100644 index 0000000..486cde3 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0orkqlt3nybm" +path="res://.godot/imported/paintbrush-solid-hovered.svg-884c7bfe6963ebc68bd6679cc8b93430.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid-hovered.svg" +dest_files=["res://.godot/imported/paintbrush-solid-hovered.svg-884c7bfe6963ebc68bd6679cc8b93430.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg new file mode 100644 index 0000000..d9cfd4f --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg.import b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg.import new file mode 100644 index 0000000..7a65999 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctwabn07mc0k7" +path="res://.godot/imported/paintbrush-solid-toggled.svg-9dba8ea6578f4d62c8d8ac5f0866c965.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid-toggled.svg" +dest_files=["res://.godot/imported/paintbrush-solid-toggled.svg-9dba8ea6578f4d62c8d8ac5f0866c965.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg new file mode 100644 index 0000000..d90e22d --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg @@ -0,0 +1,37 @@ + + + + + + + diff --git a/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg.import b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg.import new file mode 100644 index 0000000..bf503fa --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpwhekui78xl1" +path="res://.godot/imported/paintbrush-solid.svg-45fae2590479fea3f32802be20a762e4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/Icons/paintbrush-solid.svg" +dest_files=["res://.godot/imported/paintbrush-solid.svg-45fae2590479fea3f32802be20a762e4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl b/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl new file mode 100644 index 0000000..f05d7f7 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl @@ -0,0 +1,49 @@ +#[compute] +#version 450 + +layout(local_size_x = 32, local_size_y = 32, local_size_z = 1) in; + +layout(rgba16f, binding = 0) uniform image2D mask_image; + +layout(push_constant, std430) uniform Params { + vec2 brush_position; + float brush_radius; + float brush_sharpness; + + float brush_strength; + float editingtype; + float mask_resolution; + float reserved; + + vec4 brush_value; +} params; + +void main() { + ivec2 uv = ivec2(gl_GlobalInvocationID.xy); + ivec2 size = ivec2(params.mask_resolution); + + if (uv.x >= size.x || uv.y >= size.y) { + return; + } + + vec4 current = imageLoad(mask_image, uv); + float delta = 1.0 - smoothstep(params.brush_sharpness, 1.0, clamp(distance(params.brush_position, uv) / params.brush_radius, 0.0, 1.0)); + switch (int(params.editingtype)) { + case 0: //draw weight (alpha channel) + if (params.brush_strength > 0.0){ + current.a = min(current.a + (delta * params.brush_strength), 1.0); + } + else{ + current.a = max(current.a - (delta * abs(params.brush_strength)), 0.0); + } + break; + case 1: //draw color rgb + current.rgb = mix(current.rgb, params.brush_value.rgb, delta * params.brush_strength); + break; + case 2: //set value all + current = params.brush_value; + break; + } + + imageStore(mask_image, uv, current); +} \ No newline at end of file diff --git a/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl.import b/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl.import new file mode 100644 index 0000000..1929ed5 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl.import @@ -0,0 +1,14 @@ +[remap] + +importer="glsl" +type="RDShaderFile" +uid="uid://ck1yv82gbxncv" +path="res://.godot/imported/MaskDrawingCompute.glsl-673e2cf943808157ccf1bdd56ce2cf1f.res" + +[deps] + +source_file="res://addons/SunshineClouds2/Dock/MaskDrawingCompute.glsl" +dest_files=["res://.godot/imported/MaskDrawingCompute.glsl-673e2cf943808157ccf1bdd56ce2cf1f.res"] + +[params] + diff --git a/source/addons/SunshineClouds2/Dock/Materials/DrawBrushToolsMaterial.tres b/source/addons/SunshineClouds2/Dock/Materials/DrawBrushToolsMaterial.tres new file mode 100644 index 0000000..ee18cd9 --- /dev/null +++ b/source/addons/SunshineClouds2/Dock/Materials/DrawBrushToolsMaterial.tres @@ -0,0 +1,23 @@ +[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://b3fgicfsq7yvh"] + +[sub_resource type="Gradient" id="Gradient_t2125"] +offsets = PackedFloat32Array(0, 0.911197, 0.945946, 1) +colors = PackedColorArray(1, 1, 1, 0.0784314, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_2n21o"] +gradient = SubResource("Gradient_t2125") +width = 2048 +height = 2048 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[resource] +transparency = 1 +cull_mode = 2 +depth_draw_mode = 2 +no_depth_test = true +shading_mode = 0 +disable_fog = true +albedo_color = Color(0.769578, 0.731927, 0.149317, 1) +albedo_texture = SubResource("GradientTexture2D_2n21o") diff --git a/source/addons/SunshineClouds2/ExampleCloudsResource.tres b/source/addons/SunshineClouds2/ExampleCloudsResource.tres new file mode 100644 index 0000000..96c86f0 --- /dev/null +++ b/source/addons/SunshineClouds2/ExampleCloudsResource.tres @@ -0,0 +1,77 @@ +[gd_resource type="CompositorEffect" script_class="SunshineCloudsGD" load_steps=11 format=3 uid="uid://lftlvgnckiw"] + +[ext_resource type="RDShaderFile" uid="uid://dx1y5cye1m1hu" path="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" id="1_yndmv"] +[ext_resource type="CompressedTexture3D" uid="uid://dei12lsgrjpyu" path="res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga" id="2_tfvib"] +[ext_resource type="CompressedTexture3D" uid="uid://b3uyfsp4in821" path="res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png" id="3_ueybc"] +[ext_resource type="Texture2D" uid="uid://nqybc2s70fwk" path="res://CloudsMask.exr" id="4_yndmv"] +[ext_resource type="Texture2D" uid="uid://g02m2ewpwusq" path="res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres" id="5_mx051"] +[ext_resource type="NoiseTexture3D" uid="uid://6ed3lvlpbqmg" path="res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres" id="6_nhpek"] +[ext_resource type="RDShaderFile" uid="uid://chxheyp4eohbc" path="res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl" id="8_jjdov"] +[ext_resource type="RDShaderFile" uid="uid://crfpk8ta4qxsk" path="res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl" id="9_cr0n2"] +[ext_resource type="Script" uid="uid://dnblgqynq1t7l" path="res://addons/SunshineClouds2/SunshineClouds.gd" id="10_08sum"] +[ext_resource type="NoiseTexture3D" uid="uid://bnck2kxeg5bkg" path="res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres" id="11_ea8oe"] + +[resource] +resource_local_to_scene = false +resource_name = "" +enabled = true +effect_callback_type = 3 +access_resolved_color = true +access_resolved_depth = true +needs_motion_vectors = true +needs_normal_roughness = false +script = ExtResource("10_08sum") +clouds_coverage = 0.726 +clouds_density = 1.0 +atmospheric_density = 0.5 +lighting_density = 0.55 +fog_effect_ground = 1.0 +clouds_anisotropy = 0.057 +cloud_ambient_color = Color(1, 1, 1, 1) +cloud_ambient_tint = Color(0.1276, 0.18766, 0.22, 1) +atmosphere_color = Color(0.280153, 0.544962, 0.759771, 1) +ambient_occlusion_color = Color(0.693375, 0.223129, 0, 0.466667) +accumulation_decay = 0.8 +extra_large_noise_scale = 298497.0 +large_noise_scale = 85138.6 +medium_noise_scale = 20043.3 +small_noise_scale = 6901.78 +clouds_sharpness = 0.5 +clouds_detail_power = 0.0 +curl_noise_strength = 6184.1 +lighting_sharpness = 0.34 +cloud_floor = 1500.0 +cloud_ceiling = 15000.0 +max_step_count = 300.0 +max_lighting_steps = 32.0 +resolution_scale = 1 +lod_bias = 1.0 +dither_noise = ExtResource("3_ueybc") +height_gradient = ExtResource("5_mx051") +extra_large_noise_patterns = ExtResource("4_yndmv") +large_scale_noise = ExtResource("6_nhpek") +medium_scale_noise = ExtResource("2_tfvib") +small_scale_noise = ExtResource("11_ea8oe") +curl_noise = ExtResource("2_tfvib") +dither_speed = 100.825 +blur_power = 1.0 +blur_quality = 1.0 +reflections_globalshaderparam = "" +min_step_distance = 100.0 +max_step_distance = 600.0 +lighting_travel_distance = 8000.0 +extra_large_used_as_mask = true +mask_width_km = 512.0 +pre_pass_compute_shader = ExtResource("9_cr0n2") +compute_shader = ExtResource("1_yndmv") +post_pass_compute_shader = ExtResource("8_jjdov") +origin_offset = Vector3(0, 0, 0) +wind_direction = Vector3(1, 0, 1) +extra_large_scale_clouds_position = Vector3(109661, 0, 109661) +large_scale_clouds_position = Vector3(21006.4, 0, 21006.4) +medium_scale_clouds_position = Vector3(3193.39, 0, 3193.39) +detail_clouds_position = Vector3(859.701, -859.701, 859.701) +current_time = 274.928 +directional_lights_data = Array[Vector4]([Vector4(0.240525, 0.876693, -0.416602, 32), Vector4(1, 1, 1, 1)]) +point_lights_data = Array[Vector4]([]) +point_effector_data = Array[Vector4]([]) diff --git a/source/addons/SunshineClouds2/ExampleScene.tscn b/source/addons/SunshineClouds2/ExampleScene.tscn new file mode 100644 index 0000000..f8596fd --- /dev/null +++ b/source/addons/SunshineClouds2/ExampleScene.tscn @@ -0,0 +1,103 @@ +[gd_scene load_steps=11 format=3 uid="uid://c1jy5gwigpsrl"] + +[ext_resource type="CompositorEffect" uid="uid://v0kty216hlxo" path="res://NewCloudsGD.tres" id="1_nv18y"] +[ext_resource type="Script" uid="uid://bxlm4e5qfb7uu" path="res://addons/SunshineClouds2/SunshineCloudEffector.gd" id="3_afwv5"] +[ext_resource type="Script" uid="uid://djusduuxf0voj" path="res://addons/SunshineClouds2/SunshineCloudsDriver.gd" id="3_unbdf"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_unbdf"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) + +[sub_resource type="Sky" id="Sky_nuogy"] +sky_material = SubResource("ProceduralSkyMaterial_unbdf") + +[sub_resource type="Environment" id="Environment_ftegy"] +background_mode = 2 +sky = SubResource("Sky_nuogy") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="Compositor" id="Compositor_nuogy"] +compositor_effects = Array[CompositorEffect]([ExtResource("1_nv18y")]) + +[sub_resource type="CylinderMesh" id="CylinderMesh_o8tia"] +height = 1.0 + +[sub_resource type="PlaneMesh" id="PlaneMesh_o8tia"] +size = Vector2(10, 10) + +[sub_resource type="CapsuleMesh" id="CapsuleMesh_nv18y"] + +[node name="ExampleScene" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_ftegy") +compositor = SubResource("Compositor_nuogy") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866025, -0.28213, 0.412798, 0, 0.825596, 0.564261, -0.5, 0.488664, -0.714988, -8, 2, -2) +shadow_enabled = true + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1000, 0, 0, 0, 12000, 0, 0, 0, 1000, 6000, 6000, 0) +mesh = SubResource("CylinderMesh_o8tia") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +transform = Transform3D(1000, 0, 0, 0, 12000, 0, 0, 0, 1000, 6000, 6000, -40000) +mesh = SubResource("CylinderMesh_o8tia") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +transform = Transform3D(1000, 0, 0, 0, 12000, 0, 0, 0, 1000, 6000, 6000, -20000) +mesh = SubResource("CylinderMesh_o8tia") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="."] +transform = Transform3D(1000, 0, 0, 0, 12000, 0, 0, 0, 1000, 6000, 6000, -60000) +mesh = SubResource("CylinderMesh_o8tia") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="."] +transform = Transform3D(1000, 0, 0, 0, 12000, 0, 0, 0, 1000, 6000, 6000, -80000) +mesh = SubResource("CylinderMesh_o8tia") + +[node name="MeshInstance3D6" type="MeshInstance3D" parent="."] +mesh = SubResource("PlaneMesh_o8tia") + +[node name="MeshInstance3D7" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +mesh = SubResource("CapsuleMesh_nv18y") + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 0.985589, 0.16916, 0, -0.16916, 0.985589, 0, 2.61482, -5.55018) +modulate = Color(0, 0, 0, 1) +text = "This is an example scene, +please note the quality settings are all set to high, +this is mostly just an example, +feel free to try turning down the settings." +font_size = 128 + +[node name="OmniLight3D" type="OmniLight3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10743.6, 6693.89, -43458.2) +light_color = Color(0.76, 0.374933, 0.1824, 1) +light_energy = 11.685 +omni_range = 20000.0 + +[node name="SunshineCloudsEffector" type="Node3D" parent="."] +transform = Transform3D(0.241651, 0, 0.970363, 0, 1, 0, -0.970363, 0, 0.241651, 19316.8, -2863.07, -3971.34) +script = ExtResource("3_afwv5") +Radius = 18900.9 +Power = 1.18 +metadata/_custom_type_script = "uid://bxlm4e5qfb7uu" + +[node name="SunshineCloudsDriverGD" type="Node" parent="." node_paths=PackedStringArray("tracked_directional_lights", "tracked_point_lights", "tracked_point_effectors")] +script = ExtResource("3_unbdf") +update_continuously = true +clouds_resource = ExtResource("1_nv18y") +ambience_sample_environment = SubResource("Environment_ftegy") +tracked_directional_lights = [NodePath("../DirectionalLight3D")] +tracked_directional_light_shadow_steps = Array[int]([32]) +tracked_point_lights = [NodePath("../OmniLight3D")] +tracked_point_effectors = [NodePath("../SunshineCloudsEffector")] +metadata/_custom_type_script = "uid://djusduuxf0voj" + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 12376.3, 3579.21) +far = 400000.0 diff --git a/source/addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres b/source/addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres new file mode 100644 index 0000000..7b79ea8 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres @@ -0,0 +1,15 @@ +[gd_resource type="NoiseTexture2D" load_steps=3 format=3 uid="uid://de2nsujnhdlg0"] + +[sub_resource type="Gradient" id="Gradient_uclom"] +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_w4rkf"] +frequency = 0.0039 + +[resource] +width = 1024 +height = 1024 +noise = SubResource("FastNoiseLite_w4rkf") +color_ramp = SubResource("Gradient_uclom") +seamless = true +seamless_blend_skirt = 0.3 diff --git a/source/addons/SunshineClouds2/NoiseTextures/HeightGradient.tres b/source/addons/SunshineClouds2/NoiseTextures/HeightGradient.tres new file mode 100644 index 0000000..96cd744 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/HeightGradient.tres @@ -0,0 +1,9 @@ +[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://g02m2ewpwusq"] + +[sub_resource type="Gradient" id="Gradient_x3ayj"] +interpolation_mode = 2 +offsets = PackedFloat32Array(0, 0.0707071, 0.179293, 0.560472, 0.876033, 1) +colors = PackedColorArray(0, 0.278431, 1, 0, 1, 0.847059, 1, 0.478431, 0.93, 1, 1, 0.917647, 0.866667, 1, 0.894118, 1, 0.8, 0.898039, 0.560784, 1, 0, 0.92549, 0.345098, 1) + +[resource] +gradient = SubResource("Gradient_x3ayj") diff --git a/source/addons/SunshineClouds2/NoiseTextures/HeightGradient2.tres b/source/addons/SunshineClouds2/NoiseTextures/HeightGradient2.tres new file mode 100644 index 0000000..d924b7d --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/HeightGradient2.tres @@ -0,0 +1,8 @@ +[gd_resource type="GradientTexture1D" load_steps=2 format=3 uid="uid://cacgk3h78y717"] + +[sub_resource type="Gradient" id="Gradient_lleky"] +offsets = PackedFloat32Array(0, 0.524823, 0.947658, 1) +colors = PackedColorArray(0, 0, 0, 1, 0.230669, 0.230669, 0.230669, 1, 1, 1, 1, 1, 0, 0, 0, 1) + +[resource] +gradient = SubResource("Gradient_lleky") diff --git a/source/addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres b/source/addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres new file mode 100644 index 0000000..8cec986 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres @@ -0,0 +1,15 @@ +[gd_resource type="NoiseTexture3D" load_steps=2 format=3 uid="uid://6ed3lvlpbqmg"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_o0m1u"] +noise_type = 2 +seed = 2 +frequency = 0.0382 + +[resource] +width = 128 +height = 128 +depth = 128 +noise = SubResource("FastNoiseLite_o0m1u") +seamless = true +invert = true +seamless_blend_skirt = 0.487 diff --git a/source/addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres b/source/addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres new file mode 100644 index 0000000..ff7c02e --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres @@ -0,0 +1,14 @@ +[gd_resource type="NoiseTexture3D" load_steps=2 format=3 uid="uid://dxyewgt7o40m0"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_n1wlf"] +noise_type = 2 +seed = 1 +frequency = 0.0306 + +[resource] +width = 128 +height = 128 +depth = 128 +noise = SubResource("FastNoiseLite_n1wlf") +seamless = true +seamless_blend_skirt = 0.2 diff --git a/source/addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres b/source/addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres new file mode 100644 index 0000000..2294cd7 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres @@ -0,0 +1,14 @@ +[gd_resource type="NoiseTexture3D" load_steps=2 format=3 uid="uid://bnck2kxeg5bkg"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_j7bl3"] +noise_type = 2 +seed = 2 +frequency = 0.0727 + +[resource] +width = 128 +height = 128 +depth = 128 +noise = SubResource("FastNoiseLite_j7bl3") +seamless = true +seamless_blend_skirt = 0.2 diff --git a/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png b/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png new file mode 100644 index 0000000..63cdf56 Binary files /dev/null and b/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png differ diff --git a/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png.import b/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png.import new file mode 100644 index 0000000..66a7754 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png.import @@ -0,0 +1,28 @@ +[remap] + +importer="3d_texture" +type="CompressedTexture3D" +uid="uid://b3uyfsp4in821" +path="res://.godot/imported/bluenoise_Dither.png-46e0852a591171c905cd8bf2cebacaaf.ctex3d" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png" +dest_files=["res://.godot/imported/bluenoise_Dither.png-46e0852a591171c905cd8bf2cebacaaf.ctex3d"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=64 +slices/vertical=1 diff --git a/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png new file mode 100644 index 0000000..825e585 Binary files /dev/null and b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png differ diff --git a/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png.import b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png.import new file mode 100644 index 0000000..d9e294e --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png.import @@ -0,0 +1,28 @@ +[remap] + +importer="3d_texture" +type="CompressedTexture3D" +uid="uid://vqffslc1jg22" +path="res://.godot/imported/curl_noise_packed.png-1f924e8248766874efc15bc188bf7381.ctex3d" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/NoiseTextures/curl_noise_packed.png" +dest_files=["res://.godot/imported/curl_noise_packed.png-1f924e8248766874efc15bc188bf7381.ctex3d"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=128 +slices/vertical=1 diff --git a/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga new file mode 100644 index 0000000..90e9d16 Binary files /dev/null and b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga differ diff --git a/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga.import b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga.import new file mode 100644 index 0000000..2b21029 --- /dev/null +++ b/source/addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga.import @@ -0,0 +1,28 @@ +[remap] + +importer="3d_texture" +type="CompressedTexture3D" +uid="uid://dei12lsgrjpyu" +path="res://.godot/imported/curl_noise_varied.tga-e11e3fd1c7a5a54eebcff93a4ba19ea5.ctex3d" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga" +dest_files=["res://.godot/imported/curl_noise_varied.tga-e11e3fd1c7a5a54eebcff93a4ba19ea5.ctex3d"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +slices/horizontal=128 +slices/vertical=1 diff --git a/source/addons/SunshineClouds2/SunshineCloudEffector.gd b/source/addons/SunshineClouds2/SunshineCloudEffector.gd new file mode 100644 index 0000000..7ad0a58 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudEffector.gd @@ -0,0 +1,6 @@ +@tool +extends Node3D +class_name SunshineCloudsEffector + +@export_range(0.01, 100000.0) var Radius : float = 1000.0 +@export_range(-100.0, 100.0) var Power : float = 5.0 diff --git a/source/addons/SunshineClouds2/SunshineCloudEffector.gd.uid b/source/addons/SunshineClouds2/SunshineCloudEffector.gd.uid new file mode 100644 index 0000000..6683a3b --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudEffector.gd.uid @@ -0,0 +1 @@ +uid://bxlm4e5qfb7uu diff --git a/source/addons/SunshineClouds2/SunshineClouds.cs b/source/addons/SunshineClouds2/SunshineClouds.cs new file mode 100644 index 0000000..06d217d --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds.cs @@ -0,0 +1,989 @@ +using Godot; +using Godot.NativeInterop; +using System; +using System.Collections.Generic; +using System.Linq; + +[Tool] +[GlobalClass] +public partial class SunshineClouds : CompositorEffect +{ + [ExportGroup("Basic Settings")] + [Export(PropertyHint.Range, "0,1")] public float CloudsCoverage { get { return _cloudsCoverage; } set { _cloudsCoverage = value; } } + private float _cloudsCoverage = 0.6f; + [Export(PropertyHint.Range, "0,20")] public float CloudsDensity { get { return _cloudsDensity; } set { _cloudsDensity = value; } } + private float _cloudsDensity = 1.0f; + [Export(PropertyHint.Range, "0,1")] public float AtmosphericDensity { get { return _atmosphericDensity; } set { _atmosphericDensity = value; } } + private float _atmosphericDensity = 0.5f; + + [ExportSubgroup("Colors")] + [Export(PropertyHint.Range, "0,0.5")] public float CloudsAnisotropy { get { return _cloudsAnisotropy; } set { _cloudsAnisotropy = value; } } + private float _cloudsAnisotropy = 0.3f; + [Export] public Color CloudAmbientColor { get; set; } = new Color(0.352f, 0.624f, 0.784f, 1.0f); + [Export] public Color CloudAmbientTint { get; set; } = new Color(1.0f, 1.0f, 1.0f, 1.0f); + [Export] public Color AtmosphereColor { get; set; } = new Color(0.801f, 0.893f, 0.962f, 1.0f); + [Export] public Color AmbientOcclusionColor { get; set; } = new Color(0.17f, 0.044f, 0.027f, 0.549f); + + [ExportSubgroup("Structure")] + [Export(PropertyHint.Range, "0,1")] public float AccumilationDecay { get { return _accumilationDecay; } set { _accumilationDecay = value; } } + private float _accumilationDecay = 0.5f; + [Export(PropertyHint.Range, "100,1000000")] public float ExtraLargeNoiseScale { get { return _extraLargeNoiseScale; } set { _extraLargeNoiseScale = value; } } + private float _extraLargeNoiseScale = 320000.0f; + [Export(PropertyHint.Range, "100,500000")] public float LargeNoiseScale { get { return _largeNoiseScale; } set { _largeNoiseScale = value; } } + private float _largeNoiseScale = 50000.0f; + [Export(PropertyHint.Range, "100,100000")] public float MediumNoiseScale { get { return _mediumNoiseScale; } set { _mediumNoiseScale = value; } } + private float _mediumNoiseScale = 6000.0f; + [Export(PropertyHint.Range, "100,10000")] public float SmallNoiseScale { get { return _smallNoiseScale; } set { _smallNoiseScale = value; } } + private float _smallNoiseScale = 2500.0f; + + [Export(PropertyHint.Range, "0.001,1.0")] public float CloudsSharpness { get { return _cloudsSharpness; } set { _cloudsSharpness = value; } } + private float _cloudsSharpness = 1.0f; + [Export(PropertyHint.Range, "0,3")] public float CloudsDetailPower { get { return _cloudsDetailPower; } set { _cloudsDetailPower = value; } } + private float _cloudsDetailPower = 0.9f; + [Export(PropertyHint.Range, "0,50000")] public float CurlNoiseStrength { get { return _curlNoiseStrength; } set { _curlNoiseStrength = value; } } + private float _curlNoiseStrength = 5000.0f; + + [Export(PropertyHint.Range, "0,2")] public float LightingSharpness { get { return _lightingSharpness; } set { _lightingSharpness = value; } } + private float _lightingSharpness = 0.05f; + [Export(PropertyHint.Range, "0,10")] public float LightingDensity { get { return _lightingDensity; } set { _lightingDensity = value; } } + private float _lightingDensity = 0.55f; + + [Export] public float CloudFloor { get { return _cloudFloor; } set { _cloudFloor = value; } } + private float _cloudFloor = 1500.0f; + [Export] public float CloudCeiling { get { return _cloudCeiling; } set { _cloudCeiling = value; } } + private float _cloudCeiling = 25000.0f; + + + + [ExportSubgroup("Performance")] + [Export] public int MaxStepCount { get { return _maxStepCount; } set { _maxStepCount = value; } } + private int _maxStepCount = 50; + [Export] public int MaxLightingSteps { get { return _maxLightingSteps; } set { _maxLightingSteps = value; } } + private int _maxLightingSteps = 32; + + [Export(PropertyHint.Enum, "Native,Quarter,Eighth,Sixteenth")] public int ResolutionScale { get { return _resolutionScale; } set { _resolutionScale = value; _lastSize = Vector2I.Zero; } } + private int _resolutionScale = 0; + + [Export(PropertyHint.Range, "0,2")] public float LODBias { get { return _LODBias; } set { _LODBias = value; } } + private float _LODBias = 1.0f; + + [ExportSubgroup("Noise Textures")] + [Export] public Texture3D DitherNoise { get { return _DitherNoise; } set { _DitherNoise = value; } } + private Texture3D _DitherNoise; + [Export] public Texture2D HeightGradient { get { return _HeightGradient; } set { _HeightGradient = value; } } + private Texture2D _HeightGradient; + [Export] public Texture2D ExtraLargeNoisePatterns { get { return _ExtraLargeNoisePatterns; } set { _ExtraLargeNoisePatterns = value; } } + private Texture2D _ExtraLargeNoisePatterns; + [Export] public Texture3D LargeScaleNoise { get { return _LargeScaleNoise; } set { _LargeScaleNoise = value; } } + private Texture3D _LargeScaleNoise; + [Export] public Texture3D MediumScaleNoise { get { return _MediumScaleNoise; } set { _MediumScaleNoise = value; } } + private Texture3D _MediumScaleNoise; + [Export] public Texture3D SmallScaleNoise { get { return _SmallScaleNoise; } set { _SmallScaleNoise = value; } } + private Texture3D _SmallScaleNoise; + [Export] public Texture3D CurlNoise { get { return _CurlNoise; } set { _CurlNoise = value; } } + private Texture3D _CurlNoise; + + + [ExportGroup("Advanced Settings")] + [ExportSubgroup("Visuals")] + [Export(PropertyHint.Range, "0,1000")] public float DitherSpeed { get { return _ditherSpeed; } set { _ditherSpeed = value; } } + private float _ditherSpeed = 100.8254f; + [Export(PropertyHint.Range, "0,20")] public float BlurPower { get { return _blurPower; } set { _blurPower = value; } } + private float _blurPower = 2.0f; + [Export(PropertyHint.Range, "0,6")] public float BlurQuality { get { return _blurQuality; } set { _blurQuality = value; } } + private float _blurQuality = 1.0f; + + [ExportSubgroup("Performance")] + [Export] public float MinStepDistance { get { return _minStepDistance; } set { _minStepDistance = value; } } + private float _minStepDistance = 100.0f; + [Export] public float MaxStepDistance { get { return _maxStepDistance; } set { _maxStepDistance = value; } } + private float _maxStepDistance = 600.0f; + + [Export] public float LightingTravelDistance { get { return _lightingTravelDistance; } set { _lightingTravelDistance = value; } } + private float _lightingTravelDistance = 5000.0f; + + [ExportGroup("Compute Shaders")] + [Export(PropertyHint.File, "*.glsl")] public RDShaderFile PrePassComputeShader; + [Export(PropertyHint.File, "*.glsl")] public RDShaderFile ComputeShader; + [Export(PropertyHint.File, "*.glsl")] public RDShaderFile PostPassComputeShader; + + [ExportGroup("Internal Use")] + [ExportSubgroup("Positions")] + [Export] public Vector3 WindDirection { get; set; } = Vector3.Zero; + [Export] public Vector3 ExtraLargeScaleCloudsPosition { get; set; } = Vector3.Zero; + [Export] public Vector3 LargeScaleCloudsPosition { get; set; } = Vector3.Zero; + [Export] public Vector3 MediumScaleCloudsPosition { get; set; } = Vector3.Zero; + [Export] public Vector3 DetailCloudsPosition { get; set; } = Vector3.Zero; + [Export] public float CurrentTime { get; set; } = 0.0f; + [ExportSubgroup("Light Data")] + [Export] public Godot.Collections.Array DirectionalLightsData { get; set; } = new Godot.Collections.Array(); + [Export] public Godot.Collections.Array PointLightsData { get; set; } = new Godot.Collections.Array(); + + public bool LightsUpdated { get; set; } = false; + + private RenderingDevice _rd; + private Rid _shader = new Rid(); + private Rid _pipeline = new Rid(); + + private Rid _prepass_shader = new Rid(); + private Rid _prepass_pipeline = new Rid(); + + private Rid _postpass_shader = new Rid(); + private Rid _postpass_pipeline = new Rid(); + + private Rid _nearestSampler = new Rid(); + private Rid _linearSampler = new Rid(); + private Rid _linearSamplerNoRepeat = new Rid(); + + private Rid _generalDataBuffer = new Rid(); + private Rid _lightDataBuffer = new Rid(); + private Rid[] _accumulationTextures; + private Rid _resizedDepth = new Rid(); + private byte[] _pushConstants; + private byte[] _prepasspushConstants; + private byte[] _postpasspushConstants; + private Vector2I _lastSize = new Vector2I(0,0); + + private RenderSceneBuffersRD _buffers; + + + private Rid[] _uniformSets; + private float[] _generalDataFloats = new float[112]; + private byte[] _generalData = new byte[448]; + + private float[] _lightDataFloats = new float[96]; + private byte[] _lightData = new byte[384]; + + private bool _accumulationisA = false; + + private Transform3D? _lastViewMat; + private Projection? _lastProjectionMat; + + private int _filterIndex = 0; + + public SunshineClouds() + { + EffectCallbackType = EffectCallbackTypeEnum.PostSky; + AccessResolvedDepth = true; + AccessResolvedColor = true; + NeedsMotionVectors = true; + + RenderingServer.CallOnRenderThread(Callable.From(InitializeCompute)); + } + + + public override void _Notification(int what) + { + if (what == NotificationPredelete) + { + RenderingServer.CallOnRenderThread(Callable.From(ClearCompute)); + } + } + + private void ClearCompute() + { + //GD.Print("clearing compute"); + if (_rd != null) + { + if (_shader.IsValid) _rd.FreeRid(_shader); + _shader = new Rid(); + + if (_prepass_shader.IsValid) _rd.FreeRid(_prepass_shader); + _prepass_shader = new Rid(); + + if (_postpass_shader.IsValid) _rd.FreeRid(_postpass_shader); + _postpass_shader = new Rid(); + + if (_nearestSampler.IsValid) _rd.FreeRid(_nearestSampler); + _nearestSampler = new Rid(); + + if (_linearSampler.IsValid) _rd.FreeRid(_linearSampler); + _linearSampler = new Rid(); + + if (_linearSamplerNoRepeat.IsValid) _rd.FreeRid(_linearSamplerNoRepeat); + _linearSamplerNoRepeat = new Rid(); + + if (_generalDataBuffer.IsValid) _rd.FreeRid(_generalDataBuffer); + _generalDataBuffer = new Rid(); + + if (_lightDataBuffer.IsValid) _rd.FreeRid(_lightDataBuffer); + _lightDataBuffer = new Rid(); + + if (_resizedDepth.IsValid) _rd.FreeRid(_resizedDepth); + _resizedDepth = new Rid(); + + + + if (_accumulationTextures != null) + { + foreach (var item in _accumulationTextures) + { + if (item.IsValid) + { + _rd.FreeRid(item); + } + } + _accumulationTextures = null; + } + + + } + } + + public void InitializeCompute() + { + if (_rd == null) + { + _rd = RenderingServer.GetRenderingDevice(); + + if (_rd == null) + { + Enabled = false; + GD.PrintErr("No rendering device on load."); + return; + } + } + + ClearCompute(); + + RDSamplerState samplerState = new RDSamplerState(); + samplerState.MinFilter = RenderingDevice.SamplerFilter.Nearest; + samplerState.MagFilter = RenderingDevice.SamplerFilter.Nearest; + samplerState.RepeatU = RenderingDevice.SamplerRepeatMode.Repeat; + samplerState.RepeatV = RenderingDevice.SamplerRepeatMode.Repeat; + samplerState.RepeatW = RenderingDevice.SamplerRepeatMode.Repeat; + _nearestSampler = _rd.SamplerCreate(samplerState); + + RDSamplerState linearsamplerState = new RDSamplerState(); + linearsamplerState.MinFilter = RenderingDevice.SamplerFilter.Linear; + linearsamplerState.MagFilter = RenderingDevice.SamplerFilter.Linear; + linearsamplerState.RepeatU = RenderingDevice.SamplerRepeatMode.Repeat; + linearsamplerState.RepeatV = RenderingDevice.SamplerRepeatMode.Repeat; + linearsamplerState.RepeatW = RenderingDevice.SamplerRepeatMode.Repeat; + _linearSampler = _rd.SamplerCreate(linearsamplerState); + + + RDSamplerState linearsamplerStateNoRepeat = new RDSamplerState(); + linearsamplerStateNoRepeat.MinFilter = RenderingDevice.SamplerFilter.Linear; + linearsamplerStateNoRepeat.MagFilter = RenderingDevice.SamplerFilter.Linear; + linearsamplerStateNoRepeat.RepeatU = RenderingDevice.SamplerRepeatMode.ClampToEdge; + linearsamplerStateNoRepeat.RepeatV = RenderingDevice.SamplerRepeatMode.ClampToEdge; + linearsamplerStateNoRepeat.RepeatW = RenderingDevice.SamplerRepeatMode.ClampToEdge; + _linearSamplerNoRepeat = _rd.SamplerCreate(linearsamplerStateNoRepeat); + + if (DitherNoise == null) { + DitherNoise = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png") as Texture3D; + } + if (HeightGradient == null){ + HeightGradient = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres") as Texture2D; + } + if (ExtraLargeNoisePatterns == null){ + ExtraLargeNoisePatterns = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres") as Texture2D; + } + if (LargeScaleNoise == null){ + LargeScaleNoise = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres") as Texture3D; + } + if (MediumScaleNoise == null){ + MediumScaleNoise = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres") as Texture3D; + } + if (SmallScaleNoise == null){ + SmallScaleNoise = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres") as Texture3D; + } + if (CurlNoise == null){ + CurlNoise = ResourceLoader.Load("res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga") as Texture3D; + } + + + if (ComputeShader == null) + { + ComputeShader = ResourceLoader.Load("res://addons/SunshineClouds2/SunshineCloudsCompute.glsl"); + } + if (PrePassComputeShader == null) + { + PrePassComputeShader = ResourceLoader.Load("res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl"); + } + + if (PostPassComputeShader == null) + { + PostPassComputeShader = ResourceLoader.Load("res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl"); + } + + if (ComputeShader == null || PrePassComputeShader == null || PostPassComputeShader == null) + { + Enabled = false; + GD.PrintErr("No Shader found on load."); + ClearCompute(); + return; + } + + var prepassshaderSpirv = PrePassComputeShader.GetSpirV(); + _prepass_shader = _rd.ShaderCreateFromSpirV(prepassshaderSpirv); + if (_prepass_shader.IsValid) + { + _prepass_pipeline = _rd.ComputePipelineCreate(_prepass_shader); + } + else + { + Enabled = false; + GD.PrintErr("Prepass Shader failed to compile."); + ClearCompute(); + return; + } + + var shaderSpirv = ComputeShader.GetSpirV(); + _shader = _rd.ShaderCreateFromSpirV(shaderSpirv); + if (_shader.IsValid) + { + _pipeline = _rd.ComputePipelineCreate(_shader); + } + else + { + Enabled = false; + GD.PrintErr("Shader failed to compile."); + ClearCompute(); + return; + } + + var postpassshaderSpirv = PostPassComputeShader.GetSpirV(); + _postpass_shader = _rd.ShaderCreateFromSpirV(postpassshaderSpirv); + if (_postpass_shader.IsValid) + { + _postpass_pipeline = _rd.ComputePipelineCreate(_postpass_shader); + } + else + { + Enabled = false; + GD.PrintErr("Post pass Shader failed to compile."); + ClearCompute(); + return; + } + } + + public override void _RenderCallback(int effectCallbackType, RenderData renderData) + { + if (_rd == null) + { + InitializeCompute(); + } + else if (_pipeline.IsValid && HeightGradient != null && ExtraLargeNoisePatterns != null && LargeScaleNoise != null && MediumScaleNoise != null && SmallScaleNoise != null && DitherNoise != null && CurlNoise != null) + { + _buffers = renderData.GetRenderSceneBuffers() as RenderSceneBuffersRD; + if (_buffers != null) + { + Vector2I size = _buffers.GetInternalSize(); + if (size.X == 0 && size.Y == 0) + { + return; + } + + uint resscale = 1; + + switch (ResolutionScale) + { + case 0: //1:1 + resscale = 1; + break; + case 1: //4:1 + resscale = 2; + break; + case 2: //8:1 + resscale = 4; + break; + case 3: //16:1 + resscale = 8; + break; + } + + Vector2I newSize = size; + newSize.X = newSize.X / (int)resscale; + newSize.Y = newSize.Y / (int)resscale; + + uint viewCount = _buffers.GetViewCount(); + + if (size != _lastSize || _uniformSets == null || _uniformSets.Length != viewCount * 3) + { + InitializeCompute(); + + _accumulationTextures = new Rid[viewCount * 6]; + _uniformSets = new Rid[viewCount * 3]; + + //prepass push constants: + float[] prepassData = new float[4]; + _prepasspushConstants = new byte[16]; + + prepassData[0] = size.X; + prepassData[1] = size.Y; + prepassData[2] = resscale; + prepassData[3] = 0.0f; + + Buffer.BlockCopy(prepassData, 0, _prepasspushConstants, 0, 16); + + float[] postpassData = new float[4]; + _postpasspushConstants = new byte[16]; + + postpassData[0] = newSize.X; + postpassData[1] = newSize.Y; + postpassData[2] = resscale; + postpassData[3] = 0.0f; + + Buffer.BlockCopy(postpassData, 0, _postpasspushConstants, 0, 16); + + + for (uint view = 0; view < viewCount; view++) + { + Rid colorImage = _buffers.GetColorLayer(view); + Rid depthImage = _buffers.GetDepthLayer(view); + + var baseColorformat = _rd.TextureGetFormat(colorImage); + baseColorformat.Format = RenderingDevice.DataFormat.R32G32B32A32Sfloat; + baseColorformat.Width = (uint)newSize.X; + baseColorformat.Height = (uint)newSize.Y; + + //then make my data accumilation images. + _accumulationTextures[view * 3] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + _accumulationTextures[view * 3 + 1] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + _accumulationTextures[view * 3 + 2] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + _accumulationTextures[view * 3 + 3] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + _accumulationTextures[view * 3 + 4] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + _accumulationTextures[view * 3 + 5] = _rd.TextureCreate(baseColorformat, new RDTextureView(), null); + + + var depthformat = _rd.TextureGetFormat(depthImage); + depthformat.Width = (uint)newSize.X; + depthformat.Height = (uint)newSize.Y; + depthformat.Format = RenderingDevice.DataFormat.R32Sfloat; + depthformat.UsageBits = RenderingDevice.TextureUsageBits.StorageBit | RenderingDevice.TextureUsageBits.SamplingBit; + _resizedDepth = _rd.TextureCreate(depthformat, new RDTextureView(), null); + + + var _prepassuniformsArray = new Godot.Collections.Array(); + var prepassDepthUniform = new RDUniform(); + prepassDepthUniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + prepassDepthUniform.Binding = 0; + prepassDepthUniform.AddId(_nearestSampler); + prepassDepthUniform.AddId(depthImage); + _prepassuniformsArray.Add(prepassDepthUniform); + + var prepassDepthOutputUniform = new RDUniform(); + prepassDepthOutputUniform.UniformType = RenderingDevice.UniformType.Image; + prepassDepthOutputUniform.Binding = 1; + prepassDepthOutputUniform.AddId(_resizedDepth); + _prepassuniformsArray.Add(prepassDepthOutputUniform); + + _uniformSets[view * 3] = _rd.UniformSetCreate(_prepassuniformsArray, _prepass_shader, 0); + + + var _uniformsArray = new Godot.Collections.Array(); + + var outputDataUniform = new RDUniform(); + outputDataUniform.UniformType = RenderingDevice.UniformType.Image; + outputDataUniform.Binding = 0; + outputDataUniform.AddId(_accumulationTextures[view * 3]); + _uniformsArray.Add(outputDataUniform); + + var outputColorUniform = new RDUniform(); + outputColorUniform.UniformType = RenderingDevice.UniformType.Image; + outputColorUniform.Binding = 1; + outputColorUniform.AddId(_accumulationTextures[view * 3 + 1]); + _uniformsArray.Add(outputColorUniform); + + + var accum1Auniform = new RDUniform(); + accum1Auniform.UniformType = RenderingDevice.UniformType.Image; + accum1Auniform.Binding = 2; + accum1Auniform.AddId(_accumulationTextures[view * 3 + 2]); + _uniformsArray.Add(accum1Auniform); + + var accum1Buniform = new RDUniform(); + accum1Buniform.UniformType = RenderingDevice.UniformType.Image; + accum1Buniform.Binding = 3; + accum1Buniform.AddId(_accumulationTextures[view * 3 + 3]); + _uniformsArray.Add(accum1Buniform); + + var accum2Auniform = new RDUniform(); + accum2Auniform.UniformType = RenderingDevice.UniformType.Image; + accum2Auniform.Binding = 4; + accum2Auniform.AddId(_accumulationTextures[view * 3 + 4]); + _uniformsArray.Add(accum2Auniform); + + var accum2Buniform = new RDUniform(); + accum2Buniform.UniformType = RenderingDevice.UniformType.Image; + accum2Buniform.Binding = 5; + accum2Buniform.AddId(_accumulationTextures[view * 3 + 5]); + _uniformsArray.Add(accum2Buniform); + + + + var depthuniform = new RDUniform(); + depthuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + depthuniform.Binding = 6; + depthuniform.AddId(_nearestSampler); + depthuniform.AddId(_resizedDepth); + _uniformsArray.Add(depthuniform); + + + var extraNoiseuniform = new RDUniform(); + extraNoiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + extraNoiseuniform.Binding = 7; + extraNoiseuniform.AddId(_linearSampler); + extraNoiseuniform.AddId(RenderingServer.TextureGetRdTexture(ExtraLargeNoisePatterns.GetRid())); + _uniformsArray.Add(extraNoiseuniform); + + var noiseuniform = new RDUniform(); + noiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + noiseuniform.Binding = 8; + noiseuniform.AddId(_linearSampler); + noiseuniform.AddId(RenderingServer.TextureGetRdTexture(LargeScaleNoise.GetRid())); + _uniformsArray.Add(noiseuniform); + + var mediumnoiseuniform = new RDUniform(); + mediumnoiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + mediumnoiseuniform.Binding = 9; + mediumnoiseuniform.AddId(_linearSampler); + mediumnoiseuniform.AddId(RenderingServer.TextureGetRdTexture(MediumScaleNoise.GetRid())); + _uniformsArray.Add(mediumnoiseuniform); + + var smallnoiseuniform = new RDUniform(); + smallnoiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + smallnoiseuniform.Binding = 10; + smallnoiseuniform.AddId(_linearSampler); + smallnoiseuniform.AddId(RenderingServer.TextureGetRdTexture(SmallScaleNoise.GetRid())); + _uniformsArray.Add(smallnoiseuniform); + + var curlnoiseuniform = new RDUniform(); + curlnoiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + curlnoiseuniform.Binding = 11; + curlnoiseuniform.AddId(_linearSampler); + curlnoiseuniform.AddId(RenderingServer.TextureGetRdTexture(CurlNoise.GetRid())); + _uniformsArray.Add(curlnoiseuniform); + + var dithernoiseuniform = new RDUniform(); + dithernoiseuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + dithernoiseuniform.Binding = 12; + dithernoiseuniform.AddId(_nearestSampler); + dithernoiseuniform.AddId(RenderingServer.TextureGetRdTexture(DitherNoise.GetRid())); + _uniformsArray.Add(dithernoiseuniform); + + + var heightgradientuniform = new RDUniform(); + heightgradientuniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + heightgradientuniform.Binding = 13; + heightgradientuniform.AddId(_linearSamplerNoRepeat); + heightgradientuniform.AddId(RenderingServer.TextureGetRdTexture(HeightGradient.GetRid())); + _uniformsArray.Add(heightgradientuniform); + + + _generalDataBuffer = _rd.UniformBufferCreate(448); + var camerauniform = new RDUniform(); + camerauniform.UniformType = RenderingDevice.UniformType.UniformBuffer; + camerauniform.Binding = 14; + camerauniform.AddId(_generalDataBuffer); + _uniformsArray.Add(camerauniform); + + _lightDataBuffer = _rd.UniformBufferCreate(384); + var lightdatauniform = new RDUniform(); + lightdatauniform.UniformType = RenderingDevice.UniformType.UniformBuffer; + lightdatauniform.Binding = 15; + lightdatauniform.AddId(_lightDataBuffer); + _uniformsArray.Add(lightdatauniform); + + _uniformSets[view * 3 + 1] = _rd.UniformSetCreate(_uniformsArray, _shader, 0); + + + var _postpassuniformsArray = new Godot.Collections.Array(); + var prepassColorDataUniform = new RDUniform(); + prepassColorDataUniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + prepassColorDataUniform.Binding = 0; + prepassColorDataUniform.AddId(_linearSamplerNoRepeat); + prepassColorDataUniform.AddId(_accumulationTextures[view * 3]); + _postpassuniformsArray.Add(prepassColorDataUniform); + + var prepassColorUniform = new RDUniform(); + prepassColorUniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + prepassColorUniform.Binding = 1; + prepassColorUniform.AddId(_linearSamplerNoRepeat); + prepassColorUniform.AddId(_accumulationTextures[view * 3 + 1]); + _postpassuniformsArray.Add(prepassColorUniform); + + var postpassColorUniform = new RDUniform(); + postpassColorUniform.UniformType = RenderingDevice.UniformType.Image; + postpassColorUniform.Binding = 2; + postpassColorUniform.AddId(colorImage); + _postpassuniformsArray.Add(postpassColorUniform); + + var postpassDepthUniform = new RDUniform(); + postpassDepthUniform.UniformType = RenderingDevice.UniformType.SamplerWithTexture; + postpassDepthUniform.Binding = 3; + postpassDepthUniform.AddId(_nearestSampler); + postpassDepthUniform.AddId(depthImage); + _postpassuniformsArray.Add(postpassDepthUniform); + + var postpasscamerauniform = new RDUniform(); + postpasscamerauniform.UniformType = RenderingDevice.UniformType.UniformBuffer; + postpasscamerauniform.Binding = 4; + postpasscamerauniform.AddId(_generalDataBuffer); + _postpassuniformsArray.Add(postpasscamerauniform); + + var postpasslightdatauniform = new RDUniform(); + postpasslightdatauniform.UniformType = RenderingDevice.UniformType.UniformBuffer; + postpasslightdatauniform.Binding = 5; + postpasslightdatauniform.AddId(_lightDataBuffer); + _postpassuniformsArray.Add(postpasslightdatauniform); + + _uniformSets[view * 3 + 2] = _rd.UniformSetCreate(_postpassuniformsArray, _postpass_shader, 0); + + } + LightsUpdated = true; + } + + using var ms = new System.IO.MemoryStream(); + using var bw = new System.IO.BinaryWriter(ms); + + bw.Write((float)newSize.X); + bw.Write((float)newSize.Y); + bw.Write(_largeNoiseScale); + bw.Write(_mediumNoiseScale); + + bw.Write(CurrentTime); + bw.Write(_cloudsCoverage); + bw.Write(_cloudsDensity); + bw.Write(_cloudsDetailPower); + + bw.Write(_lightingDensity); + bw.Write(_accumilationDecay); + + var rendersceneData = renderData.GetRenderSceneData(); + var cameraTR = rendersceneData.GetCamTransform(); + var viewProj = rendersceneData.GetCamProjection(); + + + //_accumulationisA = !_accumulationisA; + bw.Write(_accumulationisA ? 1.0f : 0.0f); + bw.Write(0.0f); + + _pushConstants = ms.ToArray(); + _lastSize = size; + + UpdateMatricies(cameraTR, viewProj); + if (LightsUpdated || DirectionalLightsData.Count == 0) + { + UpdateLights(); + } + + + uint prepassxGroups = ((uint)size.X - 1) / 32 + 1; + uint prepassyGroups = ((uint)size.Y - 1) / 32 + 1; + + uint xGroups = ((uint)size.X - 1) / 32 / resscale + 1; + uint yGroups = ((uint)size.Y - 1) / 32 / resscale + 1; + + for (uint view = 0; view < viewCount; view++) + { + //GD.Print((uint)_prepasspushConstants.Length); + var prepasscomputeList = _rd.ComputeListBegin(); + _rd.ComputeListBindComputePipeline(prepasscomputeList, _prepass_pipeline); + _rd.ComputeListBindUniformSet(prepasscomputeList, _uniformSets[view * 3], 0); + _rd.ComputeListSetPushConstant(prepasscomputeList, _prepasspushConstants, (uint)_prepasspushConstants.Length); + _rd.ComputeListDispatch(prepasscomputeList, xGroups, yGroups, 1); + //_rd.ComputeListAddBarrier(prepasscomputeList); + _rd.ComputeListEnd(); + + + + var computeList = _rd.ComputeListBegin(); + _rd.ComputeListBindComputePipeline(computeList, _pipeline); + _rd.ComputeListBindUniformSet(computeList, _uniformSets[view * 3 + 1], 0); + _rd.ComputeListSetPushConstant(computeList, _pushConstants, (uint)_pushConstants.Length); + _rd.ComputeListDispatch(computeList, xGroups, yGroups, 1); + //_rd.ComputeListAddBarrier(computeList); + _rd.ComputeListEnd(); + + + var postpasscomputeList = _rd.ComputeListBegin(); + _rd.ComputeListBindComputePipeline(postpasscomputeList, _postpass_pipeline); + _rd.ComputeListBindUniformSet(postpasscomputeList, _uniformSets[view * 3 + 2], 0); + _rd.ComputeListSetPushConstant(postpasscomputeList, _postpasspushConstants, (uint)_postpasspushConstants.Length); + _rd.ComputeListDispatch(postpasscomputeList, prepassxGroups, prepassyGroups, 1); + _rd.ComputeListEnd(); + } + } + } + } + + + private Vector2 GetRotationDifferences(Transform3D transformA, Transform3D transformB) + { +        // Get the forward vectors of each transform +        Vector3 forwardA = -transformA.Basis.Z; + Vector3 forwardB = -transformB.Basis.Z; + +        // Normalize the vectors +        forwardA = forwardA.Normalized(); + forwardB = forwardB.Normalized(); + + // Calculate the horizontal (yaw) difference + Vector3 adjustedforwardA = new Vector3(forwardA.X, 0.0f, forwardA.Z).Normalized(); + Vector3 adjustedforwardB = new Vector3(forwardB.X, 0.0f, forwardB.Z).Normalized(); + Vector3 perp = adjustedforwardA.Cross(adjustedforwardB); + + float yawDifference = adjustedforwardA.AngleTo(adjustedforwardB); + if (perp.Dot(Vector3.Up) < 0.0f) + { + yawDifference *= -1.0f; + } + + float pitchDifference = new Vector3(0.0f, forwardA.Y, 1.0f).Normalized().AngleTo(new Vector3(0.0f, forwardB.Y, 1.0f).Normalized()); + + if (forwardA.Y > forwardB.Y) + { + pitchDifference *= -1.0f; + } + + return new Vector2(yawDifference, pitchDifference); + } + + + private void UpdateMatricies(Transform3D cameraTR, Projection viewProj) + { + int idx = 0; + + _filterIndex += 1; //Switch to 4 if your testing the 2x2 bayer pattern. + if (_filterIndex >= 16) + { + _filterIndex = 0; + } + + // Camera matrix (16 floats) + _generalDataFloats[idx++] = cameraTR.Basis.X.X; + _generalDataFloats[idx++] = cameraTR.Basis.X.Y; + _generalDataFloats[idx++] = cameraTR.Basis.X.Z; + _generalDataFloats[idx++] = 0; + + _generalDataFloats[idx++] = cameraTR.Basis.Y.X; + _generalDataFloats[idx++] = cameraTR.Basis.Y.Y; + _generalDataFloats[idx++] = cameraTR.Basis.Y.Z; + _generalDataFloats[idx++] = 0; + + _generalDataFloats[idx++] = cameraTR.Basis.Z.X; + _generalDataFloats[idx++] = cameraTR.Basis.Z.Y; + _generalDataFloats[idx++] = cameraTR.Basis.Z.Z; + _generalDataFloats[idx++] = 0; + + _generalDataFloats[idx++] = cameraTR.Origin.X; + _generalDataFloats[idx++] = cameraTR.Origin.Y; + _generalDataFloats[idx++] = cameraTR.Origin.Z; + _generalDataFloats[idx++] = 1.0f; + + // Camera matrix (previous frame or current if not available) + if (_lastViewMat.HasValue) + { + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.X.X; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.X.Y; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.X.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Y.X; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Y.Y; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Y.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Z.X; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Z.Y; + _generalDataFloats[idx++] = _lastViewMat.Value.Basis.Z.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = _lastViewMat.Value.Origin.X; + _generalDataFloats[idx++] = _lastViewMat.Value.Origin.Y; + _generalDataFloats[idx++] = _lastViewMat.Value.Origin.Z; + _generalDataFloats[idx++] = 1.0f; + } + else + { + _generalDataFloats[idx++] = cameraTR.Basis.X.X; + _generalDataFloats[idx++] = cameraTR.Basis.X.Y; + _generalDataFloats[idx++] = cameraTR.Basis.X.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = cameraTR.Basis.Y.X; + _generalDataFloats[idx++] = cameraTR.Basis.Y.Y; + _generalDataFloats[idx++] = cameraTR.Basis.Y.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = cameraTR.Basis.Z.X; + _generalDataFloats[idx++] = cameraTR.Basis.Z.Y; + _generalDataFloats[idx++] = cameraTR.Basis.Z.Z; + _generalDataFloats[idx++] = 0; + _generalDataFloats[idx++] = cameraTR.Origin.X; + _generalDataFloats[idx++] = cameraTR.Origin.Y; + _generalDataFloats[idx++] = cameraTR.Origin.Z; + _generalDataFloats[idx++] = 1.0f; + } + + // Projection matrix (16 floats) + _generalDataFloats[idx++] = viewProj.X.X; + _generalDataFloats[idx++] = viewProj.X.Y; + _generalDataFloats[idx++] = viewProj.X.Z; + _generalDataFloats[idx++] = viewProj.X.W; + + _generalDataFloats[idx++] = viewProj.Y.X; + _generalDataFloats[idx++] = viewProj.Y.Y; + _generalDataFloats[idx++] = viewProj.Y.Z; + _generalDataFloats[idx++] = viewProj.Y.W; + + _generalDataFloats[idx++] = viewProj.Z.X; + _generalDataFloats[idx++] = viewProj.Z.Y; + _generalDataFloats[idx++] = viewProj.Z.Z; + _generalDataFloats[idx++] = viewProj.Z.W; + + _generalDataFloats[idx++] = viewProj.W.X; + _generalDataFloats[idx++] = viewProj.W.Y; + _generalDataFloats[idx++] = viewProj.W.Z; + _generalDataFloats[idx++] = viewProj.W.W; + + // Projection matrix (previous frame or current if not available) + if (_lastProjectionMat.HasValue) + { + _generalDataFloats[idx++] = _lastProjectionMat.Value.X.X; + _generalDataFloats[idx++] = _lastProjectionMat.Value.X.Y; + _generalDataFloats[idx++] = _lastProjectionMat.Value.X.Z; + _generalDataFloats[idx++] = _lastProjectionMat.Value.X.W; + + _generalDataFloats[idx++] = _lastProjectionMat.Value.Y.X; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Y.Y; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Y.Z; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Y.W; + + _generalDataFloats[idx++] = _lastProjectionMat.Value.Z.X; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Z.Y; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Z.Z; + _generalDataFloats[idx++] = _lastProjectionMat.Value.Z.W; + + _generalDataFloats[idx++] = _lastProjectionMat.Value.W.X; + _generalDataFloats[idx++] = _lastProjectionMat.Value.W.Y; + _generalDataFloats[idx++] = _lastProjectionMat.Value.W.Z; + _generalDataFloats[idx++] = _lastProjectionMat.Value.W.W; + } + else + { + _generalDataFloats[idx++] = viewProj.X.X; + _generalDataFloats[idx++] = viewProj.X.Y; + _generalDataFloats[idx++] = viewProj.X.Z; + _generalDataFloats[idx++] = viewProj.X.W; + + _generalDataFloats[idx++] = viewProj.Y.X; + _generalDataFloats[idx++] = viewProj.Y.Y; + _generalDataFloats[idx++] = viewProj.Y.Z; + _generalDataFloats[idx++] = viewProj.Y.W; + + _generalDataFloats[idx++] = viewProj.Z.X; + _generalDataFloats[idx++] = viewProj.Z.Y; + _generalDataFloats[idx++] = viewProj.Z.Z; + _generalDataFloats[idx++] = viewProj.Z.W; + + _generalDataFloats[idx++] = viewProj.W.X; + _generalDataFloats[idx++] = viewProj.W.Y; + _generalDataFloats[idx++] = viewProj.W.Z; + _generalDataFloats[idx++] = viewProj.W.W; + } + + _lastProjectionMat = viewProj; + _lastViewMat = cameraTR; + _accumulationisA = !_accumulationisA; + + // Simple data (44 floats) + _generalDataFloats[idx++] = ExtraLargeScaleCloudsPosition.X; + _generalDataFloats[idx++] = ExtraLargeScaleCloudsPosition.Y; + _generalDataFloats[idx++] = ExtraLargeScaleCloudsPosition.Z; + _generalDataFloats[idx++] = ExtraLargeNoiseScale; + + _generalDataFloats[idx++] = LargeScaleCloudsPosition.X; + _generalDataFloats[idx++] = LargeScaleCloudsPosition.Y; + _generalDataFloats[idx++] = LargeScaleCloudsPosition.Z; + _generalDataFloats[idx++] = LightingSharpness; + + _generalDataFloats[idx++] = MediumScaleCloudsPosition.X; + _generalDataFloats[idx++] = MediumScaleCloudsPosition.Y; + _generalDataFloats[idx++] = MediumScaleCloudsPosition.Z; + _generalDataFloats[idx++] = LightingTravelDistance; + + _generalDataFloats[idx++] = DetailCloudsPosition.X; + _generalDataFloats[idx++] = DetailCloudsPosition.Y; + _generalDataFloats[idx++] = DetailCloudsPosition.Z; + _generalDataFloats[idx++] = AtmosphericDensity; + + _generalDataFloats[idx++] = CloudAmbientColor.R * CloudAmbientTint.R; + _generalDataFloats[idx++] = CloudAmbientColor.G * CloudAmbientTint.G; + _generalDataFloats[idx++] = CloudAmbientColor.B * CloudAmbientTint.B; + _generalDataFloats[idx++] = CloudAmbientColor.A * CloudAmbientTint.A; + + _generalDataFloats[idx++] = AmbientOcclusionColor.R; + _generalDataFloats[idx++] = AmbientOcclusionColor.G; + _generalDataFloats[idx++] = AmbientOcclusionColor.B; + _generalDataFloats[idx++] = AmbientOcclusionColor.A; + + _generalDataFloats[idx++] = AtmosphereColor.R; + _generalDataFloats[idx++] = AtmosphereColor.G; + _generalDataFloats[idx++] = AtmosphereColor.B; + _generalDataFloats[idx++] = AtmosphereColor.A; + + _generalDataFloats[idx++] = _smallNoiseScale; + _generalDataFloats[idx++] = _minStepDistance; + _generalDataFloats[idx++] = _maxStepDistance; + _generalDataFloats[idx++] = _LODBias; + + _generalDataFloats[idx++] = _cloudsSharpness; + _generalDataFloats[idx++] = (float)DirectionalLightsData.Count / 2; + _generalDataFloats[idx++] = (float)PointLightsData.Count / 2; + _generalDataFloats[idx++] = _cloudsAnisotropy; + + _generalDataFloats[idx++] = _cloudFloor; + _generalDataFloats[idx++] = _cloudCeiling; + _generalDataFloats[idx++] = (float)_maxStepCount; + _generalDataFloats[idx++] = (float)_maxLightingSteps; + + _generalDataFloats[idx++] = (float)_filterIndex; + _generalDataFloats[idx++] = (float)_blurPower; + _generalDataFloats[idx++] = (float)_blurQuality; + _generalDataFloats[idx++] = (float)_curlNoiseStrength; + + _generalDataFloats[idx++] = WindDirection.X; + _generalDataFloats[idx++] = WindDirection.Z; + _generalDataFloats[idx++] = 0.0f; + _generalDataFloats[idx++] = 0.0f; + + // Copy all floats to the byte buffer + Buffer.BlockCopy(_generalDataFloats, 0, _generalData, 0, _generalDataFloats.Length * 4); + + _rd.BufferUpdate(_generalDataBuffer, 0, (uint)_generalData.Length, _generalData); + } + + private void UpdateLights() + { + LightsUpdated = false; + + if (DirectionalLightsData.Count == 0) + { + DirectionalLightsData.Add(new Vector4(0.5f, 1.0f, 0.5f, 16.0f)); + DirectionalLightsData.Add(new Vector4(1.0f, 1.0f, 1.0f, 1.0f)); + } + + int idx = 0; + int directionalLightCount = Mathf.Min(DirectionalLightsData.Count, 8); + for (int i = 0; i < directionalLightCount; i++) + { + _lightDataFloats[idx++] = DirectionalLightsData[i].X; + _lightDataFloats[idx++] = DirectionalLightsData[i].Y; + _lightDataFloats[idx++] = DirectionalLightsData[i].Z; + _lightDataFloats[idx++] = DirectionalLightsData[i].W; + } + idx = 32; + int pointLightCount = Mathf.Min(PointLightsData.Count, 16); + for (int i = 0; i < pointLightCount; i++) + { + _lightDataFloats[idx++] = PointLightsData[i].X; + _lightDataFloats[idx++] = PointLightsData[i].Y; + _lightDataFloats[idx++] = PointLightsData[i].Z; + _lightDataFloats[idx++] = PointLightsData[i].W; + } + + // Copy all floats to the byte buffer + Buffer.BlockCopy(_lightDataFloats, 0, _lightData, 0, _lightDataFloats.Length * 4); + + _rd.BufferUpdate(_lightDataBuffer, 0, (uint)_lightData.Length, _lightData); + } +} diff --git a/source/addons/SunshineClouds2/SunshineClouds.cs.uid b/source/addons/SunshineClouds2/SunshineClouds.cs.uid new file mode 100644 index 0000000..4d5534e --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds.cs.uid @@ -0,0 +1 @@ +uid://d2lqbqhhnysnl diff --git a/source/addons/SunshineClouds2/SunshineClouds.gd b/source/addons/SunshineClouds2/SunshineClouds.gd new file mode 100644 index 0000000..a5020e3 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds.gd @@ -0,0 +1,996 @@ +@tool +extends CompositorEffect +class_name SunshineCloudsGD + +@export_tool_button("Refresh Compute", "Clear") var refresh_action = refresh_compute + + +@export_group("Basic Settings") +@export_range(0, 1) var clouds_coverage : float = 0.7 +@export_range(0, 20) var clouds_density : float = 1.0 +@export_range(0, 2) var atmospheric_density : float = 0.7 +@export_range(0, 10) var lighting_density : float = 0.25 +@export_range(0, 1) var fog_effect_ground : float = 1.0 + +@export_subgroup("Colors") +@export_range(0, 1) var clouds_anisotropy : float = 0.18 +@export_range(0, 1) var clouds_powder : float = 0.851 +@export var cloud_ambient_color : Color = Color(0.763, 0.786, 0.822) +@export var cloud_ambient_tint : Color = Color(0.132, 0.202, 0.242) +@export var atmosphere_color : Color = Color(0.696, 0.832, 0.989) +@export var ambient_occlusion_color : Color = Color(0.54, 0.108, 0.0, 0.871) + +@export_subgroup("Structure") +@export_range(0, 1) var accumulation_decay : float = 0.7 +@export_range(100, 1000000) var extra_large_noise_scale : float = 320000.0 +@export_range(100, 500000) var large_noise_scale : float = 120000.0 +@export_range(100, 100000) var medium_noise_scale : float = 20000.0 +@export_range(100, 10000) var small_noise_scale : float = 8500 +@export_range(0, 2) var clouds_sharpness : float = 0.84 +@export_range(0, 3) var clouds_detail_power : float = 1.0 +@export_range(0, 50000) var curl_noise_strength : float = 4500.0 +@export_range(0, 2) var lighting_sharpness : float = 0.38 +@export_range(0, 1) var wind_swept_range : float = 0.54 +@export_range(0, 5000) var wind_swept_strength : float = 3500.0 + +@export var cloud_floor : float = 1500.0 +@export var cloud_ceiling : float = 25000.0 + +@export_subgroup("Performance") +@export var max_step_count : float = 100 +@export var max_lighting_steps : float = 32 +@export_enum("Native","Half","Quarter","Eighth") var resolution_scale = 0: + get: + return resolution_scale + set(value): + resolution_scale = value + last_size = Vector2i(0, 0) + lights_updated = true +@export_range(0, 2) var lod_bias : float = 1.0 + +@export_subgroup("Noise Textures") +@export var dither_noise : Texture3D +@export var height_gradient : Texture2D +@export var extra_large_noise_patterns : Texture2D +@export var large_scale_noise : Texture3D +@export var medium_scale_noise : Texture3D +@export var small_scale_noise : Texture3D +@export var curl_noise : Texture3D + +@export_group("Advanced Settings") +@export_subgroup("Visuals") +@export_range(0, 1000) var dither_speed : float = 100.8254 +@export_range(0, 20) var blur_power : float = 2.0 +@export_range(0, 6) var blur_quality : float = 3.0 + +@export_subgroup("Reflections") +@export var reflections_globalshaderparam : String = "" + +@export_subgroup("Performance") +@export var min_step_distance : float = 200.0 +@export var max_step_distance : float = 600.0 +@export var lighting_travel_distance : float = 7000.0 + +@export_subgroup("Mask") +@export var extra_large_used_as_mask : bool = false +@export var mask_width_km : float = 32.0; + +@export_group("Compute Shaders") +@export var pre_pass_compute_shader : RDShaderFile +@export var compute_shader : RDShaderFile +@export var post_pass_compute_shader : RDShaderFile + +@export_group("Internal Use") +@export var origin_offset : Vector3 = Vector3.ZERO +@export_subgroup("Positions") +@export var wind_direction : Vector3 = Vector3.ZERO +var extra_large_scale_clouds_position : Vector3 = Vector3.ZERO +var large_scale_clouds_position : Vector3 = Vector3.ZERO +var medium_scale_clouds_position : Vector3 = Vector3.ZERO +var detail_clouds_position : Vector3 = Vector3.ZERO +var current_time : float = 0.0 + +@export_subgroup("Lights") +@export var directional_lights_data : Array[Vector4] = [] +@export var point_lights_data : Array[Vector4] = [] +@export var point_effector_data : Array[Vector4] = [] + +var positionQueries : Array[Vector3] = [] +var positionQueryCallables : Array[Callable] = [] +var positionQuerying : bool = false +var positionResetting : bool = false + +var lights_updated = false + +var maskDrawnRid : RID = RID() + +var rd : RenderingDevice +var shader : RID = RID() +var pipeline : RID = RID() + +var prepass_shader : RID = RID() +var prepass_pipeline : RID = RID() + +var postpass_shader : RID = RID() +var postpass_pipeline : RID = RID() + +var nearest_sampler : RID = RID() +var linear_sampler : RID = RID() +var linear_sampler_no_repeat : RID = RID() + +var general_data_buffer : RID = RID() +var light_data_buffer : RID = RID() +var point_sample_data_buffer : RID = RID() +var accumulation_textures : Array[RID] = [] +var resized_depth : RID = RID() +var last_size : Vector2i = Vector2i(0, 0) +var color_images : Array[RID] = [] +var msaa_color_images : Array[RID] = [] + +var buffers : RenderSceneBuffersRD + + +var uniform_sets : Array[RID] = [] +var general_data : PackedByteArray + +var light_data : PackedByteArray + +var accumulation_is_a : bool = false +var ignore_accumilation : bool = false + +var first_run : bool = true +var filter_index = 0 + +var last_render_target : RID + +func refresh_compute(): + maskDrawnRid = RID() + last_size = Vector2i.ZERO + +func update_mask(newMask : RID): + maskDrawnRid = newMask + last_size = Vector2i.ZERO + +func add_sample(callable : Callable, position : Vector3): + #if (positionQueries.size() == 32): + #print("Max cloud position sample queue reached (32), query failed.") + #return + positionQueries.append(position) + positionQueryCallables.append(callable) + +func _init(): + effect_callback_type = CompositorEffect.EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT + access_resolved_depth = true + access_resolved_color = true + needs_motion_vectors = true + RenderingServer.call_on_render_thread(initialize_compute) + +func _notification(what): + if what == NOTIFICATION_PREDELETE and is_instance_valid(self): + RenderingServer.call_on_render_thread(clear_compute) + +func clear_compute(): + if rd: + if shader.is_valid(): + rd.free_rid(shader) + shader = RID() + + if prepass_shader.is_valid(): + rd.free_rid(prepass_shader) + prepass_shader = RID() + + if postpass_shader.is_valid(): + rd.free_rid(postpass_shader) + postpass_shader = RID() + + if nearest_sampler.is_valid(): + rd.free_rid(nearest_sampler) + nearest_sampler = RID() + + if linear_sampler.is_valid(): + rd.free_rid(linear_sampler) + linear_sampler = RID() + + if linear_sampler_no_repeat.is_valid(): + rd.free_rid(linear_sampler_no_repeat) + linear_sampler_no_repeat = RID() + + if general_data_buffer.is_valid(): + rd.free_rid(general_data_buffer) + general_data_buffer = RID() + + if light_data_buffer.is_valid(): + rd.free_rid(light_data_buffer) + light_data_buffer = RID() + + if point_sample_data_buffer.is_valid(): + rd.free_rid(point_sample_data_buffer) + point_sample_data_buffer = RID() + + if resized_depth.is_valid(): + rd.free_rid(resized_depth) + resized_depth = RID() + + if accumulation_textures.size() > 0: + for item in accumulation_textures: + if item.is_valid(): + rd.free_rid(item) + accumulation_textures.clear() + + if msaa_color_images.size() > 0: + for item in msaa_color_images: + if item.is_valid(): + rd.free_rid(item) + msaa_color_images.clear() + +func initialize_compute(): + first_run = true + if not rd: + rd = RenderingServer.get_rendering_device() + if not rd: + enabled = false + printerr("No rendering device on load.") + return + clear_compute() + + var sampler_state = RDSamplerState.new() + sampler_state.min_filter = RenderingDevice.SAMPLER_FILTER_NEAREST + sampler_state.mag_filter = RenderingDevice.SAMPLER_FILTER_NEAREST + sampler_state.repeat_u = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + sampler_state.repeat_v = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + sampler_state.repeat_w = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + nearest_sampler = rd.sampler_create(sampler_state) + + var linear_sampler_state = RDSamplerState.new() + linear_sampler_state.min_filter = RenderingDevice.SAMPLER_FILTER_LINEAR + linear_sampler_state.mag_filter = RenderingDevice.SAMPLER_FILTER_LINEAR + linear_sampler_state.repeat_u = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + linear_sampler_state.repeat_v = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + linear_sampler_state.repeat_w = RenderingDevice.SAMPLER_REPEAT_MODE_REPEAT + linear_sampler = rd.sampler_create(linear_sampler_state) + + var linear_sampler_state_no_repeat = RDSamplerState.new() + linear_sampler_state_no_repeat.min_filter = RenderingDevice.SAMPLER_FILTER_LINEAR + linear_sampler_state_no_repeat.mag_filter = RenderingDevice.SAMPLER_FILTER_LINEAR + linear_sampler_state_no_repeat.repeat_u = RenderingDevice.SAMPLER_REPEAT_MODE_CLAMP_TO_EDGE + linear_sampler_state_no_repeat.repeat_v = RenderingDevice.SAMPLER_REPEAT_MODE_CLAMP_TO_EDGE + linear_sampler_state_no_repeat.repeat_w = RenderingDevice.SAMPLER_REPEAT_MODE_CLAMP_TO_EDGE + linear_sampler_no_repeat = rd.sampler_create(linear_sampler_state_no_repeat) + + if not dither_noise: + dither_noise = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png") + if not height_gradient: + height_gradient = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres") + if not extra_large_noise_patterns: + extra_large_noise_patterns = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres") + if not large_scale_noise: + large_scale_noise = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres") + if not medium_scale_noise: + medium_scale_noise = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres") + if not small_scale_noise: + small_scale_noise = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres") + if not curl_noise: + curl_noise = ResourceLoader.load("res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga") + + if not compute_shader: + compute_shader = ResourceLoader.load("res://addons/SunshineClouds2/SunshineCloudsCompute.glsl") + if not pre_pass_compute_shader: + pre_pass_compute_shader = ResourceLoader.load("res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl") + if not post_pass_compute_shader: + post_pass_compute_shader = ResourceLoader.load("res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl") + if not compute_shader or not pre_pass_compute_shader or not post_pass_compute_shader: + enabled = false + printerr("No Shader found on load.") + clear_compute() + return + + + var prepass_shader_spirv = pre_pass_compute_shader.get_spirv() + prepass_shader = rd.shader_create_from_spirv(prepass_shader_spirv) + if prepass_shader.is_valid(): + prepass_pipeline = rd.compute_pipeline_create(prepass_shader) + else: + enabled = false + printerr("Prepass Shader failed to compile.") + clear_compute() + return + + + var shader_spirv = compute_shader.get_spirv() + shader = rd.shader_create_from_spirv(shader_spirv) + if shader.is_valid(): + pipeline = rd.compute_pipeline_create(shader) + else: + enabled = false + printerr("Shader failed to compile.") + clear_compute() + return + + + var postpass_shader_spirv = post_pass_compute_shader.get_spirv() + postpass_shader = rd.shader_create_from_spirv(postpass_shader_spirv) + if postpass_shader.is_valid(): + postpass_pipeline = rd.compute_pipeline_create(postpass_shader) + else: + enabled = false + printerr("Post pass Shader failed to compile.") + clear_compute() + return + +func _render_callback(effect_callback_type, render_data): + if rd == null: + initialize_compute() + elif pipeline.is_valid() and height_gradient and extra_large_noise_patterns and large_scale_noise and medium_scale_noise and small_scale_noise and dither_noise and curl_noise: + buffers = render_data.get_render_scene_buffers() as RenderSceneBuffersRD + if buffers: + + var msaa = buffers.get_msaa_3d() != 0 + if msaa: + return + + var size = buffers.get_internal_size() + if size.x == 0 and size.y == 0: + return + + var resscale = int(pow(2.0, float(resolution_scale))) + #match resolution_scale: + #0: + #resscale = 1 + #1: + #resscale = 2 + #2: + #resscale = 4 + #3: + #resscale = 8 + + var new_size = size / resscale + var view_count = buffers.get_view_count() + var rendersceneData : RenderSceneData = render_data.get_render_scene_data(); + + if size != last_size or uniform_sets == null or uniform_sets.size() != view_count * 3 or color_images.size() == 0 or color_images[0] != buffers.get_color_layer(0): + initialize_compute() + + accumulation_textures.clear() + uniform_sets.clear() + + color_images.clear() + msaa_color_images.clear() + + #print("postpass_push_constants",postpass_push_constants.size()) + for view in range(view_count): + color_images.append(buffers.get_color_layer(view, msaa)) + + var depth_image : RID = buffers.get_depth_layer(view, msaa) + + var blankImageData : PackedByteArray = [] + blankImageData.resize(new_size.x * new_size.y * 4 * 4) + + var base_colorformat : RDTextureFormat = rd.texture_get_format(color_images[view]) + + + if (msaa): + base_colorformat.usage_bits = RenderingDevice.TEXTURE_USAGE_STORAGE_BIT | RenderingDevice.TEXTURE_USAGE_SAMPLING_BIT | RenderingDevice.TEXTURE_USAGE_CAN_COPY_TO_BIT | RenderingDevice.TEXTURE_USAGE_CAN_COPY_FROM_BIT + + msaa_color_images.append(rd.texture_create(base_colorformat, RDTextureView.new(), [])) + + base_colorformat.format = RenderingDevice.DATA_FORMAT_R32G32B32A32_SFLOAT + base_colorformat.width = new_size.x + base_colorformat.height = new_size.y + + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + + #reflections + accumulation_textures.append(rd.texture_create(base_colorformat, RDTextureView.new(), [blankImageData])) + + general_data_buffer = rd.uniform_buffer_create(256) + + var depthformat : RDTextureFormat = rd.texture_get_format(depth_image) + depthformat.width = new_size.x + depthformat.height = new_size.y + depthformat.format = RenderingDevice.DATA_FORMAT_R32_SFLOAT + depthformat.usage_bits = RenderingDevice.TEXTURE_USAGE_STORAGE_BIT | RenderingDevice.TEXTURE_USAGE_SAMPLING_BIT + resized_depth = rd.texture_create(depthformat, RDTextureView.new(), []) + + #Prepass Compute Shader + var prepass_uniforms_array : Array[RDUniform] = [] + var prepass_depth_uniform = RDUniform.new() + prepass_depth_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + prepass_depth_uniform.binding = 0 + prepass_depth_uniform.add_id(nearest_sampler) + prepass_depth_uniform.add_id(depth_image) + prepass_uniforms_array.append(prepass_depth_uniform) + + var prepass_depth_output_uniform = RDUniform.new() + prepass_depth_output_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + prepass_depth_output_uniform.binding = 1 + prepass_depth_output_uniform.add_id(resized_depth) + prepass_uniforms_array.append(prepass_depth_output_uniform) + + var prepass_camera_uniform = RDUniform.new() + prepass_camera_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + prepass_camera_uniform.binding = 2 + prepass_camera_uniform.add_id(general_data_buffer) + prepass_uniforms_array.append(prepass_camera_uniform) + + uniform_sets.append(rd.uniform_set_create(prepass_uniforms_array, prepass_shader, 0)) + + #Base Compute Shader + var uniforms_array : Array[RDUniform] = [] + var output_data_uniform = RDUniform.new() + output_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + output_data_uniform.binding = 0 + output_data_uniform.add_id(accumulation_textures[view * 7]) + uniforms_array.append(output_data_uniform) + + var output_color_uniform = RDUniform.new() + output_color_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + output_color_uniform.binding = 1 + output_color_uniform.add_id(accumulation_textures[view * 7 + 1]) + uniforms_array.append(output_color_uniform) + + var accum1A_uniform = RDUniform.new() + accum1A_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + accum1A_uniform.binding = 2 + accum1A_uniform.add_id(accumulation_textures[view * 7 + 2]) + uniforms_array.append(accum1A_uniform) + + var accum1B_uniform = RDUniform.new() + accum1B_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + accum1B_uniform.binding = 3 + accum1B_uniform.add_id(accumulation_textures[view * 7 + 3]) + uniforms_array.append(accum1B_uniform) + + var accum2A_uniform = RDUniform.new() + accum2A_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + accum2A_uniform.binding = 4 + accum2A_uniform.add_id(accumulation_textures[view * 7 + 4]) + uniforms_array.append(accum2A_uniform) + + var accum2B_uniform = RDUniform.new() + accum2B_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + accum2B_uniform.binding = 5 + accum2B_uniform.add_id(accumulation_textures[view * 7 + 5]) + uniforms_array.append(accum2B_uniform) + + var depth_uniform = RDUniform.new() + depth_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + depth_uniform.binding = 6 + depth_uniform.add_id(nearest_sampler) + depth_uniform.add_id(resized_depth) + uniforms_array.append(depth_uniform) + + var extra_noise_uniform = RDUniform.new() + extra_noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + extra_noise_uniform.binding = 7 + extra_noise_uniform.add_id(linear_sampler) + extra_noise_uniform.add_id(maskDrawnRid if extra_large_used_as_mask && maskDrawnRid.is_valid() else RenderingServer.texture_get_rd_texture(extra_large_noise_patterns.get_rid())) + uniforms_array.append(extra_noise_uniform) + + var noise_uniform = RDUniform.new() + noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + noise_uniform.binding = 8 + noise_uniform.add_id(linear_sampler) + noise_uniform.add_id(RenderingServer.texture_get_rd_texture(large_scale_noise.get_rid())) + uniforms_array.append(noise_uniform) + + var medium_noise_uniform = RDUniform.new() + medium_noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + medium_noise_uniform.binding = 9 + medium_noise_uniform.add_id(linear_sampler) + medium_noise_uniform.add_id(RenderingServer.texture_get_rd_texture(medium_scale_noise.get_rid())) + uniforms_array.append(medium_noise_uniform) + + var small_noise_uniform = RDUniform.new() + small_noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + small_noise_uniform.binding = 10 + small_noise_uniform.add_id(linear_sampler) + small_noise_uniform.add_id(RenderingServer.texture_get_rd_texture(small_scale_noise.get_rid())) + uniforms_array.append(small_noise_uniform) + + var curl_noise_uniform = RDUniform.new() + curl_noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + curl_noise_uniform.binding = 11 + curl_noise_uniform.add_id(linear_sampler) + curl_noise_uniform.add_id(RenderingServer.texture_get_rd_texture(curl_noise.get_rid())) + uniforms_array.append(curl_noise_uniform) + + var dither_noise_uniform = RDUniform.new() + dither_noise_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + dither_noise_uniform.binding = 12 + dither_noise_uniform.add_id(nearest_sampler) + dither_noise_uniform.add_id(RenderingServer.texture_get_rd_texture(dither_noise.get_rid())) + uniforms_array.append(dither_noise_uniform) + + var height_gradient_uniform = RDUniform.new() + height_gradient_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + height_gradient_uniform.binding = 13 + height_gradient_uniform.add_id(linear_sampler_no_repeat) + height_gradient_uniform.add_id(RenderingServer.texture_get_rd_texture(height_gradient.get_rid())) + uniforms_array.append(height_gradient_uniform) + + + var camera_uniform = RDUniform.new() + camera_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + camera_uniform.binding = 14 + camera_uniform.add_id(general_data_buffer) + uniforms_array.append(camera_uniform) + + light_data_buffer = rd.uniform_buffer_create(6272) + var light_data_uniform = RDUniform.new() + light_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + light_data_uniform.binding = 15 + light_data_uniform.add_id(light_data_buffer) + uniforms_array.append(light_data_uniform) + + var sampleData : PackedByteArray = [] + sampleData.resize(512) + point_sample_data_buffer = rd.storage_buffer_create(512, sampleData) + var point_sample_data_uniform = RDUniform.new() + point_sample_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_STORAGE_BUFFER + point_sample_data_uniform.binding = 16 + point_sample_data_uniform.add_id(point_sample_data_buffer) + uniforms_array.append(point_sample_data_uniform) + + var cameraData = rendersceneData.get_uniform_buffer() + var camera_data_uniform = RDUniform.new() + camera_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + camera_data_uniform.binding = 17 + camera_data_uniform.add_id(cameraData) + uniforms_array.append(camera_data_uniform) + + uniform_sets.append(rd.uniform_set_create(uniforms_array, shader, 0)) + + #Post Pass Compute Shader + var postpass_uniforms_array : Array[RDUniform] = [] + var prepass_color_data_uniform = RDUniform.new() + prepass_color_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + prepass_color_data_uniform.binding = 0 + prepass_color_data_uniform.add_id(linear_sampler_no_repeat) + prepass_color_data_uniform.add_id(accumulation_textures[view * 7]) + postpass_uniforms_array.append(prepass_color_data_uniform) + + var prepass_color_uniform = RDUniform.new() + prepass_color_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + prepass_color_uniform.binding = 1 + prepass_color_uniform.add_id(linear_sampler_no_repeat) + prepass_color_uniform.add_id(accumulation_textures[view * 7 + 1]) + postpass_uniforms_array.append(prepass_color_uniform) + + + var postpass_reflections_uniform = RDUniform.new() + postpass_reflections_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + postpass_reflections_uniform.binding = 2 + postpass_reflections_uniform.add_id(accumulation_textures[view * 7 + 6]) + postpass_uniforms_array.append(postpass_reflections_uniform) + + if (reflections_globalshaderparam != ""): + var newTexture = Texture2DRD.new() + newTexture.texture_rd_rid = accumulation_textures[view * 7 + 6] + RenderingServer.global_shader_parameter_set(reflections_globalshaderparam, newTexture) + + var postpass_color_uniform = RDUniform.new() + postpass_color_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_IMAGE + postpass_color_uniform.binding = 3 + postpass_color_uniform.add_id(msaa_color_images[view] if msaa else color_images[view]) + postpass_uniforms_array.append(postpass_color_uniform) + + var postpass_depth_uniform = RDUniform.new() + postpass_depth_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_SAMPLER_WITH_TEXTURE + postpass_depth_uniform.binding = 4 + postpass_depth_uniform.add_id(nearest_sampler) + postpass_depth_uniform.add_id(depth_image) + postpass_uniforms_array.append(postpass_depth_uniform) + + var postpass_camera_uniform = RDUniform.new() + postpass_camera_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + postpass_camera_uniform.binding = 5 + postpass_camera_uniform.add_id(general_data_buffer) + postpass_uniforms_array.append(postpass_camera_uniform) + + var postpass_light_data_uniform = RDUniform.new() + postpass_light_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + postpass_light_data_uniform.binding = 6 + postpass_light_data_uniform.add_id(light_data_buffer) + postpass_uniforms_array.append(postpass_light_data_uniform) + + var postpass_camera_data_uniform = RDUniform.new() + postpass_camera_data_uniform.uniform_type = RenderingDevice.UNIFORM_TYPE_UNIFORM_BUFFER + postpass_camera_data_uniform.binding = 7 + postpass_camera_data_uniform.add_id(cameraData) + postpass_uniforms_array.append(postpass_camera_data_uniform) + + uniform_sets.append(rd.uniform_set_create(postpass_uniforms_array, postpass_shader, 0)) + + lights_updated = true + + # Push constants and matrix updates + #var ms = StreamPeerBuffer.new() + #ms.put_float(new_size.x) + #ms.put_float(new_size.y) + #ms.put_float(large_noise_scale) + #ms.put_float(medium_noise_scale) + # + #ms.put_float(current_time) + #ms.put_float(clouds_coverage) + #ms.put_float(clouds_density) + #ms.put_float(clouds_detail_power) + # + #ms.put_float(lighting_density) + #ms.put_float(accumulation_decay) + #if (accumulation_is_a): + #ms.put_float(1.0) + #else: + #ms.put_float(0.0) + #ms.put_float(0.0) + #push_constants = ms.get_data_array() + + + + var cameraTR : Transform3D = rendersceneData.get_cam_transform(); + var viewProj : Projection = rendersceneData.get_cam_projection(); + + var rendertarget: RID = buffers.get_render_target() + if rendertarget != last_render_target: + last_render_target = rendertarget + ignore_accumilation = true + else: + ignore_accumilation = false + + + last_size = size + + update_matrices(cameraTR, viewProj, new_size) + if lights_updated or directional_lights_data.size() == 0: + update_lights() + + if (!positionQuerying && !positionResetting && positionQueries.size() > 0): + encode_sample_points() + + var prepass_x_groups = ((size.x - 1) / 8) + 1 + var prepass_y_groups = ((size.y - 1) / 8) + 1 + var x_groups = ((size.x - 1) / 8 / resscale) + 1 + var y_groups = ((size.y - 1) / 8 / resscale) + 1 + + for view in view_count: + if (msaa): + rd.texture_copy(color_images[view], msaa_color_images[view], Vector3.ZERO, Vector3.ZERO, Vector3(size.x, size.y, 0.0),0,0,0,0) + + var prepass_list = rd.compute_list_begin() + rd.compute_list_bind_compute_pipeline(prepass_list, prepass_pipeline) + rd.compute_list_bind_uniform_set(prepass_list, uniform_sets[view * 3], 0) + rd.compute_list_dispatch(prepass_list, x_groups, y_groups, 1) + rd.compute_list_end() + + var compute_list = rd.compute_list_begin() + rd.compute_list_bind_compute_pipeline(compute_list, pipeline) + rd.compute_list_bind_uniform_set(compute_list, uniform_sets[view * 3 + 1], 0) + rd.compute_list_dispatch(compute_list, x_groups, y_groups, 1) + rd.compute_list_end() + + var postpass_list = rd.compute_list_begin() + rd.compute_list_bind_compute_pipeline(postpass_list, postpass_pipeline) + rd.compute_list_bind_uniform_set(postpass_list, uniform_sets[view * 3 + 2], 0) + rd.compute_list_dispatch(postpass_list, prepass_x_groups, prepass_y_groups, 1) + rd.compute_list_end() + + if (msaa): + rd.texture_copy(msaa_color_images[view], color_images[view], Vector3.ZERO, Vector3.ZERO, Vector3(size.x, size.y, 0.0),0,0,0,0) + + + if (!positionResetting && positionQuerying): + positionResetting = true + rd.buffer_get_data_async(point_sample_data_buffer, retrieve_position_queries.bind()) + #call_deferred("update_callbacktype", cameraTR.origin.y) + #if (cameraTR.origin.y > cloud_floor): + #if (self.effect_callback_type != CompositorEffect.EFFECT_CALLBACK_TYPE_POST_TRANSPARENT): + #self.effect_callback_type = CompositorEffect.EFFECT_CALLBACK_TYPE_POST_TRANSPARENT + #else: + #if (self.effect_callback_type != CompositorEffect.EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT): + #self.effect_callback_type = CompositorEffect.EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT + +func retrieve_position_queries(data : PackedByteArray): + + var idx = 0 + while idx < 512 && positionQueryCallables.size() > 0: + var position : Vector3 = Vector3.ZERO + position.x = data.decode_float(idx) + idx += 4 + position.y = data.decode_float(idx) + idx += 4 + position.z = data.decode_float(idx) + idx += 4 + var density = data.decode_float(idx) + idx += 4 + + positionQueryCallables[0].call(position, density) + positionQueryCallables.remove_at(0) + + + positionQuerying = false + positionResetting = false + + +#func update_callbacktype(lastY : float): + #if (lastY > cloud_floor): + #if (self.effect_callback_type != CompositorEffect.EFFECT_CALLBACK_TYPE_POST_TRANSPARENT): + #self.effect_callback_type = CompositorEffect.EFFECT_CALLBACK_TYPE_POST_TRANSPARENT + #else: + #if (self.effect_callback_type != CompositorEffect.EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT): + #self.effect_callback_type = CompositorEffect.EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT + +func update_matrices(camera_tr, view_proj, new_size: Vector2i): + if general_data.size() != 256: #64 * 4 bytes for each float = 256. + general_data.resize(256) + + var idx = 0 + filter_index += 1 + if filter_index > 16: + filter_index = 0 + # Camera matrix (16 floats) + #general_data.encode_float(idx, camera_tr.basis.x.x); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.x.y); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.x.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, camera_tr.basis.y.x); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.y.y); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.y.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, camera_tr.basis.z.x); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.z.y); idx += 4 + #general_data.encode_float(idx, camera_tr.basis.z.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, camera_tr.origin.x); idx += 4 + #general_data.encode_float(idx, camera_tr.origin.y); idx += 4 + #general_data.encode_float(idx, camera_tr.origin.z); idx += 4 + #general_data.encode_float(idx, 1.0); idx += 4 +# + ## Previous or current camera matrix + #var mat = camera_tr if first_run else last_view_mat + #general_data.encode_float(idx, mat.basis.x.x); idx += 4 + #general_data.encode_float(idx, mat.basis.x.y); idx += 4 + #general_data.encode_float(idx, mat.basis.x.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, mat.basis.y.x); idx += 4 + #general_data.encode_float(idx, mat.basis.y.y); idx += 4 + #general_data.encode_float(idx, mat.basis.y.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, mat.basis.z.x); idx += 4 + #general_data.encode_float(idx, mat.basis.z.y); idx += 4 + #general_data.encode_float(idx, mat.basis.z.z); idx += 4 + #general_data.encode_float(idx, 0); idx += 4 + # + #general_data.encode_float(idx, mat.origin.x); idx += 4 + #general_data.encode_float(idx, mat.origin.y); idx += 4 + #general_data.encode_float(idx, mat.origin.z); idx += 4 + #general_data.encode_float(idx, 1.0); idx += 4 +# + ## Projection matrix (16 floats) + #general_data.encode_float(idx, view_proj.x.x); idx += 4 + #general_data.encode_float(idx, view_proj.x.y); idx += 4 + #general_data.encode_float(idx, view_proj.x.z); idx += 4 + #general_data.encode_float(idx, view_proj.x.w); idx += 4 + # + #general_data.encode_float(idx, view_proj.y.x); idx += 4 + #general_data.encode_float(idx, view_proj.y.y); idx += 4 + #general_data.encode_float(idx, view_proj.y.z); idx += 4 + #general_data.encode_float(idx, view_proj.y.w); idx += 4 + # + #general_data.encode_float(idx, view_proj.z.x); idx += 4 + #general_data.encode_float(idx, view_proj.z.y); idx += 4 + #general_data.encode_float(idx, view_proj.z.z); idx += 4 + #general_data.encode_float(idx, view_proj.z.w); idx += 4 + # + #general_data.encode_float(idx, view_proj.w.x); idx += 4 + #general_data.encode_float(idx, view_proj.w.y); idx += 4 + #general_data.encode_float(idx, view_proj.w.z); idx += 4 + #general_data.encode_float(idx, view_proj.w.w); idx += 4 +# + ## Previous or current camera matrix + #var proj = view_proj if first_run else last_projection_mat + #general_data.encode_float(idx, proj.x.x); idx += 4 + #general_data.encode_float(idx, proj.x.y); idx += 4 + #general_data.encode_float(idx, proj.x.z); idx += 4 + #general_data.encode_float(idx, proj.x.w); idx += 4 + # + #general_data.encode_float(idx, proj.y.x); idx += 4 + #general_data.encode_float(idx, proj.y.y); idx += 4 + #general_data.encode_float(idx, proj.y.z); idx += 4 + #general_data.encode_float(idx, proj.y.w); idx += 4 + # + #general_data.encode_float(idx, proj.z.x); idx += 4 + #general_data.encode_float(idx, proj.z.y); idx += 4 + #general_data.encode_float(idx, proj.z.z); idx += 4 + #general_data.encode_float(idx, proj.z.w); idx += 4 + # + #general_data.encode_float(idx, proj.w.x); idx += 4 + #general_data.encode_float(idx, proj.w.y); idx += 4 + #general_data.encode_float(idx, proj.w.z); idx += 4 + #general_data.encode_float(idx, proj.w.w); idx += 4 +# + #last_projection_mat = view_proj + #last_view_mat = camera_tr + accumulation_is_a = not accumulation_is_a + first_run = false + + # Additional data (44 floats) + var width = mask_width_km * 1000.0 + + if (extra_large_used_as_mask): + general_data.encode_float(idx, origin_offset.x + (width * 0.5) * -1.0); idx += 4 + general_data.encode_float(idx, origin_offset.y + (width * 0.5) * -1.0); idx += 4 + general_data.encode_float(idx, origin_offset.z + (width * 0.5) * -1.0); idx += 4 + general_data.encode_float(idx, width); idx += 4 + else: + general_data.encode_float(idx, extra_large_scale_clouds_position.x); idx += 4 + general_data.encode_float(idx, extra_large_scale_clouds_position.y); idx += 4 + general_data.encode_float(idx, extra_large_scale_clouds_position.z); idx += 4 + general_data.encode_float(idx, extra_large_noise_scale); idx += 4 + + #general_data.encode_float(idx, extra_large_scale_clouds_position.x); idx += 4 + #general_data.encode_float(idx, extra_large_scale_clouds_position.y); idx += 4 + #general_data.encode_float(idx, extra_large_scale_clouds_position.z); idx += 4 + #general_data.encode_float(idx, extra_large_noise_scale); idx += 4 + # + general_data.encode_float(idx, large_scale_clouds_position.x); idx += 4 + general_data.encode_float(idx, large_scale_clouds_position.y); idx += 4 + general_data.encode_float(idx, large_scale_clouds_position.z); idx += 4 + general_data.encode_float(idx, lighting_sharpness); idx += 4 + + general_data.encode_float(idx, medium_scale_clouds_position.x); idx += 4 + general_data.encode_float(idx, medium_scale_clouds_position.y); idx += 4 + general_data.encode_float(idx, medium_scale_clouds_position.z); idx += 4 + general_data.encode_float(idx, lighting_travel_distance); idx += 4 + + general_data.encode_float(idx, detail_clouds_position.x); idx += 4 + general_data.encode_float(idx, detail_clouds_position.y); idx += 4 + general_data.encode_float(idx, detail_clouds_position.z); idx += 4 + general_data.encode_float(idx, atmospheric_density); idx += 4 + + general_data.encode_float(idx, cloud_ambient_color.r * cloud_ambient_tint.r); idx += 4 + general_data.encode_float(idx, cloud_ambient_color.g * cloud_ambient_tint.g); idx += 4 + general_data.encode_float(idx, cloud_ambient_color.b * cloud_ambient_tint.b); idx += 4 + general_data.encode_float(idx, cloud_ambient_color.a * cloud_ambient_tint.a); idx += 4 + + general_data.encode_float(idx, ambient_occlusion_color.r); idx += 4 + general_data.encode_float(idx, ambient_occlusion_color.g); idx += 4 + general_data.encode_float(idx, ambient_occlusion_color.b); idx += 4 + general_data.encode_float(idx, ambient_occlusion_color.a); idx += 4 + + general_data.encode_float(idx, atmosphere_color.r); idx += 4 + general_data.encode_float(idx, atmosphere_color.g); idx += 4 + general_data.encode_float(idx, atmosphere_color.b); idx += 4 + general_data.encode_float(idx, atmosphere_color.a); idx += 4 + + general_data.encode_float(idx, small_noise_scale); idx += 4 + general_data.encode_float(idx, min_step_distance); idx += 4 + general_data.encode_float(idx, max_step_distance); idx += 4 + general_data.encode_float(idx, lod_bias); idx += 4 + + general_data.encode_float(idx, clouds_sharpness); idx += 4 + general_data.encode_float(idx, float(directional_lights_data.size()) / 2.0); idx += 4 + general_data.encode_float(idx, clouds_powder); idx += 4 + general_data.encode_float(idx, clouds_anisotropy); idx += 4 + + general_data.encode_float(idx, cloud_floor); idx += 4 + general_data.encode_float(idx, cloud_ceiling); idx += 4 + general_data.encode_float(idx, float(max_step_count)); idx += 4 + general_data.encode_float(idx, float(max_lighting_steps)); idx += 4 + + general_data.encode_float(idx, float(filter_index)); idx += 4 + general_data.encode_float(idx, float(blur_power)); idx += 4 + general_data.encode_float(idx, float(blur_quality)); idx += 4 + general_data.encode_float(idx, float(curl_noise_strength)); idx += 4 + + general_data.encode_float(idx, wind_direction.x); idx += 4 + general_data.encode_float(idx, wind_direction.z); idx += 4 + general_data.encode_float(idx, fog_effect_ground); idx += 4 + general_data.encode_float(idx, positionQueries.size()); idx += 4 + + general_data.encode_float(idx, float(point_lights_data.size()) / 2.0); idx += 4 + general_data.encode_float(idx, float(point_effector_data.size()) / 2.0); idx += 4 + general_data.encode_float(idx, wind_swept_range); idx += 4 + general_data.encode_float(idx, wind_swept_strength); idx += 4 + + general_data.encode_float(idx, new_size.x); idx += 4 + general_data.encode_float(idx, new_size.y); idx += 4 + general_data.encode_float(idx, large_noise_scale); idx += 4 + general_data.encode_float(idx, medium_noise_scale); idx += 4 + + general_data.encode_float(idx, current_time); idx += 4 + general_data.encode_float(idx, clouds_coverage); idx += 4 + general_data.encode_float(idx, clouds_density); idx += 4 + general_data.encode_float(idx, clouds_detail_power); idx += 4 + + general_data.encode_float(idx, lighting_density); idx += 4 + general_data.encode_float(idx, accumulation_decay if !ignore_accumilation else 0.0); idx += 4 + if (accumulation_is_a): + general_data.encode_float(idx, 1.0); idx += 4 + else: + general_data.encode_float(idx, 0.0); idx += 4 + general_data.encode_float(idx, int(pow(2.0, float(resolution_scale)))); idx += 4 + # + #general_data.encode_float(idx, last_size.x); idx += 4 + #general_data.encode_float(idx, last_size.y); idx += 4 + #general_data.encode_float(idx, 0.0); idx += 4 + #general_data.encode_float(idx, 0.0); idx += 4 + + # Copy to byte buffer + rd.buffer_update(general_data_buffer, 0, general_data.size(), general_data) + + +func update_lights(): + lights_updated = false + + if light_data.size() != 6272: #32 + 1024 + 512 * 4 bytes for each float = 6272. + light_data.resize(6272) + + if (directional_lights_data.size() == 0): #defaults to having a default light. + directional_lights_data.append(Vector4(0.5, 1.0, 0.5, 16.0)) + directional_lights_data.append(Vector4(1.0, 1.0, 1.0, 1.0)) + + var idx = 0 + for i in range(min(directional_lights_data.size(), 8)): + light_data.encode_float(idx, directional_lights_data[i].x) + idx += 4 + light_data.encode_float(idx, directional_lights_data[i].y) + idx += 4 + light_data.encode_float(idx, directional_lights_data[i].z) + idx += 4 + light_data.encode_float(idx, directional_lights_data[i].w) + idx += 4 + + + idx = 128 + for i in range(min(point_lights_data.size(), 256)): + light_data.encode_float(idx, point_lights_data[i].x) + idx += 4 + light_data.encode_float(idx, point_lights_data[i].y) + idx += 4 + light_data.encode_float(idx, point_lights_data[i].z) + idx += 4 + light_data.encode_float(idx, point_lights_data[i].w) + idx += 4 + + idx = 4224 + for i in range(min(point_effector_data.size(), 128)): + light_data.encode_float(idx, point_effector_data[i].x) + idx += 4 + light_data.encode_float(idx, point_effector_data[i].y) + idx += 4 + light_data.encode_float(idx, point_effector_data[i].z) + idx += 4 + light_data.encode_float(idx, point_effector_data[i].w) + idx += 4 + + rd.buffer_update(light_data_buffer, 0, light_data.size(), light_data) + +func encode_sample_points(): + positionQuerying = true + var sample_points_data_floats : PackedByteArray = [] + sample_points_data_floats.resize(512) + + var idx = 0 + while idx < 512 && positionQueries.size() > 0: + + sample_points_data_floats.encode_float(idx, positionQueries[0].x) + idx += 4 + sample_points_data_floats.encode_float(idx, positionQueries[0].y) + idx += 4 + sample_points_data_floats.encode_float(idx, positionQueries[0].z) + idx += 4 + sample_points_data_floats.encode_float(idx, 0.0) + idx += 4 + positionQueries.remove_at(0) + + + rd.buffer_update(point_sample_data_buffer, 0, sample_points_data_floats.size(), sample_points_data_floats) diff --git a/source/addons/SunshineClouds2/SunshineClouds.gd.uid b/source/addons/SunshineClouds2/SunshineClouds.gd.uid new file mode 100644 index 0000000..8fe63b7 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds.gd.uid @@ -0,0 +1 @@ +uid://dnblgqynq1t7l diff --git a/source/addons/SunshineClouds2/SunshineClouds2.gd b/source/addons/SunshineClouds2/SunshineClouds2.gd new file mode 100644 index 0000000..aeca8bf --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds2.gd @@ -0,0 +1,57 @@ +@tool +extends EditorPlugin + +var dock : CloudsEditorController + +func _handles(object: Object) -> bool: + return object is SunshineCloudsDriverGD + +func _forward_3d_gui_input(viewport_camera: Camera3D, event: InputEvent) -> int: + if dock.currentDrawMode == CloudsEditorController.DRAWINGMODE.none: + return EditorPlugin.AFTER_GUI_INPUT_PASS + + if (Input.is_key_pressed(KEY_ESCAPE)): + dock.DrawModeCancel() + return EditorPlugin.AFTER_GUI_INPUT_STOP + + if (Input.is_key_pressed(KEY_CTRL)): + dock.SetDrawInvert(true) + else: + dock.SetDrawInvert(false) + + if event is InputEventMouse: + dock.IterateCursorLocation(viewport_camera, event) + + if (event is InputEventMouseButton): + if (event.button_index == MOUSE_BUTTON_LEFT): + if event.is_pressed(): + dock.BeginCursorDraw() + Input.mouse_mode = Input.MOUSE_MODE_CONFINED_HIDDEN + return EditorPlugin.AFTER_GUI_INPUT_STOP + elif dock.drawingCurrently: + dock.EndCursorDraw() + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + elif !Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT): + if (event.button_index == MOUSE_BUTTON_WHEEL_UP): + dock.ScaleDrawingCircleUp() + return EditorPlugin.AFTER_GUI_INPUT_STOP + elif (event.button_index == MOUSE_BUTTON_WHEEL_DOWN): + dock.ScaleDrawingCircleDown() + return EditorPlugin.AFTER_GUI_INPUT_STOP + + return EditorPlugin.AFTER_GUI_INPUT_PASS + +func _enter_tree() -> void: + dock = preload("res://addons/SunshineClouds2/Dock/CloudsEditorDock.tscn").instantiate() as CloudsEditorController + add_control_to_dock(DOCK_SLOT_LEFT_UR, dock) + + scene_changed.connect(dock.SceneChanged) + dock.call_deferred(&"InitialSceneLoad") + set_input_event_forwarding_always_enabled() + + +func _exit_tree() -> void: + scene_changed.disconnect(dock.SceneChanged) + + remove_control_from_docks(dock) + dock.free() diff --git a/source/addons/SunshineClouds2/SunshineClouds2.gd.uid b/source/addons/SunshineClouds2/SunshineClouds2.gd.uid new file mode 100644 index 0000000..e52fdb8 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineClouds2.gd.uid @@ -0,0 +1 @@ +uid://dh7p0uclivhsp diff --git a/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl b/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl new file mode 100644 index 0000000..1f48a22 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl @@ -0,0 +1,954 @@ +#[compute] +#version 450 +#define PI 3.141592 +#define ABSORPTION_COEFFICIENT 0.9 + +#include "./CloudsInc.txt" + +// Invocations in the (x, y, z) dimension +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +layout(rgba16f, binding = 0) uniform image2D output_data_image; +layout(rgba16f, binding = 1) uniform image2D output_color_image; + +layout(rgba32f, binding = 2) uniform image2D accum_1A_image; +layout(rgba32f, binding = 3) uniform image2D accum_1B_image; + +layout(rgba32f, binding = 4) uniform image2D accum_2A_image; +layout(rgba32f, binding = 5) uniform image2D accum_2B_image; + +layout(binding = 6) uniform sampler2D depth_image; +layout(binding = 7) uniform sampler2D extra_large_noise; +layout(binding = 8) uniform sampler3D large_noise; +layout(binding = 9) uniform sampler3D noise_medium; +layout(binding = 10) uniform sampler3D noise_small; +layout(binding = 11) uniform sampler3D curl_noise; +layout(binding = 12) uniform sampler3D dither_small; +layout(binding = 13) uniform sampler2D heightmask; + +layout(binding = 14) uniform uniformBuffer { + GenericData data; +} genericData; + +layout(binding = 15) uniform LightsBuffer { + DirectionalLight directionalLights[4]; + PointLight pointLights[128]; + PointEffector pointEffectors[64]; +}; + +layout(binding = 16, std430) restrict buffer SamplePointsBuffer { + vec4 SamplePoints[32]; +}; + + +layout(binding = 17, std140) uniform SceneDataBlock { + SceneData data; + SceneData prev_data; +} scene_data_block; + +// Our push constant +// layout(push_constant, std430) uniform Params { +// vec2 raster_size; +// float large_noise_scale; +// float medium_noise_scale; + +// float time; +// float cloud_coverage; +// float cloud_density; +// float small_noise_strength; + +// float cloud_lighting_power; +// float accumilation_decay; +// vec2 cameraRotation; +// } params; + +//Helpers +const int BayerFilter16[16] = +{ + 0, 8, 2, 10, + 12, 4, 14, 6, + 3, 11, 1, 9, + 15, 7, 13, 5 +}; +const int BayerFilter4[4] = +{ + 0, 1, + 3, 2, +}; + +const mat4 bayer_matrix = mat4( + vec4(00.0 / 16.0, 12.0 / 16.0, 03.0 / 16.0, 15.0 / 16.0), + vec4(08.0 / 16.0, 04.0 / 16.0, 11.0 / 16.0, 07.0 / 16.0), + vec4(02.0 / 16.0, 14.0 / 16.0, 01.0 / 16.0, 13.0 / 16.0), + vec4(10.0 / 16.0, 06.0 / 16.0, 09.0 / 16.0, 05.0 / 16.0)); + +float quadraticOut(float t) { + return -t * (t - 2.0); +} + +float quadraticIn(float t) { + return t * t; +} + +float rand(vec2 co){ + return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453); +} + +float get_dither_value(vec2 pixel) { + int x = int(pixel.x - 4.0 * floor(pixel.x / 4.0)); + int y = int(pixel.y - 4.0 * floor(pixel.y / 4.0)); + return bayer_matrix[x][y]; +} + +float remap(float value, float min1, float max1, float min2, float max2) { + return min2 + (value - min1) * (max2 - min2) / (max1 - min1); +} + +float BeersLaw (float dist, float absorption) { + return exp(-dist * absorption); +} + +float Powder (float dist, float absorption) { + return 1.0 - exp(-dist * absorption * 2.0); +} + +float HenyeyGreenstein(float g, float costh) +{ + return (1.0 - g * g) / (4.0 * PI * pow(1.0 + g * g - 2.0 * g * costh, 3.0/2.0)); +} + +bool renderBayer(ivec2 fragCoord, int framecount) +{ + //int BAYER = 16; + //int index = framecount % BAYER; + + return (fragCoord.x + 4 * fragCoord.y) % 16 == BayerFilter16[framecount]; +} + +//Sample functions + +float sampleEffectorAdditive(vec3 worldPosition) { + float effectorAdditive = 0.0; + for (int i = 0; i < int(genericData.data.pointEffectorCount); i++) { + float effectorDistance = distance(pointEffectors[i].position, worldPosition); + if (effectorDistance < pointEffectors[i].radius){ + effectorAdditive += mix(pointEffectors[i].power, 0.0, effectorDistance / pointEffectors[i].radius); + } + } + return effectorAdditive; +} + +float sampleScene( + vec3 largeNoisePos, + vec3 mediumNoisePos, + vec3 smallNoisePos, + vec3 worldPosition, + float cloudceiling, + float cloudfloor, + float extralargeNoiseValue, + float largenoisescale, + float mediumnoisescale, + float smallnoisescale, + float coverage, + float smallscalePower, + float curlPower, + float lod, + bool ambientsample) + { + float clampedWorldHeight = remap(worldPosition.y, cloudfloor, cloudceiling, 0.0, 1.0); + vec4 gradientSample = texture(heightmask, vec2(clampedWorldHeight, 0.5)).rgba; + + + float edgeFade = min(smoothstep(0.0, 0.1, clampedWorldHeight), smoothstep(1.0, 0.9, clampedWorldHeight)); + float extraLargeShape = extralargeNoiseValue * gradientSample.b; + + float smallShape = texture(noise_small, (worldPosition - smallNoisePos) / smallnoisescale).r; + + float curlHeightSample = (1.0 - gradientSample.a); + + float effectorAdditive = 0.0; + vec2 WindDirection = genericData.data.WindDirection; + worldPosition += vec3(WindDirection.x, 0.0, WindDirection.y) * genericData.data.windSweptPower * quadraticIn(1.0 - clamp(clampedWorldHeight / genericData.data.windSweptRange, 0.0, 1.0)); + + if (lod > 0.0){ + effectorAdditive = sampleEffectorAdditive(worldPosition) * edgeFade; + + if (!ambientsample && curlHeightSample > 0.0 && min(curlPower, lod) > 0.5){ + + float curlLod = remap(lod, 0.5, 1.0, 0.0, 1.0); + worldPosition += (((texture(curl_noise, (worldPosition - mediumNoisePos) / mediumnoisescale).xyz * 2.0) - 1.0) * vec3(1.0, 0.2, 1.0) + vec3(WindDirection.x, 0.0, WindDirection.y) * 0.9) * curlPower * curlHeightSample * curlLod; + worldPosition += (((texture(curl_noise, (worldPosition - mediumNoisePos) / mediumnoisescale).xyz * 2.0) - 1.0) * vec3(1.0, 0.2, 1.0) + vec3(WindDirection.x, 0.0, WindDirection.y) * 0.9) * curlPower * curlHeightSample * curlLod; + worldPosition += (((texture(curl_noise, (worldPosition - mediumNoisePos) / mediumnoisescale).xyz * 2.0) - 1.0) * vec3(1.0, 0.2, 1.0) + vec3(WindDirection.x, 0.0, WindDirection.y) * 0.9) * curlPower * curlHeightSample * curlLod; + + clampedWorldHeight = remap(worldPosition.y, cloudfloor, cloudceiling, 0.0, 1.0); + gradientSample = texture(heightmask, vec2(clampedWorldHeight, 0.5)).rgba; + } + } + + float largeShape = texture(large_noise, (worldPosition - largeNoisePos) / largenoisescale).r * extraLargeShape; + largeShape = smoothstep(coverage , coverage - 0.1, 1.0 - (largeShape * gradientSample.r)) + max(effectorAdditive, 0.0); + vec4 mediumShapes = texture(noise_medium, (worldPosition - mediumNoisePos) / mediumnoisescale).rgba; + float mediumshape = 1.0 - mediumShapes.b; + smallShape = smallShape * gradientSample.g * pow((1.0 - mediumshape), smallscalePower); + + + float shape = mediumshape + max(effectorAdditive, 0.0); + shape = clamp(remap(shape, 1.0 - largeShape, 1.0, 0.0, 1.0), 0.0, 1.0); + shape = clamp(remap(shape, smallShape, 1.0, 0.0, 1.0), 0.0, 1.0); + shape += min(effectorAdditive, 0.0); + + return clamp((shape * edgeFade), 0.0, 1.0); +} + +float sampleSceneCoarse( + vec3 largeNoisePos, + vec3 worldPosition, + float cloudceiling, + float cloudfloor, + float extralargeNoiseValue, + float largenoisescale, + float coverage, + float lod) + { + float clampedWorldHeight = remap(worldPosition.y, cloudfloor, cloudceiling, 0.0, 1.0); + vec4 gradientSample = texture(heightmask, vec2(clampedWorldHeight, 0.5)).rgba; + + float edgeFade = min(smoothstep(0.0, 0.1, clampedWorldHeight), smoothstep(1.0, 0.9, clampedWorldHeight)); + float extraLargeShape = extralargeNoiseValue * gradientSample.b; + + float effectorAdditive = 0.0; + vec2 WindDirection = genericData.data.WindDirection; + worldPosition += vec3(WindDirection.x, 0.0, WindDirection.y) * genericData.data.windSweptPower * quadraticIn(1.0 - clamp(clampedWorldHeight / genericData.data.windSweptRange, 0.0, 1.0)); + + if (lod > 0.0){ + effectorAdditive = sampleEffectorAdditive(worldPosition) * edgeFade; + } + + float largeShape = texture(large_noise, (worldPosition - largeNoisePos) / largenoisescale).r * extraLargeShape; + largeShape = smoothstep(coverage , coverage - 0.1, 1.0 - (largeShape * gradientSample.r)) + max(effectorAdditive, 0.0); + + float shape = largeShape + effectorAdditive; + return clamp((shape * edgeFade), 0.0, 1.0); +} + +float sampleLighting( + int stepCount, + vec3 worldPosition, + vec3 extralargeNoisePos, + vec3 largeNoisePos, + vec3 mediumNoisePos, + vec3 smallNoisePos, + vec3 sunDirection, + float densityMultiplier, + float sunUpWeight, + float stepDistance, + float cloudceiling, + float cloudfloor, + float extralargenoisescale, + float largenoisescale, + float mediumnoisescale, + float smallnoisescale, + float coverage, + float smallscalePower, + float curlPower, + float lod) + { + float density = 0.0; + float stepCountFloat = max(float(stepCount) * lod, 2.0); + float actualDistance = mix(stepDistance * 4.0, stepDistance, lod); + float eachShortStep = actualDistance / (float(stepCount) / stepCountFloat) / stepCountFloat; + float traveledDistance = 0.0; + + float sunUpValue = 1.0 - sunUpWeight; + float eachStepWeight = 1.0 / stepCountFloat; + + float heightGradient = 0.0; + float thisDensity = 0.0; + float count = 0.0; + vec3 curPos = worldPosition; + for (float i = 0.0; i < stepCountFloat; i++) { + traveledDistance = mix(eachShortStep, actualDistance, clamp(quadraticOut(i / stepCountFloat), 0.0, 1.0)); + curPos = worldPosition + sunDirection * traveledDistance; + + if (density < 1.0 && clamp(curPos.y, cloudfloor, cloudceiling) == curPos.y){ + heightGradient = remap(curPos.y, cloudfloor, cloudceiling, 0.0, 1.0); + + heightGradient = clamp(smoothstep(sunUpValue - 0.1, sunUpValue, heightGradient), 0.0, 1.0); + float extraLargeShape = texture(extra_large_noise, (curPos.xz - extralargeNoisePos.xz) / extralargenoisescale).a; + + thisDensity = sampleScene(largeNoisePos, mediumNoisePos, smallNoisePos, curPos, cloudceiling, cloudfloor, extraLargeShape, largenoisescale, mediumnoisescale, smallnoisescale, coverage, smallscalePower, curlPower, lod, true) * densityMultiplier * eachStepWeight; + density += mix(1.0, thisDensity, heightGradient); + } + else{ + break; + } + } + + return density; +} + +float sampleAO( + vec3 extralargeNoisePos, + vec3 largeNoisePos, + vec3 mediumNoisePos, + vec3 smallNoisePos, + vec3 worldPosition, + float lightingSampleRange, + float cloudceiling, + float cloudfloor, + float extralargenoisescale, + float largenoisescale, + float mediumnoisescale, + float smallnoisescale, + float coverage, + float smallscalePower, + float curlPower, + float lod) + { + vec3 samplePos = worldPosition; + samplePos.y += lightingSampleRange * 0.5; + samplePos.y += lightingSampleRange * (rand(samplePos.xz) * 2.0 - 1.0); + samplePos.x += lightingSampleRange * (rand(samplePos.zy) * 2.0 - 1.0); + samplePos.z += lightingSampleRange * (rand(samplePos.yx) * 2.0 - 1.0); + + float extraLargeShape = texture(extra_large_noise, (samplePos.xz - extralargeNoisePos.xz) / extralargenoisescale).a; + return sampleScene(largeNoisePos, mediumNoisePos, smallNoisePos, samplePos, cloudceiling, cloudfloor, extraLargeShape, largenoisescale, mediumnoisescale, smallnoisescale, coverage, smallscalePower, curlPower, lod, true); +} + +void sampleAtmospherics( + vec3 curPos, + float atmosphericHeight, + float distanceTraveled, + float Rayleighscaleheight, + float Miescaleheight, + vec3 RayleighScatteringCoef, + float MieScatteringCoef, + float atmosphericDensity, + float density, + inout vec3 totalRlh, + inout vec3 totalMie, + inout float iOdRlh, + inout float iOdMie) + { + float iHeight = curPos.y / atmosphericHeight; + float odStepRlh = exp(-iHeight / Rayleighscaleheight) * distanceTraveled; + float odStepMie = exp(-iHeight / Miescaleheight) * distanceTraveled; + iOdRlh += odStepRlh; + iOdMie += odStepMie; + + vec3 attn = exp(-(MieScatteringCoef * (iOdMie + Miescaleheight) + RayleighScatteringCoef * (iOdRlh + Rayleighscaleheight))) * atmosphericDensity * (1.0 - clamp(iHeight, 0.0, 1.0)); + totalRlh += odStepRlh * attn * (1.0 - density); + totalMie += odStepMie * attn * (1.0 - density); +} + + +vec4 sampleAllAtmospherics( + vec3 worldPos, + vec3 rayDirection, + float linear_depth, + float highestDensityDistance, + float density, + float stepDistance, + float stepCount, + float atmosphericDensity, + vec3 sunDirection, + vec3 sunlightColor, + vec3 ambientLight) + { + vec3 totalRlh = vec3(0,0,0); + vec3 totalMie = vec3(0,0,0); + float iOdRlh = 0.0; + float iOdMie = 0.0; + // float odStepRlh = 0.0; + // float odStepMie = 0.0; + + const float atmosphericHeight = 40000.0; + const vec3 RayleighScatteringCoef = vec3(5.5e-6, 13.0e-6, 22.4e-6); + const float Rayleighscaleheight = 8e3; + const float MieScatteringCoef = 21e-6; + const float Miescaleheight = 1.2e3; + const float MieprefferedDirection = 0.758; + + // Calculate the Rayleigh and Mie phases. + float mu = dot(rayDirection, sunDirection); + float mumu = mu * mu; + float gg = MieprefferedDirection * MieprefferedDirection; + float pRlh = 3.0 / (16.0 * PI) * (1.0 + mumu); + float pMie = 3.0 / (8.0 * PI) * ((1.0 - gg) * (mumu + 1.0)) / (pow(1.0 + gg - 2.0 * mu * MieprefferedDirection, 1.5) * (2.0 + gg)); + + vec3 curPos = vec3(0.0); + float traveledDistance = 0.0; + //bool sampledDistanceAtmo = false; + float currentWeight = 0.0; + float sampleCount = 0.0; + + for (float i = 0.0; i < stepCount; i++) { + traveledDistance = stepDistance * (i + 1); + + currentWeight = density * (1.0 - clamp((highestDensityDistance - traveledDistance) / stepDistance, 0.0, 1.0)); + + if (traveledDistance > linear_depth || currentWeight >= 1.0){ + traveledDistance = traveledDistance - stepDistance; + currentWeight = 1.0 - clamp((linear_depth - traveledDistance) / stepDistance, 0.0, 1.0); + sampleAtmospherics(curPos, atmosphericHeight, stepDistance, Rayleighscaleheight, Miescaleheight, RayleighScatteringCoef, MieScatteringCoef, atmosphericDensity, currentWeight, totalRlh, totalMie, iOdRlh, iOdMie); + break; + } + sampleCount += 1.0; + + curPos = worldPos + rayDirection * traveledDistance; + + sampleAtmospherics(curPos, atmosphericHeight, stepDistance, Rayleighscaleheight, Miescaleheight, RayleighScatteringCoef, MieScatteringCoef, atmosphericDensity, currentWeight, totalRlh, totalMie, iOdRlh, iOdMie); + } + + // pRlh *= (1.0 - lightingWeight); + // pMie *= (1.0 - lightingWeight); + + float AtmosphericsDistancePower = length(vec3(RayleighScatteringCoef * totalRlh + MieScatteringCoef * totalMie)); + vec3 atmospherics = 22.0 * (ambientLight * RayleighScatteringCoef * totalRlh + pMie * MieScatteringCoef * sunlightColor * totalMie) / sampleCount; + return vec4(atmospherics, AtmosphericsDistancePower); +} + + +void main() { + //SETTING UP UVS/RAY DATA + ivec2 uv = ivec2(gl_GlobalInvocationID.xy); + ivec2 size = ivec2(genericData.data.raster_size); + + // Prevent reading/writing out of bounds. + if (uv.x >= size.x || uv.y >= size.y) { + return; + } + + vec2 depthUV = vec2(float(uv.x) / float(size.x), float(uv.y) / float(size.y)); + float depth = texture(depth_image, depthUV).r; + + vec4 view = inverse(scene_data_block.data.projection_matrix) * vec4(depthUV*2.0-1.0,depth,1.0); + view.xyz /= view.w; + float linear_depth = length(view); //used to calculate depth based on the view angle, idk just works. + //4.4 doesn't work with this + // if (linear_depth > scene_data_block.data.z_far){ + // linear_depth *= 100.0; + // } + + // Convert screen coordinates to normalized device coordinates + vec2 clipUV = vec2(depthUV.x, depthUV.y); + vec2 ndc = clipUV * 2.0 - 1.0; + // Convert NDC to view space coordinates + vec4 clipPos = vec4(ndc, 0.0, 1.0); + vec4 viewPos = inverse(scene_data_block.data.projection_matrix) * clipPos; + viewPos.xyz /= viewPos.w; + + vec3 rd_world = normalize(viewPos.xyz); + rd_world = mat3(scene_data_block.data.main_cam_inv_view_matrix) * rd_world; + // Define the ray properties + + vec3 raydirection = normalize(rd_world); + vec3 rayOrigin = scene_data_block.data.main_cam_inv_view_matrix[3].xyz; //center of camera for the ray origin, not worried about the screen width playing in, as it's for clouds. + + + //DITHER + float ditherScale = 40.037; + vec3 ditherUV = vec3(depthUV.x * ditherScale , depthUV.y * ditherScale , genericData.data.time); + float smallNoise = texture(dither_small, ditherUV).r; + + float ditherValue = smallNoise; + + //ATMOSPHERICS + vec3 ambientfogdistancecolor = genericData.data.ambientfogdistancecolor.rgb; + vec3 totalRlh = vec3(0,0,0); + vec3 totalMie = vec3(0,0,0); + float iOdRlh = 0.0; + float iOdMie = 0.0; + float atmosphericDensity = genericData.data.atmospheric_density; + + const float atmosphericHeight = 40000.0; + const vec3 RayleighScatteringCoef = vec3(5.5e-6, 13.0e-6, 22.4e-6); + const float Rayleighscaleheight = 8e3; + const float MieScatteringCoef = 21e-6; + const float Miescaleheight = 1.2e3; + const float MieprefferedDirection = 0.758; + + //IMPORTED DATA + int stepCount = int(genericData.data.max_step_count); + int lightingStepCount = int(genericData.data.max_lighting_step_count); + int directionalLightCount = int(genericData.data.directionalLightsCount); + int pointLightCount = int(genericData.data.pointLightsCount); + + vec3 extralargeNoisePos = genericData.data.extralargenoiseposition; + vec3 largeNoisePos = genericData.data.largenoiseposition; + vec3 mediumNoisePos = genericData.data.mediumnoiseposition; + vec3 smallNoisePos = genericData.data.smallnoiseposition; + + float extralargenoiseScale = genericData.data.extralargenoisescale; + float largenoiseScale = genericData.data.large_noise_scale; + float mediumnoiseScale = genericData.data.medium_noise_scale; + float smallnoiseScale = genericData.data.small_noise_scale; + + float minstep = genericData.data.min_step_distance; + float maxstep = genericData.data.max_step_distance; + + + float curlPower = genericData.data.curlPower; + float lightingStepDistance = genericData.data.lighting_step_distance; + float cloudfloor = genericData.data.cloud_floor; + float cloudceiling = genericData.data.cloud_ceiling; + + float densityMultiplier = genericData.data.cloud_density; + float sharpness = clamp(1.0 - genericData.data.cloud_sharpness, 0.001, 1.0) * 2.0; + float lightingSharpness = genericData.data.cloud_lighting_sharpness; + float smallNoiseMultiplier = genericData.data.small_noise_strength; + + float coverage = genericData.data.cloud_coverage * 1.01; + float lightingdensityMultiplier = genericData.data.cloud_lighting_power; + lightingdensityMultiplier += lightingdensityMultiplier * 3.0 * coverage; + + vec4 aobase = genericData.data.ambientGroundLightColor; + + //bool debugCollisions = false; + //int frameIndex = int(genericData.data.filterIndex); + + //REUSABLE VARIABLES + bool override = false; + bool densityBreak = false; + bool depthBreak = false; + + float maxTheoreticalStep = float(stepCount) * maxstep; + float highestDensity = 0.0; + float highestDensityDistance = maxTheoreticalStep; + float ceilingSample = cloudceiling; + float lodMaxDistance = maxstep * float(stepCount) * genericData.data.lod_bias; + float halfcloudThickness = (cloudceiling - cloudfloor) * 0.5; + float halfCeiling = cloudceiling - halfcloudThickness; + + + float newStep = maxstep * ditherValue; + float traveledDistance = newStep; + + vec4 currentColorAccumilation = vec4(0.0); + vec4 currentDataAccumilation = vec4(0.0); + + + + + //Used for interlaced rendering, not currently enabled due to it's long accumilation time, results in a lot of noticable artifacts. + //Though it does improve performance, so maybe for some people it will be helpful. + + //bool rebuildFrame = renderBayer(uv, frameIndex); + // bool rebuildFrame = true; + + // if (!rebuildFrame){ + // //accumulation preperation: + // vec4 niaveDataRetreval = vec4(0.0); + // float usingaccumA = genericData.data.isAccumulationA; + // if (usingaccumA > 0.0){ + // niaveDataRetreval = imageLoad(accum_2A_image, uv).rgba; + // } + // else{ + // niaveDataRetreval = imageLoad(accum_2B_image, uv).rgba; + // } + // //depthBreak = niaveDataRetreval.r > linear_depth; + + // vec3 worldFinalPos = curPos + raydirection * niaveDataRetreval.g; + // worldFinalPos += (rayOrigin - genericData.data.prevview[3].xyz); + // //Prevview is already actually the inv_view (due to the way retrieving the transform works), so inversing it here is making it the equalivant of View_Matrix. + // vec4 reprojectedClipPos = inverse(genericData.data.prevview) * vec4(worldFinalPos, 1.0); + + + // if (reprojectedClipPos.z > 0.0){ + // override = true; + // } + // else{ + // vec4 reprojectedScreenPos = genericData.data.prevproj * reprojectedClipPos; + + // // Convert clip space to normalized device coordinates + // ndc = (reprojectedScreenPos.xy / reprojectedScreenPos.w); + + // // Convert normalized device coordinates to screen space + // vec2 screen_position = ndc * 0.5 + 0.5; + // //screen_position = clamp(screen_position, vec2(0.0), vec2(1.0)); + // screen_position = screen_position - depthUV; + // ivec2 adjustedUV = ivec2(int(screen_position.x * size.x), int(screen_position.y * size.y)); + // //float change = length(vec2(adjustedUV)); + // adjustedUV += uv; //Size is the screen resolution. + + // ivec2 clampedUV = clamp(adjustedUV, ivec2(0), size - ivec2(1)); //having two lets me check if clamping it changed the reprojected uv, if it did that means it was offscreen, so rebuild data. + + // //execute accumilation. + // float accumdecay = genericData.data.accumilation_decay; + + // //alternate back and forth to avoid stepping on pixels being written too. + + // float actualDepth = abs(reprojectedClipPos.z); + + // if (usingaccumA > 0.0){ + // currentDataAccumilation = imageLoad(accum_2A_image, adjustedUV).rgba; + // bool lastDepthBreak = currentDataAccumilation.a < 0.0; + // float sampledDepth = currentDataAccumilation.r; + // depthBreak = actualDepth > sampledDepth; + // if (clampedUV != adjustedUV || depthBreak != lastDepthBreak){ + // override = true; + // //debugCollisions = true; + // } + // else{ + // imageStore(accum_1B_image, uv, imageLoad(accum_1A_image, adjustedUV)); + // imageStore(accum_2B_image, uv, currentDataAccumilation); + // } + + // } + // else{ + // currentDataAccumilation = imageLoad(accum_2B_image, adjustedUV).rgba; + // bool lastDepthBreak = currentDataAccumilation.a < 0.0; + // float sampledDepth = abs(currentDataAccumilation.r); + // depthBreak = actualDepth > sampledDepth; + // if (clampedUV != adjustedUV || depthBreak != lastDepthBreak){ + // override = true; + // //debugCollisions = true; + // } + // else{ + // imageStore(accum_1A_image, uv, imageLoad(accum_1B_image, adjustedUV)); + // imageStore(accum_2A_image, uv, currentDataAccumilation); + + // } + // } + // } + + // } + + // END INTERLACED RENDERING + + + + //if (rebuildFrame || override){ //Re-enable for interlaced rendering + //If it is our render, build the data for this pixel + + + vec3 directionalLightSunUpPower[4] = vec3[4](vec3(0.0), vec3(0.0), vec3(0.0), vec3(0.0)); + float totalLightPower = 0.0; + + for (int lightI = 0; lightI < directionalLightCount; lightI++){ + if (directionalLights[lightI].color.a > 0.0){ + + directionalLightSunUpPower[lightI].r = smoothstep(-0.03, 0.07, dot(directionalLights[lightI].direction.xyz, vec3(0.0, 1.0, 0.0))); + totalLightPower += directionalLights[lightI].color.a * directionalLightSunUpPower[lightI].r; + + directionalLightSunUpPower[lightI].b = dot(directionalLights[lightI].direction.xyz, raydirection); + } + } + + + + + vec4 lightColor = vec4(0.0); + vec3 paintedColor = vec3(0.0); + float initialdistanceSample = -1.0; + + float lightingSamples = 0.0; + float atmoSamples = 0.0; + + float density = 0.0; + float ambient = 0.0; + float depthFade = 1.0; + float newdensity = 0.0; + vec3 curPos = vec3(0.0); + + float curLod = 1.0; + float samplePosCount = genericData.data.samplePointsCount; + + if (samplePosCount > 0 && uv == ivec2(0)){ + for (int i = 0; i < samplePosCount; i++){ + curPos = SamplePoints[i].xyz; + vec4 maskSample = texture(extra_large_noise, (curPos.xz - extralargeNoisePos.xz) / extralargenoiseScale); + ceilingSample = mix(halfCeiling, cloudceiling, maskSample.a); + + SamplePoints[i].w = pow(sampleScene(largeNoisePos, mediumNoisePos, smallNoisePos, curPos, ceilingSample, cloudfloor, maskSample.a, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, 1.0, false) * densityMultiplier, sharpness); + } + } + + for (int i = 0; i < stepCount; i++) { + + if (traveledDistance > linear_depth){ + depthFade = 1.0 - smoothstep(linear_depth - newStep, linear_depth, traveledDistance); + depthBreak = true; + } + + curPos = rayOrigin + raydirection * traveledDistance; + + vec4 maskSample = texture(extra_large_noise, (curPos.xz - extralargeNoisePos.xz) / extralargenoiseScale); + ceilingSample = mix(halfCeiling, cloudceiling, maskSample.a); + + //sampleAtmospherics(curPos, atmosphericHeight, newStep, Rayleighscaleheight, Miescaleheight, RayleighScatteringCoef, MieScatteringCoef, atmosphericDensity, density, totalRlh, totalMie, iOdRlh, iOdMie); + atmoSamples += 1.0; + if (clamp(curPos.y, cloudfloor, cloudceiling) == curPos.y){ + + curLod = 1.0 - clamp(traveledDistance / lodMaxDistance, 0.0, 1.0); + newdensity = sampleSceneCoarse(largeNoisePos, curPos, ceilingSample, cloudfloor, maskSample.a, largenoiseScale, coverage, curLod); + + if (newdensity > 0.0) { + newdensity = pow(sampleScene(largeNoisePos, mediumNoisePos, smallNoisePos, curPos, ceilingSample, cloudfloor, maskSample.a, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod, false) * densityMultiplier, sharpness) * depthFade; + } + + + if (newdensity > 0.0){ + if (initialdistanceSample < 0.0){ + initialdistanceSample = traveledDistance; + } + + float powderEffect = pow(newdensity, genericData.data.powderStrength * 2.0); + + paintedColor += maskSample.rgb; + lightingSamples += 1.0; + for (int lightI = 0; lightI < directionalLightCount; lightI++){ + vec3 sundir = directionalLights[lightI].direction.xyz; + float sunUpWeight = directionalLightSunUpPower[lightI].r; + + int thislightingStepCount = min(int(directionalLights[lightI].direction.w), lightingStepCount); + float henyeygreenstein = pow(HenyeyGreenstein(genericData.data.anisotropy, directionalLightSunUpPower[lightI].b), mix(1.0, 2.0, 1.0 - genericData.data.anisotropy)); + float densitySample = sampleLighting(thislightingStepCount, curPos, extralargeNoisePos, largeNoisePos, mediumNoisePos, smallNoisePos, sundir, densityMultiplier * lightingdensityMultiplier, sunUpWeight, lightingStepDistance, ceilingSample, cloudfloor, extralargenoiseScale, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod); + densitySample = BeersLaw(lightingStepDistance, densitySample * henyeygreenstein); + //densitySample = Powder(lightingStepDistance, densitySample); + float thisStepLightingWeight = (clamp(pow(densitySample, lightingSharpness), 0.0, 1.0)) * sunUpWeight; + + + lightColor.rgb += pow(directionalLights[lightI].color.rgb * directionalLights[lightI].color.a * thisStepLightingWeight, vec3(2.2)) * powderEffect; + directionalLightSunUpPower[lightI].g += directionalLights[lightI].color.a * thisStepLightingWeight; + // if (thislightingStepCount > 0){ + // float henyeygreenstein = pow(HenyeyGreenstein(genericData.data.anisotropy, directionalLightSunUpPower[lightI].b), mix(1.0, 2.0, 1.0 - genericData.data.anisotropy)); + // float densitySample = sampleLighting(thislightingStepCount, curPos, extralargeNoisePos, largeNoisePos, mediumNoisePos, smallNoisePos, sundir, densityMultiplier * lightingdensityMultiplier, sunUpWeight, lightingStepDistance, ceilingSample, cloudfloor, extralargenoiseScale, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod); + // densitySample = BeersLaw(lightingStepDistance, densitySample * henyeygreenstein); + // //densitySample = Powder(lightingStepDistance, densitySample); + // float thisStepLightingWeight = (clamp(pow(densitySample, lightingSharpness), 0.0, 1.0)) * sunUpWeight; + + + // lightColor.rgb += pow(directionalLights[lightI].color.rgb * directionalLights[lightI].color.a * thisStepLightingWeight, vec3(2.2)) * powderEffect; + // directionalLightSunUpPower[lightI].g += directionalLights[lightI].color.a * thisStepLightingWeight; + // } + // else{ + // lightColor.rgb += pow(directionalLights[lightI].color.rgb * directionalLights[lightI].color.a * sunUpWeight, vec3(2.2)) * powderEffect; + // directionalLightSunUpPower[lightI].g += directionalLights[lightI].color.a * sunUpWeight; + // } + // if (directionalLights[lightI].color.a > 0.0){ + + // vec3 sundir = directionalLights[lightI].direction.xyz; + // float sunUpWeight = directionalLightSunUpPower[lightI].r; + + // int thislightingStepCount = min(int(directionalLights[lightI].direction.w), lightingStepCount); + // if (thislightingStepCount > 0){ + // float henyeygreenstein = pow(HenyeyGreenstein(genericData.data.anisotropy, directionalLightSunUpPower[lightI].b), mix(1.0, 2.0, 1.0 - genericData.data.anisotropy)); + // float densitySample = sampleLighting(thislightingStepCount, curPos, extralargeNoisePos, largeNoisePos, mediumNoisePos, smallNoisePos, sundir, densityMultiplier * lightingdensityMultiplier, sunUpWeight, lightingStepDistance, ceilingSample, cloudfloor, extralargenoiseScale, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod); + // densitySample = BeersLaw(lightingStepDistance, densitySample * henyeygreenstein); + // //densitySample = Powder(lightingStepDistance, densitySample); + // float thisStepLightingWeight = (clamp(pow(densitySample, lightingSharpness), 0.0, 1.0)) * sunUpWeight; + + + // lightColor.rgb += pow(directionalLights[lightI].color.rgb * directionalLights[lightI].color.a * thisStepLightingWeight, vec3(2.2)) * powderEffect; + // directionalLightSunUpPower[lightI].g += directionalLights[lightI].color.a * thisStepLightingWeight; + // } + // else{ + // lightColor.rgb += pow(directionalLights[lightI].color.rgb * directionalLights[lightI].color.a * sunUpWeight, vec3(2.2)) * powderEffect; + // directionalLightSunUpPower[lightI].g += directionalLights[lightI].color.a * sunUpWeight; + // } + + + // } + } + + for (int lightI = 0; lightI < pointLightCount; lightI++){ + vec3 lightToOriginDelta = pointLights[lightI].position.xyz - curPos; + float lightDistanceWeight = length(lightToOriginDelta); + if (pointLights[lightI].color.a > 0.0 && lightDistanceWeight < pointLights[lightI].position.w){ + lightToOriginDelta = normalize(lightToOriginDelta); + //float densitySample = 1.0 - newdensity; + float densitySample = sampleLighting(3, curPos, extralargeNoisePos, largeNoisePos, mediumNoisePos, smallNoisePos, lightToOriginDelta, densityMultiplier, 1.0, min(maxstep, lightDistanceWeight), ceilingSample, cloudfloor, extralargenoiseScale, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod); + + float henyeygreenstein = pow(HenyeyGreenstein(genericData.data.anisotropy, dot(lightToOriginDelta, raydirection)), mix(1.0, 2.0, 1.0 - genericData.data.anisotropy)); + densitySample = BeersLaw(lightDistanceWeight, densitySample * henyeygreenstein); + densitySample = mix(densitySample, newdensity, 0.5) * powderEffect; + lightDistanceWeight = lightDistanceWeight / pointLights[lightI].position.w; + lightDistanceWeight = pointLights[lightI].color.a * pow((1.0 - lightDistanceWeight), 2.2) * densitySample; + + + lightColor.rgb += pow(pointLights[lightI].color.rgb * lightDistanceWeight, vec3(2.2)); + } + } + + if (aobase.a > 0.0){ + ambient += sampleScene(largeNoisePos, mediumNoisePos, smallNoisePos, curPos + vec3(0.0, 1.0, 0.0) * minstep, ceilingSample, cloudfloor, maskSample.a, largenoiseScale, mediumnoiseScale, smallnoiseScale, coverage, smallNoiseMultiplier, curlPower, curLod, true) * densityMultiplier * lightingdensityMultiplier ; + } + + + newStep = mix(mix(maxstep, minstep, pow(newdensity, 0.1)), maxstep, float(i) / float(stepCount)); + if (newdensity > highestDensity){ + highestDensity = newdensity; + highestDensityDistance = traveledDistance; + } + } + else{ + newStep = maxstep; + } + + if (i == 0){ + newdensity = mix(newdensity, 0.0, clamp(traveledDistance / maxstep, 0.0, 1.0)); + } + + density += newdensity; + if (density >= 1.0){ + densityBreak = true; + break; + } + } + else{ + if (min(curPos.y - cloudceiling, raydirection.y) > 0.0 || max(curPos.y - cloudfloor, raydirection.y) < 0.0){ + + traveledDistance = min(maxTheoreticalStep, linear_depth); + curPos = rayOrigin + raydirection * traveledDistance; + + //debugCollisions = true; + break; + } + + newStep = maxstep; + } + + + if (depthBreak){ + break; + } + traveledDistance += newStep; + } + + + ambient = clamp(ambient / lightingSamples, 0.0, 1.0); + paintedColor = clamp(paintedColor / lightingSamples, 0.0, 1.0); + + + vec3 ambientLight = genericData.data.ambientLightColor.rgb * clamp(totalLightPower, 0.0, 1.0); + ambientLight = mix(ambientLight, ambientLight * aobase.rgb, clamp(ambient * aobase.a, 0.0, 1.0)) * paintedColor; + lightColor.rgb = ambientLight + clamp(lightColor.rgb / lightingSamples, vec3(0.0), vec3(2.0)); + lightColor.a = density; + + + if (linear_depth > maxstep && directionalLightCount > 0.0){ + for (float i = 0.0; i < directionalLightCount; i++){ + DirectionalLight light = directionalLights[int(i)]; + vec3 sundir = light.direction.xyz; + //sampleColor = sundir; + float sunUpWeight = smoothstep(0.0, 0.4, dot(sundir, vec3(0.0, 1.0, 0.0))); + float sundensityaffect = 1.0 - clamp(dot(sundir, raydirection) * density, 0.0, 1.0); + // sundensityaffect = min(1.0 - (sundensityaffect * density), 1.0 - (sundensityaffect * clamp(maxTheoreticalStep - linear_depth, 0.0, 1.0))); + float lightPower = light.color.a * sunUpWeight * sundensityaffect; + vec4 atmosphericData = sampleAllAtmospherics(rayOrigin, raydirection, linear_depth, traveledDistance, 0.0, traveledDistance / 10.0, 10.0, atmosphericDensity, sundir, light.color.rgb * lightPower, ambientfogdistancecolor); + lightColor.rgb = mix(lightColor.rgb, atmosphericData.rgb, clamp(atmosphericData.a, 0.0, 1.0)); //causes jitter in the sky + } + } + + initialdistanceSample = max(initialdistanceSample, 0.0); + + + //accumulation preperation: + float finalDensityDistance = min(traveledDistance, highestDensityDistance); + vec3 worldFinalPos = rayOrigin + raydirection * traveledDistance; + vec3 delta = rayOrigin - scene_data_block.prev_data.main_cam_inv_view_matrix[3].xyz; + worldFinalPos += delta; + + //Prevview is already actually the inv_view (due to the way retrieving the transform works), so inversing it here is making it the equalivant of View_Matrix. + vec4 reprojectedClipPos = scene_data_block.prev_data.view_matrix * vec4(worldFinalPos, 1.0); + + reprojectedClipPos.z -= 0.01; + if (reprojectedClipPos.z > 0.0){ + override = true; + } + + vec4 reprojectedScreenPos = scene_data_block.prev_data.projection_matrix * reprojectedClipPos; + + // Convert clip space to normalized device coordinates + ndc = (reprojectedScreenPos.xy / reprojectedScreenPos.w); + + // Convert normalized device coordinates to screen space + vec2 screen_position = ndc * 0.5 + 0.5; + //screen_position = clamp(screen_position, vec2(0.0), vec2(1.0)); + screen_position = screen_position - depthUV; + + ivec2 adjustedUV = ivec2(int(screen_position.x * size.x), int(screen_position.y * size.y)); + //float change = length(vec2(adjustedUV)); + adjustedUV += uv; //Size is the screen resolution. + + ivec2 clampedUV = clamp(adjustedUV, ivec2(0), size - ivec2(1)); //having two lets me check if clamping it changed the reprojected uv, if it did that means it was offscreen, so rebuild data. + + //execute accumilation. + float accumdecay = genericData.data.accumilation_decay; + + //alternate back and forth to avoid stepping on pixels being written too. + float usingaccumA = genericData.data.isAccumulationA; + + //float finalDensityDistance = max(traveledDistance, highestDensityDistance); + //linear_depth = max(linear_depth, traveledDistance); + float travelspeed = length(delta) + maxstep; + //bool debugCollisions = false; + if (usingaccumA > 0.0){ + currentColorAccumilation = imageLoad(accum_1A_image, adjustedUV).rgba; + currentDataAccumilation = imageLoad(accum_2A_image, adjustedUV).rgba; + + bool lastDepthBreak = currentDataAccumilation.a < 0.0; + + if (override || clampedUV != adjustedUV || (depthBreak != lastDepthBreak && abs(linear_depth - currentDataAccumilation.r) > travelspeed)){ + currentColorAccumilation = lightColor; + //debugCollisions = true; + currentDataAccumilation.r = linear_depth; + currentDataAccumilation.g = finalDensityDistance; + currentDataAccumilation.b = initialdistanceSample; + } + else{ + currentColorAccumilation = (currentColorAccumilation * accumdecay) + lightColor * (1.0 - accumdecay); + + currentDataAccumilation.r = mix(currentDataAccumilation.r, linear_depth, (1.0 - accumdecay)); + currentDataAccumilation.g = mix(currentDataAccumilation.g, finalDensityDistance, (1.0 - accumdecay)); + currentDataAccumilation.b = mix(currentDataAccumilation.b, initialdistanceSample, (1.0 - accumdecay)); + } + + if (depthBreak){ + currentDataAccumilation.a = -1.0; + } + else{ + currentDataAccumilation.a = 1.0; + } + + imageStore(accum_1B_image, uv, currentColorAccumilation); + imageStore(accum_2B_image, uv, currentDataAccumilation); + } + else{ + currentColorAccumilation = imageLoad(accum_1B_image, adjustedUV).rgba; + currentDataAccumilation = imageLoad(accum_2B_image, adjustedUV).rgba; + + bool lastDepthBreak = currentDataAccumilation.a < 0.0; + + if (override || clampedUV != adjustedUV || (depthBreak != lastDepthBreak && abs(linear_depth - currentDataAccumilation.r) > travelspeed)){ + currentColorAccumilation = lightColor; + //debugCollisions = true; + currentDataAccumilation.r = linear_depth; + currentDataAccumilation.g = finalDensityDistance; + currentDataAccumilation.b = initialdistanceSample; + } + else{ + currentColorAccumilation = (currentColorAccumilation * accumdecay) + lightColor * (1.0 - accumdecay); + + currentDataAccumilation.r = mix(currentDataAccumilation.r, linear_depth, (1.0 - accumdecay)); + currentDataAccumilation.g = mix(currentDataAccumilation.g, finalDensityDistance, (1.0 - accumdecay)); + currentDataAccumilation.b = mix(currentDataAccumilation.b, initialdistanceSample, (1.0 - accumdecay)); + } + + if (depthBreak){ + currentDataAccumilation.a = -1.0; + } + else{ + currentDataAccumilation.a = 1.0; + } + + imageStore(accum_1A_image, uv, currentColorAccumilation); + imageStore(accum_2A_image, uv, currentDataAccumilation); + } + + currentDataAccumilation.a = abs(currentDataAccumilation.a); + imageStore(output_color_image, uv, currentColorAccumilation); + imageStore(output_data_image, uv, currentDataAccumilation); + //} +} diff --git a/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl.import b/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl.import new file mode 100644 index 0000000..d7c61e7 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsCompute.glsl.import @@ -0,0 +1,14 @@ +[remap] + +importer="glsl" +type="RDShaderFile" +uid="uid://dx1y5cye1m1hu" +path="res://.godot/imported/SunshineCloudsCompute.glsl-e9f79cb38b2b7ff7be9633179fbca4c5.res" + +[deps] + +source_file="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" +dest_files=["res://.godot/imported/SunshineCloudsCompute.glsl-e9f79cb38b2b7ff7be9633179fbca4c5.res"] + +[params] + diff --git a/source/addons/SunshineClouds2/SunshineCloudsDriver.gd b/source/addons/SunshineClouds2/SunshineCloudsDriver.gd new file mode 100644 index 0000000..8d61fb4 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsDriver.gd @@ -0,0 +1,272 @@ +@tool +@icon("res://addons/SunshineClouds2/CloudsDriverIcon.svg") +extends Node +class_name SunshineCloudsDriverGD + +@export var update_continuously: bool = false: + get: + return update_continuously + set(value): + update_continuously = value + retrieve_texture_data() + +@export_tool_button("Generate Clouds Resource", "Add") var generate_action = build_new_clouds +#@export_tool_button("Test Clouds Position Sample", "Add") var position_sample = sample_clouds + + +@export_group("Compositor Resource") +@export var clouds_resource: SunshineCloudsGD +@export_group("Optional World Environment") +@export var ambience_sample_environment: Environment +@export var use_enviornment_ambience_for_fog: bool = false +@export_group("Light Controls") +@export var tracked_directional_lights: Array[DirectionalLight3D] = []: + get: + return tracked_directional_lights + set(value): + tracked_directional_lights = value + retrieve_texture_data() + +@export var tracked_directional_light_shadow_steps: Array[int] = []: + get: + return tracked_directional_light_shadow_steps + set(value): + tracked_directional_light_shadow_steps = value + retrieve_texture_data() + +@export var tracked_point_lights: Array[OmniLight3D] = []: + get: + return tracked_point_lights + set(value): + tracked_point_lights = value + retrieve_texture_data() + +@export var tracked_point_effectors: Array[SunshineCloudsEffector] = []: + get: + return tracked_point_effectors + set(value): + tracked_point_effectors = value + retrieve_texture_data() + +@export var directional_light_power_multiplier: float = 1.0 +@export var point_light_power_multiplier: float = 1.0 +@export_group("Wind Controls") +@export var origin_offset : Vector3 = Vector3.ZERO +@export var wind_direction: Vector3 = Vector3(1.0, 0.0, 1.0) +@export var extra_large_structures_wind_speed: float = 140.0 +@export var large_structures_wind_speed: float = 100.0 +@export var medium_structures_wind_speed: float = 40.0 +@export var small_structures_wind_speed: float = 12.0 +@export_group("Internal Use") +var extra_large_clouds_pos: Vector3 = Vector3.ZERO +var large_clouds_pos: Vector3 = Vector3.ZERO +var medium_clouds_pos: Vector3 = Vector3.ZERO +var small_clouds_pos: Vector3 = Vector3.ZERO + +var _extralarge_clouds_domain: float = 0.0 +var _large_clouds_domain: float = 0.0 +var _medium_clouds_domain: float = 0.0 +var _small_clouds_domain: float = 0.0 + +var _updating_settings: bool = false + +func _ready(): + + if update_continuously: + + if clouds_resource == null: + update_continuously = false + return + call_deferred("retrieve_texture_data") + + +func _process(delta : float): + if clouds_resource != null: + clouds_resource.current_time = wrap(clouds_resource.current_time + delta * clouds_resource.dither_speed, 0.0, clouds_resource.dither_speed * 64.0) + + if update_continuously: + _updating_settings = false + extra_large_clouds_pos += wind_direction * extra_large_structures_wind_speed * delta + extra_large_clouds_pos = wrap_vector(extra_large_clouds_pos, _extralarge_clouds_domain) + large_clouds_pos += wind_direction * large_structures_wind_speed * delta + large_clouds_pos = wrap_vector(large_clouds_pos, _large_clouds_domain) + medium_clouds_pos += wind_direction * medium_structures_wind_speed * delta + medium_clouds_pos = wrap_vector(medium_clouds_pos, _medium_clouds_domain) + small_clouds_pos += ((wind_direction * small_structures_wind_speed) + (Vector3.UP * abs(small_structures_wind_speed))) * delta + small_clouds_pos = wrap_vector(small_clouds_pos, _small_clouds_domain) + + clouds_resource.origin_offset = origin_offset + clouds_resource.extra_large_scale_clouds_position = origin_offset + extra_large_clouds_pos + clouds_resource.large_scale_clouds_position = origin_offset + large_clouds_pos + clouds_resource.medium_scale_clouds_position = origin_offset + medium_clouds_pos + clouds_resource.detail_clouds_position = origin_offset + small_clouds_pos + + clouds_resource.wind_direction = wind_direction + + if use_enviornment_ambience_for_fog and ambience_sample_environment != null: + clouds_resource.atmosphere_color = ambience_sample_environment.fog_light_color + clouds_resource.cloud_ambient_color = ambience_sample_environment.fog_light_color + + if (tracked_directional_lights.size() * 2.0 != clouds_resource.directional_lights_data.size() \ + or tracked_point_lights.size() * 2.0 != clouds_resource.point_lights_data.size()\ + or tracked_directional_lights.size() != tracked_directional_light_shadow_steps.size()): + + retrieve_texture_data() + return + + for i in range(tracked_directional_lights.size()): + if tracked_directional_lights[i] == null: + continue + if direction_light_data_changed(tracked_directional_lights[i], tracked_directional_light_shadow_steps[i], clouds_resource.directional_lights_data[i * 2], clouds_resource.directional_lights_data[i * 2 + 1]): + retrieve_texture_data() + return + + for i in range(tracked_point_lights.size()): + if tracked_point_lights[i] == null: + continue + if point_light_data_changed(tracked_point_lights[i], clouds_resource.point_lights_data[i * 2], clouds_resource.point_lights_data[i * 2 + 1]): + retrieve_texture_data() + return + + for i in range(tracked_point_effectors.size()): + if tracked_point_effectors[i] == null: + continue + if point_effector_data_changed(tracked_point_effectors[i], clouds_resource.point_effector_data[i * 2], clouds_resource.point_effector_data[i * 2 + 1]): + retrieve_texture_data() + return + + else: + update_continuously = false + +func sample_clouds(): + for i in range(64): + clouds_resource.add_sample(return_data.bind(), Vector3(i * 1000, 6000.0, 0.0)) + +func return_data(position : Vector3, sampledensity : float): + print(position, " ", sampledensity) + pass + +func build_new_clouds(): + if (is_inside_tree()): + var env : WorldEnvironment = recursively_find_env(get_tree().root) + if (env): + if not ambience_sample_environment: + ambience_sample_environment = env.environment + + var newClouds = SunshineCloudsGD.new() + ResourceSaver.save(newClouds, "res://NewCloudsGD.tres") + clouds_resource = ResourceLoader.load("res://NewCloudsGD.tres") + + if not env.compositor: + env.compositor = Compositor.new() + env.compositor.compositor_effects = [clouds_resource] + + update_continuously = true + else: + printerr("No world environment found.") + + +func recursively_find_env(thisNode: Node) -> WorldEnvironment: + for child in thisNode.get_children(): + if child is WorldEnvironment: + return child + else: + var result = recursively_find_env(child) + if (result): + return result + + return null + +func retrieve_texture_data(): + if _updating_settings || !is_inside_tree(): + return + _updating_settings = true + if clouds_resource != null: + _extralarge_clouds_domain = clouds_resource.extra_large_noise_scale / 2.0 + _large_clouds_domain = clouds_resource.large_noise_scale / 2.0 + _medium_clouds_domain = clouds_resource.medium_noise_scale / 2.0 + _small_clouds_domain = clouds_resource.small_noise_scale / 2.0 + + clouds_resource.directional_lights_data.clear() + clouds_resource.point_lights_data.clear() + clouds_resource.point_effector_data.clear() + + if not tracked_directional_light_shadow_steps: + tracked_directional_light_shadow_steps = [] + + if tracked_directional_light_shadow_steps.size() < tracked_directional_lights.size(): + for i in range(tracked_directional_lights.size() - tracked_directional_light_shadow_steps.size()): + tracked_directional_light_shadow_steps.append(12) + + for i in range(tracked_directional_lights.size()): + if tracked_directional_lights[i] != null: + var light = tracked_directional_lights[i] + var look_dir = light.global_transform.basis.z.normalized() + clouds_resource.directional_lights_data.append(Vector4(look_dir.x, look_dir.y, look_dir.z, tracked_directional_light_shadow_steps[i])) + clouds_resource.directional_lights_data.append(Vector4(light.light_color.r, light.light_color.g, light.light_color.b, round(light.light_color.a * light.light_energy * directional_light_power_multiplier * 10.0) / 10.0)) + + for i in range(tracked_point_lights.size()): + if tracked_point_lights[i] != null: + var light = tracked_point_lights[i] + var light_pos = light.global_position + clouds_resource.point_lights_data.append(Vector4(light_pos.x, light_pos.y, light_pos.z, light.omni_range)) + clouds_resource.point_lights_data.append(Vector4(light.light_color.r, light.light_color.g, light.light_color.b, round(light.light_color.a * light.light_energy * point_light_power_multiplier * 10.0) / 10.0)) + + + for i in range(tracked_point_effectors.size()): + if tracked_point_effectors[i] != null: + var node = tracked_point_effectors[i] + var node_pos = node.global_position + clouds_resource.point_effector_data.append(Vector4(node_pos.x, node_pos.y, node_pos.z, node.Radius)) + clouds_resource.point_effector_data.append(Vector4(node.Power, 0.0, 0.0, 0.0)) + + + clouds_resource.lights_updated = true + + _updating_settings = false + +func wrap_vector(target, domain_size): + if target.x > domain_size: + target.x -= domain_size * 2.0 + elif target.x < -domain_size: + target.x += domain_size * 2.0 + + if target.y > domain_size: + target.y -= domain_size * 2.0 + elif target.y < -domain_size: + target.y += domain_size * 2.0 + + if target.z > domain_size: + target.z -= domain_size * 2.0 + elif target.z < -domain_size: + target.z += domain_size * 2.0 + + return target + +func direction_light_data_changed(light : DirectionalLight3D, shadowCount : int, dirData : Vector4, colorData : Vector4): + return light.global_transform.basis.z.x != dirData.x \ + or light.global_transform.basis.z.y != dirData.y \ + or light.global_transform.basis.z.z != dirData.z \ + or float(shadowCount) != dirData.w \ + or light.light_color.r != colorData.x \ + or light.light_color.g != colorData.y \ + or light.light_color.b != colorData.z \ + or round(light.light_color.a * light.light_energy * directional_light_power_multiplier * 10.0) / 10.0 != round(colorData.w * 10.0) / 10.0 + + +func point_light_data_changed(light : OmniLight3D, dirData : Vector4, colorData : Vector4): + return light.global_position.x != dirData.x \ + or light.global_position.y != dirData.y \ + or light.global_position.z != dirData.z \ + or light.omni_range != dirData.w \ + or light.light_color.r != colorData.x \ + or light.light_color.g != colorData.y \ + or light.light_color.b != colorData.z \ + or round(light.light_color.a * light.light_energy * point_light_power_multiplier * 10.0) / 10.0 != round(colorData.w * 10.0) / 10.0 + +func point_effector_data_changed(node : SunshineCloudsEffector, dirData : Vector4, colorData : Vector4): + return node.global_position.x != dirData.x \ + or node.global_position.y != dirData.y \ + or node.global_position.z != dirData.z \ + or node.Radius != dirData.w \ + or node.Power != colorData.x diff --git a/source/addons/SunshineClouds2/SunshineCloudsDriver.gd.uid b/source/addons/SunshineClouds2/SunshineCloudsDriver.gd.uid new file mode 100644 index 0000000..c73499c --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsDriver.gd.uid @@ -0,0 +1 @@ +uid://djusduuxf0voj diff --git a/source/addons/SunshineClouds2/SunshineCloudsGDTestResource.tres b/source/addons/SunshineClouds2/SunshineCloudsGDTestResource.tres new file mode 100644 index 0000000..9ec6f3c --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsGDTestResource.tres @@ -0,0 +1,72 @@ +[gd_resource type="CompositorEffect" script_class="SunshineCloudsGD" load_steps=12 format=3 uid="uid://560d7ytxsg8x"] + +[ext_resource type="RDShaderFile" uid="uid://dx1y5cye1m1hu" path="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" id="1_tv1nj"] +[ext_resource type="CompressedTexture3D" uid="uid://dei12lsgrjpyu" path="res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga" id="2_tv1nj"] +[ext_resource type="CompressedTexture3D" uid="uid://b3uyfsp4in821" path="res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png" id="3_1ah3a"] +[ext_resource type="Texture2D" uid="uid://de2nsujnhdlg0" path="res://addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres" id="4_wc4ok"] +[ext_resource type="Texture2D" uid="uid://g02m2ewpwusq" path="res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres" id="5_rjkq8"] +[ext_resource type="NoiseTexture3D" uid="uid://6ed3lvlpbqmg" path="res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres" id="6_gbwfl"] +[ext_resource type="NoiseTexture3D" uid="uid://dxyewgt7o40m0" path="res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres" id="7_ttvxe"] +[ext_resource type="RDShaderFile" uid="uid://chxheyp4eohbc" path="res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl" id="8_5qsws"] +[ext_resource type="RDShaderFile" uid="uid://crfpk8ta4qxsk" path="res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl" id="9_qvdau"] +[ext_resource type="Script" uid="uid://dnblgqynq1t7l" path="res://addons/SunshineClouds2/SunshineClouds.gd" id="10_ynas1"] +[ext_resource type="NoiseTexture3D" uid="uid://bnck2kxeg5bkg" path="res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres" id="11_oob35"] + +[resource] +resource_local_to_scene = false +resource_name = "" +enabled = true +effect_callback_type = 2 +access_resolved_color = true +access_resolved_depth = true +needs_motion_vectors = true +needs_normal_roughness = false +needs_separate_specular = false +script = ExtResource("10_ynas1") +clouds_coverage = 0.572 +clouds_density = 1.0 +atmospheric_density = 0.5 +clouds_anisotropy = 0.3 +cloud_ambient_color = Color(0.351825, 0.624474, 0.784178, 1) +atmosphere_color = Color(0.80121, 0.892869, 0.961545, 1) +ambient_occlusion_color = Color(0.17, 0.04386, 0.0272, 0.54902) +extra_large_noise_scale = 320000.0 +large_noise_scale = 50000.0 +medium_noise_scale = 6000.0 +small_noise_scale = 2500.0 +clouds_sharpness = 1.0 +clouds_detail_strength = 0.9 +curl_noise_strength = 5000.0 +lighting_sharpness = 0.05 +lighting_density = 0.55 +cloud_floor = 1500.0 +cloud_ceiling = 25000.0 +max_step_count = 50.0 +max_lighting_steps = 32.0 +resolution_scale = 0 +lod_bias = 1.0 +accumulation_decay = 0.5 +dither_noise = ExtResource("3_1ah3a") +height_gradient = ExtResource("5_rjkq8") +extra_large_noise_patterns = ExtResource("4_wc4ok") +large_scale_noise = ExtResource("6_gbwfl") +medium_scale_noise = ExtResource("7_ttvxe") +small_scale_noise = ExtResource("11_oob35") +curl_noise = ExtResource("2_tv1nj") +dither_speed = 100.0 +blur_power = 2.0 +blur_quality = 1.0 +min_step_distance = 100.0 +max_step_distance = 600.0 +lighting_travel_distance = 5000.0 +pre_pass_compute_shader = ExtResource("9_qvdau") +compute_shader = ExtResource("1_tv1nj") +post_pass_compute_shader = ExtResource("8_5qsws") +extra_large_scale_clouds_position = Vector3(48234.7, 0, 48234.7) +large_scale_clouds_position = Vector3(12997.9, 0, 12997.9) +medium_scale_clouds_position = Vector3(-2794.2, 0, -2794.2) +detail_clouds_position = Vector3(-722.566, 722.566, -722.566) +current_time = 952.838 +directional_lights_data = Array[Vector4]([Vector4(0.298016, 0.410183, -0.861938, 32), Vector4(0.937703, 0.780682, 0.675313, 1.06334), Vector4(0.156437, 0.215317, 0.963933, 6), Vector4(0.532392, 0.762997, 0.90349, 0.0368955)]) +point_lights_data = Array[Vector4]([]) +metadata/_custom_type_script = "uid://dnblgqynq1t7l" diff --git a/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl b/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl new file mode 100644 index 0000000..ac03d38 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl @@ -0,0 +1,432 @@ +#[compute] +#version 450 + +#include "./CloudsInc.txt" + +#define PI 3.141592 + +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +layout(binding = 0) uniform sampler2D input_data_image; +layout(binding = 1) uniform sampler2D input_color_image; +layout(rgba16f, binding = 2) uniform image2D reflections_sample; +layout(rgba16f, binding = 3) uniform image2D color_image; +layout(binding = 4) uniform sampler2D depth_image; + +layout(binding = 5) uniform uniformBuffer { + GenericData data; +} genericData; + +layout(binding = 6) uniform LightsBuffer { + DirectionalLight directionalLights[4]; + PointLight pointLights[128]; + PointEffector pointEffectors[64]; +}; + +layout(binding = 7, std140) uniform SceneDataBlock { + SceneData data; + SceneData prev_data; +} scene_data_block; + + +// Helpers +float remap(float value, float min1, float max1, float min2, float max2) { + return min2 + (value - min1) * (max2 - min2) / (max1 - min1); +} + +float w0(float a) +{ + return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0); +} + +float w1(float a) +{ + return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0); +} + +float w2(float a) +{ + return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0); +} + +float w3(float a) +{ + return (1.0/6.0)*(a*a*a); +} + +// g0 and g1 are the two amplitude functions +float g0(float a) +{ + return w0(a) + w1(a); +} + +float g1(float a) +{ + return w2(a) + w3(a); +} + +// h0 and h1 are the two offset functions +float h0(float a) +{ + return -1.0 + w1(a) / (w0(a) + w1(a)); +} + +float h1(float a) +{ + return 1.0 + w3(a) / (w2(a) + w3(a)); +} + +// Sampling + +vec4 texture2D_bicubic(sampler2D tex, vec2 uv, vec2 res) +{ + uv = uv*res + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + + float g0x = g0(fuv.x); + float g1x = g1(fuv.x); + float h0x = h0(fuv.x); + float h1x = h1(fuv.x); + float h0y = h0(fuv.y); + float h1y = h1(fuv.y); + + vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) / res; + vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) / res; + vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) / res; + vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) / res; + + return g0(fuv.y) * (g0x * texture(tex, p0) + + g1x * texture(tex, p1)) + + g1(fuv.y) * (g0x * texture(tex, p2) + + g1x * texture(tex, p3)); +} + +vec4 radialBlurColor(vec4 startColor, sampler2D colorImage, sampler2D depthImage, vec2 uv, vec2 size, float Directions, float blurVertical, float blurHorizontal, float Quality){ + float Pi = 6.28318530718; + float count = 1.0; + float theoreticalMaxCount = Directions * Quality; + //float stepLerp = 1.0 / theoreticalMaxCount; + vec4 Color = startColor; + //float CurrentDepth = startingDepth; + vec2 newUV = uv; + for( float d=0.0; d genericData.max_step_distance){ + // CurrentDepth = max(CurrentDepth, newDepth); + // Color += texture2D_bicubic(colorImage, newUV, size); + // count += 1.0; + // } + } + } + //startingDepth = CurrentDepth + Color /= count; + return Color; +} + +vec4 radialBlurData(vec4 startColor, float linear_depth, sampler2D image, vec2 uv, float Directions, float blurVertical, float blurHorizontal, float Quality){ + float Pi = 6.28318530718; + float count = 1.0; + //float theoreticalMaxCount = Directions * Quality; + //float stepLerp = 1.0 / theoreticalMaxCount; + vec4 Color = startColor; + //float originalDepth = Color.r; + //bool isNear = originalDepth < linear_depth; + + //float meanDistancesFar = 0.0; + for( float d=0.0; d linear_depth){ + // meanDistancesFar += 1.0; + // } + // else{ + // meanDistancesFar -= 1.0; + // } + // maxDistance = max(maxDistance, sampled); + // minDistance = min(minDistance, sampled); + //count += 1.0; + } + } + return Color; +} + +// vec4 radialBlurColor(vec4 startColor, sampler2D image, vec2 uv, vec2 size, float Directions, float blurVertical, float blurHorizontal, float Quality){ +// float Pi = 6.28318530718; +// float count = 1.0; +// float theoreticalMaxCount = Directions * Quality; +// //float stepLerp = 1.0 / theoreticalMaxCount; +// vec4 Color = startColor; +// for( float d=0.0; d linear_depth || currentWeight >= 1.0){ + traveledDistance = traveledDistance - stepDistance; + currentWeight = 1.0 - clamp((linear_depth - traveledDistance) / stepDistance, 0.0, 1.0); + sampleAtmospherics(curPos, atmosphericHeight, stepDistance, Rayleighscaleheight, Miescaleheight, RayleighScatteringCoef, MieScatteringCoef, atmosphericDensity, currentWeight, totalRlh, totalMie, iOdRlh, iOdMie); + break; + } + sampleCount += 1.0; + + curPos = worldPos + rayDirection * traveledDistance; + + sampleAtmospherics(curPos, atmosphericHeight, stepDistance, Rayleighscaleheight, Miescaleheight, RayleighScatteringCoef, MieScatteringCoef, atmosphericDensity, currentWeight, totalRlh, totalMie, iOdRlh, iOdMie); + } + + // pRlh *= (1.0 - lightingWeight); + // pMie *= (1.0 - lightingWeight); + + float AtmosphericsDistancePower = length(vec3(RayleighScatteringCoef * totalRlh + MieScatteringCoef * totalMie)); + vec3 atmospherics = 22.0 * (ambientLight * RayleighScatteringCoef * totalRlh + pMie * MieScatteringCoef * sunlightColor * totalMie) / sampleCount; + return vec4(atmospherics, AtmosphericsDistancePower); +} + + +void main() { + ivec2 uv = ivec2(gl_GlobalInvocationID.xy); + ivec2 lowres_size = ivec2(genericData.data.raster_size); + + int resolutionScale = int(genericData.data.resolutionscale); + ivec2 size = lowres_size * resolutionScale; + + vec2 depthUV = vec2(uv) / vec2(size); + //vec2 depthUV = vec2(float(uv.x) + (uv.x % 2), float(uv.y) - (uv.y % 2)) / vec2(size); + //vec2 depthUV = (vec2(float(uv.x) + (uv.x % 2), float(uv.y) - (uv.y % 2)) + vec2(0.0, 0.5)) / vec2(size); + depthUV = clamp(depthUV, vec2(0.0), vec2(1.0)); + float depth = texture(depth_image, depthUV).r; + vec4 view = inverse(scene_data_block.data.projection_matrix) * vec4(depthUV*2.0-1.0,depth,1.0); + view.xyz /= view.w; + float linear_depth = length(view); //used to calculate depth based on the view angle, idk just works. + + // Convert screen coordinates to normalized device coordinates + vec2 clipUV = vec2(depthUV.x, depthUV.y); + vec2 ndc = clipUV * 2.0 - 1.0; + // Convert NDC to view space coordinates + vec4 clipPos = vec4(ndc, 0.0, 1.0); + vec4 viewPos = inverse(scene_data_block.data.projection_matrix) * clipPos; + viewPos.xyz /= viewPos.w; + + vec3 rd_world = normalize(viewPos.xyz); + rd_world = mat3(scene_data_block.data.main_cam_inv_view_matrix) * rd_world; + // Define the ray properties + + vec3 raydirection = normalize(rd_world); + vec3 rayOrigin = scene_data_block.data.main_cam_inv_view_matrix[3].xyz; //center of camera for the ray origin, not worried about the screen width playing in, as it's for clouds. + + + vec2 tempuv = vec2(uv); + vec2 accumUV = vec2(tempuv.x / float(size.x), tempuv.y / float(size.y)); + accumUV = clamp(accumUV, vec2(0.0), vec2(1.0)); + + vec2 lowres_sizefloat = vec2(lowres_size); + vec4 currentAccumilation = vec4(0.0); + vec4 currentColorData = vec4(0.0); + + currentAccumilation = texture(input_color_image, accumUV); + currentColorData = texture(input_data_image, accumUV); + // if (resolutionScale != 1){ + // currentAccumilation = texture2D_bicubic(input_color_image, accumUV, lowres_sizefloat); + // currentColorData = texture2D_bicubic(input_data_image, accumUV, lowres_sizefloat); + // } + // else{ + // currentAccumilation = texture(input_color_image, accumUV); + // currentColorData = texture(input_data_image, accumUV); + // } + + + float minstep = genericData.data.min_step_distance; + float maxstep = genericData.data.max_step_distance; + + float blurPower = genericData.data.blurPower; + float maxTheoreticalStep = genericData.data.max_step_count * maxstep; + + blurPower = mix(blurPower, 0.0, currentColorData.b / maxTheoreticalStep); + + if (blurPower > 0.0){ + float blurHorizontal = blurPower / float(size.x); + float blurVertical = blurPower / float(size.y); + float blurQuality = genericData.data.blurQuality; + //currentColorData = radialBlurData(currentColorData, linear_depth, input_data_image, accumUV, blurQuality * 4.0, blurVertical, blurHorizontal, blurQuality); + currentAccumilation = radialBlurColor(currentAccumilation, input_color_image, input_data_image, accumUV, lowres_sizefloat, blurQuality * 4.0, blurVertical, blurHorizontal, blurQuality); + + } + + + float density = clamp(currentAccumilation.a, 0.0, 1.0); + float sampledDepth = currentColorData.r; + float traveledDistance = currentColorData.g; + float firstTraveledDistance = currentColorData.b; + + float lerp = 0.0; + bool debugCollisions = false; + if (firstTraveledDistance > linear_depth){ + //debugCollisions = true; + lerp = 1.0; + } + else if (traveledDistance > linear_depth){ + //debugCollisions = true; + float firsttravelblend = mix(1.0 - clamp((traveledDistance - firstTraveledDistance) / minstep, 0.0, 1.0), 1.0, clamp(firstTraveledDistance / maxstep, 0.0, 1.0)); + lerp = (clamp((traveledDistance - linear_depth) / (traveledDistance - firstTraveledDistance), 0.0, 1.0)) * firsttravelblend; + } + // if (traveledDistance > linear_depth){ + // //lerp = max(clamp(traveledDistance - linear_depth / maxstep, 0.0, 1.0), clamp(firstTraveledDistance - linear_depth, 0.0, 1.0)); + // if (firstTraveledDistance > linear_depth){ + // lerp = clamp(remap(firstTraveledDistance - linear_depth, 0.0, 1.0, 0.0, 1.0), 0.0, 1.0); + // density *= 1.0 - lerp; + // } + // else{ + // //debugCollisions = true; + // lerp = clamp(remap(linear_depth - firstTraveledDistance, 0.0, minstep, 0.0, 1.0), 0.0, 1.0); + // density *= lerp; + // //density = 0.0; + // } + // // float lerp = clamp(remap(linear_depth, firstTraveledDistance, traveledDistance, 0.0, 1.0), 0.0, 1.0); + // // density *= lerp; + // // if (firstTraveledDistance < linear_depth){ + + // // density = 0.0; + // // } + // // else{ + // // lerp = clamp(remap(firstTraveledDistance - linear_depth, minstep, maxstep, 0.0, 1.0), 0.0, 1.0); + // // density *= 1.0 - lerp; + // // } + // // traveledDistance = linear_depth; + // } + density *= smoothstep(0.0, minstep, linear_depth); + density = clamp(density - lerp, 0.0, 1.0); + float groundLinearFade = mix(smoothstep(maxTheoreticalStep, maxTheoreticalStep, linear_depth), 1.0, genericData.data.fogEffectGround); + + vec4 color = imageLoad(color_image, uv); + + vec3 ambientfogdistancecolor = genericData.data.ambientfogdistancecolor.rgb * genericData.data.ambientfogdistancecolor.a; + float atmosphericDensity = genericData.data.atmospheric_density; + float directionalLightCount = genericData.data.directionalLightsCount; + if (directionalLightCount > 0.0){ + for (float i = 0.0; i < directionalLightCount; i++){ + DirectionalLight light = directionalLights[int(i)]; + vec3 sundir = light.direction.xyz; + //sampleColor = sundir; + float sunUpWeight = smoothstep(0.0, 0.4, dot(sundir, vec3(0.0, 1.0, 0.0))); + float sundensityaffect = clamp(dot(sundir, raydirection), 0.0, 1.0); + sundensityaffect = min(clamp(1.0 - (sundensityaffect * density), 0.0, 1.0), 1.0 - (sundensityaffect * clamp(maxTheoreticalStep - linear_depth, 0.0, 1.0))); + float lightPower = light.color.a * sunUpWeight * sundensityaffect; + vec4 atmosphericData = sampleAllAtmospherics(rayOrigin, raydirection, linear_depth, traveledDistance, 0.0, min(linear_depth, maxTheoreticalStep) / 10.0, 10.0, atmosphericDensity, sundir, light.color.rgb * lightPower, ambientfogdistancecolor); + color.rgb = mix(color.rgb, atmosphericData.rgb, clamp(atmosphericData.a * groundLinearFade, 0.0, 1.0)); //causes jitter in the sky + } + } + + + color.rgb = mix(color.rgb, currentAccumilation.rgb, density); + + + if (debugCollisions){ + color.rgb = vec3(lerp); + } + + imageStore(color_image, uv, color); + if (resolutionScale != 1){ + imageStore(reflections_sample, ivec2(accumUV * vec2(lowres_size)), vec4(color.rgb, traveledDistance)); + } + else{ + imageStore(reflections_sample, uv, vec4(color.rgb, traveledDistance)); + } +} \ No newline at end of file diff --git a/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl.import b/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl.import new file mode 100644 index 0000000..4c8e833 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsPostCompute.glsl.import @@ -0,0 +1,14 @@ +[remap] + +importer="glsl" +type="RDShaderFile" +uid="uid://chxheyp4eohbc" +path="res://.godot/imported/SunshineCloudsPostCompute.glsl-fc422a4d7d896e6886b97028d6f47ec2.res" + +[deps] + +source_file="res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl" +dest_files=["res://.godot/imported/SunshineCloudsPostCompute.glsl-fc422a4d7d896e6886b97028d6f47ec2.res"] + +[params] + diff --git a/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl b/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl new file mode 100644 index 0000000..3d784b5 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl @@ -0,0 +1,49 @@ +#[compute] +#version 450 + +#include "./CloudsInc.txt" + +layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +layout(binding = 0) uniform sampler2D depth_image; +layout(r32f, binding = 1) uniform image2D output_depth_image; + +layout(binding = 2) uniform uniformBuffer { + GenericData data; +} genericData; + + +void main() { + ivec2 base_uv = ivec2(gl_GlobalInvocationID.xy); + //ivec2 size = ivec2(params.raster_size); + ivec2 lowres_size = ivec2(genericData.data.raster_size); + + + + // int resolutionScale = int(params.resolutionscale); + int resolutionScale = int(genericData.data.resolutionscale); + ivec2 size = lowres_size * resolutionScale; + + int adjustedScale = resolutionScale * 2; + int halfScale = int(floor(float(adjustedScale) * 0.5)); + ivec2 starting_uv = ivec2(floor(vec2(base_uv) * float(resolutionScale))); + ivec2 current_uv = starting_uv; + + vec2 depthUV = vec2(0.0); + + float furthestDepth = 10000000000000000.0; + for (int x = 0; x < adjustedScale; x++) { + for(int y = 0; y < adjustedScale; y++) { + current_uv = starting_uv + ivec2(x, y); + if (current_uv.x >= size.x || current_uv.y >= size.y) { + continue; + } + + depthUV = vec2((float(current_uv.x) + 0.5) / float(size.x), (float(current_uv.y) + 0.5) / float(size.y)); + + furthestDepth = min(texture(depth_image, depthUV).r, furthestDepth); + } + } + + imageStore(output_depth_image, base_uv, vec4(furthestDepth, 0.0, 0.0, 0.0)); +} \ No newline at end of file diff --git a/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl.import b/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl.import new file mode 100644 index 0000000..ed4ad3f --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsPreCompute.glsl.import @@ -0,0 +1,14 @@ +[remap] + +importer="glsl" +type="RDShaderFile" +uid="uid://crfpk8ta4qxsk" +path="res://.godot/imported/SunshineCloudsPreCompute.glsl-22ae1e1e494b998ddb4951b73fc7a9ca.res" + +[deps] + +source_file="res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl" +dest_files=["res://.godot/imported/SunshineCloudsPreCompute.glsl-22ae1e1e494b998ddb4951b73fc7a9ca.res"] + +[params] + diff --git a/source/addons/SunshineClouds2/SunshineCloudsResource.tres b/source/addons/SunshineClouds2/SunshineCloudsResource.tres new file mode 100644 index 0000000..8b020aa --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsResource.tres @@ -0,0 +1,52 @@ +[gd_resource type="CompositorEffect" script_class="SunshineClouds" load_steps=7 format=3 uid="uid://cwso0uu2smtap"] + +[ext_resource type="RDShaderFile" uid="uid://dx1y5cye1m1hu" path="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" id="1_voubm"] +[ext_resource type="Texture2D" uid="uid://g02m2ewpwusq" path="res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres" id="2_u65m8"] +[ext_resource type="NoiseTexture3D" uid="uid://6ed3lvlpbqmg" path="res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres" id="3_wiq2w"] +[ext_resource type="NoiseTexture3D" uid="uid://dxyewgt7o40m0" path="res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres" id="4_ivfer"] +[ext_resource type="NoiseTexture3D" uid="uid://bnck2kxeg5bkg" path="res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres" id="5_y5jkr"] +[ext_resource type="Script" uid="uid://d2lqbqhhnysnl" path="res://addons/SunshineClouds2/SunshineClouds.cs" id="6_xhin1"] + +[resource] +resource_local_to_scene = false +resource_name = "" +enabled = true +effect_callback_type = 3 +access_resolved_color = false +access_resolved_depth = true +needs_motion_vectors = true +needs_normal_roughness = false +script = ExtResource("6_xhin1") +HeightGradient = ExtResource("2_u65m8") +LargeScaleNoise = ExtResource("3_wiq2w") +MediumScaleNoise = ExtResource("4_ivfer") +SmallScaleNoise = ExtResource("5_y5jkr") +ComputeShader = ExtResource("1_voubm") +MaxStepCount = 300 +LightingStepCount = 4 +AccumilationDecay = 0.5 +AtmosphericDensity = 0.36 +CloudsDensity = 1.2418 +CloudsSharpnessPower = 1.0 +CloudsLightingSharpnessPower = 0.05 +LightingDensity = 1.0 +CloudsDetailPower = 0.6667 +CloudsCoverage = 0.4955 +LargeNoiseScale = 75994.8 +MediumNoiseScale = 14989.8 +SmallNoiseScale = 1987.84 +MinStepDistance = 100.0 +MaxStepDistance = 300.0 +LightingStepDistance = 500.0 +StepDistanceBias = 0.01 +CloudFloor = 1500.0 +CloudCeiling = 9000.0 +LargeScaleCloudsPosition = Vector3(9317.58, 1737.45, 0) +MediumScaleCloudsPosition = Vector3(6720.82, 6128.07, 0) +DetailCloudsPosition = Vector3(-53.6912, 769.31, 0) +PrimaryDirectionalLightDirection = Vector3(0.5, 0.5, -0.5) +PrimaryDirectionalLightColor = Color(0.5518, 0.77163, 0.89, 0.0588235) +AmbientLightColor = Color(0.0237, 0.029265, 0.03, 1) +DistanceFogColor = Color(1, 1, 1, 1) +GroundColor = Color(0.00641735, 0.00546294, 0.00498879, 1) +metadata/_custom_type_script = "uid://d2lqbqhhnysnl" diff --git a/source/addons/SunshineClouds2/SunshineCloudsResourceLowSettings.tres b/source/addons/SunshineClouds2/SunshineCloudsResourceLowSettings.tres new file mode 100644 index 0000000..47e40f3 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsResourceLowSettings.tres @@ -0,0 +1,51 @@ +[gd_resource type="CompositorEffect" script_class="SunshineClouds" load_steps=7 format=3 uid="uid://c34y1l1csrw53"] + +[ext_resource type="RDShaderFile" uid="uid://dx1y5cye1m1hu" path="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" id="1_hat2g"] +[ext_resource type="Texture2D" uid="uid://g02m2ewpwusq" path="res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres" id="2_xj6co"] +[ext_resource type="NoiseTexture3D" uid="uid://6ed3lvlpbqmg" path="res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres" id="3_usujm"] +[ext_resource type="NoiseTexture3D" uid="uid://dxyewgt7o40m0" path="res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres" id="4_cpxcg"] +[ext_resource type="NoiseTexture3D" uid="uid://bnck2kxeg5bkg" path="res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres" id="5_iomwc"] +[ext_resource type="Script" uid="uid://d2lqbqhhnysnl" path="res://addons/SunshineClouds2/SunshineClouds.cs" id="6_285sa"] + +[resource] +resource_local_to_scene = false +resource_name = "" +enabled = true +effect_callback_type = 3 +access_resolved_color = false +access_resolved_depth = false +needs_motion_vectors = false +needs_normal_roughness = false +script = ExtResource("6_285sa") +HeightGradient = ExtResource("2_xj6co") +LargeScaleNoise = ExtResource("3_usujm") +MediumScaleNoise = ExtResource("4_cpxcg") +SmallScaleNoise = ExtResource("5_iomwc") +ComputeShader = ExtResource("1_hat2g") +MaxStepCount = 50 +LightingStepCount = 8 +AtmosphericDensity = 0.4195 +CloudsDensity = 2.3305 +CloudsSharpnessPower = 0.1 +CloudsLightingSharpnessPower = 0.1 +LightingDensity = 1.0 +CloudsDetailPower = 0.6648 +CloudsCoverage = 0.5193 +LargeNoiseScale = 75785.8 +MediumNoiseScale = 10330.1 +SmallNoiseScale = 1930.99 +MinStepDistance = 100.0 +MaxStepDistance = 1500.0 +LightingStepDistance = 2000.0 +StepDistanceBias = 0.1 +CloudFloor = 1000.0 +CloudCeiling = 10000.0 +LargeScaleCloudsPosition = Vector3(24313.9, -4050.94, 31613.5) +MediumScaleCloudsPosition = Vector3(365.74, 874.291, 1043.24) +DetailCloudsPosition = Vector3(694.044, 385.552, -68.2376) +PrimaryDirectionalLightDirection = Vector3(0.5, 0.5, -0.5) +PrimaryDirectionalLightColor = Color(1, 1, 1, 1) +AmbientLightColor = Color(0.20254, 0.265475, 0.307943, 1) +DistanceFogColor = Color(1, 1, 1, 1) +GroundColor = Color(0.179058, 0.19533, 0.2248, 1) +metadata/_custom_type_script = "uid://d2lqbqhhnysnl" diff --git a/source/addons/SunshineClouds2/SunshineCloudsTestResource.tres b/source/addons/SunshineClouds2/SunshineCloudsTestResource.tres new file mode 100644 index 0000000..a24bef7 --- /dev/null +++ b/source/addons/SunshineClouds2/SunshineCloudsTestResource.tres @@ -0,0 +1,72 @@ +[gd_resource type="CompositorEffect" script_class="SunshineClouds" load_steps=12 format=3 uid="uid://ck8ll5tq66bkd"] + +[ext_resource type="RDShaderFile" uid="uid://dx1y5cye1m1hu" path="res://addons/SunshineClouds2/SunshineCloudsCompute.glsl" id="1_egrld"] +[ext_resource type="Texture2D" uid="uid://g02m2ewpwusq" path="res://addons/SunshineClouds2/NoiseTextures/HeightGradient.tres" id="2_2oqac"] +[ext_resource type="CompressedTexture3D" uid="uid://dei12lsgrjpyu" path="res://addons/SunshineClouds2/NoiseTextures/curl_noise_varied.tga" id="2_6cfoo"] +[ext_resource type="CompressedTexture3D" uid="uid://b3uyfsp4in821" path="res://addons/SunshineClouds2/NoiseTextures/bluenoise_Dither.png" id="2_j2m45"] +[ext_resource type="Texture2D" uid="uid://de2nsujnhdlg0" path="res://addons/SunshineClouds2/NoiseTextures/ExtraLargeScaleNoise.tres" id="4_3tjk5"] +[ext_resource type="NoiseTexture3D" uid="uid://dxyewgt7o40m0" path="res://addons/SunshineClouds2/NoiseTextures/MediumScaleNoise.tres" id="4_6cfoo"] +[ext_resource type="NoiseTexture3D" uid="uid://6ed3lvlpbqmg" path="res://addons/SunshineClouds2/NoiseTextures/LargeScaleNoise.tres" id="5_3tjk5"] +[ext_resource type="NoiseTexture3D" uid="uid://bnck2kxeg5bkg" path="res://addons/SunshineClouds2/NoiseTextures/SmallScaleNoise.tres" id="5_w4rkf"] +[ext_resource type="Script" uid="uid://d2lqbqhhnysnl" path="res://addons/SunshineClouds2/SunshineClouds.cs" id="6_3tjk5"] +[ext_resource type="RDShaderFile" uid="uid://chxheyp4eohbc" path="res://addons/SunshineClouds2/SunshineCloudsPostCompute.glsl" id="6_6cfoo"] +[ext_resource type="RDShaderFile" uid="uid://crfpk8ta4qxsk" path="res://addons/SunshineClouds2/SunshineCloudsPreCompute.glsl" id="6_j2m45"] + +[resource] +resource_local_to_scene = false +resource_name = "" +enabled = true +effect_callback_type = 2 +access_resolved_color = true +access_resolved_depth = true +needs_motion_vectors = true +needs_normal_roughness = false +needs_separate_specular = false +script = ExtResource("6_3tjk5") +CloudsCoverage = 0.562 +CloudsDensity = 1.0 +AtmosphericDensity = 0.5 +CloudsAnisotropy = 0.1 +CloudAmbientColor = Color(0.562556, 0.722387, 0.880502, 1) +AtmosphereColor = Color(0.559249, 0.746316, 0.91, 1) +AmbientOcclusionColor = Color(0.24, 0.09648, 0.0744, 0.568627) +ExtraLargeNoiseScale = 323077.0 +LargeNoiseScale = 53286.7 +MediumNoiseScale = 6104.24 +SmallNoiseScale = 2901.59 +CloudsSharpness = 0.5 +CloudsDetailPower = 0.698 +CurlNoiseStrength = 5000.0 +LightingSharpness = 0.05 +LightingDensity = 0.558 +CloudFloor = 1500.0 +CloudCeiling = 25000.0 +MaxStepCount = 200 +MaxLightingSteps = 32 +ResolutionScale = 1 +LODBias = 0.5 +AccumilationDecay = 0.5 +DitherNoise = ExtResource("2_j2m45") +HeightGradient = ExtResource("2_2oqac") +ExtraLargeNoisePatterns = ExtResource("4_3tjk5") +LargeScaleNoise = ExtResource("5_3tjk5") +MediumScaleNoise = ExtResource("4_6cfoo") +SmallScaleNoise = ExtResource("5_w4rkf") +CurlNoise = ExtResource("2_6cfoo") +DitherSpeed = 129.63 +BlurPower = 2.0 +BlurQuality = 1.0 +MinStepDistance = 100.0 +MaxStepDistance = 300.0 +LightingTravelDistance = 5000.0 +PrePassComputeShader = ExtResource("6_j2m45") +ComputeShader = ExtResource("1_egrld") +PostPassComputeShader = ExtResource("6_6cfoo") +ExtraLargeScaleCloudsPosition = Vector3(15488.2, 0, 0) +LargeScaleCloudsPosition = Vector3(11063.7, 0, 0) +MediumScaleCloudsPosition = Vector3(-1678.69, 0, 0) +DetailCloudsPosition = Vector3(-938.754, 938.754, 0) +CurrentTime = 4469.32 +DirectionalLightsData = Array[Vector4]([Vector4(0.576611, 0.793637, -0.194062, 12), Vector4(0.999994, 0.968546, 0.936683, 1.09778)]) +PointLightsData = Array[Vector4]([]) +metadata/_custom_type_script = "uid://d2lqbqhhnysnl" diff --git a/source/addons/SunshineClouds2/compositor_test_scene.tscn b/source/addons/SunshineClouds2/compositor_test_scene.tscn new file mode 100644 index 0000000..20e98a5 --- /dev/null +++ b/source/addons/SunshineClouds2/compositor_test_scene.tscn @@ -0,0 +1,126 @@ +[gd_scene load_steps=13 format=3 uid="uid://dtvko3mm2ow5r"] + +[ext_resource type="CompositorEffect" uid="uid://ck8ll5tq66bkd" path="res://addons/SunshineClouds2/SunshineCloudsTestResource.tres" id="1_0ff65"] +[ext_resource type="Script" uid="uid://dfj074g0bsaan" path="res://addons/SunshineClouds2/SunshineCloudsDriver.cs" id="2_0ff65"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_20awl"] + +[sub_resource type="Sky" id="Sky_y65jo"] +sky_material = SubResource("ProceduralSkyMaterial_20awl") + +[sub_resource type="Environment" id="Environment_x3ayj"] +background_mode = 2 +sky = SubResource("Sky_y65jo") +tonemap_mode = 2 +ssil_radius = 10000.0 +ssil_intensity = 9.28 +ssil_sharpness = 1.0 +glow_enabled = true +fog_mode = 1 +fog_density = 1.0 + +[sub_resource type="Compositor" id="Compositor_0ff65"] +compositor_effects = Array[CompositorEffect]([ExtResource("1_0ff65")]) + +[sub_resource type="Gradient" id="Gradient_0ff65"] +offsets = PackedFloat32Array(0.0127389, 1) +colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_iiaqv"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_566xq"] +color_ramp = SubResource("Gradient_0ff65") +noise = SubResource("FastNoiseLite_iiaqv") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fnpmq"] +transparency = 2 +alpha_scissor_threshold = 0.5 +alpha_antialiasing_mode = 0 +albedo_color = Color(0.67621, 0.558233, 0.425126, 1) +albedo_texture = SubResource("NoiseTexture2D_566xq") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_41wtw"] +albedo_color = Color(0.336454, 0.393507, 0.275599, 1) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_0ff65"] +albedo_color = Color(0.430953, 0.18608, 0.128975, 1) + +[node name="CompositorTestScene" type="Node3D"] + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.806192, -0.482922, 0.341819, 0.157336, 0.381945, 0.910694, -0.57035, 0.787974, -0.23194, 0, 0, 0) +shadow_enabled = true +directional_shadow_max_distance = 20000.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_x3ayj") +compositor = SubResource("Compositor_0ff65") + +[node name="CSGSphere3D2" type="CSGSphere3D" parent="."] +transform = Transform3D(10, 0, 0, 0, 35.4701, -0.168448, 0, 0.6257, 9.54912, 13.0769, 0, 7.19241) +material_override = SubResource("StandardMaterial3D_fnpmq") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -15.6772, 0) +size = Vector3(400000, 1, 400000) +material = SubResource("StandardMaterial3D_41wtw") + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 2000) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 4000) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 6000) +radius = 250.0 +height = 10000.0 +sides = 32 +material = SubResource("StandardMaterial3D_0ff65") + +[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 8000) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 10346) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 12346) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D7" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 14346) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="CSGCylinder3D8" type="CSGCylinder3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2000, 5000, 16346) +radius = 250.0 +height = 10000.0 +sides = 32 + +[node name="SunshineCloudsDriver" type="Node" parent="."] +script = ExtResource("2_0ff65") +CloudsResource = ExtResource("1_0ff65") +WindDirection = Vector3(0, -0.1, 1) +ExtraLargeStructuresWindSpeed = 10.0 +LargeStructuresWindSpeed = 150.0 +LargeCloudsPos = Vector3(-16368.7, 17524.6, -17010.4) +MediumCloudsPos = Vector3(365.74, 4801.03, -3466.45) +SmallCloudsPos = Vector3(71.7182, -763.567, -1142.21) +metadata/_custom_type_script = "uid://dfj074g0bsaan" diff --git a/source/addons/SunshineClouds2/plugin.cfg b/source/addons/SunshineClouds2/plugin.cfg new file mode 100644 index 0000000..2d26f20 --- /dev/null +++ b/source/addons/SunshineClouds2/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="SunshineClouds2" +description="Compositor based 3D volumetric clouds system." +author="Bonkahe" +version="2.3" +script="SunshineClouds2.gd" diff --git a/source/addons/bbcode_edit.editor/bbcode_completion_icon.svg.import b/source/addons/bbcode_edit.editor/bbcode_completion_icon.svg.import index 180befb..d3bfab4 100644 --- a/source/addons/bbcode_edit.editor/bbcode_completion_icon.svg.import +++ b/source/addons/bbcode_edit.editor/bbcode_completion_icon.svg.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/bbcode_completion_icon.svg-e050b1e9fb923c5a17 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -26,6 +28,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/disconnected.png.import b/source/addons/controller_icons/assets/disconnected.png.import index e8880a4..b535f29 100644 --- a/source/addons/controller_icons/assets/disconnected.png.import +++ b/source/addons/controller_icons/assets/disconnected.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/disconnected.png-459773ea7f2a3f5eca9fe5104acb compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/0.png.import b/source/addons/controller_icons/assets/key/0.png.import index bd635e3..0b8d5ad 100644 --- a/source/addons/controller_icons/assets/key/0.png.import +++ b/source/addons/controller_icons/assets/key/0.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/0.png-5e4ef89ebfb88cf2281fb8519eae8326.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/1.png.import b/source/addons/controller_icons/assets/key/1.png.import index 5297d70..21b7e29 100644 --- a/source/addons/controller_icons/assets/key/1.png.import +++ b/source/addons/controller_icons/assets/key/1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/1.png-5e93042ff4733b49c5848a419f211dc0.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/2.png.import b/source/addons/controller_icons/assets/key/2.png.import index d323f75..bf4693f 100644 --- a/source/addons/controller_icons/assets/key/2.png.import +++ b/source/addons/controller_icons/assets/key/2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/2.png-cc45af4ba1a14d5c701d7eaf772cb60e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/3.png.import b/source/addons/controller_icons/assets/key/3.png.import index 3828583..2fdce8b 100644 --- a/source/addons/controller_icons/assets/key/3.png.import +++ b/source/addons/controller_icons/assets/key/3.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/3.png-a28e3d1bcdb601b911e3d5e9aaaece29.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/4.png.import b/source/addons/controller_icons/assets/key/4.png.import index 6385ace..55d2994 100644 --- a/source/addons/controller_icons/assets/key/4.png.import +++ b/source/addons/controller_icons/assets/key/4.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/4.png-d6e77f4e27328a413d34506751d7e7d8.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/5.png.import b/source/addons/controller_icons/assets/key/5.png.import index 8312b63..3f1e5de 100644 --- a/source/addons/controller_icons/assets/key/5.png.import +++ b/source/addons/controller_icons/assets/key/5.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/5.png-e3a211f712f0ba23f0383e633d91b292.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/6.png.import b/source/addons/controller_icons/assets/key/6.png.import index 2d735c4..0a22f4c 100644 --- a/source/addons/controller_icons/assets/key/6.png.import +++ b/source/addons/controller_icons/assets/key/6.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/6.png-c94a4fdfe4780a6cd266a954fce863aa.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/7.png.import b/source/addons/controller_icons/assets/key/7.png.import index 96a595c..2927a18 100644 --- a/source/addons/controller_icons/assets/key/7.png.import +++ b/source/addons/controller_icons/assets/key/7.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/7.png-2aed855c8db8718bbf613d3fe15e397f.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/8.png.import b/source/addons/controller_icons/assets/key/8.png.import index bd50585..2344e0b 100644 --- a/source/addons/controller_icons/assets/key/8.png.import +++ b/source/addons/controller_icons/assets/key/8.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/8.png-7347a4f63d0d4bf8e342c042e8a47b6a.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/9.png.import b/source/addons/controller_icons/assets/key/9.png.import index 0067677..4229944 100644 --- a/source/addons/controller_icons/assets/key/9.png.import +++ b/source/addons/controller_icons/assets/key/9.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/9.png-92a5ba8724ec75cb0650a7e43ee7de1a.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/a.png.import b/source/addons/controller_icons/assets/key/a.png.import index aeea511..7266bd8 100644 --- a/source/addons/controller_icons/assets/key/a.png.import +++ b/source/addons/controller_icons/assets/key/a.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/a.png-02614b596e2702a221a87d93abcfaa61.s3tc.c 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/alt.png.import b/source/addons/controller_icons/assets/key/alt.png.import index fab08fa..47c6ffc 100644 --- a/source/addons/controller_icons/assets/key/alt.png.import +++ b/source/addons/controller_icons/assets/key/alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/alt.png-2955b920d549ecae6d20f5b9d8b28316.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/apostrophe.png.import b/source/addons/controller_icons/assets/key/apostrophe.png.import index 15e9370..9f7444a 100644 --- a/source/addons/controller_icons/assets/key/apostrophe.png.import +++ b/source/addons/controller_icons/assets/key/apostrophe.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/apostrophe.png-8f8272980f0f51de5195fea6a914a7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/arrow_down.png.import b/source/addons/controller_icons/assets/key/arrow_down.png.import index 510f40e..fc433f4 100644 --- a/source/addons/controller_icons/assets/key/arrow_down.png.import +++ b/source/addons/controller_icons/assets/key/arrow_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow_down.png-5893b4e3a78dea022e4220c8b377b5 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/arrow_left.png.import b/source/addons/controller_icons/assets/key/arrow_left.png.import index 9d80871..a8f5d28 100644 --- a/source/addons/controller_icons/assets/key/arrow_left.png.import +++ b/source/addons/controller_icons/assets/key/arrow_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow_left.png-47644a17d01cec89c19b183ed0ee3e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/arrow_right.png.import b/source/addons/controller_icons/assets/key/arrow_right.png.import index cf80ddb..b0242b9 100644 --- a/source/addons/controller_icons/assets/key/arrow_right.png.import +++ b/source/addons/controller_icons/assets/key/arrow_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow_right.png-d9645066e53f8382133c3d6066489 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/arrow_up.png.import b/source/addons/controller_icons/assets/key/arrow_up.png.import index 8c7608c..8ae6199 100644 --- a/source/addons/controller_icons/assets/key/arrow_up.png.import +++ b/source/addons/controller_icons/assets/key/arrow_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow_up.png-332906f7ec320f7aacf747e92daffc49 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/asterisk.png.import b/source/addons/controller_icons/assets/key/asterisk.png.import index e0df8c5..25f5dd0 100644 --- a/source/addons/controller_icons/assets/key/asterisk.png.import +++ b/source/addons/controller_icons/assets/key/asterisk.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/asterisk.png-f83bdb0b06735716dc152cef5ad1a65a compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/b.png.import b/source/addons/controller_icons/assets/key/b.png.import index b9c66ef..b1b0eae 100644 --- a/source/addons/controller_icons/assets/key/b.png.import +++ b/source/addons/controller_icons/assets/key/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-85e60076ce4df311fd6ce062c3953570.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/backspace.png.import b/source/addons/controller_icons/assets/key/backspace.png.import index c6e28ef..41134fb 100644 --- a/source/addons/controller_icons/assets/key/backspace.png.import +++ b/source/addons/controller_icons/assets/key/backspace.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/backspace.png-ca81128ca83f7830c8e33092a92b27b compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/backspace_alt.png.import b/source/addons/controller_icons/assets/key/backspace_alt.png.import index a480a7f..dcbccba 100644 --- a/source/addons/controller_icons/assets/key/backspace_alt.png.import +++ b/source/addons/controller_icons/assets/key/backspace_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/backspace_alt.png-bc1abf5cd15987380ececb7b419 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/backtick.png.import b/source/addons/controller_icons/assets/key/backtick.png.import index 21411a1..0e22e66 100644 --- a/source/addons/controller_icons/assets/key/backtick.png.import +++ b/source/addons/controller_icons/assets/key/backtick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/backtick.png-7eaa9a9989e965a67c1aedce73c9bf10 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/bracket_left.png.import b/source/addons/controller_icons/assets/key/bracket_left.png.import index ab69739..49c9c85 100644 --- a/source/addons/controller_icons/assets/key/bracket_left.png.import +++ b/source/addons/controller_icons/assets/key/bracket_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/bracket_left.png-578afec4dd6c472e6a94a57c4699 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/bracket_right.png.import b/source/addons/controller_icons/assets/key/bracket_right.png.import index e0468d1..65dd5c6 100644 --- a/source/addons/controller_icons/assets/key/bracket_right.png.import +++ b/source/addons/controller_icons/assets/key/bracket_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/bracket_right.png-ba5f88773753e95ae7dc9570a2a compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/c.png.import b/source/addons/controller_icons/assets/key/c.png.import index 7bdd02b..e59874d 100644 --- a/source/addons/controller_icons/assets/key/c.png.import +++ b/source/addons/controller_icons/assets/key/c.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/c.png-60bc13862a491d6dad69b4db7006689e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/caps_lock.png.import b/source/addons/controller_icons/assets/key/caps_lock.png.import index 91cb28d..1a8e378 100644 --- a/source/addons/controller_icons/assets/key/caps_lock.png.import +++ b/source/addons/controller_icons/assets/key/caps_lock.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/caps_lock.png-68be22558ed98886d7f0c42175a4f04 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/comma.png.import b/source/addons/controller_icons/assets/key/comma.png.import index dcd082e..e4e880c 100644 --- a/source/addons/controller_icons/assets/key/comma.png.import +++ b/source/addons/controller_icons/assets/key/comma.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/comma.png-c6a5b4ddb60c3aa4cfc77e26999940ed.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/command.png.import b/source/addons/controller_icons/assets/key/command.png.import index 9271825..faeb0f0 100644 --- a/source/addons/controller_icons/assets/key/command.png.import +++ b/source/addons/controller_icons/assets/key/command.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/command.png-64157e5f681303ae47d5fdbb6501706d. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/ctrl.png.import b/source/addons/controller_icons/assets/key/ctrl.png.import index b1e154b..ad95959 100644 --- a/source/addons/controller_icons/assets/key/ctrl.png.import +++ b/source/addons/controller_icons/assets/key/ctrl.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/ctrl.png-482169e05fd7989d866aa04e18ed3455.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/d.png.import b/source/addons/controller_icons/assets/key/d.png.import index 701b533..6555224 100644 --- a/source/addons/controller_icons/assets/key/d.png.import +++ b/source/addons/controller_icons/assets/key/d.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/d.png-b7721e67decc380fd57e07ee56e53953.s3tc.c 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/del.png.import b/source/addons/controller_icons/assets/key/del.png.import index 76b052c..c9db56d 100644 --- a/source/addons/controller_icons/assets/key/del.png.import +++ b/source/addons/controller_icons/assets/key/del.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/del.png-8ab1be2a4136e8f1ae7ec54f3a75f012.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/e.png.import b/source/addons/controller_icons/assets/key/e.png.import index 1dea985..45b1dbd 100644 --- a/source/addons/controller_icons/assets/key/e.png.import +++ b/source/addons/controller_icons/assets/key/e.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/e.png-7ec0ba2ffb631b8cc6de42153f818779.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/end.png.import b/source/addons/controller_icons/assets/key/end.png.import index 4fd32bf..229803b 100644 --- a/source/addons/controller_icons/assets/key/end.png.import +++ b/source/addons/controller_icons/assets/key/end.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/end.png-19998f1c73319c0913db009ea41299f1.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/enter.png.import b/source/addons/controller_icons/assets/key/enter.png.import index bceca38..3f497ea 100644 --- a/source/addons/controller_icons/assets/key/enter.png.import +++ b/source/addons/controller_icons/assets/key/enter.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/enter.png-d374047b990a0250a56e873b383a8b15.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/enter_alt.png.import b/source/addons/controller_icons/assets/key/enter_alt.png.import index 1e0bf50..505b66f 100644 --- a/source/addons/controller_icons/assets/key/enter_alt.png.import +++ b/source/addons/controller_icons/assets/key/enter_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/enter_alt.png-15ea435f9aa8699e8752649d5707d3f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/enter_tall.png.import b/source/addons/controller_icons/assets/key/enter_tall.png.import index 9f06782..e6824c2 100644 --- a/source/addons/controller_icons/assets/key/enter_tall.png.import +++ b/source/addons/controller_icons/assets/key/enter_tall.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/enter_tall.png-9ea4821e424a6eb74b209466a47a03 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/equals.png.import b/source/addons/controller_icons/assets/key/equals.png.import index 529e476..687d734 100644 --- a/source/addons/controller_icons/assets/key/equals.png.import +++ b/source/addons/controller_icons/assets/key/equals.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/equals.png-a0481e5eb9f7e8a2bd77af0d53ce5458.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/esc.png.import b/source/addons/controller_icons/assets/key/esc.png.import index b107dfd..b7657b9 100644 --- a/source/addons/controller_icons/assets/key/esc.png.import +++ b/source/addons/controller_icons/assets/key/esc.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/esc.png-4b899d8648d525a54c45ed98a86ba3b4.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f.png.import b/source/addons/controller_icons/assets/key/f.png.import index 0201408..fad380d 100644 --- a/source/addons/controller_icons/assets/key/f.png.import +++ b/source/addons/controller_icons/assets/key/f.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f.png-4d9e36eeb537558291e4f3b623effc03.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f1.png.import b/source/addons/controller_icons/assets/key/f1.png.import index 277c118..d1a2755 100644 --- a/source/addons/controller_icons/assets/key/f1.png.import +++ b/source/addons/controller_icons/assets/key/f1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f1.png-8f613f4af184fa81387a386622247ed5.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f10.png.import b/source/addons/controller_icons/assets/key/f10.png.import index 4554707..cee2a48 100644 --- a/source/addons/controller_icons/assets/key/f10.png.import +++ b/source/addons/controller_icons/assets/key/f10.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f10.png-b1122098f3284856b04da935979c6ee0.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f11.png.import b/source/addons/controller_icons/assets/key/f11.png.import index 3122c06..ecd54c0 100644 --- a/source/addons/controller_icons/assets/key/f11.png.import +++ b/source/addons/controller_icons/assets/key/f11.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f11.png-4f8e9e1e7a5b11b030ecefea00294062.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f12.png.import b/source/addons/controller_icons/assets/key/f12.png.import index 803e211..08145a2 100644 --- a/source/addons/controller_icons/assets/key/f12.png.import +++ b/source/addons/controller_icons/assets/key/f12.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f12.png-bcb2c9ea989874bc6203645641457c2a.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f2.png.import b/source/addons/controller_icons/assets/key/f2.png.import index cb062a7..1e68efa 100644 --- a/source/addons/controller_icons/assets/key/f2.png.import +++ b/source/addons/controller_icons/assets/key/f2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f2.png-853f8d196971146dfe734d15d6a82681.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f3.png.import b/source/addons/controller_icons/assets/key/f3.png.import index 3a55f33..5c7e36c 100644 --- a/source/addons/controller_icons/assets/key/f3.png.import +++ b/source/addons/controller_icons/assets/key/f3.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f3.png-affa1c0616438ee1071023d1606aafe9.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f4.png.import b/source/addons/controller_icons/assets/key/f4.png.import index 7437e58..3090390 100644 --- a/source/addons/controller_icons/assets/key/f4.png.import +++ b/source/addons/controller_icons/assets/key/f4.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f4.png-59ce134d8791cdbcd742e6d39d376ba1.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f5.png.import b/source/addons/controller_icons/assets/key/f5.png.import index dbea031..34aaaec 100644 --- a/source/addons/controller_icons/assets/key/f5.png.import +++ b/source/addons/controller_icons/assets/key/f5.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f5.png-8883dd1dee9b3466e722aa195bfbde96.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f6.png.import b/source/addons/controller_icons/assets/key/f6.png.import index a6a023f..09afaa2 100644 --- a/source/addons/controller_icons/assets/key/f6.png.import +++ b/source/addons/controller_icons/assets/key/f6.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f6.png-8151a1ab4564149919426cd89b55aef6.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f7.png.import b/source/addons/controller_icons/assets/key/f7.png.import index 9599b2d..286e724 100644 --- a/source/addons/controller_icons/assets/key/f7.png.import +++ b/source/addons/controller_icons/assets/key/f7.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f7.png-03adff059dfd886a088628e7d7209813.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f8.png.import b/source/addons/controller_icons/assets/key/f8.png.import index b29682c..4692fee 100644 --- a/source/addons/controller_icons/assets/key/f8.png.import +++ b/source/addons/controller_icons/assets/key/f8.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f8.png-563ec719a0666065208473a70115781f.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/f9.png.import b/source/addons/controller_icons/assets/key/f9.png.import index c07e6ed..c4e5588 100644 --- a/source/addons/controller_icons/assets/key/f9.png.import +++ b/source/addons/controller_icons/assets/key/f9.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/f9.png-943e76712f8473b1183d5a8d345f1913.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/forward_slash.png.import b/source/addons/controller_icons/assets/key/forward_slash.png.import index ce44128..56274ac 100644 --- a/source/addons/controller_icons/assets/key/forward_slash.png.import +++ b/source/addons/controller_icons/assets/key/forward_slash.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/forward_slash.png-bdc3946991216f01ca3e8ccb138 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/g.png.import b/source/addons/controller_icons/assets/key/g.png.import index 8f56196..1c87ac4 100644 --- a/source/addons/controller_icons/assets/key/g.png.import +++ b/source/addons/controller_icons/assets/key/g.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/g.png-14572568f63a7b23681641a02c662d04.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/h.png.import b/source/addons/controller_icons/assets/key/h.png.import index 565434f..26f41d1 100644 --- a/source/addons/controller_icons/assets/key/h.png.import +++ b/source/addons/controller_icons/assets/key/h.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/h.png-cbfda01b136945b4d87b24e91d9912d6.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/home.png.import b/source/addons/controller_icons/assets/key/home.png.import index 5cd12e3..2efb5c6 100644 --- a/source/addons/controller_icons/assets/key/home.png.import +++ b/source/addons/controller_icons/assets/key/home.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/home.png-f1a63dcfd71b977a2003e8d0d2c3ba4d.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/i.png.import b/source/addons/controller_icons/assets/key/i.png.import index 846d8ab..1da26e8 100644 --- a/source/addons/controller_icons/assets/key/i.png.import +++ b/source/addons/controller_icons/assets/key/i.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/i.png-7ea3745b1b8fbcbe2692879f2fe4be85.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/insert.png.import b/source/addons/controller_icons/assets/key/insert.png.import index d7435b3..44b57b4 100644 --- a/source/addons/controller_icons/assets/key/insert.png.import +++ b/source/addons/controller_icons/assets/key/insert.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/insert.png-c636ec6f7ebb7021fe33df113831b3af.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/j.png.import b/source/addons/controller_icons/assets/key/j.png.import index b34d5cc..b7ebac7 100644 --- a/source/addons/controller_icons/assets/key/j.png.import +++ b/source/addons/controller_icons/assets/key/j.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/j.png-78fde95f9bb9cd69a6d1e8138358ce33.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/k.png.import b/source/addons/controller_icons/assets/key/k.png.import index 2c92188..be4f0f6 100644 --- a/source/addons/controller_icons/assets/key/k.png.import +++ b/source/addons/controller_icons/assets/key/k.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/k.png-bfe3441a49bc1e9efad9a20088127d99.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/l.png.import b/source/addons/controller_icons/assets/key/l.png.import index 2cff56d..d4a9123 100644 --- a/source/addons/controller_icons/assets/key/l.png.import +++ b/source/addons/controller_icons/assets/key/l.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l.png-e5c72a0134479c7f082bb92ed54e319c.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/m.png.import b/source/addons/controller_icons/assets/key/m.png.import index 73d49b4..f5df837 100644 --- a/source/addons/controller_icons/assets/key/m.png.import +++ b/source/addons/controller_icons/assets/key/m.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/m.png-87b633c83926fbc3c83ab6d55dda9b7c.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/mark_left.png.import b/source/addons/controller_icons/assets/key/mark_left.png.import index c6d8f89..853372d 100644 --- a/source/addons/controller_icons/assets/key/mark_left.png.import +++ b/source/addons/controller_icons/assets/key/mark_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/mark_left.png-26150e1291ba06a3d79018bd042eae0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/mark_right.png.import b/source/addons/controller_icons/assets/key/mark_right.png.import index 54c6a26..c00e748 100644 --- a/source/addons/controller_icons/assets/key/mark_right.png.import +++ b/source/addons/controller_icons/assets/key/mark_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/mark_right.png-af2191a926d5a5d9ee64916803ae83 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/minus.png.import b/source/addons/controller_icons/assets/key/minus.png.import index 80872f0..5521274 100644 --- a/source/addons/controller_icons/assets/key/minus.png.import +++ b/source/addons/controller_icons/assets/key/minus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/minus.png-e9b3cb97f54fc23d867874d64c5aebe3.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/n.png.import b/source/addons/controller_icons/assets/key/n.png.import index 3964b91..eb32115 100644 --- a/source/addons/controller_icons/assets/key/n.png.import +++ b/source/addons/controller_icons/assets/key/n.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/n.png-2b143bdd3bfea413b560d4f610f909c9.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/num_lock.png.import b/source/addons/controller_icons/assets/key/num_lock.png.import index f0186f0..ae2bb43 100644 --- a/source/addons/controller_icons/assets/key/num_lock.png.import +++ b/source/addons/controller_icons/assets/key/num_lock.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/num_lock.png-e2af79f4edd04e9ecf785f370befb814 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/o.png.import b/source/addons/controller_icons/assets/key/o.png.import index 1a2aab5..54a8f6a 100644 --- a/source/addons/controller_icons/assets/key/o.png.import +++ b/source/addons/controller_icons/assets/key/o.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/o.png-ebca633629770ba1e7a8ef37bcc47d6e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/p.png.import b/source/addons/controller_icons/assets/key/p.png.import index 4ab91ac..2e4da8c 100644 --- a/source/addons/controller_icons/assets/key/p.png.import +++ b/source/addons/controller_icons/assets/key/p.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/p.png-fe6d5088b82cf26ee9105323c97e8ec0.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/page_down.png.import b/source/addons/controller_icons/assets/key/page_down.png.import index 88e845d..0b0c7c6 100644 --- a/source/addons/controller_icons/assets/key/page_down.png.import +++ b/source/addons/controller_icons/assets/key/page_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/page_down.png-cf932ce22919c18cd1203d44da33950 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/page_up.png.import b/source/addons/controller_icons/assets/key/page_up.png.import index b96c65d..20903e6 100644 --- a/source/addons/controller_icons/assets/key/page_up.png.import +++ b/source/addons/controller_icons/assets/key/page_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/page_up.png-24127511132eb2a47c0eda7f032beade. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/period.png.import b/source/addons/controller_icons/assets/key/period.png.import index 69ea92d..c02d9d2 100644 --- a/source/addons/controller_icons/assets/key/period.png.import +++ b/source/addons/controller_icons/assets/key/period.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/period.png-a4d8f2843696679bb3e87882c95b0d90.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/plus.png.import b/source/addons/controller_icons/assets/key/plus.png.import index c8542dd..67fa31c 100644 --- a/source/addons/controller_icons/assets/key/plus.png.import +++ b/source/addons/controller_icons/assets/key/plus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/plus.png-af02dd6f0e49f31f9b9ba7915608f44c.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/plus_tall.png.import b/source/addons/controller_icons/assets/key/plus_tall.png.import index 30e7d2f..45ad64b 100644 --- a/source/addons/controller_icons/assets/key/plus_tall.png.import +++ b/source/addons/controller_icons/assets/key/plus_tall.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/plus_tall.png-6963791cb2dd22492727106e4908d21 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/print_screen.png.import b/source/addons/controller_icons/assets/key/print_screen.png.import index 520fdc9..398c741 100644 --- a/source/addons/controller_icons/assets/key/print_screen.png.import +++ b/source/addons/controller_icons/assets/key/print_screen.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/print_screen.png-a5f3288be910635fd592c6f24c4f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/q.png.import b/source/addons/controller_icons/assets/key/q.png.import index ff9d0e9..2c321f5 100644 --- a/source/addons/controller_icons/assets/key/q.png.import +++ b/source/addons/controller_icons/assets/key/q.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/q.png-6ef53dece2e535e76ac4b6715c53b010.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/question.png.import b/source/addons/controller_icons/assets/key/question.png.import index c37ee07..68144e3 100644 --- a/source/addons/controller_icons/assets/key/question.png.import +++ b/source/addons/controller_icons/assets/key/question.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/question.png-047f35398fc0d584a0c0d57bc94857a9 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/quote.png.import b/source/addons/controller_icons/assets/key/quote.png.import index e4e236a..529a8a5 100644 --- a/source/addons/controller_icons/assets/key/quote.png.import +++ b/source/addons/controller_icons/assets/key/quote.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/quote.png-01e82721231020d3c3b0ef2f3b74577b.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/r.png.import b/source/addons/controller_icons/assets/key/r.png.import index e3f5a40..80571bb 100644 --- a/source/addons/controller_icons/assets/key/r.png.import +++ b/source/addons/controller_icons/assets/key/r.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r.png-c853d4227496df13556499c7e96ba025.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/s.png.import b/source/addons/controller_icons/assets/key/s.png.import index dc8f1ed..623fcd6 100644 --- a/source/addons/controller_icons/assets/key/s.png.import +++ b/source/addons/controller_icons/assets/key/s.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/s.png-8ba01e8981caec742feea41c5c9382ab.s3tc.c 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/semicolon.png.import b/source/addons/controller_icons/assets/key/semicolon.png.import index 4347d45..1543c72 100644 --- a/source/addons/controller_icons/assets/key/semicolon.png.import +++ b/source/addons/controller_icons/assets/key/semicolon.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/semicolon.png-c1c48dd478b2bf5ae5d9bae57cdf3d6 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/shift.png.import b/source/addons/controller_icons/assets/key/shift.png.import index cb1fc38..bcf656f 100644 --- a/source/addons/controller_icons/assets/key/shift.png.import +++ b/source/addons/controller_icons/assets/key/shift.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/shift.png-a03a9bd92c17d4fc5b370f1755f396ce.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/shift_alt.png.import b/source/addons/controller_icons/assets/key/shift_alt.png.import index 37c0c1b..ea14b83 100644 --- a/source/addons/controller_icons/assets/key/shift_alt.png.import +++ b/source/addons/controller_icons/assets/key/shift_alt.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/shift_alt.png-e1013b0ce4d0764e12cc0d349786ce1 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/slash.png.import b/source/addons/controller_icons/assets/key/slash.png.import index 3d1e1c9..7c52e6a 100644 --- a/source/addons/controller_icons/assets/key/slash.png.import +++ b/source/addons/controller_icons/assets/key/slash.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/slash.png-25cb40c1517be132337b6087293cb938.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/space.png.import b/source/addons/controller_icons/assets/key/space.png.import index 57fa5d8..8aa8b13 100644 --- a/source/addons/controller_icons/assets/key/space.png.import +++ b/source/addons/controller_icons/assets/key/space.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/space.png-da09457f968fc22d338589204e66e20a.s3 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/t.png.import b/source/addons/controller_icons/assets/key/t.png.import index ce80e5e..8d85b30 100644 --- a/source/addons/controller_icons/assets/key/t.png.import +++ b/source/addons/controller_icons/assets/key/t.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/t.png-70d394cdcf8270daedd4789ad431faf2.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/tab.png.import b/source/addons/controller_icons/assets/key/tab.png.import index 615b862..21e2453 100644 --- a/source/addons/controller_icons/assets/key/tab.png.import +++ b/source/addons/controller_icons/assets/key/tab.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/tab.png-22eec37122d05e9322480e85af4a45fc.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/tilda.png.import b/source/addons/controller_icons/assets/key/tilda.png.import index 471266a..72ad1d8 100644 --- a/source/addons/controller_icons/assets/key/tilda.png.import +++ b/source/addons/controller_icons/assets/key/tilda.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/tilda.png-54e1d4f4a3a498075fe0e8a403e57cbc.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/u.png.import b/source/addons/controller_icons/assets/key/u.png.import index f57c86d..bcc5e9f 100644 --- a/source/addons/controller_icons/assets/key/u.png.import +++ b/source/addons/controller_icons/assets/key/u.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/u.png-3564c3693205b4e84d15f34f8fa09789.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/v.png.import b/source/addons/controller_icons/assets/key/v.png.import index c2535d5..5b58dd3 100644 --- a/source/addons/controller_icons/assets/key/v.png.import +++ b/source/addons/controller_icons/assets/key/v.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/v.png-a2d45ee9b83f5d8e486139cae4520f4a.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/w.png.import b/source/addons/controller_icons/assets/key/w.png.import index 29915de..8bc6e60 100644 --- a/source/addons/controller_icons/assets/key/w.png.import +++ b/source/addons/controller_icons/assets/key/w.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/w.png-ed3cd4592010c75b8d884d9d08803a21.s3tc.c 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/key/win.png.import b/source/addons/controller_icons/assets/key/win.png.import index 30de058..ee12f73 100644 --- a/source/addons/controller_icons/assets/key/win.png.import +++ b/source/addons/controller_icons/assets/key/win.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/win.png-7991b99458c774d8f357ef921343498f.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/x.png.import b/source/addons/controller_icons/assets/key/x.png.import index 9a1d9a8..bd40df6 100644 --- a/source/addons/controller_icons/assets/key/x.png.import +++ b/source/addons/controller_icons/assets/key/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-f920649f251a4dcf50f6adb4b7dca48a.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/y.png.import b/source/addons/controller_icons/assets/key/y.png.import index 06cba44..4f9aa4f 100644 --- a/source/addons/controller_icons/assets/key/y.png.import +++ b/source/addons/controller_icons/assets/key/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-64308a7952fca02f2ced96ef86b055d8.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/key/z.png.import b/source/addons/controller_icons/assets/key/z.png.import index 5c22e9d..a0a49fc 100644 --- a/source/addons/controller_icons/assets/key/z.png.import +++ b/source/addons/controller_icons/assets/key/z.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/z.png-db05dce79d25a20ba57100ebae2f198b.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/a.png.import b/source/addons/controller_icons/assets/luna/a.png.import index 6d5d7b7..e91658d 100644 --- a/source/addons/controller_icons/assets/luna/a.png.import +++ b/source/addons/controller_icons/assets/luna/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-59a62f9f6a6a0a2af64c8d88e34a5401.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/b.png.import b/source/addons/controller_icons/assets/luna/b.png.import index 48a89da..240977c 100644 --- a/source/addons/controller_icons/assets/luna/b.png.import +++ b/source/addons/controller_icons/assets/luna/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-1ae64f3087efcc70a69cd9d33882dce4.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/circle.png.import b/source/addons/controller_icons/assets/luna/circle.png.import index a53a126..e56e2fd 100644 --- a/source/addons/controller_icons/assets/luna/circle.png.import +++ b/source/addons/controller_icons/assets/luna/circle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/circle.png-c33dba2bdcfb9b825b3c51fddde35778.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/diagram.png.import b/source/addons/controller_icons/assets/luna/diagram.png.import index dee70d4..657c11f 100644 --- a/source/addons/controller_icons/assets/luna/diagram.png.import +++ b/source/addons/controller_icons/assets/luna/diagram.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram.png-0e19e89b9a714f35a947bce58d788325. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/diagram_simple.png.import b/source/addons/controller_icons/assets/luna/diagram_simple.png.import index c6adb8e..b10244b 100644 --- a/source/addons/controller_icons/assets/luna/diagram_simple.png.import +++ b/source/addons/controller_icons/assets/luna/diagram_simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram_simple.png-28acd78142da16060c36b59ae1 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/dpad.png.import b/source/addons/controller_icons/assets/luna/dpad.png.import index 2c3fbea..2c6b109 100644 --- a/source/addons/controller_icons/assets/luna/dpad.png.import +++ b/source/addons/controller_icons/assets/luna/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-df663e7793bdd6d418baae05c51fec49.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/dpad_down.png.import b/source/addons/controller_icons/assets/luna/dpad_down.png.import index 7988d70..6d147ca 100644 --- a/source/addons/controller_icons/assets/luna/dpad_down.png.import +++ b/source/addons/controller_icons/assets/luna/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-bca02bdbaf756f49c333f91ba05b820 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/dpad_left.png.import b/source/addons/controller_icons/assets/luna/dpad_left.png.import index b8510f0..f2e98a0 100644 --- a/source/addons/controller_icons/assets/luna/dpad_left.png.import +++ b/source/addons/controller_icons/assets/luna/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-ef7fb1018db88ffdeb70ff1032f2d67 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/dpad_right.png.import b/source/addons/controller_icons/assets/luna/dpad_right.png.import index 5561a1c..66f01f5 100644 --- a/source/addons/controller_icons/assets/luna/dpad_right.png.import +++ b/source/addons/controller_icons/assets/luna/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-5d9e7fd5de979dd6e72fc6c6e218ff compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/dpad_up.png.import b/source/addons/controller_icons/assets/luna/dpad_up.png.import index 69f8b78..857e418 100644 --- a/source/addons/controller_icons/assets/luna/dpad_up.png.import +++ b/source/addons/controller_icons/assets/luna/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-ef55bb167760eab1071a8262962d899b. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/l_stick.png.import b/source/addons/controller_icons/assets/luna/l_stick.png.import index a3b0b78..c0144e8 100644 --- a/source/addons/controller_icons/assets/luna/l_stick.png.import +++ b/source/addons/controller_icons/assets/luna/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-ef7c5449283b14a6866a7fe5533de180. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/l_stick_click.png.import b/source/addons/controller_icons/assets/luna/l_stick_click.png.import index 90a7651..a48bd32 100644 --- a/source/addons/controller_icons/assets/luna/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/luna/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-1e75c4b6afaefad25cb373de42d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/lb.png.import b/source/addons/controller_icons/assets/luna/lb.png.import index 928d0ec..9a84c46 100644 --- a/source/addons/controller_icons/assets/luna/lb.png.import +++ b/source/addons/controller_icons/assets/luna/lb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lb.png-3c96db6e020bba08a50a0ebd9fe8e731.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/lt.png.import b/source/addons/controller_icons/assets/luna/lt.png.import index 5f9404e..212ae8f 100644 --- a/source/addons/controller_icons/assets/luna/lt.png.import +++ b/source/addons/controller_icons/assets/luna/lt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lt.png-2cdb294c39e41ed6afc2addf04863726.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/menu.png.import b/source/addons/controller_icons/assets/luna/menu.png.import index 7140436..12302af 100644 --- a/source/addons/controller_icons/assets/luna/menu.png.import +++ b/source/addons/controller_icons/assets/luna/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-f8eed2754c94df5e0b92317c9d3eaf7f.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/microphone.png.import b/source/addons/controller_icons/assets/luna/microphone.png.import index 194c05d..938db13 100644 --- a/source/addons/controller_icons/assets/luna/microphone.png.import +++ b/source/addons/controller_icons/assets/luna/microphone.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/microphone.png-7c6c78023d41c0eecbcde190292814 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/r_stick.png.import b/source/addons/controller_icons/assets/luna/r_stick.png.import index 45b3e26..441fb37 100644 --- a/source/addons/controller_icons/assets/luna/r_stick.png.import +++ b/source/addons/controller_icons/assets/luna/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-7f23b2a2644811f3d84785a06ee547d4. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/r_stick_click.png.import b/source/addons/controller_icons/assets/luna/r_stick_click.png.import index 25e6488..13d50e9 100644 --- a/source/addons/controller_icons/assets/luna/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/luna/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-25280c4007322abd67a417283b7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/rb.png.import b/source/addons/controller_icons/assets/luna/rb.png.import index ce6e44b..337839d 100644 --- a/source/addons/controller_icons/assets/luna/rb.png.import +++ b/source/addons/controller_icons/assets/luna/rb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rb.png-c7ea937fbeb3328ee9e0f2779a5f7450.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/rt.png.import b/source/addons/controller_icons/assets/luna/rt.png.import index cd2aa02..1c72acd 100644 --- a/source/addons/controller_icons/assets/luna/rt.png.import +++ b/source/addons/controller_icons/assets/luna/rt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rt.png-317167a9c4de6aeaf4313c55cae3cb71.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/x.png.import b/source/addons/controller_icons/assets/luna/x.png.import index 4ea58c6..30708ec 100644 --- a/source/addons/controller_icons/assets/luna/x.png.import +++ b/source/addons/controller_icons/assets/luna/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-f47dc752ce8b528de61a09789677ef87.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/luna/y.png.import b/source/addons/controller_icons/assets/luna/y.png.import index d7532df..e6a3b6e 100644 --- a/source/addons/controller_icons/assets/luna/y.png.import +++ b/source/addons/controller_icons/assets/luna/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-b4f0d57293966dde5b58789c67559fd2.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/left.png.import b/source/addons/controller_icons/assets/mouse/left.png.import index b9a878c..fa68c59 100644 --- a/source/addons/controller_icons/assets/mouse/left.png.import +++ b/source/addons/controller_icons/assets/mouse/left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left.png-13d9369d03c3b5ebc7aad51d61ba4b7c.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/middle.png.import b/source/addons/controller_icons/assets/mouse/middle.png.import index 7decd8f..015ec21 100644 --- a/source/addons/controller_icons/assets/mouse/middle.png.import +++ b/source/addons/controller_icons/assets/mouse/middle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/middle.png-01f248dbdab856ae6ed2ee6cdb5ed595.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/right.png.import b/source/addons/controller_icons/assets/mouse/right.png.import index 28191cd..252cbfc 100644 --- a/source/addons/controller_icons/assets/mouse/right.png.import +++ b/source/addons/controller_icons/assets/mouse/right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right.png-360abc8e1cd731233672b90162b87e4d.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/side_down.png.import b/source/addons/controller_icons/assets/mouse/side_down.png.import index a6db0da..aa0f76e 100644 --- a/source/addons/controller_icons/assets/mouse/side_down.png.import +++ b/source/addons/controller_icons/assets/mouse/side_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/side_down.png-d0f917f031f1fa83082f5a03dd4d47e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/side_up.png.import b/source/addons/controller_icons/assets/mouse/side_up.png.import index f679315..6c32d43 100644 --- a/source/addons/controller_icons/assets/mouse/side_up.png.import +++ b/source/addons/controller_icons/assets/mouse/side_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/side_up.png-5968fb429ff2d3f3520b5fee858a6bf8. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/simple.png.import b/source/addons/controller_icons/assets/mouse/simple.png.import index c499a0f..211803c 100644 --- a/source/addons/controller_icons/assets/mouse/simple.png.import +++ b/source/addons/controller_icons/assets/mouse/simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/simple.png-25602dc17ea731070ac19eb5e687d6b0.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/wheel_down.png.import b/source/addons/controller_icons/assets/mouse/wheel_down.png.import index 0600715..29ca7ed 100644 --- a/source/addons/controller_icons/assets/mouse/wheel_down.png.import +++ b/source/addons/controller_icons/assets/mouse/wheel_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/wheel_down.png-41403fb0624313a3521aa5396d2e74 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/mouse/wheel_up.png.import b/source/addons/controller_icons/assets/mouse/wheel_up.png.import index 8fa5134..782375b 100644 --- a/source/addons/controller_icons/assets/mouse/wheel_up.png.import +++ b/source/addons/controller_icons/assets/mouse/wheel_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/wheel_up.png-90da1a0b587bd0dc8cda13989793b735 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/a.png.import b/source/addons/controller_icons/assets/ouya/a.png.import index cb1fa1e..4d5e3a0 100644 --- a/source/addons/controller_icons/assets/ouya/a.png.import +++ b/source/addons/controller_icons/assets/ouya/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-29eecb9631be3f2d922f22d192491112.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/dpad.png.import b/source/addons/controller_icons/assets/ouya/dpad.png.import index 236292f..2f57d81 100644 --- a/source/addons/controller_icons/assets/ouya/dpad.png.import +++ b/source/addons/controller_icons/assets/ouya/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-9426474647bb17cbcfecf0960a2689ca.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/dpad_down.png.import b/source/addons/controller_icons/assets/ouya/dpad_down.png.import index c84bd46..856fd78 100644 --- a/source/addons/controller_icons/assets/ouya/dpad_down.png.import +++ b/source/addons/controller_icons/assets/ouya/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-13b277973726f4697773238d58a2206 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/dpad_left.png.import b/source/addons/controller_icons/assets/ouya/dpad_left.png.import index a2d534e..3048642 100644 --- a/source/addons/controller_icons/assets/ouya/dpad_left.png.import +++ b/source/addons/controller_icons/assets/ouya/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-d6da2405f928bc1bf7410a880edba28 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/dpad_right.png.import b/source/addons/controller_icons/assets/ouya/dpad_right.png.import index 97aacfc..066cfd5 100644 --- a/source/addons/controller_icons/assets/ouya/dpad_right.png.import +++ b/source/addons/controller_icons/assets/ouya/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-44405ca2fe5d8a219ba0eba3426bec compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/dpad_up.png.import b/source/addons/controller_icons/assets/ouya/dpad_up.png.import index 611f1b3..b528d3f 100644 --- a/source/addons/controller_icons/assets/ouya/dpad_up.png.import +++ b/source/addons/controller_icons/assets/ouya/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-0d780dfe823faac5787681ba448e07f0. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/l1.png.import b/source/addons/controller_icons/assets/ouya/l1.png.import index a0eb303..f6a1518 100644 --- a/source/addons/controller_icons/assets/ouya/l1.png.import +++ b/source/addons/controller_icons/assets/ouya/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-40be426ff0b63ac71a387da3194167e8.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/l2.png.import b/source/addons/controller_icons/assets/ouya/l2.png.import index f63cb01..fe9769b 100644 --- a/source/addons/controller_icons/assets/ouya/l2.png.import +++ b/source/addons/controller_icons/assets/ouya/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-4ccae94ce7c12e37b2621a33b6e321e6.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/l_stick.png.import b/source/addons/controller_icons/assets/ouya/l_stick.png.import index c44fe1b..8440744 100644 --- a/source/addons/controller_icons/assets/ouya/l_stick.png.import +++ b/source/addons/controller_icons/assets/ouya/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-501fa1ab3b082e67f566728cbecc7708. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/menu.png.import b/source/addons/controller_icons/assets/ouya/menu.png.import index 1226426..4579254 100644 --- a/source/addons/controller_icons/assets/ouya/menu.png.import +++ b/source/addons/controller_icons/assets/ouya/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-c3e217d08a17c9c3997312859256b788.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/o.png.import b/source/addons/controller_icons/assets/ouya/o.png.import index 8f11c5c..4466836 100644 --- a/source/addons/controller_icons/assets/ouya/o.png.import +++ b/source/addons/controller_icons/assets/ouya/o.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/o.png-5860511e81509fe5f2c91ae353e00a58.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/r1.png.import b/source/addons/controller_icons/assets/ouya/r1.png.import index 7be0b67..4a36e27 100644 --- a/source/addons/controller_icons/assets/ouya/r1.png.import +++ b/source/addons/controller_icons/assets/ouya/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-2f981ba18f14037d054db9e0a74904f5.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/r2.png.import b/source/addons/controller_icons/assets/ouya/r2.png.import index a644d20..e7e1ae3 100644 --- a/source/addons/controller_icons/assets/ouya/r2.png.import +++ b/source/addons/controller_icons/assets/ouya/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-5547939bd008bff4345aab8e7d1e50fc.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/r_stick.png.import b/source/addons/controller_icons/assets/ouya/r_stick.png.import index 4b5b315..71dfe63 100644 --- a/source/addons/controller_icons/assets/ouya/r_stick.png.import +++ b/source/addons/controller_icons/assets/ouya/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-b68d71869af9e2ee20718829995adcc3. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/touch.png.import b/source/addons/controller_icons/assets/ouya/touch.png.import index 25dd4bd..af47f5a 100644 --- a/source/addons/controller_icons/assets/ouya/touch.png.import +++ b/source/addons/controller_icons/assets/ouya/touch.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/touch.png-1ba3e7ec2b35a2d00655a24d0089caad.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/u.png.import b/source/addons/controller_icons/assets/ouya/u.png.import index 81fb813..94d4dbe 100644 --- a/source/addons/controller_icons/assets/ouya/u.png.import +++ b/source/addons/controller_icons/assets/ouya/u.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/u.png-599d0e95eb0d2f2937ff55a5a246fb0f.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ouya/y.png.import b/source/addons/controller_icons/assets/ouya/y.png.import index 37e4584..38eacbb 100644 --- a/source/addons/controller_icons/assets/ouya/y.png.import +++ b/source/addons/controller_icons/assets/ouya/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-5d0ac3a56f44813490c7f2c4bfb2a86b.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/positional/east.png.import b/source/addons/controller_icons/assets/positional/east.png.import index 4c4073b..761c553 100644 --- a/source/addons/controller_icons/assets/positional/east.png.import +++ b/source/addons/controller_icons/assets/positional/east.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/east.png-468aa650c9556f22433824736c3d70c7.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/positional/north.png.import b/source/addons/controller_icons/assets/positional/north.png.import index 204ca14..4bed8c7 100644 --- a/source/addons/controller_icons/assets/positional/north.png.import +++ b/source/addons/controller_icons/assets/positional/north.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/north.png-8eae94f078419a6dd29488ecb0e91781.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/positional/south.png.import b/source/addons/controller_icons/assets/positional/south.png.import index a5dffbc..3bd143f 100644 --- a/source/addons/controller_icons/assets/positional/south.png.import +++ b/source/addons/controller_icons/assets/positional/south.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/south.png-641e4a1035caae19816e0982ab1fa092.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/positional/west.png.import b/source/addons/controller_icons/assets/positional/west.png.import index 49a14a0..f20a23d 100644 --- a/source/addons/controller_icons/assets/positional/west.png.import +++ b/source/addons/controller_icons/assets/positional/west.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/west.png-721f52ab7a924c9ea30a0b9420becae2.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/circle.png.import b/source/addons/controller_icons/assets/ps3/circle.png.import index 621fa02..df1d618 100644 --- a/source/addons/controller_icons/assets/ps3/circle.png.import +++ b/source/addons/controller_icons/assets/ps3/circle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/circle.png-70d1c7377e6d97fdb685a6b0754f3f42.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/cross.png.import b/source/addons/controller_icons/assets/ps3/cross.png.import index cdba998..04e353a 100644 --- a/source/addons/controller_icons/assets/ps3/cross.png.import +++ b/source/addons/controller_icons/assets/ps3/cross.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/cross.png-e329bed17ebc98e605153471fea82b80.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/dpad.png.import b/source/addons/controller_icons/assets/ps3/dpad.png.import index e0c4dfe..45bb64c 100644 --- a/source/addons/controller_icons/assets/ps3/dpad.png.import +++ b/source/addons/controller_icons/assets/ps3/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-4637fef7b5db266765dab22db8f811fd.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/dpad_down.png.import b/source/addons/controller_icons/assets/ps3/dpad_down.png.import index 1316c7f..ce7909a 100644 --- a/source/addons/controller_icons/assets/ps3/dpad_down.png.import +++ b/source/addons/controller_icons/assets/ps3/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-3aa92d8def03f8a78bef46eb393c9cc compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/dpad_left.png.import b/source/addons/controller_icons/assets/ps3/dpad_left.png.import index d832248..0c63630 100644 --- a/source/addons/controller_icons/assets/ps3/dpad_left.png.import +++ b/source/addons/controller_icons/assets/ps3/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-1720ec3d2d90c298cf2b0d3b3eb8b92 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/dpad_right.png.import b/source/addons/controller_icons/assets/ps3/dpad_right.png.import index b544802..5f03c24 100644 --- a/source/addons/controller_icons/assets/ps3/dpad_right.png.import +++ b/source/addons/controller_icons/assets/ps3/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-7b72f2c4cc3545b46da3d768493a81 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/dpad_up.png.import b/source/addons/controller_icons/assets/ps3/dpad_up.png.import index d21a37f..705ed6c 100644 --- a/source/addons/controller_icons/assets/ps3/dpad_up.png.import +++ b/source/addons/controller_icons/assets/ps3/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-021888c99c1636514946a171fb55ea78. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/l1.png.import b/source/addons/controller_icons/assets/ps3/l1.png.import index b1718dc..d13354a 100644 --- a/source/addons/controller_icons/assets/ps3/l1.png.import +++ b/source/addons/controller_icons/assets/ps3/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-dfeafeae6ba7ae1b62c84a1f737135c8.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/l2.png.import b/source/addons/controller_icons/assets/ps3/l2.png.import index deaaa18..9787930 100644 --- a/source/addons/controller_icons/assets/ps3/l2.png.import +++ b/source/addons/controller_icons/assets/ps3/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-49cf84f948da7cf4a5ca5167681ae3d5.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/l_stick.png.import b/source/addons/controller_icons/assets/ps3/l_stick.png.import index 6deede5..605211f 100644 --- a/source/addons/controller_icons/assets/ps3/l_stick.png.import +++ b/source/addons/controller_icons/assets/ps3/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-4d7ce55783c67f70a2df08cb2beff743. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/l_stick_click.png.import b/source/addons/controller_icons/assets/ps3/l_stick_click.png.import index 317a95f..5559c42 100644 --- a/source/addons/controller_icons/assets/ps3/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps3/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-3323df54acb88d23cb5dcf1d893 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/r1.png.import b/source/addons/controller_icons/assets/ps3/r1.png.import index 613081e..99274ac 100644 --- a/source/addons/controller_icons/assets/ps3/r1.png.import +++ b/source/addons/controller_icons/assets/ps3/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-336215df5c25fad438a516b20a7e7b24.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/r2.png.import b/source/addons/controller_icons/assets/ps3/r2.png.import index a299f59..48a2122 100644 --- a/source/addons/controller_icons/assets/ps3/r2.png.import +++ b/source/addons/controller_icons/assets/ps3/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-9cd8110714aedc5d2a3dfc1ffdff8c02.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/r_stick.png.import b/source/addons/controller_icons/assets/ps3/r_stick.png.import index 7def871..d31864b 100644 --- a/source/addons/controller_icons/assets/ps3/r_stick.png.import +++ b/source/addons/controller_icons/assets/ps3/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-f749816036286088f35537738f770504. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/r_stick_click.png.import b/source/addons/controller_icons/assets/ps3/r_stick_click.png.import index e2474d3..460ebfc 100644 --- a/source/addons/controller_icons/assets/ps3/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps3/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-cde2b6f7baf1c09e35614699e80 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/select.png.import b/source/addons/controller_icons/assets/ps3/select.png.import index 8dfdaa0..e79fae8 100644 --- a/source/addons/controller_icons/assets/ps3/select.png.import +++ b/source/addons/controller_icons/assets/ps3/select.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/select.png-522047772d3761e1a6d393174fcc2cdc.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/square.png.import b/source/addons/controller_icons/assets/ps3/square.png.import index d3f6cfe..5e4a3c0 100644 --- a/source/addons/controller_icons/assets/ps3/square.png.import +++ b/source/addons/controller_icons/assets/ps3/square.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square.png-acfb3df3c257e4d05e07c07b6c83dfc5.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/start.png.import b/source/addons/controller_icons/assets/ps3/start.png.import index c7eec86..2f7d958 100644 --- a/source/addons/controller_icons/assets/ps3/start.png.import +++ b/source/addons/controller_icons/assets/ps3/start.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/start.png-5eb6d70080bded8525bed5b22e1fd045.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps3/triangle.png.import b/source/addons/controller_icons/assets/ps3/triangle.png.import index 0d3cc1a..6ec573c 100644 --- a/source/addons/controller_icons/assets/ps3/triangle.png.import +++ b/source/addons/controller_icons/assets/ps3/triangle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/triangle.png-636bd5a4c11993247c97be299c04f5ef compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/circle.png.import b/source/addons/controller_icons/assets/ps4/circle.png.import index 932b2e5..7074055 100644 --- a/source/addons/controller_icons/assets/ps4/circle.png.import +++ b/source/addons/controller_icons/assets/ps4/circle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/circle.png-01df92401a316edc4ce14b20766177ab.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/cross.png.import b/source/addons/controller_icons/assets/ps4/cross.png.import index bb1f003..4cf76f0 100644 --- a/source/addons/controller_icons/assets/ps4/cross.png.import +++ b/source/addons/controller_icons/assets/ps4/cross.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/cross.png-e713dddd604d213d7729201a660a0525.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/diagram.png.import b/source/addons/controller_icons/assets/ps4/diagram.png.import index 8c3941e..dc26947 100644 --- a/source/addons/controller_icons/assets/ps4/diagram.png.import +++ b/source/addons/controller_icons/assets/ps4/diagram.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram.png-0ae298bc80cd0126f885be209e23a765. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/diagram_simple.png.import b/source/addons/controller_icons/assets/ps4/diagram_simple.png.import index c646b48..97e8b54 100644 --- a/source/addons/controller_icons/assets/ps4/diagram_simple.png.import +++ b/source/addons/controller_icons/assets/ps4/diagram_simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram_simple.png-5fdad32ea7c3ffc2b56944758c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/dpad.png.import b/source/addons/controller_icons/assets/ps4/dpad.png.import index 8937acf..766b555 100644 --- a/source/addons/controller_icons/assets/ps4/dpad.png.import +++ b/source/addons/controller_icons/assets/ps4/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-dd021d29d27d6122ce9bfcfb1bbb021b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/dpad_down.png.import b/source/addons/controller_icons/assets/ps4/dpad_down.png.import index ce5629b..8085673 100644 --- a/source/addons/controller_icons/assets/ps4/dpad_down.png.import +++ b/source/addons/controller_icons/assets/ps4/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-59c0669558772f9d842bb5f97d6efb9 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/dpad_left.png.import b/source/addons/controller_icons/assets/ps4/dpad_left.png.import index 51f9f26..26a8122 100644 --- a/source/addons/controller_icons/assets/ps4/dpad_left.png.import +++ b/source/addons/controller_icons/assets/ps4/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-0293ca67b8114377516161a62ab1783 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/dpad_right.png.import b/source/addons/controller_icons/assets/ps4/dpad_right.png.import index 6208554..5a735d0 100644 --- a/source/addons/controller_icons/assets/ps4/dpad_right.png.import +++ b/source/addons/controller_icons/assets/ps4/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-deac173b424649225684e25625f0be compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/dpad_up.png.import b/source/addons/controller_icons/assets/ps4/dpad_up.png.import index 9ff6a7d..3b056c5 100644 --- a/source/addons/controller_icons/assets/ps4/dpad_up.png.import +++ b/source/addons/controller_icons/assets/ps4/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-29b188f1af23baff02984fc1f7680ac3. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/l1.png.import b/source/addons/controller_icons/assets/ps4/l1.png.import index 5860963..bc998e6 100644 --- a/source/addons/controller_icons/assets/ps4/l1.png.import +++ b/source/addons/controller_icons/assets/ps4/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-95ac4b86b63cb6d6063d04c34423e038.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/l2.png.import b/source/addons/controller_icons/assets/ps4/l2.png.import index 7994d7f..af676dc 100644 --- a/source/addons/controller_icons/assets/ps4/l2.png.import +++ b/source/addons/controller_icons/assets/ps4/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-4dcb2ad01f6cbc33aa48ee09f5756380.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/l_stick.png.import b/source/addons/controller_icons/assets/ps4/l_stick.png.import index fd9453d..44eff72 100644 --- a/source/addons/controller_icons/assets/ps4/l_stick.png.import +++ b/source/addons/controller_icons/assets/ps4/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-fc48bbb457eb14f55412c04cde7dc518. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/l_stick_click.png.import b/source/addons/controller_icons/assets/ps4/l_stick_click.png.import index d2a7894..1fe733a 100644 --- a/source/addons/controller_icons/assets/ps4/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps4/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-9e3d30c01f3f7fbbd1bf8d68e87 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/options.png.import b/source/addons/controller_icons/assets/ps4/options.png.import index b1d63fa..3e1aa91 100644 --- a/source/addons/controller_icons/assets/ps4/options.png.import +++ b/source/addons/controller_icons/assets/ps4/options.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/options.png-c3fb31c3e90305771b4ea74b6c139e3e. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/r1.png.import b/source/addons/controller_icons/assets/ps4/r1.png.import index f681fdb..9e7bcfd 100644 --- a/source/addons/controller_icons/assets/ps4/r1.png.import +++ b/source/addons/controller_icons/assets/ps4/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-b2cc33e4d5182caa83ca9d0b07abef24.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/r2.png.import b/source/addons/controller_icons/assets/ps4/r2.png.import index 3b9a521..bcbf632 100644 --- a/source/addons/controller_icons/assets/ps4/r2.png.import +++ b/source/addons/controller_icons/assets/ps4/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-0f2740d264d9152a0d962dc06d3c7e12.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/r_stick.png.import b/source/addons/controller_icons/assets/ps4/r_stick.png.import index 58ccdbe..aee587d 100644 --- a/source/addons/controller_icons/assets/ps4/r_stick.png.import +++ b/source/addons/controller_icons/assets/ps4/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-335f2cba5a6bd621c084beb16d4cb930. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/r_stick_click.png.import b/source/addons/controller_icons/assets/ps4/r_stick_click.png.import index f8f89a5..c72e258 100644 --- a/source/addons/controller_icons/assets/ps4/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps4/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-d648f8e76cb1035ebd104fecb0d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/share.png.import b/source/addons/controller_icons/assets/ps4/share.png.import index f2b578a..6e8b616 100644 --- a/source/addons/controller_icons/assets/ps4/share.png.import +++ b/source/addons/controller_icons/assets/ps4/share.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/share.png-8f5440356f77d78ad3f3982e23b727b9.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/square.png.import b/source/addons/controller_icons/assets/ps4/square.png.import index b17c261..395d114 100644 --- a/source/addons/controller_icons/assets/ps4/square.png.import +++ b/source/addons/controller_icons/assets/ps4/square.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square.png-ee72c07940fd3321db35ceefeb290300.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/touch_pad.png.import b/source/addons/controller_icons/assets/ps4/touch_pad.png.import index 8e6aab1..83f858a 100644 --- a/source/addons/controller_icons/assets/ps4/touch_pad.png.import +++ b/source/addons/controller_icons/assets/ps4/touch_pad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/touch_pad.png-7bbb4179df1c702619f3e56dc6165c7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps4/triangle.png.import b/source/addons/controller_icons/assets/ps4/triangle.png.import index 89e1aa8..862e350 100644 --- a/source/addons/controller_icons/assets/ps4/triangle.png.import +++ b/source/addons/controller_icons/assets/ps4/triangle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/triangle.png-da43fcba8230ca87ef19d28e68d91ddc compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/circle.png.import b/source/addons/controller_icons/assets/ps5/circle.png.import index 166598c..154d90a 100644 --- a/source/addons/controller_icons/assets/ps5/circle.png.import +++ b/source/addons/controller_icons/assets/ps5/circle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/circle.png-899c1a608c9238361ba9359dc8352237.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/cross.png.import b/source/addons/controller_icons/assets/ps5/cross.png.import index ba9741b..9f789ab 100644 --- a/source/addons/controller_icons/assets/ps5/cross.png.import +++ b/source/addons/controller_icons/assets/ps5/cross.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/cross.png-b283effc447d98ff8075473f129fd229.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/diagram.png.import b/source/addons/controller_icons/assets/ps5/diagram.png.import index df6c187..27a2f22 100644 --- a/source/addons/controller_icons/assets/ps5/diagram.png.import +++ b/source/addons/controller_icons/assets/ps5/diagram.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram.png-21a10cf2a3943fa6401b25cac8533abe. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/diagram_simple.png.import b/source/addons/controller_icons/assets/ps5/diagram_simple.png.import index 4f5b11d..413e652 100644 --- a/source/addons/controller_icons/assets/ps5/diagram_simple.png.import +++ b/source/addons/controller_icons/assets/ps5/diagram_simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram_simple.png-1787b04a8e001e271d295cd5be compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/dpad.png.import b/source/addons/controller_icons/assets/ps5/dpad.png.import index bef3bf9..4df92b6 100644 --- a/source/addons/controller_icons/assets/ps5/dpad.png.import +++ b/source/addons/controller_icons/assets/ps5/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-00aec67b45feaa97b1794d743c936d5f.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/dpad_down.png.import b/source/addons/controller_icons/assets/ps5/dpad_down.png.import index c28e494..95f2d24 100644 --- a/source/addons/controller_icons/assets/ps5/dpad_down.png.import +++ b/source/addons/controller_icons/assets/ps5/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-3feaef9a314dd6ae52a31ef8569ba2b compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/dpad_left.png.import b/source/addons/controller_icons/assets/ps5/dpad_left.png.import index 498970c..988ea21 100644 --- a/source/addons/controller_icons/assets/ps5/dpad_left.png.import +++ b/source/addons/controller_icons/assets/ps5/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-64bf99650504668c7743f369e8d66e9 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/dpad_right.png.import b/source/addons/controller_icons/assets/ps5/dpad_right.png.import index 810a54a..b39ed06 100644 --- a/source/addons/controller_icons/assets/ps5/dpad_right.png.import +++ b/source/addons/controller_icons/assets/ps5/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-ac99de9134bc8dac8efce489d7997a compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/dpad_up.png.import b/source/addons/controller_icons/assets/ps5/dpad_up.png.import index 8f3f83c..b39cf34 100644 --- a/source/addons/controller_icons/assets/ps5/dpad_up.png.import +++ b/source/addons/controller_icons/assets/ps5/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-bea6ace373247dd17fb25f7f3e0f6b07. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/l1.png.import b/source/addons/controller_icons/assets/ps5/l1.png.import index 078cff1..1fe6e42 100644 --- a/source/addons/controller_icons/assets/ps5/l1.png.import +++ b/source/addons/controller_icons/assets/ps5/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-1dbab572c17a5f38e671c2db53d5037e.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/l2.png.import b/source/addons/controller_icons/assets/ps5/l2.png.import index 8192fea..0d91976 100644 --- a/source/addons/controller_icons/assets/ps5/l2.png.import +++ b/source/addons/controller_icons/assets/ps5/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-e8cc4c0283c6b3b54d63e008d0690aa6.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/l_stick.png.import b/source/addons/controller_icons/assets/ps5/l_stick.png.import index f60e5db..eba2cf3 100644 --- a/source/addons/controller_icons/assets/ps5/l_stick.png.import +++ b/source/addons/controller_icons/assets/ps5/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-fba628dc0742fc567477799a16835c0f. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/l_stick_click.png.import b/source/addons/controller_icons/assets/ps5/l_stick_click.png.import index bccdeba..7c7ea1f 100644 --- a/source/addons/controller_icons/assets/ps5/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps5/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-ca560b0370da6348af3fa4a6dd2 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/microphone.png.import b/source/addons/controller_icons/assets/ps5/microphone.png.import index 835f6b9..467b2be 100644 --- a/source/addons/controller_icons/assets/ps5/microphone.png.import +++ b/source/addons/controller_icons/assets/ps5/microphone.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/microphone.png-52a21a21c13dc3691829948c71961c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/options.png.import b/source/addons/controller_icons/assets/ps5/options.png.import index 5309317..9e5fd7a 100644 --- a/source/addons/controller_icons/assets/ps5/options.png.import +++ b/source/addons/controller_icons/assets/ps5/options.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/options.png-da4d32b86bae8f981620c1bbef1482ca. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/options_alt.png.import b/source/addons/controller_icons/assets/ps5/options_alt.png.import index 6259b0e..8cc672c 100644 --- a/source/addons/controller_icons/assets/ps5/options_alt.png.import +++ b/source/addons/controller_icons/assets/ps5/options_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/options_alt.png-c593663a8f76955c80b23e8f04216 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/r1.png.import b/source/addons/controller_icons/assets/ps5/r1.png.import index 73db2df..270848a 100644 --- a/source/addons/controller_icons/assets/ps5/r1.png.import +++ b/source/addons/controller_icons/assets/ps5/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-fa610c0190f3f0984090193cb99c26c3.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/r2.png.import b/source/addons/controller_icons/assets/ps5/r2.png.import index a9dc1e7..d729ca3 100644 --- a/source/addons/controller_icons/assets/ps5/r2.png.import +++ b/source/addons/controller_icons/assets/ps5/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-b8eac74642614e99f555e46a0181e4d0.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/r_stick.png.import b/source/addons/controller_icons/assets/ps5/r_stick.png.import index acc7820..0aba277 100644 --- a/source/addons/controller_icons/assets/ps5/r_stick.png.import +++ b/source/addons/controller_icons/assets/ps5/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-307bf90c96a761c29568ba8c2317686c. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/r_stick_click.png.import b/source/addons/controller_icons/assets/ps5/r_stick_click.png.import index 0d9efca..8be1aa1 100644 --- a/source/addons/controller_icons/assets/ps5/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/ps5/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-971e79762425c58c9da5a80737f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/share.png.import b/source/addons/controller_icons/assets/ps5/share.png.import index 39db26e..fdc4c83 100644 --- a/source/addons/controller_icons/assets/ps5/share.png.import +++ b/source/addons/controller_icons/assets/ps5/share.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/share.png-a33890317e3226e9b99cebbbfe855141.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/share_alt.png.import b/source/addons/controller_icons/assets/ps5/share_alt.png.import index 84a21c3..a11ffcf 100644 --- a/source/addons/controller_icons/assets/ps5/share_alt.png.import +++ b/source/addons/controller_icons/assets/ps5/share_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/share_alt.png-15dd25ceafbe1a81af5420db0b8177f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/square.png.import b/source/addons/controller_icons/assets/ps5/square.png.import index 59a0f77..5be29e5 100644 --- a/source/addons/controller_icons/assets/ps5/square.png.import +++ b/source/addons/controller_icons/assets/ps5/square.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square.png-3f9dd349449b9b92bc9a0b5deebb6dc4.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/touch_pad.png.import b/source/addons/controller_icons/assets/ps5/touch_pad.png.import index d8c4a61..30d3dae 100644 --- a/source/addons/controller_icons/assets/ps5/touch_pad.png.import +++ b/source/addons/controller_icons/assets/ps5/touch_pad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/touch_pad.png-1ef4d501193c49e180986793017fe36 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/ps5/triangle.png.import b/source/addons/controller_icons/assets/ps5/triangle.png.import index 0597267..6d02bf0 100644 --- a/source/addons/controller_icons/assets/ps5/triangle.png.import +++ b/source/addons/controller_icons/assets/ps5/triangle.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/triangle.png-c318942d066e6716a1f2a4c38ef81b3e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/a.png.import b/source/addons/controller_icons/assets/stadia/a.png.import index f406939..f0c2709 100644 --- a/source/addons/controller_icons/assets/stadia/a.png.import +++ b/source/addons/controller_icons/assets/stadia/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-f39af9db7ec42a6167445f21d52dd49e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/assistant.png.import b/source/addons/controller_icons/assets/stadia/assistant.png.import index b6cbd71..219471a 100644 --- a/source/addons/controller_icons/assets/stadia/assistant.png.import +++ b/source/addons/controller_icons/assets/stadia/assistant.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/assistant.png-2a4e3627b05fcf62f61e45e5dfad144 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/b.png.import b/source/addons/controller_icons/assets/stadia/b.png.import index 48efdfc..54e1af2 100644 --- a/source/addons/controller_icons/assets/stadia/b.png.import +++ b/source/addons/controller_icons/assets/stadia/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-a0cbab91a3c959de17829d12080654c4.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dots.png.import b/source/addons/controller_icons/assets/stadia/dots.png.import index 2582096..5d3cd2c 100644 --- a/source/addons/controller_icons/assets/stadia/dots.png.import +++ b/source/addons/controller_icons/assets/stadia/dots.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dots.png-b263d2845e2a883a9e404681ffe43345.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dpad.png.import b/source/addons/controller_icons/assets/stadia/dpad.png.import index 15bea33..512580c 100644 --- a/source/addons/controller_icons/assets/stadia/dpad.png.import +++ b/source/addons/controller_icons/assets/stadia/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-58485bb8e8b0aa997156eb8f8ff9fbb0.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dpad_down.png.import b/source/addons/controller_icons/assets/stadia/dpad_down.png.import index 9163293..3790ff9 100644 --- a/source/addons/controller_icons/assets/stadia/dpad_down.png.import +++ b/source/addons/controller_icons/assets/stadia/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-0e0070ab4a731afd3204175e1539f82 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dpad_left.png.import b/source/addons/controller_icons/assets/stadia/dpad_left.png.import index 6403e48..c5e477f 100644 --- a/source/addons/controller_icons/assets/stadia/dpad_left.png.import +++ b/source/addons/controller_icons/assets/stadia/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-6f793e4e26f3c710bdbc49c5329c5ef compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dpad_right.png.import b/source/addons/controller_icons/assets/stadia/dpad_right.png.import index 2d8fab3..5cdf65d 100644 --- a/source/addons/controller_icons/assets/stadia/dpad_right.png.import +++ b/source/addons/controller_icons/assets/stadia/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-a38451b01e6223d51bc488908900e4 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/dpad_up.png.import b/source/addons/controller_icons/assets/stadia/dpad_up.png.import index e80f92d..14ba7a4 100644 --- a/source/addons/controller_icons/assets/stadia/dpad_up.png.import +++ b/source/addons/controller_icons/assets/stadia/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-61f0cbde467cee63157b87d1351e499d. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/l1.png.import b/source/addons/controller_icons/assets/stadia/l1.png.import index 33e1816..506df86 100644 --- a/source/addons/controller_icons/assets/stadia/l1.png.import +++ b/source/addons/controller_icons/assets/stadia/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-40772d284cfbbb0f5e00a0d2807ad772.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/l2.png.import b/source/addons/controller_icons/assets/stadia/l2.png.import index aa11be5..883f9d3 100644 --- a/source/addons/controller_icons/assets/stadia/l2.png.import +++ b/source/addons/controller_icons/assets/stadia/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-65410a5b5bf71ded0383e7be48e96124.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/l_stick.png.import b/source/addons/controller_icons/assets/stadia/l_stick.png.import index 4e133d9..e8ce30d 100644 --- a/source/addons/controller_icons/assets/stadia/l_stick.png.import +++ b/source/addons/controller_icons/assets/stadia/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-c7374b4ac7c738d8b0635b5617f8b92d. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/menu.png.import b/source/addons/controller_icons/assets/stadia/menu.png.import index 917341c..e9da9b7 100644 --- a/source/addons/controller_icons/assets/stadia/menu.png.import +++ b/source/addons/controller_icons/assets/stadia/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-53cbf3eec3a419b76e5e61ce64721148.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/r1.png.import b/source/addons/controller_icons/assets/stadia/r1.png.import index ba665f5..a2dc723 100644 --- a/source/addons/controller_icons/assets/stadia/r1.png.import +++ b/source/addons/controller_icons/assets/stadia/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-61ddcf999e521e50e31454c7421b13c5.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/r2.png.import b/source/addons/controller_icons/assets/stadia/r2.png.import index 3598fd5..e37e4ed 100644 --- a/source/addons/controller_icons/assets/stadia/r2.png.import +++ b/source/addons/controller_icons/assets/stadia/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-264029ef902dd23d9d2aedc9076396d3.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/r_stick.png.import b/source/addons/controller_icons/assets/stadia/r_stick.png.import index cd5c061..6f8001a 100644 --- a/source/addons/controller_icons/assets/stadia/r_stick.png.import +++ b/source/addons/controller_icons/assets/stadia/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-6b5f1cef528e226a07bca3b5db7cee23. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/select.png.import b/source/addons/controller_icons/assets/stadia/select.png.import index b5db3c9..0cc3ba2 100644 --- a/source/addons/controller_icons/assets/stadia/select.png.import +++ b/source/addons/controller_icons/assets/stadia/select.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/select.png-5f6095f9bd8662055bec7c1bae674ec9.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/x.png.import b/source/addons/controller_icons/assets/stadia/x.png.import index ed17556..133da18 100644 --- a/source/addons/controller_icons/assets/stadia/x.png.import +++ b/source/addons/controller_icons/assets/stadia/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-f6ec30ea08344e55ef23af72fbc1fb31.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/stadia/y.png.import b/source/addons/controller_icons/assets/stadia/y.png.import index 146e2bc..e401213 100644 --- a/source/addons/controller_icons/assets/stadia/y.png.import +++ b/source/addons/controller_icons/assets/stadia/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-dd7e8e12e20316029c271244b0ca0229.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/a.png.import b/source/addons/controller_icons/assets/steam/a.png.import index 5a665b2..24d2894 100644 --- a/source/addons/controller_icons/assets/steam/a.png.import +++ b/source/addons/controller_icons/assets/steam/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-291a1f58c8f457602e861970d6116395.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/b.png.import b/source/addons/controller_icons/assets/steam/b.png.import index 209e115..d5d454b 100644 --- a/source/addons/controller_icons/assets/steam/b.png.import +++ b/source/addons/controller_icons/assets/steam/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-60ef9dcdf26e65601a22afc1fe68bbde.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/back.png.import b/source/addons/controller_icons/assets/steam/back.png.import index 259a2c9..4910e70 100644 --- a/source/addons/controller_icons/assets/steam/back.png.import +++ b/source/addons/controller_icons/assets/steam/back.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/back.png-aa3128aa827340fec92b81bdf0d61ea4.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/gyro.png.import b/source/addons/controller_icons/assets/steam/gyro.png.import index b4a28a2..f07a86f 100644 --- a/source/addons/controller_icons/assets/steam/gyro.png.import +++ b/source/addons/controller_icons/assets/steam/gyro.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/gyro.png-036a1df6f9221b801ce960258264e36b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/lb.png.import b/source/addons/controller_icons/assets/steam/lb.png.import index 217482b..3294c7d 100644 --- a/source/addons/controller_icons/assets/steam/lb.png.import +++ b/source/addons/controller_icons/assets/steam/lb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lb.png-ebcecead80d2eaa8e8dd39203374482c.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_grip.png.import b/source/addons/controller_icons/assets/steam/left_grip.png.import index 4498efd..f2f0bbc 100644 --- a/source/addons/controller_icons/assets/steam/left_grip.png.import +++ b/source/addons/controller_icons/assets/steam/left_grip.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_grip.png-7632e6b4dc516d33c14edaaca9a800f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track.png.import b/source/addons/controller_icons/assets/steam/left_track.png.import index c126a55..189ab46 100644 --- a/source/addons/controller_icons/assets/steam/left_track.png.import +++ b/source/addons/controller_icons/assets/steam/left_track.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track.png-17f05d6fcb42e2752708554a7e0bac compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track_center.png.import b/source/addons/controller_icons/assets/steam/left_track_center.png.import index 8c95191..4ab0d54 100644 --- a/source/addons/controller_icons/assets/steam/left_track_center.png.import +++ b/source/addons/controller_icons/assets/steam/left_track_center.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track_center.png-f881a55ee2c591d91924bfe compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track_down.png.import b/source/addons/controller_icons/assets/steam/left_track_down.png.import index e3f78d9..8ec1a1b 100644 --- a/source/addons/controller_icons/assets/steam/left_track_down.png.import +++ b/source/addons/controller_icons/assets/steam/left_track_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track_down.png-23a43b41ab965600405a2c0ec compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track_left.png.import b/source/addons/controller_icons/assets/steam/left_track_left.png.import index d08dd91..2be2992 100644 --- a/source/addons/controller_icons/assets/steam/left_track_left.png.import +++ b/source/addons/controller_icons/assets/steam/left_track_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track_left.png-8654431bd0ad63399af945958 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track_right.png.import b/source/addons/controller_icons/assets/steam/left_track_right.png.import index 7e62634..5ac49a0 100644 --- a/source/addons/controller_icons/assets/steam/left_track_right.png.import +++ b/source/addons/controller_icons/assets/steam/left_track_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track_right.png-56a1c44260f8d7e4060f6cf7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/left_track_up.png.import b/source/addons/controller_icons/assets/steam/left_track_up.png.import index 0bcf067..0889fb5 100644 --- a/source/addons/controller_icons/assets/steam/left_track_up.png.import +++ b/source/addons/controller_icons/assets/steam/left_track_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track_up.png-d036ca12f4dcdd984614588b9f0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/lt.png.import b/source/addons/controller_icons/assets/steam/lt.png.import index 6d90596..a1860c0 100644 --- a/source/addons/controller_icons/assets/steam/lt.png.import +++ b/source/addons/controller_icons/assets/steam/lt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lt.png-44277066c93d3aa2a3b16029f6b6db5f.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/rb.png.import b/source/addons/controller_icons/assets/steam/rb.png.import index b8fc6a9..cec865c 100644 --- a/source/addons/controller_icons/assets/steam/rb.png.import +++ b/source/addons/controller_icons/assets/steam/rb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rb.png-2fa5a7ab003444f3f1819759316dcd20.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_grip.png.import b/source/addons/controller_icons/assets/steam/right_grip.png.import index ccb2f16..8462965 100644 --- a/source/addons/controller_icons/assets/steam/right_grip.png.import +++ b/source/addons/controller_icons/assets/steam/right_grip.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_grip.png-0799ccf7f9bc8a783cac8c357f3875 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track.png.import b/source/addons/controller_icons/assets/steam/right_track.png.import index 2a8df9d..584885e 100644 --- a/source/addons/controller_icons/assets/steam/right_track.png.import +++ b/source/addons/controller_icons/assets/steam/right_track.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track.png-95cc6adb3c1b4f9db74ec053b4999 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track_center.png.import b/source/addons/controller_icons/assets/steam/right_track_center.png.import index 6b2b018..61e3292 100644 --- a/source/addons/controller_icons/assets/steam/right_track_center.png.import +++ b/source/addons/controller_icons/assets/steam/right_track_center.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track_center.png-58ac8f72d98a03da1da39e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track_down.png.import b/source/addons/controller_icons/assets/steam/right_track_down.png.import index d2c5ff4..6d3cd36 100644 --- a/source/addons/controller_icons/assets/steam/right_track_down.png.import +++ b/source/addons/controller_icons/assets/steam/right_track_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track_down.png-4130a302dfc93d303747d47d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track_left.png.import b/source/addons/controller_icons/assets/steam/right_track_left.png.import index 61f6663..90ae183 100644 --- a/source/addons/controller_icons/assets/steam/right_track_left.png.import +++ b/source/addons/controller_icons/assets/steam/right_track_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track_left.png-7ff9caa711a7d830d6c0e9dc compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track_right.png.import b/source/addons/controller_icons/assets/steam/right_track_right.png.import index 25c628d..23c68b5 100644 --- a/source/addons/controller_icons/assets/steam/right_track_right.png.import +++ b/source/addons/controller_icons/assets/steam/right_track_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track_right.png-6862b78d914de9a352e198d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/right_track_up.png.import b/source/addons/controller_icons/assets/steam/right_track_up.png.import index d0e24a4..b5eecb8 100644 --- a/source/addons/controller_icons/assets/steam/right_track_up.png.import +++ b/source/addons/controller_icons/assets/steam/right_track_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track_up.png-a63f64921def263a77365aade1 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/rt.png.import b/source/addons/controller_icons/assets/steam/rt.png.import index 8b8e209..383fc5e 100644 --- a/source/addons/controller_icons/assets/steam/rt.png.import +++ b/source/addons/controller_icons/assets/steam/rt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rt.png-8456a9d9c814b2bb104bbf016d2f7055.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/start.png.import b/source/addons/controller_icons/assets/steam/start.png.import index e1e1f61..43e37c1 100644 --- a/source/addons/controller_icons/assets/steam/start.png.import +++ b/source/addons/controller_icons/assets/steam/start.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/start.png-4e7d6471e6786617e56feb859488c243.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/stick.png.import b/source/addons/controller_icons/assets/steam/stick.png.import index f402c0e..f9a200d 100644 --- a/source/addons/controller_icons/assets/steam/stick.png.import +++ b/source/addons/controller_icons/assets/steam/stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/stick.png-17e9bd91c5d9ae40a3c941ea3acd764a.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/system.png.import b/source/addons/controller_icons/assets/steam/system.png.import index 358ba3b..68fcabe 100644 --- a/source/addons/controller_icons/assets/steam/system.png.import +++ b/source/addons/controller_icons/assets/steam/system.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/system.png-bec343c70122880763d1f63339dd840d.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/tilt_pitch.png.import b/source/addons/controller_icons/assets/steam/tilt_pitch.png.import index 3d17a3d..9387da0 100644 --- a/source/addons/controller_icons/assets/steam/tilt_pitch.png.import +++ b/source/addons/controller_icons/assets/steam/tilt_pitch.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/tilt_pitch.png-52a2dbe5ce0955cb0ff9dd622e1147 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/tilt_roll.png.import b/source/addons/controller_icons/assets/steam/tilt_roll.png.import index c035913..8a41b41 100644 --- a/source/addons/controller_icons/assets/steam/tilt_roll.png.import +++ b/source/addons/controller_icons/assets/steam/tilt_roll.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/tilt_roll.png-8c1f5b0ec6a270dd46dec3045007bf8 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/tilt_yaw.png.import b/source/addons/controller_icons/assets/steam/tilt_yaw.png.import index 6601c2f..41e9c6e 100644 --- a/source/addons/controller_icons/assets/steam/tilt_yaw.png.import +++ b/source/addons/controller_icons/assets/steam/tilt_yaw.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/tilt_yaw.png-49f6b72eb854329b5fd5a72dafa4ff48 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/x.png.import b/source/addons/controller_icons/assets/steam/x.png.import index 930acaa..e8d2c95 100644 --- a/source/addons/controller_icons/assets/steam/x.png.import +++ b/source/addons/controller_icons/assets/steam/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-65afc159d12dab8e4f940e8f4090bba5.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steam/y.png.import b/source/addons/controller_icons/assets/steam/y.png.import index c3b44e5..73d5223 100644 --- a/source/addons/controller_icons/assets/steam/y.png.import +++ b/source/addons/controller_icons/assets/steam/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-639b49c4b58a0c38b43d864b4dc01ea7.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/a.png.import b/source/addons/controller_icons/assets/steamdeck/a.png.import index 327770e..2153179 100644 --- a/source/addons/controller_icons/assets/steamdeck/a.png.import +++ b/source/addons/controller_icons/assets/steamdeck/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-2f73dad70aca5a9b5fac65559366eb25.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/b.png.import b/source/addons/controller_icons/assets/steamdeck/b.png.import index 7cdad43..03c1779 100644 --- a/source/addons/controller_icons/assets/steamdeck/b.png.import +++ b/source/addons/controller_icons/assets/steamdeck/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-3c47dd47fd7d251b208246d9fb5dea18.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dots.png.import b/source/addons/controller_icons/assets/steamdeck/dots.png.import index 5f28ee6..3ab08b0 100644 --- a/source/addons/controller_icons/assets/steamdeck/dots.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dots.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dots.png-5aab7f77e51edbb5da9af6d242a7a1a8.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dpad.png.import b/source/addons/controller_icons/assets/steamdeck/dpad.png.import index 6629727..8d34fb6 100644 --- a/source/addons/controller_icons/assets/steamdeck/dpad.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-d91578cac829c1bcc2a8d54711ef3af1.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dpad_down.png.import b/source/addons/controller_icons/assets/steamdeck/dpad_down.png.import index 82c1777..bb604d2 100644 --- a/source/addons/controller_icons/assets/steamdeck/dpad_down.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-5cf905f451a185208b146c90cbae918 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dpad_left.png.import b/source/addons/controller_icons/assets/steamdeck/dpad_left.png.import index 5d140f3..a033136 100644 --- a/source/addons/controller_icons/assets/steamdeck/dpad_left.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-32c007ed76ab3f913ca919c3845014b compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dpad_right.png.import b/source/addons/controller_icons/assets/steamdeck/dpad_right.png.import index 35d32f9..6399714 100644 --- a/source/addons/controller_icons/assets/steamdeck/dpad_right.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-828c1fa323dfa47ac18628cf2c8ec7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/dpad_up.png.import b/source/addons/controller_icons/assets/steamdeck/dpad_up.png.import index 75016c1..724730c 100644 --- a/source/addons/controller_icons/assets/steamdeck/dpad_up.png.import +++ b/source/addons/controller_icons/assets/steamdeck/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-fa8e0d391699c07f5447f418411e4aaf. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/gyro.png.import b/source/addons/controller_icons/assets/steamdeck/gyro.png.import index 72cbe43..b735aa0 100644 --- a/source/addons/controller_icons/assets/steamdeck/gyro.png.import +++ b/source/addons/controller_icons/assets/steamdeck/gyro.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/gyro.png-069596f609be7f7b726934d7d8c01f58.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l1.png.import b/source/addons/controller_icons/assets/steamdeck/l1.png.import index abf64ad..ea39c31 100644 --- a/source/addons/controller_icons/assets/steamdeck/l1.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l1.png-cd4c173e49cfddf9d9538a804894a5b9.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l2.png.import b/source/addons/controller_icons/assets/steamdeck/l2.png.import index 059c50e..419dfb1 100644 --- a/source/addons/controller_icons/assets/steamdeck/l2.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l2.png-c7dea6858612a3a7e6b18684a3fc641c.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l4.png.import b/source/addons/controller_icons/assets/steamdeck/l4.png.import index a33fdf9..20f9fc9 100644 --- a/source/addons/controller_icons/assets/steamdeck/l4.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l4.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l4.png-53e1f2dd49fd7211ca90847235d09280.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l5.png.import b/source/addons/controller_icons/assets/steamdeck/l5.png.import index 53954a2..f8827c7 100644 --- a/source/addons/controller_icons/assets/steamdeck/l5.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l5.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l5.png-c7872767816e4050da362fd348778e96.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l_stick.png.import b/source/addons/controller_icons/assets/steamdeck/l_stick.png.import index 26ad195..6bb0ec2 100644 --- a/source/addons/controller_icons/assets/steamdeck/l_stick.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-b82870d1d471bcee24379dc170fff1d5. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/l_stick_click.png.import b/source/addons/controller_icons/assets/steamdeck/l_stick_click.png.import index 3af3d3f..05393b6 100644 --- a/source/addons/controller_icons/assets/steamdeck/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/steamdeck/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-4b0e50bec61ff1c33620527a89d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/left_track.png.import b/source/addons/controller_icons/assets/steamdeck/left_track.png.import index 525f791..8db7979 100644 --- a/source/addons/controller_icons/assets/steamdeck/left_track.png.import +++ b/source/addons/controller_icons/assets/steamdeck/left_track.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left_track.png-a3f6b83f0eb656760c4e50b38378b0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/menu.png.import b/source/addons/controller_icons/assets/steamdeck/menu.png.import index b02b4af..a48c584 100644 --- a/source/addons/controller_icons/assets/steamdeck/menu.png.import +++ b/source/addons/controller_icons/assets/steamdeck/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-15b5ed82914c030a3d664fc292ecda62.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/minus.png.import b/source/addons/controller_icons/assets/steamdeck/minus.png.import index 1658e75..0a05036 100644 --- a/source/addons/controller_icons/assets/steamdeck/minus.png.import +++ b/source/addons/controller_icons/assets/steamdeck/minus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/minus.png-6b6a5c0a0c6b9d79b43a9ba17509b6c2.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/plus.png.import b/source/addons/controller_icons/assets/steamdeck/plus.png.import index 7e815b6..98b7478 100644 --- a/source/addons/controller_icons/assets/steamdeck/plus.png.import +++ b/source/addons/controller_icons/assets/steamdeck/plus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/plus.png-c4d8729eb667b48905d0e19119750025.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/power.png.import b/source/addons/controller_icons/assets/steamdeck/power.png.import index 1baec3b..86a3cf9 100644 --- a/source/addons/controller_icons/assets/steamdeck/power.png.import +++ b/source/addons/controller_icons/assets/steamdeck/power.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/power.png-0830cc8bf011276d1ca084df938e9bfe.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r1.png.import b/source/addons/controller_icons/assets/steamdeck/r1.png.import index 637e601..211eb8a 100644 --- a/source/addons/controller_icons/assets/steamdeck/r1.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r1.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r1.png-e7ea343bd2a09ffc81d7115c3dec0af9.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r2.png.import b/source/addons/controller_icons/assets/steamdeck/r2.png.import index cda9fff..981c5b9 100644 --- a/source/addons/controller_icons/assets/steamdeck/r2.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r2.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r2.png-9fb695385a2811dece0b0d347dbebc92.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r4.png.import b/source/addons/controller_icons/assets/steamdeck/r4.png.import index d6e68ce..456aec6 100644 --- a/source/addons/controller_icons/assets/steamdeck/r4.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r4.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r4.png-9218f4075b2a63414563818f0c8ce0a1.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r5.png.import b/source/addons/controller_icons/assets/steamdeck/r5.png.import index 55950b2..76a8645 100644 --- a/source/addons/controller_icons/assets/steamdeck/r5.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r5.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r5.png-3e555104eee0b287d143d58b74f3713b.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r_stick.png.import b/source/addons/controller_icons/assets/steamdeck/r_stick.png.import index 3657015..e032a67 100644 --- a/source/addons/controller_icons/assets/steamdeck/r_stick.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-1c05d894dc78be25f4a49ccf8bd0d050. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/r_stick_click.png.import b/source/addons/controller_icons/assets/steamdeck/r_stick_click.png.import index b49e988..4ef87f3 100644 --- a/source/addons/controller_icons/assets/steamdeck/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/steamdeck/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-65cb2bed7b9da43cbe790342cd7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/right_track.png.import b/source/addons/controller_icons/assets/steamdeck/right_track.png.import index 6b28705..215f8dd 100644 --- a/source/addons/controller_icons/assets/steamdeck/right_track.png.import +++ b/source/addons/controller_icons/assets/steamdeck/right_track.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right_track.png-b11cdb4f73a4064c5e82947c3a833 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/square.png.import b/source/addons/controller_icons/assets/steamdeck/square.png.import index 9a9be55..7991fa4 100644 --- a/source/addons/controller_icons/assets/steamdeck/square.png.import +++ b/source/addons/controller_icons/assets/steamdeck/square.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square.png-aa97e4ebdd5168be792d22b9d19b86fb.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/steam.png.import b/source/addons/controller_icons/assets/steamdeck/steam.png.import index 396a708..257c71c 100644 --- a/source/addons/controller_icons/assets/steamdeck/steam.png.import +++ b/source/addons/controller_icons/assets/steamdeck/steam.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/steam.png-cb3e0e8febfbcab936503086b0f14183.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/x.png.import b/source/addons/controller_icons/assets/steamdeck/x.png.import index 14a81d0..d48ed8d 100644 --- a/source/addons/controller_icons/assets/steamdeck/x.png.import +++ b/source/addons/controller_icons/assets/steamdeck/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-7c5b0135e3b23190b7a1d19198c8d796.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/steamdeck/y.png.import b/source/addons/controller_icons/assets/steamdeck/y.png.import index 383025e..531cc49 100644 --- a/source/addons/controller_icons/assets/steamdeck/y.png.import +++ b/source/addons/controller_icons/assets/steamdeck/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-ef1586ba97c51e445fce86a950a27af1.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/a.png.import b/source/addons/controller_icons/assets/switch/a.png.import index ac5bf36..e6f2178 100644 --- a/source/addons/controller_icons/assets/switch/a.png.import +++ b/source/addons/controller_icons/assets/switch/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-fc163e1211ed8de66a60ec99285d248f.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/b.png.import b/source/addons/controller_icons/assets/switch/b.png.import index e6b860d..a0a4754 100644 --- a/source/addons/controller_icons/assets/switch/b.png.import +++ b/source/addons/controller_icons/assets/switch/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-c6f0b440af26e7f51533807a83f12c3e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/controller_left.png.import b/source/addons/controller_icons/assets/switch/controller_left.png.import index 62fc628..f0c16ea 100644 --- a/source/addons/controller_icons/assets/switch/controller_left.png.import +++ b/source/addons/controller_icons/assets/switch/controller_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/controller_left.png-ce1b649371fd1088c46c4a7d0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/controller_right.png.import b/source/addons/controller_icons/assets/switch/controller_right.png.import index c078b05..613bdd5 100644 --- a/source/addons/controller_icons/assets/switch/controller_right.png.import +++ b/source/addons/controller_icons/assets/switch/controller_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/controller_right.png-1809d0ffa0e37e642089b8a0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/controllers.png.import b/source/addons/controller_icons/assets/switch/controllers.png.import index 814e32f..6193e31 100644 --- a/source/addons/controller_icons/assets/switch/controllers.png.import +++ b/source/addons/controller_icons/assets/switch/controllers.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/controllers.png-7712b49e533d621799a7a9a3bbf3a compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/controllers_separate.png.import b/source/addons/controller_icons/assets/switch/controllers_separate.png.import index 1a65d91..2948701 100644 --- a/source/addons/controller_icons/assets/switch/controllers_separate.png.import +++ b/source/addons/controller_icons/assets/switch/controllers_separate.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/controllers_separate.png-1060f3b60202e8596c5e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/down.png.import b/source/addons/controller_icons/assets/switch/down.png.import index 6092eac..b5fbe49 100644 --- a/source/addons/controller_icons/assets/switch/down.png.import +++ b/source/addons/controller_icons/assets/switch/down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/down.png-a90d78a51af3fbb8a21316a6086e4112.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/dpad.png.import b/source/addons/controller_icons/assets/switch/dpad.png.import index 64f6164..1ca63ac 100644 --- a/source/addons/controller_icons/assets/switch/dpad.png.import +++ b/source/addons/controller_icons/assets/switch/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-a9f4cd306092d2081b92f100afab13ce.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/dpad_down.png.import b/source/addons/controller_icons/assets/switch/dpad_down.png.import index 9d9f836..a8773b0 100644 --- a/source/addons/controller_icons/assets/switch/dpad_down.png.import +++ b/source/addons/controller_icons/assets/switch/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-d2e040caf2a8553667e08295ebb08db compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/dpad_left.png.import b/source/addons/controller_icons/assets/switch/dpad_left.png.import index beb1277..00453ab 100644 --- a/source/addons/controller_icons/assets/switch/dpad_left.png.import +++ b/source/addons/controller_icons/assets/switch/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-e63de4ccf41738e35d2777f505c2be2 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/dpad_right.png.import b/source/addons/controller_icons/assets/switch/dpad_right.png.import index bc64052..671e31b 100644 --- a/source/addons/controller_icons/assets/switch/dpad_right.png.import +++ b/source/addons/controller_icons/assets/switch/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-3007471fdc53a106f529d115b546b7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/dpad_up.png.import b/source/addons/controller_icons/assets/switch/dpad_up.png.import index f81b819..71db15e 100644 --- a/source/addons/controller_icons/assets/switch/dpad_up.png.import +++ b/source/addons/controller_icons/assets/switch/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-4c4285851ec1cd038443f47583df3666. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/home.png.import b/source/addons/controller_icons/assets/switch/home.png.import index aac45d3..bd04f9d 100644 --- a/source/addons/controller_icons/assets/switch/home.png.import +++ b/source/addons/controller_icons/assets/switch/home.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/home.png-5064b33e1525213704fd7e54a238d89e.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/l.png.import b/source/addons/controller_icons/assets/switch/l.png.import index 899ed63..5abec21 100644 --- a/source/addons/controller_icons/assets/switch/l.png.import +++ b/source/addons/controller_icons/assets/switch/l.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l.png-e3d1358307fb6c1e5f233a556e232e14.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/l_stick.png.import b/source/addons/controller_icons/assets/switch/l_stick.png.import index a7d2682..cfdaefa 100644 --- a/source/addons/controller_icons/assets/switch/l_stick.png.import +++ b/source/addons/controller_icons/assets/switch/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-ca22952e4f56ee820836a9a2a4efa9a5. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/left.png.import b/source/addons/controller_icons/assets/switch/left.png.import index 10d9b5e..6d84e7c 100644 --- a/source/addons/controller_icons/assets/switch/left.png.import +++ b/source/addons/controller_icons/assets/switch/left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/left.png-c1516db77a1bd37214295e4fa38ff2d8.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/minus.png.import b/source/addons/controller_icons/assets/switch/minus.png.import index 899d3c8..c7b0d56 100644 --- a/source/addons/controller_icons/assets/switch/minus.png.import +++ b/source/addons/controller_icons/assets/switch/minus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/minus.png-51777051e1934ff00687c799a7c1a259.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/plus.png.import b/source/addons/controller_icons/assets/switch/plus.png.import index 83474cd..0e45e2c 100644 --- a/source/addons/controller_icons/assets/switch/plus.png.import +++ b/source/addons/controller_icons/assets/switch/plus.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/plus.png-4390752258f8416f7d20ed3058b9a73d.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/r.png.import b/source/addons/controller_icons/assets/switch/r.png.import index 26a77be..d72048c 100644 --- a/source/addons/controller_icons/assets/switch/r.png.import +++ b/source/addons/controller_icons/assets/switch/r.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r.png-5ff5051242ce222b42f687a41d922ea1.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/r_stick.png.import b/source/addons/controller_icons/assets/switch/r_stick.png.import index b4c242e..800b4af 100644 --- a/source/addons/controller_icons/assets/switch/r_stick.png.import +++ b/source/addons/controller_icons/assets/switch/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-8336fb8720a1ed38bfe5dd6386d21f1b. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/right.png.import b/source/addons/controller_icons/assets/switch/right.png.import index 4cb0666..55d26ec 100644 --- a/source/addons/controller_icons/assets/switch/right.png.import +++ b/source/addons/controller_icons/assets/switch/right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/right.png-4a1a0df486de8574bd3643a98f0f445e.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/square.png.import b/source/addons/controller_icons/assets/switch/square.png.import index b156533..7007fd9 100644 --- a/source/addons/controller_icons/assets/switch/square.png.import +++ b/source/addons/controller_icons/assets/switch/square.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square.png-120b0a09bb5b62e1b7896639e6416c45.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/up.png.import b/source/addons/controller_icons/assets/switch/up.png.import index 445cd8e..7f2ad0a 100644 --- a/source/addons/controller_icons/assets/switch/up.png.import +++ b/source/addons/controller_icons/assets/switch/up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/up.png-935181649d7a0f7c750c95b1b3828c64.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/x.png.import b/source/addons/controller_icons/assets/switch/x.png.import index f787d20..85889b4 100644 --- a/source/addons/controller_icons/assets/switch/x.png.import +++ b/source/addons/controller_icons/assets/switch/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-c0b79e607f24c770e5e6082d203a8f2c.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/y.png.import b/source/addons/controller_icons/assets/switch/y.png.import index 0d53b2d..df2db6f 100644 --- a/source/addons/controller_icons/assets/switch/y.png.import +++ b/source/addons/controller_icons/assets/switch/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-93b1223c824009cc6b4dc6d04216c5d5.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/zl.png.import b/source/addons/controller_icons/assets/switch/zl.png.import index 88b508e..e20c89a 100644 --- a/source/addons/controller_icons/assets/switch/zl.png.import +++ b/source/addons/controller_icons/assets/switch/zl.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/zl.png-d3401c26a4f6e21389cc91a045e78bbc.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/switch/zr.png.import b/source/addons/controller_icons/assets/switch/zr.png.import index 57b46a5..925f612 100644 --- a/source/addons/controller_icons/assets/switch/zr.png.import +++ b/source/addons/controller_icons/assets/switch/zr.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/zr.png-773c45f72efa58594d2c296f7bcf98ad.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/a.png.import b/source/addons/controller_icons/assets/xbox360/a.png.import index adad213..124e5b2 100644 --- a/source/addons/controller_icons/assets/xbox360/a.png.import +++ b/source/addons/controller_icons/assets/xbox360/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-35cb6a74789d7796b5f5833c3c67ffde.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/b.png.import b/source/addons/controller_icons/assets/xbox360/b.png.import index b841c1e..c3ca877 100644 --- a/source/addons/controller_icons/assets/xbox360/b.png.import +++ b/source/addons/controller_icons/assets/xbox360/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-80e4c32ae4527fdcb995a9e786adbdbf.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/back.png.import b/source/addons/controller_icons/assets/xbox360/back.png.import index a006cd4..b518f36 100644 --- a/source/addons/controller_icons/assets/xbox360/back.png.import +++ b/source/addons/controller_icons/assets/xbox360/back.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/back.png-ce88a25195b2a2fbe762bda6ff222b5b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/back_alt.png.import b/source/addons/controller_icons/assets/xbox360/back_alt.png.import index a3d9d86..60382b4 100644 --- a/source/addons/controller_icons/assets/xbox360/back_alt.png.import +++ b/source/addons/controller_icons/assets/xbox360/back_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/back_alt.png-a7a979f712d8115fc34a8ae66d914049 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/dpad.png.import b/source/addons/controller_icons/assets/xbox360/dpad.png.import index 270fd21..216156c 100644 --- a/source/addons/controller_icons/assets/xbox360/dpad.png.import +++ b/source/addons/controller_icons/assets/xbox360/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-4b640d96766e8faba6142c2eff13caea.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/dpad_down.png.import b/source/addons/controller_icons/assets/xbox360/dpad_down.png.import index 71b07d5..80495b7 100644 --- a/source/addons/controller_icons/assets/xbox360/dpad_down.png.import +++ b/source/addons/controller_icons/assets/xbox360/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-fdbc136940849193face1912c9965e6 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/dpad_left.png.import b/source/addons/controller_icons/assets/xbox360/dpad_left.png.import index f266439..8fc9d52 100644 --- a/source/addons/controller_icons/assets/xbox360/dpad_left.png.import +++ b/source/addons/controller_icons/assets/xbox360/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-34112701ebe2a783358ffaf13cae755 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/dpad_right.png.import b/source/addons/controller_icons/assets/xbox360/dpad_right.png.import index cab6ae5..ad04a8a 100644 --- a/source/addons/controller_icons/assets/xbox360/dpad_right.png.import +++ b/source/addons/controller_icons/assets/xbox360/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-208422152fd0c75c3b1e040c016ba7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/dpad_up.png.import b/source/addons/controller_icons/assets/xbox360/dpad_up.png.import index 0c4a9bd..f07dfba 100644 --- a/source/addons/controller_icons/assets/xbox360/dpad_up.png.import +++ b/source/addons/controller_icons/assets/xbox360/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-f534a7e9efd4b904c87b93f717d8ec4f. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/l_stick.png.import b/source/addons/controller_icons/assets/xbox360/l_stick.png.import index 4e34d36..6e4c6f9 100644 --- a/source/addons/controller_icons/assets/xbox360/l_stick.png.import +++ b/source/addons/controller_icons/assets/xbox360/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-b5ed993555606d8da48a1c310a3cbd0d. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/l_stick_click.png.import b/source/addons/controller_icons/assets/xbox360/l_stick_click.png.import index b3edd5e..fdd210f 100644 --- a/source/addons/controller_icons/assets/xbox360/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/xbox360/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-2ae341247067b8165d18d20822d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/lb.png.import b/source/addons/controller_icons/assets/xbox360/lb.png.import index 1fe7bcf..f176076 100644 --- a/source/addons/controller_icons/assets/xbox360/lb.png.import +++ b/source/addons/controller_icons/assets/xbox360/lb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lb.png-976dbb55daa9f796254f583420e70b4e.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/lt.png.import b/source/addons/controller_icons/assets/xbox360/lt.png.import index a57e4ab..82bb897 100644 --- a/source/addons/controller_icons/assets/xbox360/lt.png.import +++ b/source/addons/controller_icons/assets/xbox360/lt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lt.png-5d538474526e2412135a268d6c53dd5b.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/r_stick.png.import b/source/addons/controller_icons/assets/xbox360/r_stick.png.import index d53ae8f..aae0f27 100644 --- a/source/addons/controller_icons/assets/xbox360/r_stick.png.import +++ b/source/addons/controller_icons/assets/xbox360/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-2a7b966ef19b6a873dd423ca70dafc2c. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/r_stick_click.png.import b/source/addons/controller_icons/assets/xbox360/r_stick_click.png.import index a557eaa..ed9c58c 100644 --- a/source/addons/controller_icons/assets/xbox360/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/xbox360/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-89d0df3f4f9a91691c03fb1afca compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/rb.png.import b/source/addons/controller_icons/assets/xbox360/rb.png.import index a7949ff..7538b5f 100644 --- a/source/addons/controller_icons/assets/xbox360/rb.png.import +++ b/source/addons/controller_icons/assets/xbox360/rb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rb.png-1161a3ee4faa1b6a0f9a32ae97dda6fd.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/rt.png.import b/source/addons/controller_icons/assets/xbox360/rt.png.import index ed854b0..50d5fae 100644 --- a/source/addons/controller_icons/assets/xbox360/rt.png.import +++ b/source/addons/controller_icons/assets/xbox360/rt.png.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/rt.png-75a73c0618bfa934f1c3030385092590.s3tc. 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 @@ -26,6 +28,10 @@ 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 diff --git a/source/addons/controller_icons/assets/xbox360/start.png.import b/source/addons/controller_icons/assets/xbox360/start.png.import index 23cfb1c..d5ef975 100644 --- a/source/addons/controller_icons/assets/xbox360/start.png.import +++ b/source/addons/controller_icons/assets/xbox360/start.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/start.png-4da2d3336d3215602b774e12f03ad8d1.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/start_alt.png.import b/source/addons/controller_icons/assets/xbox360/start_alt.png.import index 5febd05..2d90c36 100644 --- a/source/addons/controller_icons/assets/xbox360/start_alt.png.import +++ b/source/addons/controller_icons/assets/xbox360/start_alt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/start_alt.png-a28c5fa4e3559e75e7db8f34ccfbd03 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/x.png.import b/source/addons/controller_icons/assets/xbox360/x.png.import index 937a985..3f90fab 100644 --- a/source/addons/controller_icons/assets/xbox360/x.png.import +++ b/source/addons/controller_icons/assets/xbox360/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-9b708a5be93b17b1baa7773f17e3502f.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xbox360/y.png.import b/source/addons/controller_icons/assets/xbox360/y.png.import index 54bf8c1..71b8193 100644 --- a/source/addons/controller_icons/assets/xbox360/y.png.import +++ b/source/addons/controller_icons/assets/xbox360/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-570a5281cfcc83b747da0fa451e494b7.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/a.png.import b/source/addons/controller_icons/assets/xboxone/a.png.import index 7fafeb3..b190eb7 100644 --- a/source/addons/controller_icons/assets/xboxone/a.png.import +++ b/source/addons/controller_icons/assets/xboxone/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-df37d09ebc89d866cdbfffbbf8f73ee9.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/b.png.import b/source/addons/controller_icons/assets/xboxone/b.png.import index 2e3b44b..dce8c56 100644 --- a/source/addons/controller_icons/assets/xboxone/b.png.import +++ b/source/addons/controller_icons/assets/xboxone/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-ba65adfa94f146e55646f29fd6dae977.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/diagram.png.import b/source/addons/controller_icons/assets/xboxone/diagram.png.import index c2c5e6f..099e9bf 100644 --- a/source/addons/controller_icons/assets/xboxone/diagram.png.import +++ b/source/addons/controller_icons/assets/xboxone/diagram.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram.png-0f2706ce47fa6085377e14e95b171dea. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/diagram_simple.png.import b/source/addons/controller_icons/assets/xboxone/diagram_simple.png.import index e120005..7db281f 100644 --- a/source/addons/controller_icons/assets/xboxone/diagram_simple.png.import +++ b/source/addons/controller_icons/assets/xboxone/diagram_simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram_simple.png-6f075f06332bedee75e8a5dc79 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/dpad.png.import b/source/addons/controller_icons/assets/xboxone/dpad.png.import index 19549cb..c9eebbf 100644 --- a/source/addons/controller_icons/assets/xboxone/dpad.png.import +++ b/source/addons/controller_icons/assets/xboxone/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-19ecbd13049552e45dedb0cb27cf0f1b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/dpad_down.png.import b/source/addons/controller_icons/assets/xboxone/dpad_down.png.import index 1e9f10f..242ab38 100644 --- a/source/addons/controller_icons/assets/xboxone/dpad_down.png.import +++ b/source/addons/controller_icons/assets/xboxone/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-0c9ca40e693b569f2fccd07829ce2ce compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/dpad_left.png.import b/source/addons/controller_icons/assets/xboxone/dpad_left.png.import index f15bb3c..1da1b71 100644 --- a/source/addons/controller_icons/assets/xboxone/dpad_left.png.import +++ b/source/addons/controller_icons/assets/xboxone/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-92254da17371396d0d47d28719f0e60 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/dpad_right.png.import b/source/addons/controller_icons/assets/xboxone/dpad_right.png.import index ba23af8..42ff3ad 100644 --- a/source/addons/controller_icons/assets/xboxone/dpad_right.png.import +++ b/source/addons/controller_icons/assets/xboxone/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-df952148b3d372909267f78c1b09e0 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/dpad_up.png.import b/source/addons/controller_icons/assets/xboxone/dpad_up.png.import index 25ec7d9..e123a38 100644 --- a/source/addons/controller_icons/assets/xboxone/dpad_up.png.import +++ b/source/addons/controller_icons/assets/xboxone/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-d8fa0f50e9f7bf8b9172cecc962850ac. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/l_stick.png.import b/source/addons/controller_icons/assets/xboxone/l_stick.png.import index 684f525..7415bf8 100644 --- a/source/addons/controller_icons/assets/xboxone/l_stick.png.import +++ b/source/addons/controller_icons/assets/xboxone/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-0d3026b5b0f374950eb21b41723d35cc. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/l_stick_click.png.import b/source/addons/controller_icons/assets/xboxone/l_stick_click.png.import index 2dac9db..1ddf9e1 100644 --- a/source/addons/controller_icons/assets/xboxone/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/xboxone/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-f6ed1c56bfd385576764a1e11f9 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/lb.png.import b/source/addons/controller_icons/assets/xboxone/lb.png.import index d239fd0..c8943a8 100644 --- a/source/addons/controller_icons/assets/xboxone/lb.png.import +++ b/source/addons/controller_icons/assets/xboxone/lb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lb.png-bd9829412dab8895ecddec9847e04e30.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/lt.png.import b/source/addons/controller_icons/assets/xboxone/lt.png.import index 88f0223..0f778ec 100644 --- a/source/addons/controller_icons/assets/xboxone/lt.png.import +++ b/source/addons/controller_icons/assets/xboxone/lt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lt.png-e5cbcc6dfd86517f8b6df37ab212f728.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/menu.png.import b/source/addons/controller_icons/assets/xboxone/menu.png.import index f461052..f55f1eb 100644 --- a/source/addons/controller_icons/assets/xboxone/menu.png.import +++ b/source/addons/controller_icons/assets/xboxone/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-90302e9e2a81667c60beb62716dd216f.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/r_stick.png.import b/source/addons/controller_icons/assets/xboxone/r_stick.png.import index 895da77..a396b8d 100644 --- a/source/addons/controller_icons/assets/xboxone/r_stick.png.import +++ b/source/addons/controller_icons/assets/xboxone/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-3aeee5aa9939c501687f510e0be1f354. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/r_stick_click.png.import b/source/addons/controller_icons/assets/xboxone/r_stick_click.png.import index 4cbec07..00c31af 100644 --- a/source/addons/controller_icons/assets/xboxone/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/xboxone/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-0bcdf518623b525d9f31b8a5a49 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/rb.png.import b/source/addons/controller_icons/assets/xboxone/rb.png.import index a55fb0e..258b708 100644 --- a/source/addons/controller_icons/assets/xboxone/rb.png.import +++ b/source/addons/controller_icons/assets/xboxone/rb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rb.png-c02637559fb689b9cd61df07ff2fefdd.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/rt.png.import b/source/addons/controller_icons/assets/xboxone/rt.png.import index 5adee99..88663f5 100644 --- a/source/addons/controller_icons/assets/xboxone/rt.png.import +++ b/source/addons/controller_icons/assets/xboxone/rt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rt.png-6a132dc7aae10f49a3d0c4c557cad22e.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/view.png.import b/source/addons/controller_icons/assets/xboxone/view.png.import index a6d3dd3..8114bbf 100644 --- a/source/addons/controller_icons/assets/xboxone/view.png.import +++ b/source/addons/controller_icons/assets/xboxone/view.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/view.png-ab4efd6aa8e0bf2549b9e03f65032d18.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/x.png.import b/source/addons/controller_icons/assets/xboxone/x.png.import index b95a49d..7ce881c 100644 --- a/source/addons/controller_icons/assets/xboxone/x.png.import +++ b/source/addons/controller_icons/assets/xboxone/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-3a51ef6e3dd538a024aafb793c6f0ecc.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxone/y.png.import b/source/addons/controller_icons/assets/xboxone/y.png.import index 4249142..5464371 100644 --- a/source/addons/controller_icons/assets/xboxone/y.png.import +++ b/source/addons/controller_icons/assets/xboxone/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-d67d0b4f521ce9df38869ef9f4c11bdf.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/a.png.import b/source/addons/controller_icons/assets/xboxseries/a.png.import index 9d25930..843ce2b 100644 --- a/source/addons/controller_icons/assets/xboxseries/a.png.import +++ b/source/addons/controller_icons/assets/xboxseries/a.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/a.png-bc565aef96969cf9c64e8d7ede25217e.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/b.png.import b/source/addons/controller_icons/assets/xboxseries/b.png.import index 4d321e2..e4615dc 100644 --- a/source/addons/controller_icons/assets/xboxseries/b.png.import +++ b/source/addons/controller_icons/assets/xboxseries/b.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/b.png-0a4b27ee9783e34ddc4cc390b98123f4.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/diagram.png.import b/source/addons/controller_icons/assets/xboxseries/diagram.png.import index c60f478..0d6927a 100644 --- a/source/addons/controller_icons/assets/xboxseries/diagram.png.import +++ b/source/addons/controller_icons/assets/xboxseries/diagram.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram.png-cda8327502f46405c0cc1aef02bdfafa. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/diagram_simple.png.import b/source/addons/controller_icons/assets/xboxseries/diagram_simple.png.import index 27798e9..052197c 100644 --- a/source/addons/controller_icons/assets/xboxseries/diagram_simple.png.import +++ b/source/addons/controller_icons/assets/xboxseries/diagram_simple.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/diagram_simple.png-5942ec7e4d666fdc7c53542bb4 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/dpad.png.import b/source/addons/controller_icons/assets/xboxseries/dpad.png.import index fa3599d..dfb95f7 100644 --- a/source/addons/controller_icons/assets/xboxseries/dpad.png.import +++ b/source/addons/controller_icons/assets/xboxseries/dpad.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad.png-fe09e7551d7ac8f419ce4e7ea4555393.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/dpad_down.png.import b/source/addons/controller_icons/assets/xboxseries/dpad_down.png.import index cef1b96..5a557ed 100644 --- a/source/addons/controller_icons/assets/xboxseries/dpad_down.png.import +++ b/source/addons/controller_icons/assets/xboxseries/dpad_down.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_down.png-73c90acd2c18f3d773119570fce2af5 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/dpad_left.png.import b/source/addons/controller_icons/assets/xboxseries/dpad_left.png.import index 2dc4195..ca993f3 100644 --- a/source/addons/controller_icons/assets/xboxseries/dpad_left.png.import +++ b/source/addons/controller_icons/assets/xboxseries/dpad_left.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_left.png-af11db941f9b47bf339826c87d74dcd compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/dpad_right.png.import b/source/addons/controller_icons/assets/xboxseries/dpad_right.png.import index 84133a3..ff41bea 100644 --- a/source/addons/controller_icons/assets/xboxseries/dpad_right.png.import +++ b/source/addons/controller_icons/assets/xboxseries/dpad_right.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_right.png-52c3a89482849bc7aaf7e05cf82667 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/dpad_up.png.import b/source/addons/controller_icons/assets/xboxseries/dpad_up.png.import index f259a29..0e0ba68 100644 --- a/source/addons/controller_icons/assets/xboxseries/dpad_up.png.import +++ b/source/addons/controller_icons/assets/xboxseries/dpad_up.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/dpad_up.png-d7e305c753c393073bb2bd7d5238de99. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/l_stick.png.import b/source/addons/controller_icons/assets/xboxseries/l_stick.png.import index 5ca81fe..25afc96 100644 --- a/source/addons/controller_icons/assets/xboxseries/l_stick.png.import +++ b/source/addons/controller_icons/assets/xboxseries/l_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick.png-a6fed6ac47ed59f94e2af2105409fe51. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/l_stick_click.png.import b/source/addons/controller_icons/assets/xboxseries/l_stick_click.png.import index 277083e..c17c733 100644 --- a/source/addons/controller_icons/assets/xboxseries/l_stick_click.png.import +++ b/source/addons/controller_icons/assets/xboxseries/l_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/l_stick_click.png-30ca75232db7697e2b3808c77ba compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/lb.png.import b/source/addons/controller_icons/assets/xboxseries/lb.png.import index e129f35..8896965 100644 --- a/source/addons/controller_icons/assets/xboxseries/lb.png.import +++ b/source/addons/controller_icons/assets/xboxseries/lb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lb.png-b6bcbd6efbe8fa69292c8649a6623d1f.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/lt.png.import b/source/addons/controller_icons/assets/xboxseries/lt.png.import index f168747..b841eb2 100644 --- a/source/addons/controller_icons/assets/xboxseries/lt.png.import +++ b/source/addons/controller_icons/assets/xboxseries/lt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/lt.png-3050b62cca663463c11e3bdc7f3a4aa7.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/menu.png.import b/source/addons/controller_icons/assets/xboxseries/menu.png.import index ea8e143..5d5f45e 100644 --- a/source/addons/controller_icons/assets/xboxseries/menu.png.import +++ b/source/addons/controller_icons/assets/xboxseries/menu.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.png-79f99c8816ac6c83883ba4cad7e5b68c.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/r_stick.png.import b/source/addons/controller_icons/assets/xboxseries/r_stick.png.import index 60df805..20b199b 100644 --- a/source/addons/controller_icons/assets/xboxseries/r_stick.png.import +++ b/source/addons/controller_icons/assets/xboxseries/r_stick.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick.png-e61fa6910f07053c126f86598fcaaa20. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/r_stick_click.png.import b/source/addons/controller_icons/assets/xboxseries/r_stick_click.png.import index 4476fac..42b013b 100644 --- a/source/addons/controller_icons/assets/xboxseries/r_stick_click.png.import +++ b/source/addons/controller_icons/assets/xboxseries/r_stick_click.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/r_stick_click.png-702c338f12817cfb325db553641 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/rb.png.import b/source/addons/controller_icons/assets/xboxseries/rb.png.import index 0cdd94e..e356908 100644 --- a/source/addons/controller_icons/assets/xboxseries/rb.png.import +++ b/source/addons/controller_icons/assets/xboxseries/rb.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rb.png-a4855ae927f833312b505a249eb91a96.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/rt.png.import b/source/addons/controller_icons/assets/xboxseries/rt.png.import index 53fda48..4e784b1 100644 --- a/source/addons/controller_icons/assets/xboxseries/rt.png.import +++ b/source/addons/controller_icons/assets/xboxseries/rt.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rt.png-25031a1e1e4e0504ac44029211345b06.ctex" compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/share.png.import b/source/addons/controller_icons/assets/xboxseries/share.png.import index 7f2175a..d8f4ea9 100644 --- a/source/addons/controller_icons/assets/xboxseries/share.png.import +++ b/source/addons/controller_icons/assets/xboxseries/share.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/share.png-e1f729c99714825f909dba3cb0e0e669.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/view.png.import b/source/addons/controller_icons/assets/xboxseries/view.png.import index c289612..536394f 100644 --- a/source/addons/controller_icons/assets/xboxseries/view.png.import +++ b/source/addons/controller_icons/assets/xboxseries/view.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/view.png-fcdde74b941c2199eb232715d50c63e7.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/x.png.import b/source/addons/controller_icons/assets/xboxseries/x.png.import index 822c681..38546c8 100644 --- a/source/addons/controller_icons/assets/xboxseries/x.png.import +++ b/source/addons/controller_icons/assets/xboxseries/x.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/x.png-2a06a0fa9f7b5bda854780cb000422eb.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/assets/xboxseries/y.png.import b/source/addons/controller_icons/assets/xboxseries/y.png.import index 09a0454..64f7d68 100644 --- a/source/addons/controller_icons/assets/xboxseries/y.png.import +++ b/source/addons/controller_icons/assets/xboxseries/y.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/y.png-533355212ca9b20e674b9dbd240aa9ad.ctex"] compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/controller_icons/objects/controller_texture_icon.svg.import b/source/addons/controller_icons/objects/controller_texture_icon.svg.import index d49936b..4e29948 100644 --- a/source/addons/controller_icons/objects/controller_texture_icon.svg.import +++ b/source/addons/controller_icons/objects/controller_texture_icon.svg.import @@ -19,6 +19,8 @@ dest_files=["res://.godot/imported/controller_texture_icon.svg-c7feb059f1c41a49e compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -26,6 +28,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/debug_draw_3d/README.md b/source/addons/debug_draw_3d/README.md index 3f26a8f..3cd3961 100644 --- a/source/addons/debug_draw_3d/README.md +++ b/source/addons/debug_draw_3d/README.md @@ -16,7 +16,7 @@ Your support adds motivation to develop my public projects. Boosty -USDT-TRC20 +USDT-TRC20 USDT-TRC20 TEw934PrsffHsAn5M63SoHYRuZo984EF6v @@ -38,6 +38,7 @@ Your support adds motivation to develop my public projects. * Points * Position 3D (3 crossing axes) * Sphere +* 3D Text 2D: @@ -46,31 +47,25 @@ Your support adds motivation to develop my public projects. Overlay: * Text (with grouping and coloring) -* FPS Graph -* Custom Graphs Precompiled for: * Windows -* Linux (built on Ubuntu 20.04) -* macOS (10.14+) +* Linux (built on Ubuntu 22.04) +* macOS (10.15+) * Android (5.0+) * iOS -* Web (Firefox not supported) +* Web (Firefox is supported by Godot 4.3+) This addon supports working with several World3D and different Viewports. There is also a no depth test mode and other settings that can be changed for each instance. -This library supports double-precision builds, for more information, [see the documentation](https://dd3d.dmitriysalnikov.ru/docs/1.4.5/md_docs_2DoublePrecision.html). +This library supports double-precision builds, for more information, [see the documentation](https://dd3d.dmitriysalnikov.ru/docs/?page=md_docs_2DoublePrecision.html). ## [Interactive Web Demo](https://dd3d.dmitriysalnikov.ru/demo/) [![screenshot_web](/images/screenshot_web.png)](https://dd3d.dmitriysalnikov.ru/demo/) -> [!WARNING] -> -> * Firefox most likely can't run this demo - ## Download To download, use the [Godot Asset Library](https://godotengine.org/asset-library/asset/1766) or use one of the stable versions from the [GitHub Releases](https://github.com/DmitriySalnikov/godot_debug_draw_3d/releases) page. @@ -96,7 +91,7 @@ func _process(delta: float) -> void: var line_begin = Vector3(-1, sin(_time * 4), 0) var line_end = Vector3(1, cos(_time * 4), 0) - DebugDraw3D.draw_box(box_pos, Vector3(1, 2, 1), Color(0, 1, 0)) + DebugDraw3D.draw_box(box_pos, Quaternion.IDENTITY, Vector3(1, 2, 1), Color(0, 1, 0)) DebugDraw3D.draw_line(line_begin, line_end, Color(1, 1, 0)) DebugDraw2D.set_text("Time", _time) DebugDraw2D.set_text("Frames drawn", Engine.get_frames_drawn()) @@ -149,7 +144,7 @@ Also, a list of all functions is available in the documentation inside the edito The text in the keys and values of a text group cannot contain multi-line strings. -The entire text overlay can only be placed in one corner, unlike `DataGraphs`. +The entire text overlay can only be placed in one corner. [Frustum of Camera3D does not take into account the window size from ProjectSettings](https://github.com/godotengine/godot/issues/70362). diff --git a/source/addons/debug_draw_3d/debug_draw_3d.gdextension b/source/addons/debug_draw_3d/debug_draw_3d.gdextension index 9017632..cead527 100644 --- a/source/addons/debug_draw_3d/debug_draw_3d.gdextension +++ b/source/addons/debug_draw_3d/debug_draw_3d.gdextension @@ -1,7 +1,7 @@ [configuration] entry_symbol = "debug_draw_3d_library_init" -compatibility_minimum = "4.1.4" +compatibility_minimum = "4.2.2" reloadable = false [dependencies] diff --git a/source/addons/debug_draw_3d/debug_draw_3d.gdextension.uid b/source/addons/debug_draw_3d/debug_draw_3d.gdextension.uid index 2e94782..15da0d3 100644 --- a/source/addons/debug_draw_3d/debug_draw_3d.gdextension.uid +++ b/source/addons/debug_draw_3d/debug_draw_3d.gdextension.uid @@ -1 +1 @@ -uid://c0q15xk1bg0rd +uid://svqaxfp5kyrl diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm32.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm32.so index d33ad3d..736dbf6 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm32.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm32.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm64.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm64.so index 5d36ab5..988a651 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm64.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.arm64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_32.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_32.so index a8a165f..1649efd 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_32.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_32.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_64.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_64.so index e17de52..67f74fe 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_64.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_debug.x86_64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm32.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm32.so index 1422498..63cce77 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm32.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm32.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm64.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm64.so index fe76320..5f40036 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm64.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.arm64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_32.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_32.so index f4870b9..6668ae3 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_32.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_32.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_64.so b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_64.so index f71ef9d..9ff227f 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_64.so and b/source/addons/debug_draw_3d/libs/libdd3d.android.template_release.x86_64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_debug.universal.dylib b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_debug.universal.dylib index a009e34..0d23bf4 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_debug.universal.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_debug.universal.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.dylib b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.dylib index 1011e20..7784065 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.enabled.dylib b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.enabled.dylib index 6ed3700..b634723 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.enabled.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.ios.template_release.universal.enabled.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.linux.editor.x86_64.so b/source/addons/debug_draw_3d/libs/libdd3d.linux.editor.x86_64.so index f09ccad..a58e48c 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.linux.editor.x86_64.so and b/source/addons/debug_draw_3d/libs/libdd3d.linux.editor.x86_64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.enabled.so b/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.enabled.so index c044efa..fdd0816 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.enabled.so and b/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.enabled.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.so b/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.so index 4016c35..708b16c 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.so and b/source/addons/debug_draw_3d/libs/libdd3d.linux.template_release.x86_64.so differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/Resources/Info.plist b/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/Resources/Info.plist index f478678..933a7f8 100644 --- a/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/Resources/Info.plist +++ b/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/Resources/Info.plist @@ -17,9 +17,9 @@ NSHumanReadableCopyright Copyright (c) Dmitriy Salnikov. CFBundleVersion - 1.4.5 + 1.5.1 CFBundleShortVersionString - 1.4.5 + 1.5.1 CFBundlePackageType FMWK CSResourcesFileMapped @@ -28,6 +28,10 @@ macosx LSMinimumSystemVersion 10.14 + CFBundleSupportedPlatforms + + MacOSX + \ No newline at end of file diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/libdd3d.macos.editor.universal.dylib b/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/libdd3d.macos.editor.universal.dylib index 8068462..e15b931 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/libdd3d.macos.editor.universal.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.macos.editor.universal.framework/libdd3d.macos.editor.universal.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/Resources/Info.plist b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/Resources/Info.plist index 6728018..33bf631 100644 --- a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/Resources/Info.plist +++ b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/Resources/Info.plist @@ -17,9 +17,9 @@ NSHumanReadableCopyright Copyright (c) Dmitriy Salnikov. CFBundleVersion - 1.4.5 + 1.5.1 CFBundleShortVersionString - 1.4.5 + 1.5.1 CFBundlePackageType FMWK CSResourcesFileMapped @@ -28,6 +28,10 @@ macosx LSMinimumSystemVersion 10.14 + CFBundleSupportedPlatforms + + MacOSX + \ No newline at end of file diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/libdd3d.macos.template_release.universal.enabled.dylib b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/libdd3d.macos.template_release.universal.enabled.dylib index 83d75e5..0955618 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/libdd3d.macos.template_release.universal.enabled.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.enabled.framework/libdd3d.macos.template_release.universal.enabled.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/Resources/Info.plist b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/Resources/Info.plist index bd05cdd..0b36e0b 100644 --- a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/Resources/Info.plist +++ b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/Resources/Info.plist @@ -17,9 +17,9 @@ NSHumanReadableCopyright Copyright (c) Dmitriy Salnikov. CFBundleVersion - 1.4.5 + 1.5.1 CFBundleShortVersionString - 1.4.5 + 1.5.1 CFBundlePackageType FMWK CSResourcesFileMapped @@ -28,6 +28,10 @@ macosx LSMinimumSystemVersion 10.14 + CFBundleSupportedPlatforms + + MacOSX + \ No newline at end of file diff --git a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/libdd3d.macos.template_release.universal.dylib b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/libdd3d.macos.template_release.universal.dylib index 92aada2..83d014e 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/libdd3d.macos.template_release.universal.dylib and b/source/addons/debug_draw_3d/libs/libdd3d.macos.template_release.universal.framework/libdd3d.macos.template_release.universal.dylib differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.threads.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.threads.wasm index 593d8d6..33fe474 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.threads.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.threads.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.wasm index 2f7314e..a27ea99 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_debug.wasm32.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.enabled.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.enabled.wasm index 1f4011e..a8445e3 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.enabled.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.enabled.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.enabled.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.enabled.wasm index 66068a2..c90fb24 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.enabled.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.enabled.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.wasm index 575ca79..4ee4c42 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.threads.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.wasm b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.wasm index dfbb1ce..b5e7a64 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.wasm and b/source/addons/debug_draw_3d/libs/libdd3d.web.template_release.wasm32.wasm differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.windows.editor.x86_64.dll b/source/addons/debug_draw_3d/libs/libdd3d.windows.editor.x86_64.dll index 497a0a7..e733469 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.windows.editor.x86_64.dll and b/source/addons/debug_draw_3d/libs/libdd3d.windows.editor.x86_64.dll differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.dll b/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.dll index 63b3bb1..37889ff 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.dll and b/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.dll differ diff --git a/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.enabled.dll b/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.enabled.dll index c547b5a..8a04f8b 100644 Binary files a/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.enabled.dll and b/source/addons/debug_draw_3d/libs/libdd3d.windows.template_release.x86_64.enabled.dll differ diff --git a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF1a12d9b.TMP b/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF1a12d9b.TMP deleted file mode 100644 index 497a0a7..0000000 Binary files a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF1a12d9b.TMP and /dev/null differ diff --git a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF27eab0.TMP b/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF27eab0.TMP deleted file mode 100644 index 497a0a7..0000000 Binary files a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF27eab0.TMP and /dev/null differ diff --git a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF554e51.TMP b/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF554e51.TMP deleted file mode 100644 index 497a0a7..0000000 Binary files a/source/addons/debug_draw_3d/libs/~libdd3d.windows.editor.x86_64.dll~RF554e51.TMP and /dev/null differ diff --git a/source/addons/godot_3d_cursor/3d_cursor.tscn b/source/addons/godot_3d_cursor/3d_cursor.tscn index 04f720f..fa55abb 100644 --- a/source/addons/godot_3d_cursor/3d_cursor.tscn +++ b/source/addons/godot_3d_cursor/3d_cursor.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://dfpatff4d5okj"] -[ext_resource type="Texture2D" uid="uid://brmxsn2cjdqw4" path="res://addons/godot_3d_cursor/3d_cursor.png" id="2_mnq4l"] +[ext_resource type="Texture2D" uid="uid://cdqg3y11tiold" path="res://addons/godot_3d_cursor/3d_cursor.png" id="2_mnq4l"] [ext_resource type="Script" uid="uid://dt04kfvdc21nb" path="res://addons/godot_3d_cursor/3d_cursor.gd" id="2_stis0"] [node name="3DCursor" type="Marker3D"] diff --git a/source/addons/godot_3d_cursor/pie_menu.tscn b/source/addons/godot_3d_cursor/pie_menu.tscn index 27d3ae5..ff24e98 100644 --- a/source/addons/godot_3d_cursor/pie_menu.tscn +++ b/source/addons/godot_3d_cursor/pie_menu.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=5 format=3 uid="uid://igrlue2n5478"] [ext_resource type="Script" uid="uid://dul31m8bwxlxm" path="res://addons/godot_3d_cursor/pie_menu.gd" id="1_a7cko"] -[ext_resource type="Texture2D" uid="uid://bhift5k0v2tga" path="res://addons/godot_3d_cursor/selection_ring.png" id="2_k5qvu"] -[ext_resource type="Texture2D" uid="uid://bngw0w7d1nrgv" path="res://addons/godot_3d_cursor/selection_indicator.png" id="3_euipm"] +[ext_resource type="Texture2D" uid="uid://dd7qbrp08e8qe" path="res://addons/godot_3d_cursor/selection_ring.png" id="2_k5qvu"] +[ext_resource type="Texture2D" uid="uid://r1rpga7n1quy" path="res://addons/godot_3d_cursor/selection_indicator.png" id="3_euipm"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s5fna"] bg_color = Color(0.145098, 0.145098, 0.145098, 0.258824) @@ -51,18 +51,18 @@ text = "3D Cursor to Selected Object(s)" [node name="Remove3DCursorFromScene" type="Button" parent="."] layout_mode = 0 offset_left = 30.9017 -offset_top = 79.6054 -offset_right = 273.902 -offset_bottom = 110.606 +offset_top = 79.605354 +offset_right = 273.90198 +offset_bottom = 110.60594 mouse_default_cursor_shape = 2 text = "Remove 3D Cursor from Scene" [node name="SelectedObjectTo3DCursor" type="Button" parent="."] layout_mode = 0 offset_left = -309.902 -offset_top = 43.2785 +offset_top = 43.278526 offset_right = -80.9017 -offset_bottom = 74.2785 +offset_bottom = 74.27853 mouse_default_cursor_shape = 2 text = "Selected Object to 3D Cursor" @@ -74,9 +74,9 @@ anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 offset_left = -237.902 -offset_top = -74.2785 +offset_top = -74.27853 offset_right = -80.9017 -offset_bottom = -43.2785 +offset_bottom = -43.278522 grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 0 @@ -86,9 +86,9 @@ text = "3D Cursor to Origin" [node name="Toggle3DCursor" type="Button" parent="."] layout_mode = 0 offset_left = 30.9017 -offset_top = -110.606 -offset_right = 176.902 -offset_bottom = -79.6055 +offset_top = -110.6059 +offset_right = 176.90198 +offset_bottom = -79.6054 mouse_default_cursor_shape = 2 text = "Disable 3D Cursor" diff --git a/source/addons/lightmap_probe_grid/Depth.gdshader b/source/addons/lightmap_probe_grid/Depth.gdshader new file mode 100644 index 0000000..f0362ff --- /dev/null +++ b/source/addons/lightmap_probe_grid/Depth.gdshader @@ -0,0 +1,9 @@ +shader_type spatial; +render_mode unshaded; + +uniform sampler2D depth_texture : source_color, hint_depth_texture, filter_nearest, repeat_disable; + +void fragment() { + float depth = texture(depth_texture, SCREEN_UV).x; + ALBEDO = vec3(depth); +} diff --git a/source/addons/lightmap_probe_grid/Depth.gdshader.uid b/source/addons/lightmap_probe_grid/Depth.gdshader.uid new file mode 100644 index 0000000..0684f6d --- /dev/null +++ b/source/addons/lightmap_probe_grid/Depth.gdshader.uid @@ -0,0 +1 @@ +uid://b7q5qg574ukso diff --git a/source/addons/lightmap_probe_grid/LICENSE.txt b/source/addons/lightmap_probe_grid/LICENSE.txt new file mode 100644 index 0000000..5db5b6c --- /dev/null +++ b/source/addons/lightmap_probe_grid/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 SpockBauru + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/source/addons/lightmap_probe_grid/README.md b/source/addons/lightmap_probe_grid/README.md new file mode 100644 index 0000000..f6d652e --- /dev/null +++ b/source/addons/lightmap_probe_grid/README.md @@ -0,0 +1,79 @@ +# LightmapProbeGrid +Create a grid of Lightmap Probes and cut unwanted ones! + +LightmapProbeGrid is an extension for [Godot Engine](https://godotengine.org/) that helps on the demanding task of placing Lightmap Probes where LightmapGI fails to do it. + +**Disclaimer:** If you are getting the error `scene/3d/lightmap_gi.cpp:529 - Inconsistency found in triangulation...` is because [Godot Issue 82642](https://github.com/godotengine/godot/issues/82642). If you have the knowledge, would you kindly contrubute to fix the issue please? \o/ + +### Video Tutorial +https://www.youtube.com/watch?v=HzZSQ0BPpuk + +# Index + * [What's new](#whats-new) + * [How to install](#how-to-install) + * [Making a grid of Light Probes](#making-a-grid-of-light-probes) + * [Cut Obstructed Probes](#cut-obstructed-probes) + * [Cut probes inside objects](#cut-probes-inside-objects) + * [Cut probes far from objects](#cut-probes-far-from-objects) + * [Limitations](#limitations) + * [Compatibility](#compatibility) + * [Ending notes](#ending-notes) + * [Changelog](#changelog) + +# What's New +Thanks to [dwarfses](https://twitter.com/dwarfses/status/1731691097263362513), LightmapProbeGrid v2.0 now uses GPU raycast instead of the regular Physics raycast. It may be slower but means that colliders are not needed anymore! If the camera can see, it should work! + +NOTE: The Cull Mask from v1.0 is not compatible with v2.0. + +# How to install +1) Download the file `LightmapProbeGrid_v2.0.zip` from the [Download Page](https://github.com/SpockBauru/LightmapProbeGrid/releases) +2) Extract the `addons` folder on the root of your project (`res://`). Other files/folders are optional. +3) Go to Godot's "Project" menu -> "Project Settings" -> "Plugins" tab -> enable "LightmapProbeGrid". +4) Restart Godot. + +You can also open the `DemoScene` to see how it works. + +# Making a grid of Light Probes +- Place the LightmapProbeGrid Node in the scene. It's located at "Add Node" -> Node3D -> LightmapProbeGrid. +- Use the handles (red dots) to resize the grid. +- In the LightmapProbeGrid Inspector you can set the number of Light Probes on each axis with the minimum of 2. Press "Generate Probes" to apply the settings and place your grid of Light Probes in the Scene. + +Now you can cut unwanted probes with the methods bellow. + +## Cut Obstructed Probes +This method is designed to cut probes that are placed beyond visual limits such as the ground or the walls of a cave. + +On LightmapProbeGrid Inscpector click on "Cut Obstructed Probes". It will test each Light Probe from the center of the grid to the probe and see if the line intercepts an object. The probe will be cut if there's something blocking the line. + +## Cut probes inside objects +This method is designed to delete probes that are inside objects. It will test all 6 axis of each Light Probe: Up, Down, Left, Right, Forward and Backward by the distance indicated in `Max Object Size`. + +If at least 4 of these lines hit something the probe will be cut. It considers only 4 hits to cut probes on long objects like pillars and trees. + +## Cut probes far from objects +This method is designed to delete probes that are far away from any object. Normally these probes don't contain any relevant light information but use with care in places that have a high usage of spotlights. + +When you click the button the area around the Light Probe is tested on various directions by the distance indicated in `Max Distance`. The probe will be cut if none of the rays intercept an object. + +## Using masks +You can select which 3D render layers LightmapProbeGrid will interact on the section Visual Cull Mask. Only selected layers will be used on detection for the Cut methods above. + +Use masks to filter out objects to not interact with the rays, like characters or moving objects. + +# Limitations +LightmapProbeGrid is not designed to work with a huge number of Light Probes at once covering a vast area. It is designed to be placed multiple times in a scene with relatively small grids (less than 1,000 probes). + +# Compatibility +LightmapProbeGrid is compatible with Godot 4.2 and there are plans to continue supporting onward. + +# Ending notes +This tool was entirely made on my free time. If you want to support me, please make an awesome asset and publish for free to the community! + +# Changelog +v2.0: +- Major changes: now uses GPU Raycast instead of Physics raycast +- This means that colliders are not needed anymore! +- The Cull Mask from v1.0 is not compatible with v2.0 + +v1.0: +- First release. diff --git a/source/addons/lightmap_probe_grid/UI.gd b/source/addons/lightmap_probe_grid/UI.gd new file mode 100644 index 0000000..b19f5c1 --- /dev/null +++ b/source/addons/lightmap_probe_grid/UI.gd @@ -0,0 +1,89 @@ +@tool +extends Node + +@export var probes_x: SpinBox +@export var probes_y: SpinBox +@export var probes_z: SpinBox +@export var planned_probes: RichTextLabel + +@export var generate_button: Button + +@export var far_distance: SpinBox +@export var object_size: SpinBox + +var root_node: Node +var probe_grid: LightmapProbeGrid + + +func _ready() -> void: + root_node = EditorInterface.get_edited_scene_root() + if EditorInterface.get_selection().get_selected_nodes().size() == 1: + probe_grid = EditorInterface.get_selection().get_selected_nodes()[0] as LightmapProbeGrid + else: + return + + # connecting signals + if not probe_grid.probes_changed.is_connected(_get_probes): + probe_grid.probes_changed.connect(_get_probes) + if not probe_grid.probes_changed.is_connected(planned_probes_text): + probe_grid.probes_changed.connect(planned_probes_text) + + # initializing values + far_distance.value = probe_grid.far_distance + object_size.value = probe_grid.object_size + _get_probes() + planned_probes_text() + planned_probes.tooltip_text = "Maximum is %s" % probe_grid.max_probes + + +func planned_probes_text() -> void: + var total: int = probe_grid.planned_probes + var current: int = probe_grid.current_probes + var max_probes: int = probe_grid.max_probes + + if total <= max_probes: + planned_probes.text = "Probes Planned/Current: " + str(total) + " / " + str(current) + generate_button.disabled = false + else: + planned_probes.text = "[color=red]Planned Probes: %s [/color] \ + \nWarning: Max number of probes is %s" % [total, max_probes] + generate_button.disabled = true + + +func _set_probes_number(_value: float) -> void: + var number_of_probes: Vector3i = Vector3i.ONE + number_of_probes.x = int(probes_x.value) + number_of_probes.y = int(probes_y.value) + number_of_probes.z = int(probes_z.value) + probe_grid.probes_number = number_of_probes + + +func _on_generate_probes_pressed() -> void: + probe_grid.generate_probes() + + +func _get_probes() -> void: + var number: Vector3i = probe_grid.probes_number + probes_x.value = number.x + probes_y.value = number.y + probes_z.value = number.z + + +func _on_cut_by_mask_pressed() -> void: + probe_grid.cut_obstructed() + + +func _cut_far_probes(): + probe_grid.cut_far() + + +func _set_far_distance(value): + probe_grid.far_distance = value + + +func _cut_inside(): + probe_grid.cut_inside() + + +func _set_object_size(value): + probe_grid.object_size = value diff --git a/source/addons/lightmap_probe_grid/UI.gd.uid b/source/addons/lightmap_probe_grid/UI.gd.uid new file mode 100644 index 0000000..75605ba --- /dev/null +++ b/source/addons/lightmap_probe_grid/UI.gd.uid @@ -0,0 +1 @@ +uid://du1ehgs4udhri diff --git a/source/addons/lightmap_probe_grid/controls_scene.tscn b/source/addons/lightmap_probe_grid/controls_scene.tscn new file mode 100644 index 0000000..6e096e0 --- /dev/null +++ b/source/addons/lightmap_probe_grid/controls_scene.tscn @@ -0,0 +1,198 @@ +[gd_scene load_steps=3 format=3 uid="uid://xp1820rv0uy"] + +[ext_resource type="Script" path="res://addons/lightmap_probe_grid/UI.gd" id="1_4a60v"] +[ext_resource type="StyleBox" uid="uid://4nfudftbnexo" path="res://addons/lightmap_probe_grid/style_box_flat.tres" id="2_rdj4j"] + +[node name="RootContainer" type="VBoxContainer" node_paths=PackedStringArray("probes_x", "probes_y", "probes_z", "planned_probes", "generate_button", "far_distance", "object_size")] +offset_right = 257.0 +offset_bottom = 346.0 +script = ExtResource("1_4a60v") +probes_x = NodePath("ProbesContainer/ProbesX") +probes_y = NodePath("ProbesContainer/ProbesY") +probes_z = NodePath("ProbesContainer/ProbesZ") +planned_probes = NodePath("PlannedLabel") +generate_button = NodePath("GenerateProbes") +far_distance = NodePath("CutFarProbesContainer/Distance") +object_size = NodePath("CutInsideContainer/Size") + +[node name="ProbesLabel" type="Label" parent="."] +clip_contents = true +layout_mode = 2 +tooltip_text = "Number of probes on each axis" +mouse_filter = 0 +text = "Number of Probes" +vertical_alignment = 1 + +[node name="ProbesContainer" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="ProbesX" type="SpinBox" parent="ProbesContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Minimum is 2" +min_value = 2.0 +max_value = 250.0 +value = 2.0 +alignment = 2 +prefix = "x:" +select_all_on_focus = true + +[node name="ProbesY" type="SpinBox" parent="ProbesContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Minimum is 2" +min_value = 2.0 +max_value = 250.0 +value = 2.0 +alignment = 2 +prefix = "y:" +select_all_on_focus = true + +[node name="ProbesZ" type="SpinBox" parent="ProbesContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +tooltip_text = "Minimum is 2" +min_value = 2.0 +max_value = 250.0 +value = 2.0 +alignment = 2 +prefix = "z:" +select_all_on_focus = true + +[node name="PlannedLabel" type="RichTextLabel" parent="."] +layout_mode = 2 +tooltip_text = "Maximum is xxxx" +bbcode_enabled = true +text = "Planned Probes: xxxx" +fit_content = true + +[node name="GenerateProbes" type="Button" parent="."] +layout_mode = 2 +theme_override_styles/normal = ExtResource("2_rdj4j") +text = "Generate Probes" + +[node name="HSeparator" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="ObscuredLabel" type="Label" parent="."] +layout_mode = 2 +tooltip_text = "Test from center to each probe, +and cut the probe if the path is obstructed by an object. + +Use Collision Mask to filter objects." +mouse_filter = 0 +text = "Probes obscured from center" +vertical_alignment = 1 + +[node name="Cut by Mask" type="Button" parent="."] +layout_mode = 2 +tooltip_text = "Test from center to each probe, +and cut the probe if the path is obstructed by an object. + +Use Collision Mask to filter objects." +theme_override_styles/normal = ExtResource("2_rdj4j") +text = "Cut Obstructed Probes" + +[node name="HSeparator2" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +tooltip_text = "For each probe, test if there is any object within an Max distance. +If there isn't any object the probe is cut. + +Use Collision Mask to filter objects." +mouse_filter = 0 +text = "Probes far from any object" + +[node name="CutFarProbesContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +alignment = 1 + +[node name="DistanceLabel" type="Label" parent="CutFarProbesContainer"] +custom_minimum_size = Vector2(67, 0) +layout_mode = 2 +tooltip_text = "The distance from the probe that objects will be detected" +mouse_filter = 0 +text = "Max distance" + +[node name="Distance" type="SpinBox" parent="CutFarProbesContainer"] +layout_mode = 2 +tooltip_text = "The distance from the probe that objects will be detected" +step = 0.0 +value = 1.0 +allow_greater = true +suffix = "m" +custom_arrow_step = 1.0 +select_all_on_focus = true + +[node name="CutFarProbes" type="Button" parent="."] +custom_minimum_size = Vector2(148, 0) +layout_mode = 2 +tooltip_text = "For each probe, test if there is any object within an Max distance. +If there isn't any object the probe is cut. + +Use Collision Mask to filter objects." +theme_override_styles/normal = ExtResource("2_rdj4j") +text = "Cut Far Probes" + +[node name="HSeparator3" type="HSeparator" parent="."] +layout_mode = 2 + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +tooltip_text = "For each probe, test if the same object is intercepted by the yellow lines. + +If the same object is detected 4 times or more, +the probe is considered to be inside and will be cut. + +Only 4 lines are tested instead of 6 because is common for +objects to not have 2 faces, like pillars. + +Use Collision Mask to filter objects." +mouse_filter = 0 +text = "Probes inside objects" + +[node name="CutInsideContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +alignment = 1 + +[node name="SizeLabel" type="Label" parent="CutInsideContainer"] +layout_mode = 2 +tooltip_text = "Distance tested from the probes (size of yellow lines)" +mouse_filter = 0 +text = "Max object size" + +[node name="Size" type="SpinBox" parent="CutInsideContainer"] +layout_mode = 2 +tooltip_text = "Distance tested from the probes (size of yellow lines)" +step = 0.0 +value = 1.0 +allow_greater = true +suffix = "m" +custom_arrow_step = 1.0 + +[node name="CutInsideObjects" type="Button" parent="."] +custom_minimum_size = Vector2(148, 0) +layout_mode = 2 +tooltip_text = "For each probe, test if the same object is intercepted by the yellow lines. + +If the same object is detected 4 times or more, +the probe is considered to be inside and will be cut. + +Only 4 lines are tested instead of 6 because is common for +objects to not have 2 faces, like pillars. + +Use Collision Mask to filter objects." +theme_override_styles/normal = ExtResource("2_rdj4j") +text = "Cut Inside Objects" + +[connection signal="value_changed" from="ProbesContainer/ProbesX" to="." method="_set_probes_number"] +[connection signal="value_changed" from="ProbesContainer/ProbesY" to="." method="_set_probes_number"] +[connection signal="value_changed" from="ProbesContainer/ProbesZ" to="." method="_set_probes_number"] +[connection signal="pressed" from="GenerateProbes" to="." method="_on_generate_probes_pressed"] +[connection signal="pressed" from="Cut by Mask" to="." method="_on_cut_by_mask_pressed"] +[connection signal="value_changed" from="CutFarProbesContainer/Distance" to="." method="_set_far_distance"] +[connection signal="pressed" from="CutFarProbes" to="." method="_cut_far_probes"] +[connection signal="value_changed" from="CutInsideContainer/Size" to="." method="_set_object_size"] +[connection signal="pressed" from="CutInsideObjects" to="." method="_cut_inside"] diff --git a/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd b/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd new file mode 100644 index 0000000..e39b41c --- /dev/null +++ b/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd @@ -0,0 +1,16 @@ +extends EditorInspectorPlugin + +var ui_control: PackedScene = preload("controls_scene.tscn") +var ui: Control = null + +func _can_handle(object: Object) -> bool: + if object is LightmapProbeGrid: + return true + else: + return false + +func _parse_category(_object: Object, category: String) -> void: + if category.begins_with("lightmap_probe_grid"): + if not is_instance_valid(ui): + ui = ui_control.instantiate() + add_property_editor("LighmapProbeGrid", ui) diff --git a/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd.uid b/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd.uid new file mode 100644 index 0000000..4312c65 --- /dev/null +++ b/source/addons/lightmap_probe_grid/editor_inspector_plugin.gd.uid @@ -0,0 +1 @@ +uid://cuetsee5p8drw diff --git a/source/addons/lightmap_probe_grid/gizmo.gd b/source/addons/lightmap_probe_grid/gizmo.gd new file mode 100644 index 0000000..e25fb0e --- /dev/null +++ b/source/addons/lightmap_probe_grid/gizmo.gd @@ -0,0 +1,159 @@ +# my_custom_gizmo_plugin.gd +extends EditorNode3DGizmoPlugin + +const handles_axis: PackedVector3Array = [ + Vector3(1, 0, 0), + Vector3(0, 1, 0), + Vector3(0, 0, 1), + Vector3(-1, 0, 0), + Vector3(0, -1, 0), + Vector3(0, 0, -1) +] + +const box_lines: PackedVector3Array = [ + # plane -x + Vector3(-1, -1, -1), Vector3(-1, -1, 1), + Vector3(-1, -1, 1), Vector3(-1, 1, 1), + Vector3(-1, 1, 1), Vector3(-1, 1, -1), + Vector3(-1, 1, -1), Vector3(-1, -1, -1), + # plane +x + Vector3(1, -1, -1), Vector3(1, -1, 1), + Vector3(1, -1, 1), Vector3(1, 1, 1), + Vector3(1, 1, 1), Vector3(1, 1, -1), + Vector3(1, 1, -1), Vector3(1, -1, -1), + # connecting plane x with -x + Vector3(1, -1, -1), Vector3(-1, -1, -1), + Vector3(1, -1, 1), Vector3(-1, -1, 1), + Vector3(1, 1, -1), Vector3(-1, 1, -1), + Vector3(1, 1, 1), Vector3(-1, 1, 1), +] + +var icon: Texture2D = preload("lightmap_probe_grid_icon.svg") + +var timer: Timer = Timer.new() +var is_awayting: bool = false + + +func _get_gizmo_name() -> String: + return "LightmapProbeGrid" + + +func _init() -> void: + create_material("main_material", Color(0,0,0)) + create_material("tool_material", Color(1, 0.9, 0)) + create_handle_material("handles_material") + create_icon_material("icon_material", icon) + + +func _has_gizmo(node: Node3D) -> bool: + if node is LightmapProbeGrid: + if not node.size_changed.is_connected(node.update_gizmos): + node.size_changed.connect(node.update_gizmos) + if not node.probes_changed.is_connected(node.update_gizmos): + node.probes_changed.connect(node.update_gizmos) + return true + else: + return false + + +func _redraw(gizmo: EditorNode3DGizmo) -> void: + gizmo.clear() + var box: LightmapProbeGrid = gizmo.get_node_3d() as LightmapProbeGrid + var size: Vector3 = box.size + + var icon_gizmo: Material = get_material("icon_material") + gizmo.add_unscaled_billboard(icon_gizmo, 0.05) + + # Setting box lines + var lines: PackedVector3Array = [] + for pos: Vector3 in box_lines: + var scaled: Vector3 = 0.5 * pos * size + lines.append(scaled) + gizmo.add_lines(lines, get_material("main_material", gizmo)) + + # Setting handles + var handles: PackedVector3Array = [] + for pos: Vector3 in handles_axis: + var scaled: Vector3 = 0.5 * pos * size + handles.append(scaled) + gizmo.add_handles(handles, get_material("handles_material", gizmo), []) + + # Setting extra tool lines from main script + var tool_lines: PackedVector3Array = box.gizmo_lines + if not tool_lines.is_empty(): + gizmo.add_lines(tool_lines, get_material("tool_material", gizmo)) + clear_tool_await(box) + + +# Wait 3 seconds before clear the main script gizmos. If called twice the timer is reset +func clear_tool_await(box: LightmapProbeGrid): + if not is_instance_valid(timer): + timer = Timer.new() + # Add timer to the scene + if not is_instance_valid(timer.get_parent()): + var root_node = EditorInterface.get_edited_scene_root() + root_node.add_child(timer) + timer.name = "lightmap_probe_grid_timer" + + timer.wait_time = 3.0 + timer.start() + + if is_awayting: + return + + is_awayting = true + await timer.timeout + is_awayting = false + + timer.stop + box.gizmo_lines.clear() + box.update_gizmos() + + +# Based on github.com/godotengine/godot/blob/master/editor/plugins/gizmos/gizmo_3d_helper.cpp +# please, make it available to GDScript plugin developers... +func _set_handle(gizmo: EditorNode3DGizmo, index: int, _sec: bool, camera: Camera3D, point: Vector2) -> void: + var box: LightmapProbeGrid = gizmo.get_node_3d() as LightmapProbeGrid + var axis: Vector3 = handles_axis[index] + var axis_index: int = axis.abs().max_axis_index() + + var inverse: Transform3D = box.global_transform.affine_inverse() + var ray_from: Vector3 = camera.project_ray_origin(point) + var ray_to: Vector3 = camera.project_ray_normal(point) + var camera_position: Vector3 = inverse * ray_from + var camera_to_mouse: Vector3 = inverse * (ray_from + ray_to * 5000) + + var segment1: Vector3 = axis * 5000 + var segment2: Vector3 = axis * -5000 + + var intersection: PackedVector3Array = Geometry3D.get_closest_points_between_segments(segment2, + segment1, camera_position, camera_to_mouse) + + # Distance between the center and the handle (without scale) + var distance: float = intersection[0][axis_index] + # multiply axis signal to cancel distance signal + distance *= axis[axis_index] + + var old_distance: float = 0.5 * box.size[axis_index] + + # Defining new size and positions + var new_size: float = distance + old_distance + + # Translate halfway through the size difference + var translate: Vector3 = 0.5 * (distance - old_distance) * axis + + # Updating size and position + box.size[axis_index] = new_size + box.translate(translate) + + # Update Gizmo + box.update_gizmos() + + +func _get_handle_name(_gizmo: EditorNode3DGizmo, _handle_id: int, _sec: bool) -> String: + return "Probe Grid Size" + + +func _get_handle_value(gizmo: EditorNode3DGizmo, _id: int, _sec: bool) -> Vector3: + var box: LightmapProbeGrid = gizmo.get_node_3d() as LightmapProbeGrid + return box.size diff --git a/source/addons/lightmap_probe_grid/gizmo.gd.uid b/source/addons/lightmap_probe_grid/gizmo.gd.uid new file mode 100644 index 0000000..2f726f9 --- /dev/null +++ b/source/addons/lightmap_probe_grid/gizmo.gd.uid @@ -0,0 +1 @@ +uid://ib7jmqcu0kex diff --git a/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd b/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd new file mode 100644 index 0000000..39e26ee --- /dev/null +++ b/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd @@ -0,0 +1,468 @@ +@tool +extends Node3D +class_name LightmapProbeGrid + +signal size_changed +signal probes_changed + +const max_probes: int = 1000 + +## Only selected layers will be seen by LightmapProbeGrid. Works like Camera3D Cull Mask.[br][br] +## NOTE: NOT compatible with LightmapProbeGrid v1.0 +@export_flags_3d_render var visual_cull_mask: int = 1048575 + +@export var size: Vector3 = Vector3.ONE: + set(value): + # size cannot be zero or negative + size = value.clamp(Vector3(1E-6, 1E-6, 1E-6), Vector3.INF) + size_changed.emit() + get: + return size + +@onready var depth_shader: Shader = preload("Depth.gdshader") + +var probes_number: Vector3i = Vector3i(2, 2, 2): + set(value): + probes_number = value + set_probes_number() + get: + return probes_number + +var planned_probes: int = 8 +var current_probes: int = 8 + +var old_size: Vector3 = Vector3.ONE +var old_scale: Vector3 = Vector3.ONE +var warned: bool = false + +var far_distance: float = 1 +var object_size: float = 1 + +var gizmo_lines: PackedVector3Array = [] + +var godot_version: int = Engine.get_version_info().hex + + +func _get_property_list() -> Array[Dictionary]: + var properties: Array[Dictionary] = [] + + properties.append({ + "name": "probes_number", + "type": TYPE_VECTOR3I, + "usage": PROPERTY_USAGE_STORAGE + }) + + properties.append({ + "name": "far_distance", + "type": TYPE_FLOAT, + "usage": PROPERTY_USAGE_STORAGE + }) + + properties.append({ + "name": "object_size", + "type": TYPE_FLOAT, + "usage": PROPERTY_USAGE_STORAGE + }) + + return properties + + +func _enter_tree() -> void: + if not Engine.is_editor_hint(): + return + + if get_child_count() < 1: + generate_probes() + + +func _ready() -> void: + if not Engine.is_editor_hint(): + return + + size_changed.connect(scale_probes) + set_notify_local_transform(true) + old_size = size + old_scale = scale + current_probes = get_child_count() + + +# Keep local scale fixed. Reflect in "size" if the user try to scale +func _notification(what: int) -> void: + if (what == NOTIFICATION_LOCAL_TRANSFORM_CHANGED) and not scale.is_equal_approx(Vector3.ONE): + if not warned: + printerr("LightmapProbeGrid: Resetting Scale, please use the handles (red dots) or ", + "the property \"Size\" in LightmapProbeGridsection") + warned = true + + if(scale.x <= 0): + scale = Vector3.ONE + return + + # TODO take a look on this workaround + var scale_diff: Vector3 = abs(scale - Vector3.ONE) + var size_sign: Vector3 = sign(scale - old_scale) + size += size_sign * scale_diff / 10.0 + + old_scale = scale + scale = Vector3.ONE + + +func _get_configuration_warnings() -> PackedStringArray: + var warnings: PackedStringArray = [] + + if planned_probes > max_probes: + var text: String = "LightmapProbeGrid: The maximum number of Probes must be " + \ + str(max_probes) + ". Please consider add more instances of LightmapProbeGrid" + warnings.append(text) + printerr(text) + + # Returning an empty array means "no warning". + return warnings + + +func set_probes_number() -> void: + planned_probes = probes_number.x * probes_number.y * probes_number.z + update_configuration_warnings() + probes_changed.emit() + + +func scale_probes() -> void: + var new_size: Vector3 = size / old_size + + # Scaling all probes + for probe: Node3D in get_children(): + probe.position *= new_size + + old_size = size + + +func generate_probes() -> void: + # check number of probes + if planned_probes > max_probes: + return + + # Clear all previews probes + for i: int in get_child_count(): + get_child(i).queue_free() + # Wait for the last one to be cleaned + if i == get_child_count() -1: + await get_child(i).tree_exited + + # Defining probe arrays + var probes_positions: Array[Vector3] = [] + var probes_names: Array[String] = [] + + # Distance between probes + # step = size / (probes_number - 1) + var step: Vector3 = size / Vector3(probes_number - Vector3i.ONE) + + # Starting relative positions + var start_position: Vector3 = Vector3.ONE * size / 2.0 + var current_position: Vector3 = Vector3.ZERO + + # Defining Probes relative positions and names + for x: float in probes_number.x: + for y: float in probes_number.y: + for z: float in probes_number.z: + current_position = start_position - step * Vector3(x, y, z) + probes_positions.append(current_position) + probes_names.append("LightmapProbe %.f, %.f, %.f" % [x, y, z]) + + # Generating probes + var root_node: Node = get_tree().edited_scene_root + + for i: int in range(probes_positions.size()): + var probe: LightmapProbe = LightmapProbe.new() + probe.position = probes_positions[i] + probe.name = probes_names[i] + add_child(probe) + probe.set_owner(root_node) + + current_probes = probes_number.x * probes_number.y * probes_number.z + set_probes_number() + + +# Workaround to raycast without colliders. Consists in a camera with a filter in front that shows +# the depth texture. The camera.far is the "ray" lenght and camera rotation is the "ray" orientation +# https://docs.godotengine.org/en/stable/tutorials/shaders/advanced_postprocessing.html#depth-texture +func add_GPU_raycaster(probe: Node3D) -> void: + var root_node: Node = get_tree().edited_scene_root + + # SubViewport that will host the camera + var sub_viewport: SubViewport = SubViewport.new() + sub_viewport.name = "GPUraycast" + sub_viewport.size = Vector2(2, 2) + sub_viewport.render_target_update_mode = SubViewport.UPDATE_DISABLED + sub_viewport.render_target_clear_mode = SubViewport.CLEAR_MODE_NEVER + sub_viewport.handle_input_locally = false + sub_viewport.debug_draw = Viewport.DEBUG_DRAW_UNSHADED + + sub_viewport.positional_shadow_atlas_size = 0 + sub_viewport.positional_shadow_atlas_quad_0 = Viewport.SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED + sub_viewport.positional_shadow_atlas_quad_1 = Viewport.SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED + sub_viewport.positional_shadow_atlas_quad_2 = Viewport.SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED + sub_viewport.positional_shadow_atlas_quad_3 = Viewport.SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED + + probe.add_child(sub_viewport) + sub_viewport.set_owner(root_node) + + # Camera for the viewport + var camera_3d: Camera3D = Camera3D.new() + camera_3d.projection = Camera3D.PROJECTION_ORTHOGONAL + camera_3d.size = 0.001 + camera_3d.near = 0.001 + camera_3d.far = 1.0 + sub_viewport.add_child(camera_3d) + camera_3d.set_owner(root_node) + camera_3d.position = probe.global_position + camera_3d.rotation = Vector3.ZERO + camera_3d.cull_mask = visual_cull_mask + + # Depth filter: A quad with a material that shows the Depth texture. This goes in front of the + # camera + var depth_material: ShaderMaterial = ShaderMaterial.new() + depth_material.shader = depth_shader + + var depth_filter: MeshInstance3D = MeshInstance3D.new() + var depth_mesh: QuadMesh = QuadMesh.new() + depth_filter.mesh = depth_mesh + depth_mesh.material = depth_material + depth_mesh.size = Vector2.ONE * 0.001 + camera_3d.add_child(depth_filter) + depth_filter.set_owner(root_node) + depth_filter.position = Vector3(0, 0, -0.002) + depth_filter.rotation = Vector3.ZERO + + +func generate_probes_raycasters() -> void: + for probe in get_children(): + add_GPU_raycaster(probe) + + +func remove_probes_raycasters() -> void: + for probe in get_children(): + for child in probe.get_children(): + child.queue_free(); + + +# The function look_at not always work. Exceptions are handled here +func rotate_camera(camera: Camera3D, to: Vector3) -> void: + var from: Vector3 = camera.position + # look_at don't work if the node and target have the same position. You cannot look at yourself + if from == to: + return + + # look_at don't work if the direction and rotation axix have same orientation. In this case, + # change the rotation axis + var direction: Vector3 = abs(to - from) + var mag = (direction.normalized() - Vector3.UP).length() + if mag > 0.001: + camera.look_at(to) + else: + camera.look_at(to, Vector3.RIGHT) + + +# Shoot rays from the center to all the probes. If any object is detected so the probe is +# obstructed and will be cut +func cut_obstructed() -> void: + await generate_probes_raycasters() + + var probes_array: Array[LightmapProbe] = [] + var camera_array: Array[Camera3D] = [] + var subViewport_array: Array[SubViewport] = [] + var results_array: Array[float] = [] + + # Populating arrays + for probe: LightmapProbe in get_children(): + probes_array.append(probe) + gizmo_lines.append_array([Vector3.ZERO, probe.position]) + var sub_viewport: SubViewport = probe.get_child(0) + subViewport_array.append(sub_viewport) + var camera: Camera3D = sub_viewport.get_child(0) + camera_array.append(camera) + + # Rotating cameras and updating sub_viewports + for i in range(camera_array.size()): + var camera: Camera3D = camera_array[i] + var probe_pos: Vector3 = probes_array[i].global_position + var sub_viewport: SubViewport = subViewport_array[i] + + camera.position = position + # The lenght of the "Ray" + camera.far = maxf((probe_pos - position).length(), 0.0021) + # The direction of the "Ray" + rotate_camera(camera, probe_pos) + sub_viewport.render_target_update_mode = SubViewport.UPDATE_ONCE + + # Getting the values + await RenderingServer.frame_post_draw + for i in range(subViewport_array.size()): + var sub_viewport = subViewport_array[i] + var texture: Image = sub_viewport.get_texture().get_image() + var color: Color = texture.get_pixel(0,0) + var colorValue: float = color.r + var result: float = colorValue + results_array.append(result) + + # Cutting probes + for i in range(subViewport_array.size()): + var result: float = results_array[i] + + # On Godot 4.3+, the depth texture was inverted + if godot_version >= 0x040300: + result = 1.0 - result + + if result < 1.0: + var probe = probes_array[i] + probe.queue_free() + current_probes -= 1 + + set_probes_number() + remove_probes_raycasters() + + +# Detect if the probe is far from any object. It will shoot rays on all 6 axis and 8 quadrants. +# If there aren't any objects the probe will be cut +func cut_far() -> void: + await generate_probes_raycasters() + + # 6 axis and 8 quadrants + var directions: Array[Vector3] = [ + # 6 Axis + Vector3(0, 0, 1), Vector3(0, 1, 0), Vector3(1, 0, 0), + Vector3(0, 0, -1), Vector3(0, -1, 0), Vector3(-1, 0, 0), + # 8 Quadrants + Vector3(1, 1, 1).normalized(), Vector3(1, 1, -1).normalized(), + Vector3(1, -1, 1).normalized(), Vector3(1, -1, -1).normalized(), + Vector3(-1, 1, 1).normalized(), Vector3(-1, 1, -1).normalized(), + Vector3(-1, -1, 1).normalized(), Vector3(-1, -1, -1).normalized() + ] + + var probes_array: Array[LightmapProbe] = [] + var camera_array: Array[Camera3D] = [] + var subViewport_array: Array[SubViewport] = [] + var collisions_number: Array[int] = [] + + # Populating arrays + for probe: LightmapProbe in get_children(): + probes_array.append(probe) + var sub_viewport: SubViewport = probe.get_child(0) + subViewport_array.append(sub_viewport) + var camera: Camera3D = sub_viewport.get_child(0) + camera_array.append(camera) + collisions_number.resize(camera_array.size()) + collisions_number.fill(0) + + # Getting data for all cameras on each direction + for dir in directions: + # Rotating all cameras to the same direction, and updating viewport + for i in camera_array.size(): + var probe: LightmapProbe = probes_array[i] + var sub_viewport: SubViewport = subViewport_array[i] + var camera: Camera3D = camera_array[i] + + camera.position = probe.global_position + # The lenght of the "Ray" + camera.far = far_distance + # The direction of the "Ray" + rotate_camera(camera, probe.global_position + dir) + sub_viewport.render_target_update_mode = SubViewport.UPDATE_ONCE + + gizmo_lines.append_array([probe.position, probe.position + dir * far_distance]) + + # Getting all values for the current direction + await RenderingServer.frame_post_draw + for i in range(subViewport_array.size()): + var sub_viewport = subViewport_array[i] + var texture: Image = sub_viewport.get_texture().get_image() + var color: Color = texture.get_pixel(0,0) + var colorValue: float = color.r + var result: float = colorValue + + # On Godot 4.3+, the depth texture was inverted + if godot_version >= 0x040300: + result = 1.0 - result + + if result < 1.0: + collisions_number[i] += 1 + + # Cut probes if there are no collisions + for i in probes_array.size(): + if collisions_number[i] < 1: + var probe = probes_array[i] + probe.queue_free() + current_probes -= 1 + + set_probes_number() + remove_probes_raycasters() + + +# Detect if probe is inside an object. It will shoot rays from all 6 axis to the probe. If at least +# 4 are obstructed, the probe will be cut +func cut_inside() -> void: + await generate_probes_raycasters() + + # 6 Axis + var axis: Array[Vector3] = [ + Vector3(0, 0, 1), Vector3(0, 1, 0), Vector3(1, 0, 0), + Vector3(0, 0, -1), Vector3(0, -1, 0), Vector3(-1, 0, 0), + ] + + var probes_array: Array[LightmapProbe] = [] + var camera_array: Array[Camera3D] = [] + var subViewport_array: Array[SubViewport] = [] + var collisions_number: Array[int] = [] + + # Populating arrays + for probe: LightmapProbe in get_children(): + probes_array.append(probe) + var sub_viewport: SubViewport = probe.get_child(0) + subViewport_array.append(sub_viewport) + var camera: Camera3D = sub_viewport.get_child(0) + camera_array.append(camera) + collisions_number.resize(camera_array.size()) + collisions_number.fill(0) + + # Getting data for all cameras on each axis + for dir in axis: + # For each direction, position all cameras to look from outside + # to each probe in object_size distance + for i in camera_array.size(): + var probe: LightmapProbe = probes_array[i] + var sub_viewport: SubViewport = subViewport_array[i] + var camera: Camera3D = camera_array[i] + + camera.position = probe.global_position + dir * object_size + # The lenght of the "Ray" + camera.far = object_size + # The direction of the "Ray" + rotate_camera(camera, probe.global_position) + sub_viewport.render_target_update_mode = SubViewport.UPDATE_ONCE + + gizmo_lines.append_array([probe.position, probe.position + dir * object_size]) + + # Getting all values for the current direction + await RenderingServer.frame_post_draw + for i in range(subViewport_array.size()): + var sub_viewport = subViewport_array[i] + var texture: Image = sub_viewport.get_texture().get_image() + var color: Color = texture.get_pixel(0,0) + var colorValue: float = color.r + var result: float = colorValue + + # On Godot 4.3+, the depth texture was inverted + if godot_version >= 0x040300: + result = 1.0 - result + + if result < 1.0: + collisions_number[i] += 1 + + # Cut probes if there are more than 4 collisions + for i in probes_array.size(): + if collisions_number[i] > 3: + var probe = probes_array[i] + probe.queue_free() + current_probes -= 1 + + set_probes_number() + remove_probes_raycasters() diff --git a/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd.uid b/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd.uid new file mode 100644 index 0000000..cd9653a --- /dev/null +++ b/source/addons/lightmap_probe_grid/lightmap_probe_grid.gd.uid @@ -0,0 +1 @@ +uid://dbcy7qdq4hqlg diff --git a/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg b/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg new file mode 100644 index 0000000..74ea893 --- /dev/null +++ b/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg.import b/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg.import new file mode 100644 index 0000000..680b58e --- /dev/null +++ b/source/addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg.import @@ -0,0 +1,44 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtmcycli3j3j1" +path.s3tc="res://.godot/imported/lightmap_probe_grid_icon.svg-71f84c7339e4d62a065aeef79112e123.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://addons/lightmap_probe_grid/lightmap_probe_grid_icon.svg" +dest_files=["res://.godot/imported/lightmap_probe_grid_icon.svg-71f84c7339e4d62a065aeef79112e123.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 +svg/scale=4.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/source/addons/lightmap_probe_grid/plugin.cfg b/source/addons/lightmap_probe_grid/plugin.cfg new file mode 100644 index 0000000..c1b0893 --- /dev/null +++ b/source/addons/lightmap_probe_grid/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="LightmapProbeGrid" +description="Create a grid of LightmapProbes, and cut unwanted ones!" +author="SpockBauru" +version="2.2" +script="plugin.gd" diff --git a/source/addons/lightmap_probe_grid/plugin.gd b/source/addons/lightmap_probe_grid/plugin.gd new file mode 100644 index 0000000..6ea43d8 --- /dev/null +++ b/source/addons/lightmap_probe_grid/plugin.gd @@ -0,0 +1,25 @@ +@tool +extends EditorPlugin + +var custom_node: Script = preload("lightmap_probe_grid.gd") +var icon: Texture2D = preload("lightmap_probe_grid_icon.svg") + +var inspector_script: Script = preload("editor_inspector_plugin.gd") +var inspector_plugin: EditorInspectorPlugin = inspector_script.new() + +var gizmo_script: Script = preload("gizmo.gd") +var gizmo_plugin: EditorNode3DGizmoPlugin = gizmo_script.new() + +func _get_plugin_name() -> String: + return "LightmapProbeGrid" + +func _enter_tree() -> void: + add_custom_type("LightmapProbeGrid", "Node3D", custom_node, icon) + add_inspector_plugin(inspector_plugin) + add_node_3d_gizmo_plugin(gizmo_plugin) + + +func _exit_tree() -> void: + remove_custom_type("LightmapProbeGrid") + remove_inspector_plugin(inspector_plugin) + remove_node_3d_gizmo_plugin(gizmo_plugin) diff --git a/source/addons/lightmap_probe_grid/plugin.gd.uid b/source/addons/lightmap_probe_grid/plugin.gd.uid new file mode 100644 index 0000000..76cf2ed --- /dev/null +++ b/source/addons/lightmap_probe_grid/plugin.gd.uid @@ -0,0 +1 @@ +uid://b74qjeucc24bp diff --git a/source/addons/lightmap_probe_grid/style_box_flat.tres b/source/addons/lightmap_probe_grid/style_box_flat.tres new file mode 100644 index 0000000..867120c --- /dev/null +++ b/source/addons/lightmap_probe_grid/style_box_flat.tres @@ -0,0 +1,13 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://4nfudftbnexo"] + +[resource] +draw_center = false +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_color = Color(0.5, 0.5, 0.5, 1) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 diff --git a/source/addons/panku_console/logo.svg.import b/source/addons/panku_console/logo.svg.import index 48d9afc..79c2e5f 100644 --- a/source/addons/panku_console/logo.svg.import +++ b/source/addons/panku_console/logo.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/logo.svg-5c6f042742ccac523c072414b9eb3caf.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/effect/square_shadow.png.import b/source/addons/panku_console/res/effect/square_shadow.png.import index e3057b0..1d6d561 100644 --- a/source/addons/panku_console/res/effect/square_shadow.png.import +++ b/source/addons/panku_console/res/effect/square_shadow.png.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/square_shadow.png-0b7f91b74dd24247868957be13d compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ 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=true process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/add.svg.import b/source/addons/panku_console/res/icons2/add.svg.import index 210a639..4332717 100644 --- a/source/addons/panku_console/res/icons2/add.svg.import +++ b/source/addons/panku_console/res/icons2/add.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/add.svg-2a06068ce10412da423766fee4b6d4aa.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/arrow-down-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/arrow-down-svgrepo-com.svg.import index ef78742..64bc23d 100644 --- a/source/addons/panku_console/res/icons2/arrow-down-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/arrow-down-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow-down-svgrepo-com.svg-38ccb799fe0295b6eb compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/arrow-up-md-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/arrow-up-md-svgrepo-com.svg.import index 19929d1..9c881ef 100644 --- a/source/addons/panku_console/res/icons2/arrow-up-md-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/arrow-up-md-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/arrow-up-md-svgrepo-com.svg-0d7dc8f9b4626627f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/bin-cancel-delete-remove-trash-garbage-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/bin-cancel-delete-remove-trash-garbage-svgrepo-com.svg.import index 1f324c3..c34228a 100644 --- a/source/addons/panku_console/res/icons2/bin-cancel-delete-remove-trash-garbage-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/bin-cancel-delete-remove-trash-garbage-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/bin-cancel-delete-remove-trash-garbage-svgrep compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/bookmark-filled-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/bookmark-filled-svgrepo-com.svg.import index 05cb3c8..4770d4d 100644 --- a/source/addons/panku_console/res/icons2/bookmark-filled-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/bookmark-filled-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/bookmark-filled-svgrepo-com.svg-36e232dcc8b8f compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/bookmark-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/bookmark-svgrepo-com.svg.import index dd2c3c3..6b944e5 100644 --- a/source/addons/panku_console/res/icons2/bookmark-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/bookmark-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/bookmark-svgrepo-com.svg-ff120b5ee0d289505ac4 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/check-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/check-svgrepo-com.svg.import index 4898009..1b60ff7 100644 --- a/source/addons/panku_console/res/icons2/check-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/check-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/check-svgrepo-com.svg-034d6c5925c00dc6c3cf696 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/checkbox_checked.svg.import b/source/addons/panku_console/res/icons2/checkbox_checked.svg.import index 8e3f7d2..3752b27 100644 --- a/source/addons/panku_console/res/icons2/checkbox_checked.svg.import +++ b/source/addons/panku_console/res/icons2/checkbox_checked.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/checkbox_checked.svg-b5d0aaca03398eb49c2d410c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/checkbox_unchecked.svg.import b/source/addons/panku_console/res/icons2/checkbox_unchecked.svg.import index bc8f59c..a659b48 100644 --- a/source/addons/panku_console/res/icons2/checkbox_unchecked.svg.import +++ b/source/addons/panku_console/res/icons2/checkbox_unchecked.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/checkbox_unchecked.svg-43408d4debc25d7804c4c8 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/chevron_right.svg.import b/source/addons/panku_console/res/icons2/chevron_right.svg.import index 2939cea..c8099a1 100644 --- a/source/addons/panku_console/res/icons2/chevron_right.svg.import +++ b/source/addons/panku_console/res/icons2/chevron_right.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/chevron_right.svg-2c66815dcd12ccc3ba2562028a2 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/close.svg.import b/source/addons/panku_console/res/icons2/close.svg.import index c1cd331..cfded02 100644 --- a/source/addons/panku_console/res/icons2/close.svg.import +++ b/source/addons/panku_console/res/icons2/close.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/close.svg-3a85a46ed81631640c7e8cd4342c98f0.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/close_20x.svg.import b/source/addons/panku_console/res/icons2/close_20x.svg.import index a08ac18..f9a6a2d 100644 --- a/source/addons/panku_console/res/icons2/close_20x.svg.import +++ b/source/addons/panku_console/res/icons2/close_20x.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/close_20x.svg-9ead6c9c7ae149729de0bac95295aab compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/expand_more.svg.import b/source/addons/panku_console/res/icons2/expand_more.svg.import index 6ccfe1b..b7bd274 100644 --- a/source/addons/panku_console/res/icons2/expand_more.svg.import +++ b/source/addons/panku_console/res/icons2/expand_more.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/expand_more.svg-156eef34c01d1545ad526cf0292ef compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/eye.svg.import b/source/addons/panku_console/res/icons2/eye.svg.import index 519f978..4c56efd 100644 --- a/source/addons/panku_console/res/icons2/eye.svg.import +++ b/source/addons/panku_console/res/icons2/eye.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/eye.svg-6814b908d03cc1398c9846342a0966fc.ctex compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/favorite.svg.import b/source/addons/panku_console/res/icons2/favorite.svg.import index 1b05001..e6f17dc 100644 --- a/source/addons/panku_console/res/icons2/favorite.svg.import +++ b/source/addons/panku_console/res/icons2/favorite.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/favorite.svg-94e3b968ddcfab82f19abf606a6cd9bb compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/fold-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/fold-svgrepo-com.svg.import index 0d7d509..23349a5 100644 --- a/source/addons/panku_console/res/icons2/fold-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/fold-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/fold-svgrepo-com.svg-6f951c0c7f0583013a7f3fa9 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ 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 diff --git a/source/addons/panku_console/res/icons2/gear.svg.import b/source/addons/panku_console/res/icons2/gear.svg.import index 06ab211..42d75bb 100644 --- a/source/addons/panku_console/res/icons2/gear.svg.import +++ b/source/addons/panku_console/res/icons2/gear.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/gear.svg-bd633691cf7fd6c996b8a22361898045.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/history.svg.import b/source/addons/panku_console/res/icons2/history.svg.import index 56c166c..dbd6d5b 100644 --- a/source/addons/panku_console/res/icons2/history.svg.import +++ b/source/addons/panku_console/res/icons2/history.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/history.svg-a137f2f4fbb3649b91b01d8def6f6456. compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/info.svg.import b/source/addons/panku_console/res/icons2/info.svg.import index da8b294..ecb56ba 100644 --- a/source/addons/panku_console/res/icons2/info.svg.import +++ b/source/addons/panku_console/res/icons2/info.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/info.svg-2b1105336c45eeebd4acdf04c60c8bdb.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/info2.svg.import b/source/addons/panku_console/res/icons2/info2.svg.import index 87aaf96..aa5b413 100644 --- a/source/addons/panku_console/res/icons2/info2.svg.import +++ b/source/addons/panku_console/res/icons2/info2.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/info2.svg-c9ea3dad2575e3684098e5112249010d.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/keyboard.svg.import b/source/addons/panku_console/res/icons2/keyboard.svg.import index 87f3d69..d1fcf08 100644 --- a/source/addons/panku_console/res/icons2/keyboard.svg.import +++ b/source/addons/panku_console/res/icons2/keyboard.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/keyboard.svg-65a8773013921e61a1cc3ef80ef82693 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/menu.svg.import b/source/addons/panku_console/res/icons2/menu.svg.import index 13b3623..3a56540 100644 --- a/source/addons/panku_console/res/icons2/menu.svg.import +++ b/source/addons/panku_console/res/icons2/menu.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/menu.svg-15ef2ef76b3f6c0e7fc0168d1ac05d38.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/more_horiz.svg.import b/source/addons/panku_console/res/icons2/more_horiz.svg.import index 1cc38b6..9430815 100644 --- a/source/addons/panku_console/res/icons2/more_horiz.svg.import +++ b/source/addons/panku_console/res/icons2/more_horiz.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/more_horiz.svg-7ca01f2b54bfa3040d05158756af79 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/open_with.svg.import b/source/addons/panku_console/res/icons2/open_with.svg.import index 0218874..90ce2f3 100644 --- a/source/addons/panku_console/res/icons2/open_with.svg.import +++ b/source/addons/panku_console/res/icons2/open_with.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/open_with.svg-4c7b4bea2cb5c0a1af405d61d3d85fa compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/pause-1010-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/pause-1010-svgrepo-com.svg.import index be3a9de..812a930 100644 --- a/source/addons/panku_console/res/icons2/pause-1010-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/pause-1010-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pause-1010-svgrepo-com.svg-8a4549394af5099adc compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/play-1001-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/play-1001-svgrepo-com.svg.import index dd29309..b9b56ee 100644 --- a/source/addons/panku_console/res/icons2/play-1001-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/play-1001-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/play-1001-svgrepo-com.svg-6dda54bd1afb4351b91 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/pop-out-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/pop-out-svgrepo-com.svg.import index a8959cd..ad501b5 100644 --- a/source/addons/panku_console/res/icons2/pop-out-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/pop-out-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/pop-out-svgrepo-com.svg-54bb73635d5759933a88b compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/question.svg.import b/source/addons/panku_console/res/icons2/question.svg.import index 1a53973..148ea93 100644 --- a/source/addons/panku_console/res/icons2/question.svg.import +++ b/source/addons/panku_console/res/icons2/question.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/question.svg-b2322d216b84b418e5a3bac06c50c9e3 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/remove.svg.import b/source/addons/panku_console/res/icons2/remove.svg.import index 63fe8a4..55d2846 100644 --- a/source/addons/panku_console/res/icons2/remove.svg.import +++ b/source/addons/panku_console/res/icons2/remove.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/remove.svg-76a0d91c4b08193a23093f3f0fc3dcaf.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/rename-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/rename-svgrepo-com.svg.import index f5b6f73..2aa845c 100644 --- a/source/addons/panku_console/res/icons2/rename-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/rename-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/rename-svgrepo-com.svg-5ec15595e7d5857527ce81 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/reply.svg.import b/source/addons/panku_console/res/icons2/reply.svg.import index 307cb1b..2286239 100644 --- a/source/addons/panku_console/res/icons2/reply.svg.import +++ b/source/addons/panku_console/res/icons2/reply.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/reply.svg-198ceccf73b6dc82a4737a0814707430.ct compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/resize-svgrepo-com.svg.import b/source/addons/panku_console/res/icons2/resize-svgrepo-com.svg.import index ed250df..1f743ea 100644 --- a/source/addons/panku_console/res/icons2/resize-svgrepo-com.svg.import +++ b/source/addons/panku_console/res/icons2/resize-svgrepo-com.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/resize-svgrepo-com.svg-cd0763e17be8b93faf6e99 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ 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 diff --git a/source/addons/panku_console/res/icons2/search.svg.import b/source/addons/panku_console/res/icons2/search.svg.import index db11eb3..e7910b4 100644 --- a/source/addons/panku_console/res/icons2/search.svg.import +++ b/source/addons/panku_console/res/icons2/search.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/search.svg-cbe7bc4d5cf71611ed1b364ee4407142.c compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/panku_console/res/icons2/swap_horiz.svg.import b/source/addons/panku_console/res/icons2/swap_horiz.svg.import index e50f875..c94e87b 100644 --- a/source/addons/panku_console/res/icons2/swap_horiz.svg.import +++ b/source/addons/panku_console/res/icons2/swap_horiz.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/swap_horiz.svg-3fa7c06ee39a243e7a12b5915f37a8 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/run-configs/editor/assets/PlayConfig.svg.import b/source/addons/run-configs/editor/assets/PlayConfig.svg.import index a64b34a..22997f7 100644 --- a/source/addons/run-configs/editor/assets/PlayConfig.svg.import +++ b/source/addons/run-configs/editor/assets/PlayConfig.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/PlayConfig.svg-9108fdc6839a4b29e144f2dcf60951 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/addons/run-configs/editor/plugin.gd b/source/addons/run-configs/editor/plugin.gd index d67a4b9..c5f4b3a 100644 --- a/source/addons/run-configs/editor/plugin.gd +++ b/source/addons/run-configs/editor/plugin.gd @@ -41,13 +41,19 @@ func _enter_tree(): # Inspector plugin add_inspector_plugin(inspector_plugin) - + # Settings var editor_settings := EditorInterface.get_editor_settings() if not editor_settings.has_setting(_RUN_SHORTCUT_PATH): editor_settings.set_setting(_RUN_SHORTCUT_PATH, RunShortcut.duplicate()) editor_settings.set_initial_value(_RUN_SHORTCUT_PATH, RunShortcut.duplicate(), false) + +func _exit_tree() -> void: + confg_manager_autoload.queue_free() + confg_manager_autoload = null + + func _enable_plugin() -> void: add_autoload_singleton(AUTOLOAD_PATH, "res://addons/run-configs/run-config-manager.gd") @@ -56,11 +62,11 @@ func _disable_plugin() -> void: UIExtension.remove_control_from_editor_run_bar(separator) UIExtension.remove_control_from_editor_run_bar(play_button) UIExtension.remove_control_from_editor_run_bar(configs_button) - + remove_inspector_plugin(inspector_plugin) - + remove_autoload_singleton(AUTOLOAD_PATH) - + func _play_scene(): @@ -76,15 +82,15 @@ func _play_scene(): EditorInterface.play_current_scene() RunConfig.PlayMode.CustomScene: var scene: String = config.custom_scene - + if scene.begins_with("uid://"): var uid: int = ResourceLoader.get_resource_uid(scene) if uid == -1 or not ResourceUID.has_id(uid): print_debug("ID '%s' does not exist." %uid) return - + scene = ResourceUID.get_id_path(uid) - + EditorInterface.play_custom_scene(scene) @@ -92,12 +98,12 @@ func _play_scene(): func _input(event: InputEvent): var editor_settings := EditorInterface.get_editor_settings() var shortcut: Shortcut - + if editor_settings.has_setting(_RUN_SHORTCUT_PATH): shortcut = editor_settings.get_setting(_RUN_SHORTCUT_PATH) else: shortcut = RunShortcut - + if event is InputEventKey: if shortcut.matches_event(event) and event.is_pressed() and not event.is_echo(): _play_scene() diff --git a/source/addons/run-configs/run-config-manager.gd b/source/addons/run-configs/run-config-manager.gd index d1d75c7..2942332 100644 --- a/source/addons/run-configs/run-config-manager.gd +++ b/source/addons/run-configs/run-config-manager.gd @@ -11,16 +11,16 @@ const RunConfig := preload("res://addons/run-configs/models/run_config.gd") func _init(): if not OS.has_feature(&"editor"): return - + if Engine.is_editor_hint(): return var config := get_current_config() if not config: return - + var env = config.environment_variables - + for key in env.keys(): OS.set_environment(key, env[key]) @@ -37,7 +37,7 @@ func _ready(): static func get_current_config() -> RunConfig: var ind := get_current_config_index() var configs := load_configs() - + if ind < 0 or ind >= configs.size(): return null @@ -62,10 +62,10 @@ static func load_configs() -> Array[RunConfig]: static func set_configs(configs: Array[RunConfig]) -> void: var config_jsons = [] - + for config in configs: config_jsons.append(config.serialize()) - + ProjectSettings.set_setting(_CONFIGS_PATH, config_jsons) ProjectSettings.set_as_internal(_CONFIGS_PATH, true) ProjectSettings.save() diff --git a/source/addons/version_display/version_display.gd b/source/addons/version_display/version_display.gd index df0ae9c..dd22e18 100644 --- a/source/addons/version_display/version_display.gd +++ b/source/addons/version_display/version_display.gd @@ -3,7 +3,7 @@ extends CanvasLayer const DEFAULT_TEXT: String = "{game_name} - {state} - V - {version}" const UNDEFINED_TEXT: String = "Undefined" -@export_enum("Pre-Alpha", "Early-Alpha", "Alpha", "Beta", "Early-Access", "Release") var state: String = "Pre-Alpha" +@export_enum("Pre-Production", "Pre-Alpha", "Early-Alpha", "Alpha", "Beta", "Early-Access", "Release") var state: String = "Pre-Alpha" @export_multiline var text_override: String = DEFAULT_TEXT: set = set_text @onready var version_label: Label = $MarginContainer/VersionLabel @@ -17,14 +17,14 @@ func set_text(new_text: String) -> void: new_text = new_text.replace("{game_name}", ProjectSettings.get_setting("application/config/name", UNDEFINED_TEXT)) new_text = new_text.replace("{version}", ProjectSettings.get_setting("application/config/version", UNDEFINED_TEXT)) new_text = new_text.replace("{state}", str(state)) - + text_override = new_text - + _update_hud() func _update_hud() -> void: if not self.is_node_ready(): await self.ready - + version_label.set_text(text_override) diff --git a/source/addons/version_display/version_display.tscn b/source/addons/version_display/version_display.tscn index debf51a..6db0555 100644 --- a/source/addons/version_display/version_display.tscn +++ b/source/addons/version_display/version_display.tscn @@ -7,6 +7,7 @@ process_mode = 3 layer = 64 follow_viewport_enabled = true script = ExtResource("1_jk1t8") +state = "Pre-Production" [node name="MarginContainer" type="MarginContainer" parent="."] anchors_preset = 15 diff --git a/source/assets/audio/ambient/dark_house.ogg b/source/assets/audio/ambient/dark_house.ogg new file mode 100644 index 0000000..2e381b0 Binary files /dev/null and b/source/assets/audio/ambient/dark_house.ogg differ diff --git a/source/assets/audio/ambient/dark_house.ogg.import b/source/assets/audio/ambient/dark_house.ogg.import new file mode 100644 index 0000000..3f090dc --- /dev/null +++ b/source/assets/audio/ambient/dark_house.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://vft8mjglpa2u" +path="res://.godot/imported/dark_house.ogg-96cc2a9d568f8c57a58c8cdfec91f1ac.oggvorbisstr" + +[deps] + +source_file="res://assets/audio/ambient/dark_house.ogg" +dest_files=["res://.godot/imported/dark_house.ogg-96cc2a9d568f8c57a58c8cdfec91f1ac.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/source/assets/audio/ambient/dark_house.wav b/source/assets/audio/ambient/dark_house.wav deleted file mode 100644 index 231ea54..0000000 Binary files a/source/assets/audio/ambient/dark_house.wav and /dev/null differ diff --git a/source/assets/audio/ambient/dark_house.wav.import b/source/assets/audio/ambient/dark_house.wav.import deleted file mode 100644 index ad49e79..0000000 --- a/source/assets/audio/ambient/dark_house.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cyxvsy5wjxhl7" -path="res://.godot/imported/dark_house.wav-e345a7ff02f69a189e29d97db0d42293.sample" - -[deps] - -source_file="res://assets/audio/ambient/dark_house.wav" -dest_files=["res://.godot/imported/dark_house.wav-e345a7ff02f69a189e29d97db0d42293.sample"] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=2 diff --git a/source/assets/materials/cloth/red_cloth.tres b/source/assets/materials/cloth/red_cloth.tres new file mode 100644 index 0000000..98daab1 --- /dev/null +++ b/source/assets/materials/cloth/red_cloth.tres @@ -0,0 +1,18 @@ +[gd_resource type="StandardMaterial3D" load_steps=4 format=3 uid="uid://d2wd6sxagg32u"] + +[ext_resource type="Texture2D" uid="uid://4i8fdfniellp" path="res://assets/materials/cloth/red_cloth_albedo.png" id="1"] +[ext_resource type="Texture2D" uid="uid://b6mde3k4osqsq" path="res://assets/materials/cloth/red_cloth_normal.png" id="3"] +[ext_resource type="Texture2D" uid="uid://cn83cshjcu5fm" path="res://assets/materials/cloth/red_cloth_heightmap.png" id="4"] + +[resource] +albedo_texture = ExtResource("1") +metallic = 0.05 +roughness = 0.95 +normal_enabled = true +normal_texture = ExtResource("3") +heightmap_enabled = true +heightmap_scale = 2.5 +heightmap_deep_parallax = true +heightmap_min_layers = 8 +heightmap_max_layers = 32 +heightmap_texture = ExtResource("4") diff --git a/source/assets/materials/cloth/red_cloth_albedo.png b/source/assets/materials/cloth/red_cloth_albedo.png new file mode 100644 index 0000000..3cd4bcb Binary files /dev/null and b/source/assets/materials/cloth/red_cloth_albedo.png differ diff --git a/source/assets/materials/cloth/red_cloth_albedo.png.import b/source/assets/materials/cloth/red_cloth_albedo.png.import new file mode 100644 index 0000000..52578a1 --- /dev/null +++ b/source/assets/materials/cloth/red_cloth_albedo.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4i8fdfniellp" +path.s3tc="res://.godot/imported/red_cloth_albedo.png-44710859e03b87bf96c90c015f1690c0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/materials/cloth/red_cloth_albedo.png" +dest_files=["res://.godot/imported/red_cloth_albedo.png-44710859e03b87bf96c90c015f1690c0.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 diff --git a/source/assets/materials/cloth/red_cloth_heightmap.png b/source/assets/materials/cloth/red_cloth_heightmap.png new file mode 100644 index 0000000..b6019c9 Binary files /dev/null and b/source/assets/materials/cloth/red_cloth_heightmap.png differ diff --git a/source/assets/materials/cloth/red_cloth_heightmap.png.import b/source/assets/materials/cloth/red_cloth_heightmap.png.import new file mode 100644 index 0000000..ce19395 --- /dev/null +++ b/source/assets/materials/cloth/red_cloth_heightmap.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cn83cshjcu5fm" +path.s3tc="res://.godot/imported/red_cloth_heightmap.png-cc64c78585f587deaa79d0ae70cb2e2b.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/materials/cloth/red_cloth_heightmap.png" +dest_files=["res://.godot/imported/red_cloth_heightmap.png-cc64c78585f587deaa79d0ae70cb2e2b.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=7 +roughness/src_normal="res://assets/materials/cloth/red_cloth_normal.png" +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 diff --git a/source/assets/materials/cloth/red_cloth_normal.png b/source/assets/materials/cloth/red_cloth_normal.png new file mode 100644 index 0000000..68a0017 Binary files /dev/null and b/source/assets/materials/cloth/red_cloth_normal.png differ diff --git a/source/assets/materials/cloth/red_cloth_normal.png.import b/source/assets/materials/cloth/red_cloth_normal.png.import new file mode 100644 index 0000000..2888f2e --- /dev/null +++ b/source/assets/materials/cloth/red_cloth_normal.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6mde3k4osqsq" +path.s3tc="res://.godot/imported/red_cloth_normal.png-65731db94d529a9b16ced6156355ab9f.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://assets/materials/cloth/red_cloth_normal.png" +dest_files=["res://.godot/imported/red_cloth_normal.png-65731db94d529a9b16ced6156355ab9f.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=1 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=1 +roughness/src_normal="uid://b6mde3k4osqsq" +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 diff --git a/source/assets/materials/dev/dark/dark_01.tres b/source/assets/materials/dev/dark/dark_01.tres index abfea70..08ac273 100644 --- a/source/assets/materials/dev/dark/dark_01.tres +++ b/source/assets/materials/dev/dark/dark_01.tres @@ -1,6 +1,6 @@ [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c38215ysnknyk"] -[ext_resource type="Texture2D" uid="uid://d4m1r5bjq4lbe" path="res://addons/kenney_prototype_textures/dark/texture_01.png" id="1_38xbi"] +[ext_resource type="Texture2D" uid="uid://d4m1r5bjq4lbe" path="res://assets/materials/dev/dark/texture_01.png" id="1_38xbi"] [resource] albedo_texture = ExtResource("1_38xbi") diff --git a/source/assets/models/electrics/spot_light/studio_light_framing_02.glb b/source/assets/models/electrics/spot_light/studio_light_framing_02.glb new file mode 100644 index 0000000..904c402 Binary files /dev/null and b/source/assets/models/electrics/spot_light/studio_light_framing_02.glb differ diff --git a/source/assets/models/electrics/spot_light/studio_light_framing_02.glb.import b/source/assets/models/electrics/spot_light/studio_light_framing_02.glb.import new file mode 100644 index 0000000..21336e9 --- /dev/null +++ b/source/assets/models/electrics/spot_light/studio_light_framing_02.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://boxc0e6to4083" +path="res://.godot/imported/studio_light_framing_02.glb-60b358246079bde473e527e6432e4573.scn" + +[deps] + +source_file="res://assets/models/electrics/spot_light/studio_light_framing_02.glb" +dest_files=["res://.godot/imported/studio_light_framing_02.glb-60b358246079bde473e527e6432e4573.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/assets/models/electrics/spot_light/studio_spot_light.blend b/source/assets/models/electrics/spot_light/studio_spot_light.blend new file mode 100644 index 0000000..772e7dc Binary files /dev/null and b/source/assets/models/electrics/spot_light/studio_spot_light.blend differ diff --git a/source/assets/models/electrics/spot_light/studio_spot_light.blend1 b/source/assets/models/electrics/spot_light/studio_spot_light.blend1 new file mode 100644 index 0000000..9d952ae Binary files /dev/null and b/source/assets/models/electrics/spot_light/studio_spot_light.blend1 differ diff --git a/source/assets/models/electrics/spot_light/studio_spot_light.glb b/source/assets/models/electrics/spot_light/studio_spot_light.glb new file mode 100644 index 0000000..0700040 Binary files /dev/null and b/source/assets/models/electrics/spot_light/studio_spot_light.glb differ diff --git a/source/assets/models/electrics/spot_light/studio_spot_light.glb.import b/source/assets/models/electrics/spot_light/studio_spot_light.glb.import new file mode 100644 index 0000000..05e69d7 --- /dev/null +++ b/source/assets/models/electrics/spot_light/studio_spot_light.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://pvll6bliout1" +path="res://.godot/imported/studio_spot_light.glb-8012087060176854fbc170fa9eeb4e6a.scn" + +[deps] + +source_file="res://assets/models/electrics/spot_light/studio_spot_light.glb" +dest_files=["res://.godot/imported/studio_spot_light.glb-8012087060176854fbc170fa9eeb4e6a.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb b/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb new file mode 100644 index 0000000..a9815ec Binary files /dev/null and b/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb differ diff --git a/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb.import b/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb.import new file mode 100644 index 0000000..503e0b3 --- /dev/null +++ b/source/assets/models/electrics/spot_light/studio_spot_light_framing_01.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bwejp67rw5erj" +path="res://.godot/imported/studio_spot_light_framing_01.glb-e4cf539b334e9123aa40c25947599f49.scn" + +[deps] + +source_file="res://assets/models/electrics/spot_light/studio_spot_light_framing_01.glb" +dest_files=["res://.godot/imported/studio_spot_light_framing_01.glb-e4cf539b334e9123aa40c25947599f49.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/export_presets.cfg b/source/export_presets.cfg index 6a14207..fead6fe 100644 --- a/source/export_presets.cfg +++ b/source/export_presets.cfg @@ -6,10 +6,11 @@ runnable=true advanced_options=true dedicated_server=false custom_features="" -export_filter="all_resources" +export_filter="exclude" +export_files=PackedStringArray("res://_development/ayuroo/heavy_assets/street_rat_8k/textures/street_rat_arm_8k.jpg", "res://_development/ayuroo/heavy_assets/street_rat_8k/textures/street_rat_diff_8k.jpg", "res://_development/ayuroo/heavy_assets/street_rat_8k/textures/street_rat_nor_gl_8k.jpg", "res://_development/ayuroo/heavy_assets/street_rat_8k/street_rat_8k.gltf", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_arm_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_branch_arm_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_branch_diff_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_branch_nor_gl_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_diff_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_leaves_arm_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_leaves_diff_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_leaves_nor_gl_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/textures/tree_small_02_nor_gl_8k.jpg", "res://_development/ayuroo/heavy_assets/tree_small_02_8k/tree_small_02_8k.gltf", "res://_development/ayuroo/heavy_assets/moon_lab_8k.exr") include_filter="" -exclude_filter="" -export_path="" +exclude_filter="res://addons/panku_console/*, res://_development/*" +export_path="../builds/win/MagicNStuff.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" diff --git a/source/godot_icon.svg.import b/source/godot_icon.svg.import index 45a434b..8f7b7ea 100644 --- a/source/godot_icon.svg.import +++ b/source/godot_icon.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/godot_icon.svg-7b3f4db08ef4bccb8acaa5db9e9fe7 compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/icon.svg.import b/source/icon.svg.import index 5263cf3..3ea54a2 100644 --- a/source/icon.svg.import +++ b/source/icon.svg.import @@ -18,6 +18,8 @@ dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.cte compress/mode=0 compress/high_quality=false compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 @@ -25,6 +27,10 @@ mipmaps/generate=false mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 process/fix_alpha_border=true process/premult_alpha=false process/normal_map_invert_y=false diff --git a/source/localization/de.mo b/source/localization/de.mo deleted file mode 100644 index 031b898..0000000 Binary files a/source/localization/de.mo and /dev/null differ diff --git a/source/localization/en.mo b/source/localization/en.mo deleted file mode 100644 index 5a61dda..0000000 Binary files a/source/localization/en.mo and /dev/null differ diff --git a/source/localization/en.po b/source/localization/en.po deleted file mode 100644 index 85c9fd7..0000000 --- a/source/localization/en.po +++ /dev/null @@ -1,38 +0,0 @@ -# LANGUAGE translation for MagicNStuff for the following files: -# res://components/ui/menus/main_menu/main_menu.tscn -# -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: MagicNStuff\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.2\n" - -#: components/ui/menus/main_menu/main_menu.tscn -msgid "Magic N' Stuff" -msgstr "" - -#: components/ui/menus/main_menu/main_menu.tscn -msgid "CONTINUE" -msgstr "Continue" - -#: components/ui/menus/main_menu/main_menu.tscn -msgid "NEW_GAME" -msgstr "New Game" - -#: components/ui/menus/main_menu/main_menu.tscn -msgid "SETTINGS" -msgstr "Settings" - -#: components/ui/menus/main_menu/main_menu.tscn -msgid "QUIT" -msgstr "Quit" diff --git a/source/localization/localization.csv b/source/localization/localization.csv new file mode 100644 index 0000000..8ea3133 --- /dev/null +++ b/source/localization/localization.csv @@ -0,0 +1,26 @@ +KEYS,en,de,es,ja + +# UI +CONTINUE,Continue,Weiterspielen,Continue,Continue +NEW_GAME,New Game,Neues Spiel,New Game,New Game +SETTINGS,Settings,Einstellungen,Settings,Settings +QUIT,Quit,Beenden,Quit,Quit +LOADING,[loading]Loading...[/loading],[loading]Laden...[/loading],[loading]Loading...[/loading],[loading]Loading...[/loading] + +# Options/Settings +AUDIO,Audio,Audio,Audio,Audio +Master,Master,Master,Master,Master +SFX,SFX,SFX,SFX,SFX +MUSIC,Music,Musik,Music,Music +AMBIENT,Ambient,Ambiente,Ambient,Ambient +GRAPHICS,Graphics,Grafik,Graphics,Graphics +FULLSCREEN,Fullscreen,Vollbild,Fullscreen,Fullscreen +Misc,Misc,Misc,Misc,Misc +HEADBOBBING,Headbobbing,Kopfwackeln,Headbobbing,Headbobbing +HEADBOBBING_MULTIPLIER,Headbobbing Multiplier,Wackel-Multiplikator,Headbobbing Multiplier, Headbobbing Multiplier + +# Death Types +DEATH_LABEL_SAW,Killed by a saw,Von einer Säge getötet,Killed by a saw,Killed by a saw +DEATH_MSG_SAW,Better watch your step next time...,,, +DEATH_LABEL_DOOM_FALL,Doomed to fall,Zum Fallen verdammt,, +DEATH_MSG_DOOM_FALL,"Yes, you can fall off the map now...","Ja, du kannst jetzt von der map fallen...",, diff --git a/source/localization/localization.csv.import b/source/localization/localization.csv.import new file mode 100644 index 0000000..ca41576 --- /dev/null +++ b/source/localization/localization.csv.import @@ -0,0 +1,17 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://2x40dp3ggsul" + +[deps] + +files=["res://localization/localization.en.translation", "res://localization/localization.de.translation", "res://localization/localization.es.translation", "res://localization/localization.ja.translation"] + +source_file="res://localization/localization.csv" +dest_files=["res://localization/localization.en.translation", "res://localization/localization.de.translation", "res://localization/localization.es.translation", "res://localization/localization.ja.translation"] + +[params] + +compress=true +delimiter=0 diff --git a/source/localization/localization.de.translation b/source/localization/localization.de.translation new file mode 100644 index 0000000..0860617 Binary files /dev/null and b/source/localization/localization.de.translation differ diff --git a/source/localization/localization.en.translation b/source/localization/localization.en.translation new file mode 100644 index 0000000..7704992 Binary files /dev/null and b/source/localization/localization.en.translation differ diff --git a/source/localization/localization.es.translation b/source/localization/localization.es.translation new file mode 100644 index 0000000..90d2dd3 Binary files /dev/null and b/source/localization/localization.es.translation differ diff --git a/source/localization/localization.ja.translation b/source/localization/localization.ja.translation new file mode 100644 index 0000000..69e8e7b Binary files /dev/null and b/source/localization/localization.ja.translation differ diff --git a/source/localization/de.po b/source/localization/old_pot/de.po similarity index 78% rename from source/localization/de.po rename to source/localization/old_pot/de.po index 4666de8..99f572d 100644 --- a/source/localization/de.po +++ b/source/localization/old_pot/de.po @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" +"X-Generator: Poedit 3.7\n" #: src/ui/menus/main_menu/main_menu.tscn msgid "Magic N' Stuff" @@ -29,6 +29,10 @@ msgstr "Weiterspielen" msgid "NEW_GAME" msgstr "Neues Spiel" +#: src/ui/menus/main_menu/main_menu.tscn +msgid "Chase Test" +msgstr "" + #: src/ui/menus/main_menu/main_menu.tscn msgid "SETTINGS" msgstr "Einstellungen" @@ -61,10 +65,6 @@ msgstr "Audio" msgid "Master" msgstr "Master" -#: src/ui/menus/options_menu/options_menu.tscn -msgid "1.0" -msgstr "" - #: src/ui/menus/options_menu/options_menu.tscn msgid "SFX" msgstr "SFX" @@ -85,6 +85,23 @@ msgstr "Grafiken" msgid "Fullscreen" msgstr "Vollbild" +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Misc" +msgstr "Anderes" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing" +msgstr "Bewegungswackeln" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing Multiplier" +msgstr "Wackel-Multiplikator" + #: src/ui/menus/death_screen/death_screen.tscn +#: src/ui/menus/death_screen/death_screen.gd msgid "Killed by a saw" msgstr "Von einer Säge getötet" + +#: src/ui/menus/death_screen/death_screen.gd +msgid "Yes, you can now fall off the map..." +msgstr "Ja, du kannst jetzt von der map fallen..." diff --git a/source/localization/old_pot/en.po b/source/localization/old_pot/en.po new file mode 100644 index 0000000..c487d04 --- /dev/null +++ b/source/localization/old_pot/en.po @@ -0,0 +1,107 @@ +# LANGUAGE translation for MagicNStuff for the following files: +# res://components/ui/menus/main_menu/main_menu.tscn +# +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: MagicNStuff\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.7\n" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "Magic N' Stuff" +msgstr "" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "CONTINUE" +msgstr "Continue" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "NEW_GAME" +msgstr "New Game" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "Chase Test" +msgstr "" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "SETTINGS" +msgstr "Settings" + +#: src/ui/menus/main_menu/main_menu.tscn +msgid "QUIT" +msgstr "Quit" + +#: src/ui/menus/pause_menu/pause_menu.tscn +msgid "Paused" +msgstr "" + +#: src/ui/menus/pause_menu/pause_menu.tscn +msgid "Continue" +msgstr "" + +#: src/ui/menus/pause_menu/pause_menu.tscn +msgid "Settings" +msgstr "" + +#: src/ui/menus/pause_menu/pause_menu.tscn +msgid "Main Menu" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Audio" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Master" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "SFX" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Music" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Ambient" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Graphics" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Fullscreen" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Misc" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing Multiplier" +msgstr "" + +#: src/ui/menus/death_screen/death_screen.tscn +#: src/ui/menus/death_screen/death_screen.gd +msgid "Killed by a saw" +msgstr "" + +#: src/ui/menus/death_screen/death_screen.gd +msgid "Yes, you can now fall off the map..." +msgstr "" diff --git a/source/localization/translation.pot b/source/localization/old_pot/translation.pot similarity index 85% rename from source/localization/translation.pot rename to source/localization/old_pot/translation.pot index 85f0b68..bfbd48f 100644 --- a/source/localization/translation.pot +++ b/source/localization/old_pot/translation.pot @@ -10,14 +10,9 @@ msgid "" msgstr "" "Project-Id-Version: MagicNStuff\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" +"Content-Transfer-Encoding: 8-bit\n" #: src/ui/menus/main_menu/main_menu.tscn msgid "Magic N' Stuff" @@ -31,6 +26,10 @@ msgstr "" msgid "NEW_GAME" msgstr "" +#: src/ui/menus/main_menu/main_menu.tscn +msgid "Chase Test" +msgstr "" + #: src/ui/menus/main_menu/main_menu.tscn msgid "SETTINGS" msgstr "" @@ -63,10 +62,6 @@ msgstr "" msgid "Master" msgstr "" -#: src/ui/menus/options_menu/options_menu.tscn -msgid "1.0" -msgstr "" - #: src/ui/menus/options_menu/options_menu.tscn msgid "SFX" msgstr "" @@ -87,6 +82,14 @@ msgstr "" msgid "Fullscreen" msgstr "" -#: src/ui/menus/death_screen/death_screen.tscn -msgid "Killed by a saw" +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Misc" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing" +msgstr "" + +#: src/ui/menus/options_menu/options_menu.tscn +msgid "Headbobbing Multiplier" msgstr "" diff --git a/source/project.godot b/source/project.godot index 6daf99e..132e135 100644 --- a/source/project.godot +++ b/source/project.godot @@ -11,6 +11,7 @@ config_version=5 [application] config/name="MagicNStuff" +config/tags=PackedStringArray("game", "horror", "story") run/main_scene="uid://coga3ke4xw3a0" config/features=PackedStringArray("4.5", "Forward Plus") config/icon="uid://bovb32x4x3ps5" @@ -21,7 +22,7 @@ SettingsManager="*res://src/globals/autoloads/settings/settings_manager.gd" SceneFader="*res://src/globals/autoloads/scene_fader/scene_fader.tscn" GameGlobals="*res://src/globals/autoloads/game_globals.gd" InputManager="*res://src/globals/autoloads/input_manager.gd" -SaveManager="*res://src/globals/autoloads/save_manager.gd" +SaveManager="*res://src/globals/autoloads/save_manager/save_manager.gd" AudioManager="*res://src/globals/autoloads/audio/audio_manager.tscn" Logger="*res://addons/logger/logger.tscn" VersionDisplay="*res://addons/version_display/version_display.tscn" @@ -37,10 +38,11 @@ gdscript/warnings/untyped_declaration=2 [debug_draw_3d] settings/3d/volumetric_defaults/thickness=0.0 +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/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/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") [file_customization] @@ -49,17 +51,22 @@ folder_colors={ "res://assets/": "pink", "res://localization/": "teal", "res://resources/": "purple", +"res://resources/dialogue/": "yellow", "res://src/": "green", "res://src/core/": "gray", -"res://src/dialogue/": "yellow", "res://src/gameplay/": "orange", "res://src/gameplay/hazards/": "red", "res://src/globals/": "orange", -"res://src/levels/": "yellow", "res://src/ui/": "blue", -"res://src/vfx/": "pink" +"res://src/vfx/": "pink", +"res://src/worlds/": "yellow", +"res://tools/": "gray" } +[filesystem] + +import/blender/enabled=false + [input] ui_accept={ @@ -182,7 +189,7 @@ crouch={ [internationalization] -locale/translations=PackedStringArray("res://localization/de.mo", "res://localization/de.po", "res://localization/en.mo", "res://localization/en.po") +locale/translations=PackedStringArray("res://localization/localization.en.translation", "res://localization/localization.de.translation", "res://localization/localization.es.translation", "res://localization/localization.ja.translation") locale/translations_pot_files=PackedStringArray("res://src/ui/menus/main_menu/main_menu.tscn", "res://src/ui/menus/pause_menu/pause_menu.tscn", "res://src/ui/menus/options_menu/options_menu.tscn", "res://src/ui/menus/death_screen/death_screen.tscn") [layer_names] @@ -192,11 +199,17 @@ locale/translations_pot_files=PackedStringArray("res://src/ui/menus/main_menu/ma 3d_physics/layer_2="Characters" 3d_physics/layer_11="World" +[physics] + +jolt_physics_3d/motion_queries/recovery_amount=0.0 +jolt_physics_3d/collisions/collision_margin_fraction=0.0 + [rendering] anti_aliasing/quality/screen_space_aa=2 +occlusion_culling/use_occlusion_culling=true [run_configs] -data/configs=["{\"custom_scene\":\"uid://s7cw6ulb7kh7\",\"environment_variables\":{},\"name\":\"Game\",\"play_mode\":2}"] +data/configs=["{\"custom_scene\":\"uid://dspysc2bld6eu\",\"environment_variables\":{},\"name\":\"Exposition\",\"play_mode\":2}"] data/current=0 diff --git a/source/src/base_game_state.tres b/source/src/base_game_state.tres new file mode 100644 index 0000000..59aabc2 --- /dev/null +++ b/source/src/base_game_state.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="GameState" load_steps=3 format=3 uid="uid://dpgfu1y1cqhvk"] + +[ext_resource type="Script" uid="uid://fc1y4sr6ofvq" path="res://src/core/game_state.gd" id="1_0ugyj"] +[ext_resource type="Resource" uid="uid://d2qpu70epn5rs" path="res://src/worlds/expo_combined_info.tres" id="2_s8hvi"] + +[resource] +script = ExtResource("1_0ugyj") +world_info = ExtResource("2_s8hvi") +level_id = &"OutsideArea" +spawnpoint_id = &"OutsideSpawn" +use_player_transform = false +metadata/_custom_type_script = "uid://fc1y4sr6ofvq" diff --git a/source/src/core/camera/camera_effect.gd b/source/src/core/camera/camera_effect.gd new file mode 100644 index 0000000..69e678a --- /dev/null +++ b/source/src/core/camera/camera_effect.gd @@ -0,0 +1,38 @@ +@abstract +class_name CameraEffect +extends Node + + +@export var effect_enabled: bool = true: set = set_effect_enabled +@export var root_node: Node3D +@export var target: CameraEffectTarget + +var position: Vector3 +var rotation: Vector3 +var fov: float + + +func _process(delta: float) -> void: + if not effect_enabled: + return + + _process_effect(delta) + + target.position += position + target.rotation += rotation + + +func set_effect_enabled(value: bool) -> void: + effect_enabled = value + (_effect_enabled if effect_enabled else _effect_disabled).call() + + +@abstract func _process_effect(delta: float) -> void + + +func _effect_enabled() -> void: + pass + + +func _effect_disabled() -> void: + pass diff --git a/source/src/core/camera/camera_effect.gd.uid b/source/src/core/camera/camera_effect.gd.uid new file mode 100644 index 0000000..44df70e --- /dev/null +++ b/source/src/core/camera/camera_effect.gd.uid @@ -0,0 +1 @@ +uid://b7ts7t5npjj0k diff --git a/source/src/core/camera/camera_effect_target.gd b/source/src/core/camera/camera_effect_target.gd new file mode 100644 index 0000000..5bb755f --- /dev/null +++ b/source/src/core/camera/camera_effect_target.gd @@ -0,0 +1,17 @@ +class_name CameraEffectTarget +extends Node3D + +@export var camera: Camera3D + + +func _ready() -> void: + RenderingServer.frame_post_draw.connect(cleanup_effects, CONNECT_DEFERRED) + + +func cleanup_effects() -> void: + if not is_instance_valid(get_tree()): + return + + if not get_tree().paused: + position = Vector3.ZERO + rotation = Vector3.ZERO diff --git a/source/src/core/camera/camera_effect_target.gd.uid b/source/src/core/camera/camera_effect_target.gd.uid new file mode 100644 index 0000000..2ff78c7 --- /dev/null +++ b/source/src/core/camera/camera_effect_target.gd.uid @@ -0,0 +1 @@ +uid://dyoa3tnirv7wh diff --git a/source/src/core/camera/camera_trauma_causer.gd b/source/src/core/camera/camera_shaker/camera_trauma_causer.gd similarity index 100% rename from source/src/core/camera/camera_trauma_causer.gd rename to source/src/core/camera/camera_shaker/camera_trauma_causer.gd diff --git a/source/src/core/camera/camera_trauma_causer.gd.uid b/source/src/core/camera/camera_shaker/camera_trauma_causer.gd.uid similarity index 100% rename from source/src/core/camera/camera_trauma_causer.gd.uid rename to source/src/core/camera/camera_shaker/camera_trauma_causer.gd.uid diff --git a/source/src/core/camera/shaking_camera.gd b/source/src/core/camera/camera_shaker/shaking_camera.gd similarity index 100% rename from source/src/core/camera/shaking_camera.gd rename to source/src/core/camera/camera_shaker/shaking_camera.gd diff --git a/source/src/core/camera/shaking_camera.gd.uid b/source/src/core/camera/camera_shaker/shaking_camera.gd.uid similarity index 100% rename from source/src/core/camera/shaking_camera.gd.uid rename to source/src/core/camera/camera_shaker/shaking_camera.gd.uid diff --git a/source/src/core/camera/effects/headbobbing_effect.gd b/source/src/core/camera/effects/headbobbing_effect.gd new file mode 100644 index 0000000..dcdb1fe --- /dev/null +++ b/source/src/core/camera/effects/headbobbing_effect.gd @@ -0,0 +1,45 @@ +class_name HeadbobbingEffect +extends CameraEffect + + +@export var character: Character3D +@export var bobbing_range: float = 0.05 +@export var bobbing_frequency: float = 2.0 +@export var bobbing_multiplier: float = 1.0 +@export var idle_speed: float = 1.0 + +var time: float = 0.0 +var headbobbing_multiplier: float = 1.0 # User setting. + + +func _ready() -> void: + var _update_settings: Callable = func() -> void: + effect_enabled = SettingsManager.get_setting(&"misc", &"headbobbing") + headbobbing_multiplier = SettingsManager.get_setting(&"misc", &"headbobbing_multiplier") + + SettingsManager.settings_changed.connect(_update_settings) + ProjectSettings.settings_changed.connect(_update_settings) + _update_settings.call() + + +func _process_effect(delta: float) -> void: + var headbob_speed: float = (character.velocity * Utils.VEC3_HOR).length() + headbob_speed = maxf(headbob_speed, idle_speed) + + time += delta * headbob_speed * bobbing_multiplier + time = fposmod(time, TAU) + + position = Vector3.ZERO + rotation = Vector3.ZERO + + position.y = sin(time * bobbing_frequency) * (bobbing_range * headbobbing_multiplier) + position.x = cos(time * bobbing_frequency / 2) * (bobbing_range * headbobbing_multiplier) + rotation.z = deg_to_rad(lerp(position.x, position.y, 0.5)) * TAU + + rotation = rotation.rotated(Vector3.UP, root_node.rotation.y) + + +func _effect_disabled() -> void: + position = Vector3.ZERO + rotation = Vector3.ZERO + time = 0.0 diff --git a/source/src/core/camera/effects/headbobbing_effect.gd.uid b/source/src/core/camera/effects/headbobbing_effect.gd.uid new file mode 100644 index 0000000..83c6a20 --- /dev/null +++ b/source/src/core/camera/effects/headbobbing_effect.gd.uid @@ -0,0 +1 @@ +uid://ss6nj3fn2n77 diff --git a/source/src/core/camera/effects/impact_effect.gd b/source/src/core/camera/effects/impact_effect.gd new file mode 100644 index 0000000..eaaec3f --- /dev/null +++ b/source/src/core/camera/effects/impact_effect.gd @@ -0,0 +1,47 @@ +class_name ImpactEffect +extends CameraEffect + +@export var character: Character3D +@export var impact_curve: Curve +@export var min_fall_velocity: float = 0.5 +@export var max_fall_velocity: float = 7.5 + +var _direction := Vector3.ZERO +var _time: float = 0.0 +var _initial_time: float = 0.0 + + +func _ready() -> void: + character.landed.connect(_on_character_landed) + character.jumped.connect(_on_character_jumped) + + +func _process_effect(delta: float) -> void: + if _time <= 0.0: + return + + var impact: float = impact_curve.sample(1.0 - (_time / maxf(_initial_time, 0.001))) + var _position := Vector3.ZERO.lerp(_direction, impact) + + position = _position.rotated(Vector3.LEFT, root_node.rotation.x) + + _time -= delta + + +func add_impact(direction: Vector3, duration: float) -> void: + _time += duration + _initial_time = _time + _direction = direction + + +func _on_character_landed(land_velocity: Vector3) -> void: + var velocity: float = absf(land_velocity.y) + + if velocity >= min_fall_velocity: + var fall_velocity: float = minf(velocity * 0.5, max_fall_velocity) + add_impact(Vector3.DOWN * 0.15 * fall_velocity, 0.35) + + +func _on_character_jumped() -> void: + _time /= 2.0 + _initial_time /= 2.0 diff --git a/source/src/core/camera/effects/impact_effect.gd.uid b/source/src/core/camera/effects/impact_effect.gd.uid new file mode 100644 index 0000000..f92a589 --- /dev/null +++ b/source/src/core/camera/effects/impact_effect.gd.uid @@ -0,0 +1 @@ +uid://xfpktxhb2i7t diff --git a/source/src/core/camera/effects/step_smoothing_effect.gd b/source/src/core/camera/effects/step_smoothing_effect.gd new file mode 100644 index 0000000..24e0f7b --- /dev/null +++ b/source/src/core/camera/effects/step_smoothing_effect.gd @@ -0,0 +1,42 @@ +class_name StepSmoothingEffect +extends CameraEffect + +@export var character: Character3D +@export var step_speed: float = 8.0 + +var offset_height: float = 0.0 +var _previous_position: Vector3 +var _target_height: float = 0.0 +var _step_smoothing: bool = false + + +func _ready() -> void: + _setup_step_smoothing() + + +func _process_effect(delta: float) -> void: + if _step_smoothing and is_instance_valid(target): + _target_height = lerp(_target_height, 0.0, step_speed * delta) + + if absf(_target_height) < 0.0025: + _target_height = 0.0 + _step_smoothing = false + + var target_pos := Vector3.UP * (offset_height + _target_height) + position = target_pos.rotated(Vector3.LEFT, root_node.rotation.x) + + _previous_position = root_node.global_position + + +func smooth_step(height_change: float) -> void: + _target_height -= height_change + _step_smoothing = true + + +func _setup_step_smoothing() -> void: + character.on_stair_step.connect(_on_stair_step) + offset_height = target.position.y + + +func _on_stair_step() -> void: + smooth_step(root_node.global_position.y - _previous_position.y) diff --git a/source/src/core/camera/effects/step_smoothing_effect.gd.uid b/source/src/core/camera/effects/step_smoothing_effect.gd.uid new file mode 100644 index 0000000..33dc667 --- /dev/null +++ b/source/src/core/camera/effects/step_smoothing_effect.gd.uid @@ -0,0 +1 @@ +uid://ds461t4g8nlnh diff --git a/source/src/core/chapter/chapter_area.gd b/source/src/core/chapter/chapter_area.gd index 12db9f0..cdb7deb 100644 --- a/source/src/core/chapter/chapter_area.gd +++ b/source/src/core/chapter/chapter_area.gd @@ -15,14 +15,14 @@ func _ready() -> void: func set_chapter() -> void: - if chapter_index > GameGlobals.chapter_index: - GameGlobals.set_chapter_index(chapter_index) + if chapter_index > GameGlobals.game_state.chapter_index: + GameGlobals.game_state.chapter_index = chapter_index if override_spawn_id: - GameGlobals.set_spawn_id(spawn_id) + GameGlobals.game_state.spawnpoint_id = spawn_id if do_save: - SaveManager.save_game() + GameGlobals.request_save() func _on_body_entered(body: Node3D) -> void: diff --git a/source/src/core/damage/death_area.gd b/source/src/core/damage/death_area.gd index b628919..6d8de49 100644 --- a/source/src/core/damage/death_area.gd +++ b/source/src/core/damage/death_area.gd @@ -5,9 +5,9 @@ extends Area3D func _ready() -> void: - body_entered.connect(_on_body_entered) + body_entered.connect(_on_body_entered) func _on_body_entered(body: Node3D) -> void: - if body == GameGlobals.get_player(): - GameGlobals.kill_player(death_type) \ No newline at end of file + if body == GameGlobals.get_player(): + GameGlobals.kill_player(death_type) diff --git a/source/src/core/game_state.gd b/source/src/core/game_state.gd new file mode 100644 index 0000000..4798cbb --- /dev/null +++ b/source/src/core/game_state.gd @@ -0,0 +1,11 @@ +class_name GameState +extends Resource + + +@export var world_info: WorldInfo +@export var level_id: StringName = &"" +@export var spawnpoint_id: StringName = &"" +@export var chapter_index: int = 0 +@export var level_data: Dictionary = {} +@export var use_player_transform: bool = true +@export var player_transform: Transform3D diff --git a/source/src/core/game_state.gd.uid b/source/src/core/game_state.gd.uid new file mode 100644 index 0000000..c938729 --- /dev/null +++ b/source/src/core/game_state.gd.uid @@ -0,0 +1 @@ +uid://fc1y4sr6ofvq diff --git a/source/src/core/game_state_overrider.gd b/source/src/core/game_state_overrider.gd new file mode 100644 index 0000000..82522e1 --- /dev/null +++ b/source/src/core/game_state_overrider.gd @@ -0,0 +1,70 @@ +@tool +class_name GameStateOverrider +extends Area3D + +@export var do_save: bool = true +@export var cooldown: float = 30.0 + +@export_group("Chapter") +@export_custom(PROPERTY_HINT_GROUP_ENABLE, "") var override_chapter_index: bool = true +@export var chapter_override_if_higher: bool = true +@export var chapter_index: int = 0 + +@export_group("Level") +@export_custom(PROPERTY_HINT_GROUP_ENABLE, "") var override_level: bool = true +@export var level_loader: LevelLoader + +@export_group("Spawnpoint") +@export_custom(PROPERTY_HINT_GROUP_ENABLE, "") var override_spawnpoint_id: bool = true +@export var spawnpoint: PlayerSpawnPoint + +@export_group("Player") +@export_custom(PROPERTY_HINT_GROUP_ENABLE, "") var override_player: bool = true +@export var use_player_transform: bool = true +#@export var player_must_be_on_floor: bool = true + +var cooldown_timer := Timer.new() + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + if not Engine.is_editor_hint(): + cooldown_timer.one_shot = true + cooldown_timer.timeout.connect(_on_cooldown_timeout) + add_child(cooldown_timer) + + body_entered.connect(_on_body_entered) + + +func override_game_state() -> void: + if not cooldown_timer.is_stopped(): + return + + if override_chapter_index: + if not chapter_override_if_higher or chapter_index > GameGlobals.game_state.chapter_index: + GameGlobals.game_state.chapter_index = chapter_index + + if override_spawnpoint_id: + GameGlobals.game_state.spawnpoint_id = spawnpoint.spawn_id + + if override_player: + GameGlobals.game.store_player_transform() + GameGlobals.game_state.use_player_transform = use_player_transform + + if override_level: + GameGlobals.game_state.level_id = level_loader.level_id + + if do_save: + GameGlobals.request_save() + + if cooldown > 0.0: + cooldown_timer.start(cooldown) + + +func _on_body_entered(body: Node3D) -> void: + if body == GameGlobals.get_player(): + override_game_state() + + +func _on_cooldown_timeout() -> void: + for body: Node3D in get_overlapping_bodies(): + _on_body_entered(body) diff --git a/source/src/core/game_state_overrider.gd.uid b/source/src/core/game_state_overrider.gd.uid new file mode 100644 index 0000000..d501917 --- /dev/null +++ b/source/src/core/game_state_overrider.gd.uid @@ -0,0 +1 @@ +uid://u2s0spt1rud4 diff --git a/source/src/core/level/level_loader.gd b/source/src/core/level/level_loader.gd deleted file mode 100644 index ccbeb9c..0000000 --- a/source/src/core/level/level_loader.gd +++ /dev/null @@ -1,81 +0,0 @@ -@tool -class_name LevelLoader -extends Marker3D - -signal level_loaded -signal level_unloaded - -static var initial_level_reference: PackedScene - -@export_file("*.tscn", "*.scn") var scene_path: String -@export var load_threaded: bool = true -@export_tool_button("Load Level", "Slot") var editor_load: Callable = load_level -@export_tool_button("Unload Level", "Clear") var editor_unload: Callable = unload_level -@export_group("Level ID") -@export var override_level_id: bool = true -@export var level_id: StringName = &"" - -var level: Node -var is_loading: bool = false - - -func load_level() -> void: - if is_loading: - return - - if not Engine.is_editor_hint() and override_level_id: - GameGlobals.set_level(level_id) - - if is_instance_valid(level): - if _get_uid(level.scene_file_path) == _get_uid(scene_path): - push_warning("Level already loaded") - return - - unload_level() - - is_loading = true - - var scene: PackedScene - - if load_threaded: - scene = await _load_level_threaded() - else: - scene = load(scene_path) - - assert(is_instance_valid(scene), "Scene is not valid.") - - level = scene.instantiate() - add_child(level) - - is_loading = false - initial_level_reference = null - level_loaded.emit() - - -func unload_level() -> void: - if is_instance_valid(level): - level.queue_free() - - # Remove children that have no owner. Usually happens when duplicating the node (in the editor). - for child: Node in get_children(): - if child.owner == null: - child.queue_free() - - initial_level_reference = null - level_unloaded.emit() - - -func _load_level_threaded() -> PackedScene: - var interactive_loader := InteractiveLoader.new() - interactive_loader.auto_free = true - add_child(interactive_loader) - - var resource: Resource = await interactive_loader.load_threaded(scene_path) - #interactive_loader.queue_free() - return resource - - -func _get_uid(path: String) -> int: - var uid: int = ResourceUID.text_to_id(ResourceUID.path_to_uid(path)) - #print("UID: ", uid, " Path: ", path) - return uid diff --git a/source/src/core/spawnpoint/checkpoint_area.gd b/source/src/core/spawnpoint/checkpoint_area.gd new file mode 100644 index 0000000..b202711 --- /dev/null +++ b/source/src/core/spawnpoint/checkpoint_area.gd @@ -0,0 +1,28 @@ +class_name CheckpointArea +extends Area3D + +#@export var checkpoint_priority: int = 0 +@export var spawnpoint: PlayerSpawnPoint +@export var do_save: bool = true +@export var override_chapter: bool = false +@export var chapter_idx: int = 0 + + +func _ready() -> void: + body_entered.connect(_on_body_entered) + + +func checkpoint_hit() -> void: + if is_instance_valid(spawnpoint): + GameGlobals.game_state.spawnpoint_id = spawnpoint.spawn_id + + if override_chapter: + GameGlobals.game_state.chapter_index = chapter_idx + + if do_save: + GameGlobals.request_save() + + +func _on_body_entered(body: Node3D) -> void: + if body is PlayerCharacter: + checkpoint_hit() diff --git a/source/src/core/spawnpoint/checkpoint_area.gd.uid b/source/src/core/spawnpoint/checkpoint_area.gd.uid new file mode 100644 index 0000000..babdea0 --- /dev/null +++ b/source/src/core/spawnpoint/checkpoint_area.gd.uid @@ -0,0 +1 @@ +uid://boau8mfvi2nxl diff --git a/source/src/core/spawnpoint/checkpoint_area.tscn b/source/src/core/spawnpoint/checkpoint_area.tscn new file mode 100644 index 0000000..cc70ec1 --- /dev/null +++ b/source/src/core/spawnpoint/checkpoint_area.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://b3pubhidvjsxt"] + +[ext_resource type="Script" uid="uid://boau8mfvi2nxl" path="res://src/core/spawnpoint/checkpoint_area.gd" id="1_2pa8x"] + +[node name="CheckpointArea" type="Area3D"] +collision_layer = 0 +collision_mask = 2 +monitorable = false +script = ExtResource("1_2pa8x") +metadata/_custom_type_script = "uid://boau8mfvi2nxl" diff --git a/source/src/core/player_spawn_point.gd b/source/src/core/spawnpoint/player_spawn_point.gd similarity index 97% rename from source/src/core/player_spawn_point.gd rename to source/src/core/spawnpoint/player_spawn_point.gd index 429ae4c..1827869 100644 --- a/source/src/core/player_spawn_point.gd +++ b/source/src/core/spawnpoint/player_spawn_point.gd @@ -73,7 +73,7 @@ var _idx_label: Label3D var _config_warnings_hint: Label3D -static func get_spawn_point_by_identifier(identifier: StringName) -> PlayerSpawnPoint: +static func get_spawnpoint_by_identifier(identifier: StringName) -> PlayerSpawnPoint: for spawn_point: PlayerSpawnPoint in PlayerSpawnPoint.spawn_points: if spawn_point.spawn_id == identifier: return spawn_point diff --git a/source/src/core/player_spawn_point.gd.uid b/source/src/core/spawnpoint/player_spawn_point.gd.uid similarity index 100% rename from source/src/core/player_spawn_point.gd.uid rename to source/src/core/spawnpoint/player_spawn_point.gd.uid diff --git a/source/src/core/vibration_component.gd b/source/src/core/vibration_component.gd index 0978c8b..d2f65c1 100644 --- a/source/src/core/vibration_component.gd +++ b/source/src/core/vibration_component.gd @@ -4,6 +4,7 @@ extends Node ## A small helper node to quickly perform controller vibrations. +signal started_vibration ## If [code]false[/code], calling [method vibrate] will not start a controller vibration. @export var enabled: bool = true: @@ -21,6 +22,8 @@ extends Node set = set_device ## The delay the vibration by this amount. @export var delay: float = 0.0 +@export var editor_delay: float = 0.0 +@export var sync_to_audio: bool = false @warning_ignore_start("unused_private_class_variable") @export_tool_button("Test Vibration", "InputEventJoypadMotion") @@ -74,9 +77,18 @@ func vibrate() -> void: return if enabled: + if sync_to_audio: + var last_mix_time: float = AudioServer.get_time_since_last_mix() + var output_latency: float = AudioServer.get_output_latency() + #SPrint.print_msg("Audio Delay: %s" % (last_mix_time + output_latency)) + await get_tree().create_timer(last_mix_time + output_latency).timeout + if delay > 0.0: await get_tree().create_timer(delay).timeout + if OS.is_debug_build() and editor_delay > 0.0: + await get_tree().create_timer(editor_delay).timeout + Input.start_joy_vibration( device, clampf(weak_magnitude * magnitude_multiplier, 0.0, 1.0), @@ -84,6 +96,8 @@ func vibrate() -> void: duration ) + #started_vibration.emit() + ## Stops the vibration of the joypad, based on the [member device] parameter, ## started with [method vibrate]. diff --git a/source/src/core/level/level.gd b/source/src/core/world/level/level.gd similarity index 100% rename from source/src/core/level/level.gd rename to source/src/core/world/level/level.gd diff --git a/source/src/core/level/level.gd.uid b/source/src/core/world/level/level.gd.uid similarity index 100% rename from source/src/core/level/level.gd.uid rename to source/src/core/world/level/level.gd.uid diff --git a/source/src/core/level/level_area.gd b/source/src/core/world/level/level_area.gd similarity index 76% rename from source/src/core/level/level_area.gd rename to source/src/core/world/level/level_area.gd index 19e565e..67aa129 100644 --- a/source/src/core/level/level_area.gd +++ b/source/src/core/world/level/level_area.gd @@ -6,26 +6,35 @@ extends Area3D @export var keep_loaded_duration: float = 3.0 -func _enter_tree() -> void: +#func _enter_tree() -> void: + + +func _ready() -> void: for spawnpoint: PlayerSpawnPoint in loaded_if_spawnpoint: - if GameGlobals.spawn_id == spawnpoint.spawn_id: + if GameGlobals.game_state.spawnpoint_id == spawnpoint.spawn_id: var was_threaded: bool = level_loader.load_threaded level_loader.load_threaded = false load_level() level_loader.load_threaded = was_threaded - return + break + if is_inside_tree(): + await get_tree().process_frame -func _ready() -> void: - await get_tree().process_frame - await get_tree().process_frame + if is_inside_tree(): + await get_tree().process_frame body_entered.connect(load_level.unbind(1)) body_exited.connect(unload_level.unbind(1)) + if has_overlapping_bodies(): + load_level() + func load_level() -> void: assert(is_instance_valid(level_loader), "Level loader needs to be set.") + print(name, ": Loading level '%s'" % level_loader.scene_path) + print_stack() level_loader.load_level() diff --git a/source/src/core/level/level_area.gd.uid b/source/src/core/world/level/level_area.gd.uid similarity index 100% rename from source/src/core/level/level_area.gd.uid rename to source/src/core/world/level/level_area.gd.uid diff --git a/source/src/core/level/level_area.tscn b/source/src/core/world/level/level_area.tscn similarity index 85% rename from source/src/core/level/level_area.tscn rename to source/src/core/world/level/level_area.tscn index 09ed3b7..b8e2073 100644 --- a/source/src/core/level/level_area.tscn +++ b/source/src/core/world/level/level_area.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://drr80goa61wrx"] -[ext_resource type="Script" uid="uid://b6pf67e8p8ly1" path="res://src/core/level/level_area.gd" id="1_b21gt"] +[ext_resource type="Script" uid="uid://b6pf67e8p8ly1" path="res://src/core/world/level/level_area.gd" id="1_b21gt"] [node name="LevelArea" type="Area3D"] collision_layer = 0 diff --git a/source/src/core/world/level/level_info.gd b/source/src/core/world/level/level_info.gd new file mode 100644 index 0000000..b31e0d1 --- /dev/null +++ b/source/src/core/world/level/level_info.gd @@ -0,0 +1,5 @@ +class_name LevelInfo +extends Resource + +@export_file("*.tscn", "*.scn") var level_path: String = "" +@export var level_id: StringName = &"" diff --git a/source/src/core/world/level/level_info.gd.uid b/source/src/core/world/level/level_info.gd.uid new file mode 100644 index 0000000..52009ca --- /dev/null +++ b/source/src/core/world/level/level_info.gd.uid @@ -0,0 +1 @@ +uid://dhaus6vq5oigj diff --git a/source/src/core/world/level/level_loader.gd b/source/src/core/world/level/level_loader.gd new file mode 100644 index 0000000..d586cea --- /dev/null +++ b/source/src/core/world/level/level_loader.gd @@ -0,0 +1,142 @@ +@tool +class_name LevelLoader +extends Marker3D + +signal level_loaded +signal level_unloaded + +#static var initial_level_references: Array[PackedScene] = [] +static var level_loaders: Array[LevelLoader] + +@export_file("*.tscn", "*.scn") var scene_path: String +@export_tool_button("Edit Level", "Load") var editor_edit: Callable = ed_edit_level +@export var load_threaded: bool = true +@export_tool_button("Load Level", "Slot") var editor_load: Callable = load_level +@export_tool_button("Unload Level", "Clear") var editor_unload: Callable = unload_level +@export_group("Level ID") +@export var override_level_id: bool = true +@export var level_id: StringName = &"": + set(value): + level_id = value + + if Engine.is_editor_hint(): + _id_label.text = level_id + #if not is_node_ready(): + #await ready + +var level: Node +var is_loading: bool = false +var _id_label: Label3D + + +static func load_initial_levels() -> void: + var loaded_scenes: Array[PackedScene] = [] + + for loader: LevelLoader in level_loaders: + print("Iterating loader: %s" % loader.name) + var additional_scene: PackedScene = SceneFader.get_additional_scene(loader.scene_path) + + if is_instance_valid(additional_scene): + print("Loader %s loading initial scene %s" % [loader.name, additional_scene.resource_path]) + loader._load_initial(additional_scene) + loaded_scenes.append(additional_scene) + + # Remove the loaded reference. + for loaded_scene: PackedScene in loaded_scenes: + SceneFader.additional_scenes.erase(loaded_scene) + +#static func load_initial_levels() -> void: + #for loader: LevelLoader in level_loaders: + #for level_reference: PackedScene in initial_level_references: + #if _get_uid(loader.scene_path) == _get_uid(level_reference.resource_path): + #var was_threaded: bool = loader.load_threaded + #loader.load_threaded = false + #loader.load_level() + #loader.load_threaded = was_threaded + #return +# + #initial_level_references.clear() + + +func _init() -> void: + if Engine.is_editor_hint(): + # Setup labels. + _id_label = Label3D.new() + _id_label.billboard = BaseMaterial3D.BILLBOARD_ENABLED + _id_label.shaded = false + _id_label.font_size = 64 + add_child(_id_label, false, Node.INTERNAL_MODE_FRONT) + _id_label.position.y = 0.25 + else: + level_loaders.append(self) + + +func _exit_tree() -> void: + level_loaders.erase(self) + + +func load_level() -> void: + if is_loading: + return + + if not Engine.is_editor_hint() and override_level_id: + GameGlobals.game_state.level_id = level_id + + if is_instance_valid(level): + if Utils.get_uid(level.scene_file_path) == Utils.get_uid(scene_path): + #push_warning("Level already loaded") + return + + unload_level() + + is_loading = true + + var scene: PackedScene + + if load_threaded: + scene = await _load_level_threaded() + else: + scene = load(scene_path) + + assert(is_instance_valid(scene), "Scene is not valid.") + + level = scene.instantiate() + add_child(level) + + is_loading = false + + level_loaded.emit() + + +func unload_level() -> void: + if is_instance_valid(level): + level.queue_free() + + # Remove children that have no owner. Usually happens when duplicating the node (in the editor). + for child: Node in get_children(): + if child.owner == null: + child.queue_free() + + level_unloaded.emit() + + +func ed_edit_level() -> void: + #EditorInterface.open_scene_from_path(scene_path) + Engine.get_singleton(&"EditorInterface").open_scene_from_path.call_deferred(scene_path) + + +func _load_level_threaded() -> PackedScene: + var interactive_loader := InteractiveLoader.new() + interactive_loader.auto_free = true + add_child(interactive_loader) + + var resource: Resource = await interactive_loader.load_threaded(scene_path) + #interactive_loader.queue_free() + return resource + + +func _load_initial(scene: PackedScene) -> void: + level = scene.instantiate() + add_child(level) + + level_loaded.emit() diff --git a/source/src/core/level/level_loader.gd.uid b/source/src/core/world/level/level_loader.gd.uid similarity index 100% rename from source/src/core/level/level_loader.gd.uid rename to source/src/core/world/level/level_loader.gd.uid diff --git a/source/src/core/level/level_manager.gd b/source/src/core/world/level/level_manager.gd similarity index 100% rename from source/src/core/level/level_manager.gd rename to source/src/core/world/level/level_manager.gd diff --git a/source/src/core/level/level_manager.gd.uid b/source/src/core/world/level/level_manager.gd.uid similarity index 100% rename from source/src/core/level/level_manager.gd.uid rename to source/src/core/world/level/level_manager.gd.uid diff --git a/source/src/core/level/load_threshold_area.gd b/source/src/core/world/level/load_threshold_area.gd similarity index 100% rename from source/src/core/level/load_threshold_area.gd rename to source/src/core/world/level/load_threshold_area.gd diff --git a/source/src/core/level/load_threshold_area.gd.uid b/source/src/core/world/level/load_threshold_area.gd.uid similarity index 100% rename from source/src/core/level/load_threshold_area.gd.uid rename to source/src/core/world/level/load_threshold_area.gd.uid diff --git a/source/src/core/world/world.gd b/source/src/core/world/world.gd new file mode 100644 index 0000000..b5df658 --- /dev/null +++ b/source/src/core/world/world.gd @@ -0,0 +1,111 @@ +@tool +class_name World +extends Node + +@export var player_scene: PackedScene = preload(GameGlobals.PLAYER_PATH) +@export var capture_mouse_on_ready: bool = true +@export var initial_spawn_id: StringName = &""#: + #set(value): + #initial_spawn_id = value + #update_configuration_warnings() +@export_group("Debug", "debug_") +@export_custom(PROPERTY_HINT_GROUP_ENABLE, "checkbox_only") var debug_enabled: bool = false +@export var debug_spawn_point: StringName = &"" +@export_range(-1, 0, 1, "or_greater") var debug_chapter_idx: int = -1 + +var player_character: PlayerCharacter +var player_alive: bool = true +var in_cutscene: bool = false + + +#func _get_configuration_warnings() -> PackedStringArray: + #var warnings: PackedStringArray = [] +# + #if initial_spawn_id.is_empty(): + #warnings.append("initial_spawn_id can't be empty.") +# + #return warnings + + +func _ready() -> void: + if Engine.is_editor_hint(): + return + + _update_spawnpoint() + + LevelLoader.load_initial_levels() + + player_character = _create_player() + _spawn_player() + + if capture_mouse_on_ready: + InputManager.set_mouse_captured(true) + + +func spawn_at_spawnpoint(spawnpoint_id: StringName) -> void: + var spawnpoint := PlayerSpawnPoint.get_spawnpoint_by_identifier(spawnpoint_id) + + if is_instance_valid(spawnpoint): + player_character.global_position = spawnpoint.global_position + player_character.head.global_rotation = spawnpoint.global_rotation + + +func kill_player(death_type: GameGlobals.DeathTypes) -> void: + if not player_alive: + return + + get_tree().paused = true + + SPrint.print_msg( + "Killed player. Death Type: %s" % death_type, -1.0, SPrint.NORMAL_RICH, Color.ORANGE_RED + ) + + player_character.process_mode = Node.PROCESS_MODE_DISABLED + + AudioManager.flush_audio_by_bus(AudioManager.SFX) + AudioManager.flush_audio_by_bus(AudioManager.MUSIC) + AudioManager.flush_audio_by_bus(AudioManager.AMBIENCE) + + player_alive = false + GameGlobals.player_died.emit(death_type) + + +func get_player_transform() -> Transform3D: + var position: Vector3 = player_character.global_position + var head_basis: Basis = player_character.head.global_basis + var transform := Transform3D(head_basis, position) + return transform + + +func restore_player_transform() -> void: + var transform: Transform3D = GameGlobals.game_state.player_transform + player_character.head.global_basis = transform.basis + player_character.global_position = transform.origin + + +func _update_spawnpoint() -> void: + if not is_instance_valid(PlayerSpawnPoint.get_spawnpoint_by_identifier(GameGlobals.game_state.spawnpoint_id)): + GameGlobals.game_state.spawnpoint_id = initial_spawn_id + + if OS.has_feature("editor") and debug_enabled: + if not debug_spawn_point.is_empty(): + GameGlobals.game_state.spawnpoint_id = debug_spawn_point + + if debug_chapter_idx >= 0: + GameGlobals.game_state.chapter_index = debug_chapter_idx + + +func _create_player() -> PlayerCharacter: + var player: PlayerCharacter = player_scene.instantiate() + add_child(player) + return player + + +func _spawn_player() -> void: + if ( + not (OS.has_feature("editor") and debug_enabled) + and GameGlobals.game_state.use_player_transform + ): + restore_player_transform() + else: + spawn_at_spawnpoint(GameGlobals.game_state.spawnpoint_id) diff --git a/source/src/core/world/world.gd.uid b/source/src/core/world/world.gd.uid new file mode 100644 index 0000000..be491a8 --- /dev/null +++ b/source/src/core/world/world.gd.uid @@ -0,0 +1 @@ +uid://c8maslbw1vbq3 diff --git a/source/src/core/world/world.tscn b/source/src/core/world/world.tscn new file mode 100644 index 0000000..6c62f41 --- /dev/null +++ b/source/src/core/world/world.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://8y3swwnmxwg2"] + +[ext_resource type="Script" uid="uid://c8maslbw1vbq3" path="res://src/core/world/world.gd" id="1_lkur0"] + +[node name="World" type="Node"] +script = ExtResource("1_lkur0") +metadata/_custom_type_script = "uid://c8maslbw1vbq3" diff --git a/source/src/core/world/world_info.gd b/source/src/core/world/world_info.gd new file mode 100644 index 0000000..cbb7c85 --- /dev/null +++ b/source/src/core/world/world_info.gd @@ -0,0 +1,24 @@ +class_name WorldInfo +extends Resource + +@export_file("*.tscn", "*.scn") var world_path: String +@export var initial_level: StringName +@export var levels: Array[LevelInfo] + + +func get_initial_level_paths() -> PackedStringArray: + return get_level_paths_from_id(initial_level) + + +func get_level_paths_from_id(level_id: StringName) -> PackedStringArray: + var matching_level_ids: PackedStringArray = [] + + for level: LevelInfo in levels: + if level.level_id == level_id: + matching_level_ids.append(level.level_path) + + if not matching_level_ids.is_empty(): + return matching_level_ids + + push_warning("No level_id found for initial level id '%s' in '%s'." % [level_id, resource_path]) + return [] diff --git a/source/src/core/world/world_info.gd.uid b/source/src/core/world/world_info.gd.uid new file mode 100644 index 0000000..1ff20be --- /dev/null +++ b/source/src/core/world/world_info.gd.uid @@ -0,0 +1 @@ +uid://dlf1vq0qej6bs diff --git a/source/src/game.gd b/source/src/game.gd index ed5b534..3004611 100644 --- a/source/src/game.gd +++ b/source/src/game.gd @@ -1,43 +1,62 @@ class_name Game extends Node -const PLAYER: PackedScene = preload(GameGlobals.PLAYER_PATH) - -@export_group("Debug", "debug_") -@export_custom(PROPERTY_HINT_GROUP_ENABLE, "checkbox_only") var debug_enabled: bool = false -@export var debug_spawn_point: StringName = &"" -@export_range(-1, 0, 1, "or_greater") var debug_chapter_idx: int = -1 - -var player_character: PlayerCharacter +var world: World: get = get_world, set = set_world +var load_to_world_info: bool = true func _init() -> void: GameGlobals.game = self -func _enter_tree() -> void: - if OS.has_feature("editor") and debug_enabled: - if not debug_spawn_point.is_empty(): - GameGlobals.set_spawn_id(debug_spawn_point) - - if debug_chapter_idx >= 0: - GameGlobals.set_chapter_index(debug_chapter_idx) - - # Called when the node enters the scene tree for the first time. func _ready() -> void: - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - spawn_player() + AudioManager.play_audio(preload("uid://vft8mjglpa2u"), AudioManager.AMBIENCE) - AudioManager.play_audio(preload("uid://cyxvsy5wjxhl7"), AudioManager.AMBIENCE) + if load_to_world_info: + load_to_world(GameGlobals.game_state.world_info) + elif SceneFader.is_fading: + SceneFader.fade_out() -func spawn_player() -> void: - player_character = PLAYER.instantiate() - add_child(player_character) +func load_to_world(world_info: WorldInfo) -> void: + await SceneFader.fade_in() - var spawnpoint := PlayerSpawnPoint.get_spawn_point_by_identifier(GameGlobals.spawn_id) + if is_instance_valid(world): + world.queue_free() - if is_instance_valid(spawnpoint): - player_character.global_position = spawnpoint.global_position - player_character.head.global_rotation = spawnpoint.global_rotation + var interactive_loader := InteractiveLoader.new() + interactive_loader.auto_free = true + add_child(interactive_loader) + + var path: String = world_info.world_path + var loaded_world: PackedScene = await interactive_loader.load_threaded(path) + + var new_world: Node = loaded_world.instantiate() + assert(new_world is World, "Loaded scene is not of type [World].") + add_child(new_world) + + SceneFader.fade_out() + + set_world(new_world) + + +func get_world() -> World: + return world + + +func set_world(new_world: World) -> void: + world = new_world + + +func reload_world() -> void: + var scene: PackedScene = load(world.scene_file_path) + world.queue_free() + set_world(null) + await get_tree().process_frame + set_world(scene.instantiate()) + add_child(world) + + +func store_player_transform() -> void: + GameGlobals.game_state.player_transform = get_world().get_player_transform() diff --git a/source/src/game.tscn b/source/src/game.tscn index 68d9314..8f91e4b 100644 --- a/source/src/game.tscn +++ b/source/src/game.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://s7cw6ulb7kh7"] +[gd_scene load_steps=4 format=3 uid="uid://s7cw6ulb7kh7"] [ext_resource type="Script" uid="uid://dbsjg3o61vuji" path="res://src/game.gd" id="1_fc0e3"] [ext_resource type="PackedScene" uid="uid://dawmen0hlfaaq" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="3_feb5d"] [ext_resource type="PackedScene" uid="uid://kne8gkorpuop" path="res://src/ui/menus/death_screen/death_screen.tscn" id="4_j5wjh"] -[ext_resource type="PackedScene" uid="uid://dspysc2bld6eu" path="res://src/levels/expo_combined.tscn" id="6_aikvj"] [node name="Game" type="Node"] script = ExtResource("1_fc0e3") @@ -14,5 +13,3 @@ metadata/_custom_type_script = "uid://dbsjg3o61vuji" [node name="DeathScreen" parent="Menus" instance=ExtResource("4_j5wjh")] [node name="PauseMenu" parent="Menus" instance=ExtResource("3_feb5d")] - -[node name="CombinedMaps" parent="." instance=ExtResource("6_aikvj")] diff --git a/source/src/gameplay/characters/character.gd b/source/src/gameplay/characters/character.gd index 77cbcfd..209e172 100644 --- a/source/src/gameplay/characters/character.gd +++ b/source/src/gameplay/characters/character.gd @@ -1,6 +1,9 @@ class_name Character3D extends StairsCharacter3D +signal landed(land_velocity: Vector3) +signal jumped + @export var movement: CharacterMovement @export var speed_scale: float = 1.0 @@ -11,7 +14,7 @@ var air_control: float = 1.0 # If [code]true[/code], [member air_control] won't be reset to [code]1.0[/code] when touching the ground. var freeze_air_control: bool = false var last_platform_velocity := Vector3.ZERO -var _was_on_floor: bool = false +var was_on_floor: bool = false var previous_velocity: Vector3 @@ -24,12 +27,12 @@ func move(direction: Vector3, delta: float) -> void: last_platform_velocity = get_platform_velocity() # Remove platform velocity when landing. - if not _was_on_floor: + if not was_on_floor: velocity -= get_platform_velocity() # TODO: Test if last_platform_velocity is desired. else: direction += last_platform_velocity - _was_on_floor = on_floor + was_on_floor = on_floor var acceleration: float = movement.max_acceleration if on_floor else movement.max_air_acceleration var deceleration: float = movement.max_friction if on_floor else movement.max_air_friction @@ -89,3 +92,4 @@ func jump() -> void: jump_strength += absf(velocity.y) velocity.y += jump_strength + jumped.emit() diff --git a/source/src/gameplay/characters/player/head.gd b/source/src/gameplay/characters/player/head.gd index 60f2495..a85f0ef 100644 --- a/source/src/gameplay/characters/player/head.gd +++ b/source/src/gameplay/characters/player/head.gd @@ -14,6 +14,7 @@ const CONTROLLER_INVERT_X_PATH: StringName = &"game/input/camera_controller_inve const CONTROLLER_INVERT_Y_PATH: StringName = &"game/input/camera_controller_invert_y" @export var camera: ShakingCamera +@export var character: Character3D @export_range(-360, 360, 0.5, "suffix:°") var look_min_vertical_angle: float = -85.0 @export_range(-360, 360, 0.5, "suffix:°") var look_max_vertical_angle: float = 85.0 @@ -37,13 +38,8 @@ const CONTROLLER_INVERT_Y_PATH: StringName = &"game/input/camera_controller_inve @export var headbob_range: float = 0.25 @export var headbob_frequency: float = 0.5 @export var headbob_multiplier: float = 1.0 -@export var headbob_character: Character3D @export var headbob_target: Node3D -@export_group("Step Smoothing", "step_") -@export var step_smoothing_target: Node3D -@export var step_speed: float = 8.0 - var rotational_direction: Vector2 var rotational_velocity: Vector2 var input_event: InputEvent @@ -51,11 +47,6 @@ var using_controller: bool = false # Headbobbing var headbob_time: float = 0.0 var headbob_enabled: bool = true -# Stair smooting -var stair_camera_offset_height: float = 0.0 -var _previous_position: Vector3 -var _stair_camera_target_height: float = 0.0 -var _stair_camera_step_smoothing: bool = false func _ready() -> void: @@ -73,15 +64,23 @@ func _ready() -> void: ProjectSettings.settings_changed.connect(_update_settings) _update_settings.call() - _setup_step_smoothing() + #_setup_step_smoothing() func _process(delta: float) -> void: - if not GameGlobals.in_cutscene: + if not is_instance_valid(GameGlobals.game) or not GameGlobals.game.world.in_cutscene: _process_input(delta) - _perform_head_bob(delta) - - _process_step_smoothing(delta) + #_perform_head_bob(delta) +# + #if is_instance_valid(character): + #if character.is_on_floor() and not character.was_on_floor: + #if absf(character.previous_velocity.y) > impact_min_fall_velocity: + #var fall_velocity: float = maxf(-character.previous_velocity.y * 0.5, impact_max_fall_velocity) + #add_impact(Vector3.DOWN * 0.15 * fall_velocity, 0.35) +# + #_process_impact(delta) +# + #_process_step_smoothing(delta) func _unhandled_input(event: InputEvent) -> void: @@ -183,7 +182,7 @@ func _perform_head_bob(delta: float) -> void: headbob_time = 0.0 return - var headbob_speed: float = maxf((headbob_character.velocity * Utils.VEC3_HOR).length(), 1.0) + var headbob_speed: float = maxf((character.velocity * Utils.VEC3_HOR).length(), 1.0) SPrint.print_msgf(str("Headbob-Speed: ", headbob_speed), true) SPrint.print_msgf(str("Headbob-Clock: ", headbob_time), true) @@ -195,33 +194,3 @@ func _perform_head_bob(delta: float) -> void: headbob_target.rotation.z = deg_to_rad(lerp(headbob_target.position.x, headbob_target.position.y, 0.5)) * TAU SPrint.print_msgf(str("Head Z-Rotation: ", headbob_target.rotation.z), true) #endregion - - -#region Step Smoothing -func smooth_step(height_change: float) -> void: - _stair_camera_target_height -= height_change - _stair_camera_step_smoothing = true - - -func _setup_step_smoothing() -> void: - headbob_character.on_stair_step.connect(_on_stair_step) - stair_camera_offset_height = step_smoothing_target.position.y - - -func _on_stair_step() -> void: - smooth_step(global_position.y - _previous_position.y) - - -func _process_step_smoothing(delta: float) -> void: - if _stair_camera_step_smoothing and is_instance_valid(step_smoothing_target): - _stair_camera_target_height = lerp(_stair_camera_target_height, 0.0, step_speed * delta) - - if absf(_stair_camera_target_height) < 0.0025: - _stair_camera_target_height = 0.0 - _stair_camera_step_smoothing = false - - var target_pos := Vector3.UP * (stair_camera_offset_height + _stair_camera_target_height) - step_smoothing_target.position = target_pos.rotated(Vector3.LEFT, rotation.x) - - _previous_position = global_position -#endregion diff --git a/source/src/gameplay/characters/player/player_character.gd b/source/src/gameplay/characters/player/player_character.gd index e1ea560..815896d 100644 --- a/source/src/gameplay/characters/player/player_character.gd +++ b/source/src/gameplay/characters/player/player_character.gd @@ -1,7 +1,6 @@ class_name PlayerCharacter extends Character3D - const ACTION_RUN: StringName = &"run" const ACTION_JUMP: StringName = &"jump" const ACTION_CROUCH: StringName = &"crouch" @@ -11,56 +10,55 @@ const ACTION_MOVE_FORWARD: StringName = &"move_forward" const ACTION_MOVE_BACKWARD: StringName = &"move_backward" @export_group("Crouching") +@export_subgroup("Speed") @export var crouch_walk_speed_multiplier: float = 0.4 @export var crouch_speed: float = 7.25 @export var standup_speed: float = 5.3 @export var standup_speed_affection: float = 0.5 @export var standup_speed_affection_speed_multiplier: float = 0.25 +@export_subgroup("Height") @export var standing_collision_height: float = 1.8 @export var standing_camera_height: float = 1.6 @export var crouch_collision_height: float = 0.9 @export var crouch_camera_height: float = 0.81 var has_control: bool = true +var can_run: bool = true var is_crouching: bool = false var crouch_speed_affection: float = 0.0 @onready var head: PlayerHead = $Head @onready var collision_shape: CollisionShape3D = $CylinderCollider @onready var standup_checker: Area3D = $StandupChecker -@onready var stair_stepper: StairStepper = $StairStepper +#@onready var stair_stepper: StairStepper = $StairStepper func _ready() -> void: GameGlobals.player = self - #if not get_tree().current_scene.is_node_ready(): - #await get_tree().current_scene.ready -# - #var spawn_point := PlayerSpawnPoint.get_spawn_point_by_identifier(GameGlobals.spawn_id) -# - #if is_instance_valid(spawn_point): - #global_position = spawn_point.global_position - #head.global_rotation = spawn_point.global_rotation - +#if not get_tree().current_scene.is_node_ready(): +#await get_tree().current_scene.ready +# +#var spawn_point := PlayerSpawnPoint.get_spawnpoint_by_identifier(GameGlobals.spawn_id) +# +#if is_instance_valid(spawn_point): +#global_position = spawn_point.global_position +#head.global_rotation = spawn_point.global_rotation func _physics_process(delta: float) -> void: - if GameGlobals.in_cutscene: + if is_instance_valid(GameGlobals.game) and GameGlobals.game.world.in_cutscene: return # Add the gravity. if not is_on_floor(): apply_gravity(delta) - elif not _was_on_floor: + elif not was_on_floor: if previous_velocity.y <= -2.0: head.camera.shake(0.025, 0.175) if not has_control: move(Vector3.ZERO, delta) move_and_stair_step() - - #if is_on_floor(): - #stair_stepper.handle_step_climbing() return # Handle jump. @@ -84,13 +82,14 @@ func _physics_process(delta: float) -> void: move(movement_direction, delta) move_and_stair_step() - SPrint.print_msgf( - "Player Horizontal-Velocity: %s\nPlayer Vertical-Velocity: %s" - % [(velocity * Utils.VEC3_HOR).length(), velocity.y], true - ) + if is_on_floor() and not was_on_floor: + landed.emit(previous_velocity) - #if is_on_floor(): - #stair_stepper.handle_step_climbing() + SPrint.print_msgf( + "Player on floor: %s (was on floor: %s)\nPlayer Horizontal-Velocity: %s\nPlayer Vertical-Velocity: %s" + % [is_on_floor(), was_on_floor, (velocity * Utils.VEC3_HOR).length(), velocity.y], + true, + ) func apply_gravity(delta: float) -> void: @@ -102,13 +101,13 @@ func get_input_direction() -> Vector3: return Vector3.ZERO var input_dir := Input.get_vector(ACTION_MOVE_LEFT, ACTION_MOVE_RIGHT, ACTION_MOVE_FORWARD, ACTION_MOVE_BACKWARD) - var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 1, input_dir.y))#.normalized() + var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 1, input_dir.y)) #.normalized() direction.y = 0.0 return direction func get_desired_speed() -> float: - if Input.is_action_pressed(ACTION_RUN) and not is_crouching: + if Input.is_action_pressed(ACTION_RUN) and can_run and not is_crouching: return movement.running_speed if is_on_floor() else movement.air_running_speed return movement.walking_speed if is_on_floor() else movement.air_walking_speed @@ -117,8 +116,8 @@ func get_desired_speed() -> float: func handle_crouching(delta: float) -> void: var should_crouch: bool = Input.is_action_pressed(ACTION_CROUCH) and (is_on_floor() or is_crouching) var would_ceiling_collide: bool = standup_checker.has_overlapping_bodies() - is_crouching = should_crouch or would_ceiling_collide + var crouching_speed: float = crouch_speed if is_crouching else standup_speed var target_collision_height: float = crouch_collision_height if is_crouching else standing_collision_height @@ -129,9 +128,13 @@ func handle_crouching(delta: float) -> void: var weight: float = 1.0 - pow(0.5, delta * crouching_speed) head.position.y = lerp(head.position.y, target_camera_height, weight) - crouch_speed_affection = lerp(crouch_speed_affection, float(is_crouching), weight * standup_speed_affection_speed_multiplier if not is_crouching else 1.0) + var _speed: float = standup_speed_affection_speed_multiplier if not is_crouching else 1.0 + crouch_speed_affection = lerp(crouch_speed_affection, float(is_crouching), weight * _speed) if crouch_speed_affection <= 0.05: crouch_speed_affection = 0.0 - SPrint.print_msgf("Crouching Speed Affection: %s\nIs Crouching: %s" % [crouch_speed_affection, is_crouching], true) + SPrint.print_msgf( + "Crouching Speed Affection: %s\nIs Crouching: %s" % [crouch_speed_affection, is_crouching], + true + ) diff --git a/source/src/gameplay/characters/player/player_character.tscn b/source/src/gameplay/characters/player/player_character.tscn index 70bd6c3..bc2a06d 100644 --- a/source/src/gameplay/characters/player/player_character.tscn +++ b/source/src/gameplay/characters/player/player_character.tscn @@ -1,10 +1,14 @@ -[gd_scene load_steps=10 format=3 uid="uid://clhy3kiceqf2o"] +[gd_scene load_steps=15 format=3 uid="uid://clhy3kiceqf2o"] [ext_resource type="Script" uid="uid://day6rhxicaxqf" path="res://src/gameplay/characters/player/player_character.gd" id="1_hqu6r"] [ext_resource type="Script" uid="uid://dsjlv8midt2g2" path="res://src/gameplay/characters/character_movement.gd" id="2_1ixuj"] [ext_resource type="Script" uid="uid://2y3gnaqtrfnx" path="res://src/gameplay/characters/player/head.gd" id="2_fjt7c"] -[ext_resource type="Script" uid="uid://44s0v8mukxk4" path="res://src/core/camera/shaking_camera.gd" id="4_ci1ud"] +[ext_resource type="Script" uid="uid://44s0v8mukxk4" path="res://src/core/camera/camera_shaker/shaking_camera.gd" id="4_ci1ud"] [ext_resource type="Script" uid="uid://nuwb55sbveaf" path="res://src/gameplay/characters/common/footstep_component.gd" id="4_vq0uu"] +[ext_resource type="Script" uid="uid://ss6nj3fn2n77" path="res://src/core/camera/effects/headbobbing_effect.gd" id="4_xn4sk"] +[ext_resource type="Script" uid="uid://xfpktxhb2i7t" path="res://src/core/camera/effects/impact_effect.gd" id="5_ghuot"] +[ext_resource type="Script" uid="uid://ds461t4g8nlnh" path="res://src/core/camera/effects/step_smoothing_effect.gd" id="6_de0uv"] +[ext_resource type="Script" uid="uid://dyoa3tnirv7wh" path="res://src/core/camera/camera_effect_target.gd" id="7_ghuot"] [sub_resource type="Resource" id="Resource_vq0uu"] script = ExtResource("2_1ixuj") @@ -23,6 +27,10 @@ margin = 0.01 height = 1.8 radius = 0.46 +[sub_resource type="Curve" id="Curve_6580t"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.2, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 3 + [sub_resource type="CylinderShape3D" id="CylinderShape3D_ntkcp"] height = 1.59 radius = 0.45 @@ -49,27 +57,49 @@ disabled = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) shape = SubResource("CylinderShape3D_bdj5f") -[node name="Head" type="Node3D" parent="." node_paths=PackedStringArray("camera", "headbob_character", "headbob_target", "step_smoothing_target")] +[node name="Head" type="Node3D" parent="." node_paths=PackedStringArray("camera", "character")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6, 0) script = ExtResource("2_fjt7c") -camera = NodePath("Headbobbing/StairStepping/ShakingCamera") +camera = NodePath("EffectsRoot/ShakingCamera") +character = NodePath("..") headbob_range = 0.05 headbob_frequency = 2.0 -headbob_character = NodePath("..") -headbob_target = NodePath("Headbobbing") -step_smoothing_target = NodePath("Headbobbing/StairStepping") -[node name="Headbobbing" type="Node3D" parent="Head"] +[node name="HeadbobbingEffect" type="Node" parent="Head" node_paths=PackedStringArray("character", "root_node", "target")] +script = ExtResource("4_xn4sk") +character = NodePath("../..") +root_node = NodePath("..") +target = NodePath("../EffectsRoot") +metadata/_custom_type_script = "uid://ss6nj3fn2n77" -[node name="StairStepping" type="Node3D" parent="Head/Headbobbing"] +[node name="ImpactEffect" type="Node" parent="Head" node_paths=PackedStringArray("character", "root_node", "target")] +script = ExtResource("5_ghuot") +character = NodePath("../..") +impact_curve = SubResource("Curve_6580t") +root_node = NodePath("..") +target = NodePath("../EffectsRoot") +metadata/_custom_type_script = "uid://xfpktxhb2i7t" -[node name="ShakingCamera" type="Camera3D" parent="Head/Headbobbing/StairStepping"] +[node name="StepSmoothingEffect" type="Node" parent="Head" node_paths=PackedStringArray("character", "root_node", "target")] +script = ExtResource("6_de0uv") +character = NodePath("../..") +root_node = NodePath("..") +target = NodePath("../EffectsRoot") +metadata/_custom_type_script = "uid://ds461t4g8nlnh" + +[node name="EffectsRoot" type="Node3D" parent="Head" node_paths=PackedStringArray("camera")] +script = ExtResource("7_ghuot") +camera = NodePath("ShakingCamera") +metadata/_custom_type_script = "uid://dyoa3tnirv7wh" + +[node name="ShakingCamera" type="Camera3D" parent="Head/EffectsRoot"] current = true fov = 85.0 script = ExtResource("4_ci1ud") metadata/_custom_type_script = "uid://44s0v8mukxk4" [node name="StandupChecker" type="Area3D" parent="."] +collision_layer = 0 input_ray_pickable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="StandupChecker"] diff --git a/source/src/gameplay/hazards/saw/saw.blend b/source/src/gameplay/hazards/saw/saw.blend index 9bceed3..4a59382 100644 Binary files a/source/src/gameplay/hazards/saw/saw.blend and b/source/src/gameplay/hazards/saw/saw.blend differ diff --git a/source/src/gameplay/hazards/saw/saw.glb b/source/src/gameplay/hazards/saw/saw.glb new file mode 100644 index 0000000..b633c03 Binary files /dev/null and b/source/src/gameplay/hazards/saw/saw.glb differ diff --git a/source/src/gameplay/hazards/saw/saw.glb.import b/source/src/gameplay/hazards/saw/saw.glb.import new file mode 100644 index 0000000..0a3ed5e --- /dev/null +++ b/source/src/gameplay/hazards/saw/saw.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://b5b3710ucoh5u" +path="res://.godot/imported/saw.glb-69d5b2a9289b8b95787daaf4502c0264.scn" + +[deps] + +source_file="res://src/gameplay/hazards/saw/saw.glb" +dest_files=["res://.godot/imported/saw.glb-69d5b2a9289b8b95787daaf4502c0264.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="SawSkin" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=false +meshes/create_shadow_meshes=true +meshes/light_baking=3 +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 +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/source/src/gameplay/hazards/saw/saw.tscn b/source/src/gameplay/hazards/saw/saw.tscn index 8d54511..77379fe 100644 --- a/source/src/gameplay/hazards/saw/saw.tscn +++ b/source/src/gameplay/hazards/saw/saw.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://c0jearfhlqcvr"] [ext_resource type="Script" uid="uid://cd1p1fxbdglwu" path="res://src/gameplay/hazards/saw/saw.gd" id="1_bec0m"] -[ext_resource type="PackedScene" uid="uid://u56f1ks46ob6" path="res://src/gameplay/hazards/saw/saw.blend" id="1_eq5lu"] +[ext_resource type="PackedScene" uid="uid://b5b3710ucoh5u" path="res://src/gameplay/hazards/saw/saw.glb" id="2_ssxid"] [ext_resource type="Script" uid="uid://bfv3de7iqflhv" path="res://src/core/damage/death_area.gd" id="3_mj8ja"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_bec0m"] @@ -11,7 +11,8 @@ radius = 0.8 [node name="Saw" type="Node3D"] script = ExtResource("1_bec0m") -[node name="SawSkin" parent="." instance=ExtResource("1_eq5lu")] +[node name="SawSkin" parent="." instance=ExtResource("2_ssxid")] +transform = Transform3D(0.9999318, -0.0116664, 0, 0.0116664, 0.9999318, 0, 0, 0, 1, 0, 0, 0) [node name="DeathArea" type="Area3D" parent="."] collision_layer = 0 diff --git a/source/src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn b/source/src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn index 7e48250..0b487fd 100644 --- a/source/src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn +++ b/source/src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn @@ -5,12 +5,13 @@ [sub_resource type="Gradient" id="Gradient_0n826"] interpolation_mode = 2 -offsets = PackedFloat32Array(0.25420874, 0.34175083, 0.503367) -colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0.86718756, 1, 1, 1, 0) +offsets = PackedFloat32Array(0.25420874, 0.30808082, 0.34511784, 0.38215488, 0.4124579, 0.503367) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 0.86718756, 1, 1, 1, 0.33789822, 1, 1, 1, 0.13586852, 1, 1, 1, 0.05530738, 1, 1, 1, 0) [sub_resource type="GradientTexture2D" id="GradientTexture2D_tek7r"] gradient = SubResource("Gradient_0n826") width = 1 +height = 128 fill_from = Vector2(0, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xkimn"] @@ -24,6 +25,7 @@ albedo_texture = SubResource("GradientTexture2D_tek7r") [sub_resource type="CylinderMesh" id="CylinderMesh_hg5uv"] top_radius = 1.0 bottom_radius = 0.15 +height = 4.0 rings = 0 cap_top = false cap_bottom = false @@ -35,7 +37,7 @@ projector_mesh = NodePath("ProjectorModel/Projector") [node name="ProjectorModel" parent="." instance=ExtResource("2_xkimn")] [node name="GlowMesh" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) material_override = SubResource("StandardMaterial3D_xkimn") mesh = SubResource("CylinderMesh_hg5uv") diff --git a/source/src/globals/autoloads/game_globals.gd b/source/src/globals/autoloads/game_globals.gd index 197e374..de7b565 100644 --- a/source/src/globals/autoloads/game_globals.gd +++ b/source/src/globals/autoloads/game_globals.gd @@ -1,85 +1,76 @@ extends Node +@warning_ignore("unused_signal") signal player_died(death_type: DeathTypes) const MAIN_MENU_PATH: String = "uid://dwd8wf02j2epn" -const INITIAL_LEVEL_ID: StringName = &"OutsideArea" const GAME_PATH: String = "uid://s7cw6ulb7kh7" const PLAYER_PATH: String = "uid://clhy3kiceqf2o" +const BASE_GAME_STATE: GameState = preload("uid://dpgfu1y1cqhvk") +const INITIAL_WORLD_INFO: StringName = &"Exposition" const CHAPTER_LIST: ChapterList = preload("uid://d2mcwotliowv7") -const LEVELS: Dictionary[StringName, String] = { - &"OutsideArea": "uid://lraild3yetsh", - &"EntranceHall": "uid://cmdy6f6kesmbj", +const WORLD_INFOS: Dictionary[StringName, String] = { + &"Exposition": "uid://d2qpu70epn5rs", } enum DeathTypes { SAW, + DOOM_FALL, } var game: Game -var level: StringName = &"" var player: PlayerCharacter -var player_alive: bool = true -var spawn_id: StringName = &"": set = set_spawn_id -var chapter_index: int = 0: set = set_chapter_index -var in_cutscene: bool = false + +var game_state: GameState: set = set_game_state + + +func _ready() -> void: + game_state = BASE_GAME_STATE.duplicate() + + # Ensure that if we load a world directly that we make the Game the current scene. + await get_tree().root.ready + + if get_tree().current_scene is World: + player.free() + var world_path: String = get_tree().current_scene.scene_file_path + # Can't do this. Would also duplicate already loaded levels, adding them a second time. + #var world: World = get_tree().current_scene.duplicate() + get_tree().change_scene_to_file(GAME_PATH) + game.load_to_world_info = false + await get_tree().scene_changed + var world: World = load(world_path).instantiate() + game.add_child(world) + game.world = world func get_player() -> PlayerCharacter: return player +func set_game_state(new_game_state: GameState) -> void: + game_state = new_game_state + SaveManager.save_data.game_state = game_state + + func reset_game() -> void: - player_alive = true - spawn_id = &"" - level = INITIAL_LEVEL_ID - chapter_index = 0 - in_cutscene = false + game_state = BASE_GAME_STATE.duplicate() func load_from_save() -> void: - SaveManager.load_game() + game_state = null + SaveManager.save_data = null - var data: Dictionary[StringName, Variant] = SaveManager.persistent_data - spawn_id = data.get(&"spawn_id") - chapter_index = data.get(&"chapter_index") - level = data.get(&"level", &"") + if not SaveManager.load_game(): + SaveManager.save_data = SaveData.new() + SaveManager.save_data.game_state = BASE_GAME_STATE.duplicate() + + var data: SaveData = SaveManager.save_data + game_state = data.game_state -func set_spawn_id(id: StringName) -> void: - spawn_id = id - - SaveManager.persistent_data[&"spawn_id"] = spawn_id - - -func set_chapter_index(index: int) -> void: - chapter_index = index - - SaveManager.persistent_data[&"chapter_index"] = chapter_index - - -func set_level(level_id: StringName) -> void: - level = level_id - - SaveManager.persistent_data[&"level"] = level +func request_save() -> void: + SaveManager.save_game() func kill_player(death_type: DeathTypes) -> void: - if not player_alive: - return - - get_tree().paused = true - - SPrint.print_msg( - "Killed player. Death Type: %s" % death_type, -1.0, SPrint.NORMAL_RICH, Color.ORANGE_RED - ) - - if is_instance_valid(player): - player.process_mode = Node.PROCESS_MODE_DISABLED - - AudioManager.flush_audio_by_bus(AudioManager.SFX) - AudioManager.flush_audio_by_bus(AudioManager.MUSIC) - AudioManager.flush_audio_by_bus(AudioManager.AMBIENCE) - - player_alive = false - player_died.emit(death_type) + game.get_world().kill_player(death_type) diff --git a/source/src/globals/autoloads/save_manager.gd b/source/src/globals/autoloads/save_manager.gd deleted file mode 100644 index e373ed8..0000000 --- a/source/src/globals/autoloads/save_manager.gd +++ /dev/null @@ -1,47 +0,0 @@ -extends Node - -const SAVE_PATH: String = "user://saves/" -const SAVE_FILENAME: String = "saved_game.dat" -const SAVE_FILE: String = SAVE_PATH + SAVE_FILENAME - -var persistent_data: Dictionary[StringName, Variant] = { - &"spawn_id": &"", - &"sequence_index": 0, - &"chapter_index": 0, - &"level": &"", - &"level_data": { - - } -} - -func save_game() -> void: - DirAccess.make_dir_recursive_absolute(SAVE_PATH) - - var file := FileAccess.open(SAVE_FILE, FileAccess.WRITE) - - # Store the variables. - file.store_var(persistent_data) - - -func load_game() -> bool: - if not save_exists(): - return false - - var file := FileAccess.open(SAVE_FILE, FileAccess.READ) - - # Load the variables. - var loaded_data: Variant = file.get_var() - - if loaded_data is Dictionary: - persistent_data = loaded_data - return true - - return false - - -func delete_save() -> void: - DirAccess.remove_absolute(SAVE_FILE) - - -func save_exists() -> bool: - return FileAccess.file_exists(SAVE_FILE) diff --git a/source/src/globals/autoloads/save_manager/save_data.gd b/source/src/globals/autoloads/save_manager/save_data.gd new file mode 100644 index 0000000..f8c6397 --- /dev/null +++ b/source/src/globals/autoloads/save_manager/save_data.gd @@ -0,0 +1,12 @@ +class_name SaveData +extends Resource + +@export var game_state: GameState + + +func get_level_id() -> StringName: + return game_state.level_id if not game_state.level_id.is_empty() else get_world_info().initial_level + + +func get_world_info() -> WorldInfo: + return game_state.world_info diff --git a/source/src/globals/autoloads/save_manager/save_data.gd.uid b/source/src/globals/autoloads/save_manager/save_data.gd.uid new file mode 100644 index 0000000..3880f5b --- /dev/null +++ b/source/src/globals/autoloads/save_manager/save_data.gd.uid @@ -0,0 +1 @@ +uid://dbulbvyhigxou diff --git a/source/src/globals/autoloads/save_manager/save_manager.gd b/source/src/globals/autoloads/save_manager/save_manager.gd new file mode 100644 index 0000000..b802d7b --- /dev/null +++ b/source/src/globals/autoloads/save_manager/save_manager.gd @@ -0,0 +1,49 @@ +extends Node + +const SAVE_PATH: String = "user://saves/" +const SAVE_FILENAME: String = "saved_game.tres" +const SAVE_FILE: String = SAVE_PATH + SAVE_FILENAME + +var save_data := SaveData.new(): + set(value): + save_data = value + + if not is_instance_valid(save_data): + save_data = SaveData.new() +#var persistent_data: Dictionary[StringName, Variant] = { + #&"spawn_id": &"", + #&"sequence_index": 0, + #&"chapter_index": 0, + #&"world": &"", + #&"level": &"", + #&"level_data": { +# + #} +#} + + +func save_game() -> void: + DirAccess.make_dir_recursive_absolute(SAVE_PATH) + ResourceSaver.save(save_data, SAVE_FILE, ResourceSaver.FLAG_CHANGE_PATH) + + +func load_game() -> bool: + if not save_exists(): + return false + + var save: Resource = ResourceLoader.load(SAVE_FILE, "SaveData") + + if not is_instance_valid(save) or save is not SaveData: + return false + + save_data = save + return true + + +func delete_save() -> void: + DirAccess.remove_absolute(SAVE_FILE) + save_data = SaveData.new() + + +func save_exists() -> bool: + return ResourceLoader.exists(SAVE_FILE, "SaveGame") #FileAccess.file_exists(SAVE_FILE) diff --git a/source/src/globals/autoloads/save_manager.gd.uid b/source/src/globals/autoloads/save_manager/save_manager.gd.uid similarity index 100% rename from source/src/globals/autoloads/save_manager.gd.uid rename to source/src/globals/autoloads/save_manager/save_manager.gd.uid diff --git a/source/src/globals/autoloads/scene_fader/scene_fader.gd b/source/src/globals/autoloads/scene_fader/scene_fader.gd index 11c48c1..59daa1e 100644 --- a/source/src/globals/autoloads/scene_fader/scene_fader.gd +++ b/source/src/globals/autoloads/scene_fader/scene_fader.gd @@ -6,6 +6,7 @@ var fade_in_duration: float = 2.0 var fade_out_duration: float = 2.0 var is_fading: bool = false var is_loading: bool = false +var additional_scenes: Array[PackedScene] = [] @onready var interactive_loader: InteractiveLoader = %InteractiveLoader @@ -21,30 +22,43 @@ func _ready() -> void: color_rect.color.a = 0.0 -func load_to_path(path: String, initial_level: String = "") -> void: +func load_to_path(path: String, additional_paths: PackedStringArray = [], do_fade_out: bool = true) -> void: if is_loading: return is_loading = true + additional_scenes.clear() await fade_in() #await get_tree().create_timer(1.0).timeout - # Load the initial level into memory first, so it can be retrived by other things later. - if not initial_level.is_empty(): - LevelLoader.initial_level_reference = await interactive_loader.load_threaded(initial_level) + print("===================================\nBeginning loading sequence for files %s %s" % [path, additional_paths]) - print("Initial Level Reference Loaded: ", LevelLoader.initial_level_reference) + # Load the initial level into memory first, so it can be retrived by other things later. + if not additional_paths.is_empty(): + for additional_path: String in additional_paths: + if not ResourceLoader.exists(additional_path): + push_warning("Additional path '%s' does not exist." % additional_path) + continue + + var level: PackedScene = await interactive_loader.load_threaded(additional_path) + additional_scenes.append(level) + print("Additional path loaded: ", level) + + print("All additional paths loaded!") var scene: PackedScene = await interactive_loader.load_threaded(path) print("Scene Loaded: ", scene) + print("===================================") assert(is_instance_valid(scene), "Scene is invalid.") get_tree().change_scene_to_packed(scene) get_tree().paused = false - fade_out() + if do_fade_out: + fade_out() + is_loading = false @@ -79,7 +93,17 @@ func set_loading_hints_visible(value: bool) -> void: loading_label.visible = value if value: - loading_label.set_text(loading_label.text) # Restart the effect. + loading_label.reload_effects() loading_hint_animations.play(_ANIM_LOADING) else: loading_hint_animations.stop() + + +func get_additional_scene(scene_path: String) -> PackedScene: + for i: int in range(additional_scenes.size()): + var scene: PackedScene = additional_scenes[i] + + if Utils.get_uid(scene.resource_path) == Utils.get_uid(scene_path): + return scene + + return null diff --git a/source/src/globals/autoloads/scene_fader/scene_fader.tscn b/source/src/globals/autoloads/scene_fader/scene_fader.tscn index 717a2f2..7fd67b8 100644 --- a/source/src/globals/autoloads/scene_fader/scene_fader.tscn +++ b/source/src/globals/autoloads/scene_fader/scene_fader.tscn @@ -100,7 +100,7 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 bbcode_enabled = true -text = "[loading]Loading...[/loading]" +text = "LOADING" horizontal_alignment = 1 vertical_alignment = 1 custom_effects = [SubResource("RichTextEffect_tvon4")] diff --git a/source/src/globals/autoloads/settings/settings_manager.gd b/source/src/globals/autoloads/settings/settings_manager.gd index cc3d0bc..8a4d867 100644 --- a/source/src/globals/autoloads/settings/settings_manager.gd +++ b/source/src/globals/autoloads/settings/settings_manager.gd @@ -19,7 +19,8 @@ var settings: Dictionary[String, Dictionary] = { }, &"misc": { &"language": -1, - &"headbobbing": true + &"headbobbing": true, + &"headbobbing_multiplier": 1.0 } } diff --git a/source/src/globals/general/utils.gd b/source/src/globals/general/utils.gd index 677dee3..c349877 100644 --- a/source/src/globals/general/utils.gd +++ b/source/src/globals/general/utils.gd @@ -94,3 +94,8 @@ static func full_rotation_float( var c: Quaternion = old.slerp(new, delta) transform.basis = Basis(c) return transform + + +static func get_uid(path: String) -> int: + var uid: int = ResourceUID.text_to_id(ResourceUID.path_to_uid(path)) + return uid diff --git a/source/src/levels/expo_combined.tscn b/source/src/levels/expo_combined.tscn deleted file mode 100644 index e517ce1..0000000 --- a/source/src/levels/expo_combined.tscn +++ /dev/null @@ -1,103 +0,0 @@ -[gd_scene load_steps=10 format=3 uid="uid://dspysc2bld6eu"] - -[ext_resource type="Script" uid="uid://dfnb036hysorj" path="res://src/core/level/level_loader.gd" id="1_kntr3"] -[ext_resource type="PackedScene" uid="uid://drr80goa61wrx" path="res://src/core/level/level_area.tscn" id="2_5mqkb"] -[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/player_spawn_point.gd" id="3_aoi14"] -[ext_resource type="Script" uid="uid://dhrqjudaignuc" path="res://src/core/level/load_threshold_area.gd" id="3_mcc85"] -[ext_resource type="Script" uid="uid://dgsfc4i6bovwa" path="res://src/core/chapter/chapter_area.gd" id="4_sujqt"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_aoi14"] -size = Vector3(17, 9, 36) - -[sub_resource type="BoxShape3D" id="BoxShape3D_5mqkb"] -size = Vector3(31, 19, 37) - -[sub_resource type="BoxShape3D" id="BoxShape3D_mcc85"] -size = Vector3(4, 3, 0.5) - -[sub_resource type="BoxShape3D" id="BoxShape3D_sujqt"] -size = Vector3(4, 3, 1) - -[node name="ExpoCombined" type="Node"] - -[node name="LevelLoaders" type="Node" parent="."] - -[node name="OutsideArea" type="Marker3D" parent="LevelLoaders"] -script = ExtResource("1_kntr3") -scene_path = "uid://lraild3yetsh" -level_id = &"OutsideArea" -metadata/_custom_type_script = "uid://dfnb036hysorj" - -[node name="EntranceHall" type="Marker3D" parent="LevelLoaders"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 3.5, 33) -script = ExtResource("1_kntr3") -scene_path = "uid://cmdy6f6kesmbj" -level_id = &"EntranceHall" -metadata/_custom_type_script = "uid://dfnb036hysorj" - -[node name="LevelAreas" type="Node" parent="."] - -[node name="OutsideArea" parent="LevelAreas" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("2_5mqkb")] -level_loader = NodePath("../../LevelLoaders/OutsideArea") -loaded_if_spawnpoint = [NodePath("../../Spawnpoints/OutsideSpawnPoint")] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/OutsideArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 4, 17.5) -shape = SubResource("BoxShape3D_aoi14") -debug_color = Color(1, 1, 0, 0.41960785) - -[node name="EntranceHall" parent="LevelAreas" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("2_5mqkb")] -level_loader = NodePath("../../LevelLoaders/EntranceHall") -loaded_if_spawnpoint = [NodePath("../../Spawnpoints/EntranceHallSpawnPoint")] - -[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/EntranceHall"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 53) -shape = SubResource("BoxShape3D_5mqkb") -debug_color = Color(1, 1, 0, 0.41960785) - -[node name="LevelLoadThresholds" type="Node" parent="."] - -[node name="LevelThresholdArea" type="Area3D" parent="LevelLoadThresholds" node_paths=PackedStringArray("level_loaders")] -collision_layer = 0 -collision_mask = 2 -script = ExtResource("3_mcc85") -level_loaders = [NodePath("../../LevelLoaders/OutsideArea"), NodePath("../../LevelLoaders/EntranceHall")] -metadata/_custom_type_script = "uid://dhrqjudaignuc" - -[node name="CollisionShape" type="CollisionShape3D" parent="LevelLoadThresholds/LevelThresholdArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 36.2) -shape = SubResource("BoxShape3D_mcc85") -debug_color = Color(1, 0.5176471, 0, 0.41960785) - -[node name="CollisionShape2" type="CollisionShape3D" parent="LevelLoadThresholds/LevelThresholdArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 33) -shape = SubResource("BoxShape3D_mcc85") -debug_color = Color(1, 0.5176471, 0, 0.41960785) - -[node name="Spawnpoints" type="Node" parent="."] - -[node name="OutsideSpawnPoint" type="Marker3D" parent="Spawnpoints"] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1, 1, 1) -script = ExtResource("3_aoi14") -metadata/_custom_type_script = "uid://3hlvt5k34xva" - -[node name="EntranceHallSpawnPoint" type="Marker3D" parent="Spawnpoints"] -transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 3.4999995, 44) -script = ExtResource("3_aoi14") -spawn_id = &"NoKnows" -metadata/_custom_type_script = "uid://3hlvt5k34xva" - -[node name="Checkpoints" type="Node" parent="."] - -[node name="CheckpointEntranceHall" type="Area3D" parent="Checkpoints"] -collision_layer = 0 -collision_mask = 2 -script = ExtResource("4_sujqt") -chapter_index = 1 -spawn_id = &"NoKnows" -metadata/_custom_type_script = "uid://dgsfc4i6bovwa" - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Checkpoints/CheckpointEntranceHall"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 37) -shape = SubResource("BoxShape3D_sujqt") -debug_color = Color(0.970704, 0, 0.45613372, 0.41960785) diff --git a/source/src/ui/menus/boot/boot.gd b/source/src/ui/menus/boot/boot.gd index a7f8efd..07a54d6 100644 --- a/source/src/ui/menus/boot/boot.gd +++ b/source/src/ui/menus/boot/boot.gd @@ -1,6 +1,7 @@ extends Control @onready var shader_precompiler: Node = $ShaderPrecompiler +@onready var pixelation_games_intro: Node = $PixelationGamesIntro func _ready() -> void: @@ -14,6 +15,9 @@ func _ready() -> void: func _on_shader_precompiler_finished_compilation() -> void: SettingsManager.set_setting(&"game", &"has_compiled_shaders", true) + pixelation_games_intro.process_mode = Node.PROCESS_MODE_INHERIT + +func _on_pixelation_games_intro_finished() -> void: SceneFader.color_rect.color.a = 1.0 SceneFader.load_to_path(GameGlobals.MAIN_MENU_PATH) diff --git a/source/src/ui/menus/boot/boot.tscn b/source/src/ui/menus/boot/boot.tscn index 5b5cd99..49d7d7b 100644 --- a/source/src/ui/menus/boot/boot.tscn +++ b/source/src/ui/menus/boot/boot.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=3 uid="uid://coga3ke4xw3a0"] +[gd_scene load_steps=4 format=3 uid="uid://coga3ke4xw3a0"] [ext_resource type="Script" uid="uid://bf1k68a8ky3ps" path="res://src/ui/menus/boot/boot.gd" id="1_yodsw"] [ext_resource type="PackedScene" uid="uid://b2wlequ3m4trj" path="res://src/ui/menus/boot/shader_precompilation/shader_precompiler.tscn" id="2_fge7m"] +[ext_resource type="PackedScene" uid="uid://dl52ot7hyq3si" path="res://src/ui/menus/boot/pixelation_games/pixelation_games_intro.tscn" id="3_sptlg"] [node name="Boot" type="Control"] layout_mode = 3 @@ -14,4 +15,8 @@ script = ExtResource("1_yodsw") [node name="ShaderPrecompiler" parent="." instance=ExtResource("2_fge7m")] +[node name="PixelationGamesIntro" parent="." instance=ExtResource("3_sptlg")] +process_mode = 4 + [connection signal="finished_compilation" from="ShaderPrecompiler" to="." method="_on_shader_precompiler_finished_compilation"] +[connection signal="intro_finished" from="PixelationGamesIntro" to="." method="_on_pixelation_games_intro_finished"] diff --git a/source/src/ui/menus/boot/boot_logo.png.import b/source/src/ui/menus/boot/boot_logo.png.import new file mode 100644 index 0000000..64156f0 --- /dev/null +++ b/source/src/ui/menus/boot/boot_logo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://w581oixkcovx" +path="res://.godot/imported/boot_logo.png-243541186def7b87ccf4398ad4fdc14b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/ui/menus/boot/boot_logo.png" +dest_files=["res://.godot/imported/boot_logo.png-243541186def7b87ccf4398ad4fdc14b.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 diff --git a/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav b/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav new file mode 100644 index 0000000..5daedc6 Binary files /dev/null and b/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav differ diff --git a/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav.import b/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav.import new file mode 100644 index 0000000..a4681a8 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://di6fhdhxu0myp" +path="res://.godot/imported/electronic_vol2_purified_intensity_1_loop.wav-8f7fffdd31d0ce1e539af453c7763e0a.sample" + +[deps] + +source_file="res://src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav" +dest_files=["res://.godot/imported/electronic_vol2_purified_intensity_1_loop.wav-8f7fffdd31d0ce1e539af453c7763e0a.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd new file mode 100644 index 0000000..45c9301 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd @@ -0,0 +1,31 @@ +extends Node + +signal intro_finished + +@onready var boot_animation: AnimationPlayer = $BootAnimation + + +func _input(_event: InputEvent) -> void: + if ( + Input.is_action_just_pressed(&"ui_accept") + and InputManager.window_focused() + and boot_animation.is_playing() + ): + boot_animation.stop() + _on_boot_animation_animation_finished.call_deferred(&"") + + +func _on_boot_animation_animation_finished(_anim_name: StringName) -> void: + remove_audio_reverb() + intro_finished.emit() + + +func setup_audio_reverb() -> void: + var reverb := AudioEffectReverb.new() + reverb.hipass = 0.25 + AudioServer.add_bus_effect(0, reverb, 0) + + +func remove_audio_reverb() -> void: + if AudioServer.get_bus_effect_count(0) > 0: + AudioServer.remove_bus_effect(0, 0) diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd.uid b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd.uid new file mode 100644 index 0000000..e165d01 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd.uid @@ -0,0 +1 @@ +uid://dafipsjx5itc4 diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.tscn b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.tscn new file mode 100644 index 0000000..e862aaa --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_games_intro.tscn @@ -0,0 +1,136 @@ +[gd_scene load_steps=7 format=3 uid="uid://dl52ot7hyq3si"] + +[ext_resource type="Script" uid="uid://dafipsjx5itc4" path="res://src/ui/menus/boot/pixelation_games/pixelation_games_intro.gd" id="1_bhqrj"] +[ext_resource type="AudioStream" uid="uid://di6fhdhxu0myp" path="res://src/ui/menus/boot/pixelation_games/electronic_vol2_purified_intensity_1_loop.wav" id="2_4syr3"] +[ext_resource type="Texture2D" uid="uid://2dcigyc2vi5r" path="res://src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png" id="3_qvgpp"] + +[sub_resource type="Animation" id="Animation_n7v78"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MarginContainer/CompanyName:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Background:color") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0, 0, 0, 1)] +} + +[sub_resource type="Animation" id="Animation_5h85j"] +resource_name = "fade" +length = 3.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("MarginContainer/CompanyName:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 2.5, 3), +"transitions": PackedFloat32Array(2, 1, 0.5, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/1/type = "audio" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Jingle") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"clips": [{ +"end_offset": 0.0, +"start_offset": 0.0, +"stream": ExtResource("2_4syr3") +}], +"times": PackedFloat32Array(0.29999995) +} +tracks/1/use_blend = true +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 2.9), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [], +"method": &"setup_audio_reverb" +}, { +"args": [], +"method": &"remove_audio_reverb" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_q5q0l"] +_data = { +&"RESET": SubResource("Animation_n7v78"), +&"fade": SubResource("Animation_5h85j") +} + +[node name="PixelationGamesIntro" type="Node"] +script = ExtResource("1_bhqrj") + +[node name="BootAnimation" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_q5q0l") +} +autoplay = "fade" +next/fade = &"wli_intro" + +[node name="Jingle" type="AudioStreamPlayer" parent="."] + +[node name="DiscordRPCHelper" type="Node" parent="."] + +[node name="Background" type="ColorRect" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +color = Color(0, 0, 0, 1) +metadata/_edit_use_anchors_ = true + +[node name="MarginContainer" type="MarginContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 128 +theme_override_constants/margin_top = 128 +theme_override_constants/margin_right = 128 +theme_override_constants/margin_bottom = 128 +metadata/_edit_use_anchors_ = true + +[node name="CompanyName" type="TextureRect" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource("3_qvgpp") +expand_mode = 2 +stretch_mode = 5 +metadata/_edit_use_anchors_ = true + +[connection signal="animation_finished" from="BootAnimation" to="." method="_on_boot_animation_animation_finished"] diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png new file mode 100644 index 0000000..43352e2 Binary files /dev/null and b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png differ diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png.import b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png.import new file mode 100644 index 0000000..8119070 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://85t8tx4d1217" +path="res://.godot/imported/pixelation_logo_outline_black.png-7a6aef78ae4e670d6bd64dc73a1bc526.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/ui/menus/boot/pixelation_games/pixelation_logo_outline_black.png" +dest_files=["res://.godot/imported/pixelation_logo_outline_black.png-7a6aef78ae4e670d6bd64dc73a1bc526.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png new file mode 100644 index 0000000..13ce8bf Binary files /dev/null and b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png differ diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png.import b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png.import new file mode 100644 index 0000000..ecbbf63 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://2dcigyc2vi5r" +path="res://.godot/imported/pixelation_logo_outline_white.png-dc4793c1fd3ca4418d951416e5c4b2f1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white.png" +dest_files=["res://.godot/imported/pixelation_logo_outline_white.png-dc4793c1fd3ca4418d951416e5c4b2f1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png new file mode 100644 index 0000000..7094f6b Binary files /dev/null and b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png differ diff --git a/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png.import b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png.import new file mode 100644 index 0000000..e91df86 --- /dev/null +++ b/source/src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://daif8d4epbclx" +path="res://.godot/imported/pixelation_logo_outline_white_with_black_outline.png-81f87d0aa067b8ee7cac939f7d3954eb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/ui/menus/boot/pixelation_games/pixelation_logo_outline_white_with_black_outline.png" +dest_files=["res://.godot/imported/pixelation_logo_outline_white_with_black_outline.png-81f87d0aa067b8ee7cac939f7d3954eb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/source/src/ui/menus/boot/shader_precompilation/shader_precompiler.gd b/source/src/ui/menus/boot/shader_precompilation/shader_precompiler.gd index e3f05bf..4758be9 100644 --- a/source/src/ui/menus/boot/shader_precompilation/shader_precompiler.gd +++ b/source/src/ui/menus/boot/shader_precompilation/shader_precompiler.gd @@ -17,36 +17,36 @@ const EXCLUDED_DIRECTORIES: Array[String] = [ func precompile_shaders() -> void: var files: PackedStringArray = find_scenes_in_file_path("res://") var index: int = 0 - + while index < files.size(): #print("Compilation Progress: ", index, "/", files.size() - 1) - + var file: String = files[index] index += 1 - + if scene_file_path == file or get_tree().current_scene.scene_file_path == file: continue - + await compile_scene(file) - + progress_bar.value = index / float(files.size()) - + finished_compilation.emit() func compile_scene(scene_path: String) -> void: var scene: PackedScene = load(scene_path) - + if not scene.can_instantiate(): return - + var node: Node = scene.instantiate() - + node.set_script(null) - + for child: Node in Utils.get_all_children(node): child.set_script(null) - + # WARNING: Any children of these fmod nodes are also deleted. # if ( # child is FmodBankLoader @@ -56,7 +56,7 @@ func compile_scene(scene_path: String) -> void: # or child is FmodListener3D # ): # child.free() - + if ( child is GPUParticles2D or child is GPUParticles3D @@ -67,7 +67,7 @@ func compile_scene(scene_path: String) -> void: #child.set_process(false) #child.set_process_internal(false) #child.set_physics_process_internal(false) - + add_child(node) await get_tree().create_timer(0.2, false).timeout node.queue_free() @@ -76,19 +76,19 @@ func compile_scene(scene_path: String) -> void: func find_scenes_in_file_path(path: String, find_recursive: bool = true) -> PackedStringArray: var files: PackedStringArray = [] path = str(path, "/" if not path.ends_with("/") else "") - + for file: String in DirAccess.get_files_at(path): if file.get_extension().contains("scn"): #print("Path: '%s' Filename: '%s'" %[path, file]) files.append(str(path, file)) - + if find_recursive: for folder: String in DirAccess.get_directories_at(path): var excluded_path: String = str(path, folder) - + if EXCLUDED_DIRECTORIES.has(excluded_path): continue - + files.append_array(find_scenes_in_file_path(excluded_path)) - + return files diff --git a/source/src/ui/menus/death_screen/cards/artwork_saw.png b/source/src/ui/menus/death_screen/cards/artwork_saw.png new file mode 100644 index 0000000..4881718 Binary files /dev/null and b/source/src/ui/menus/death_screen/cards/artwork_saw.png differ diff --git a/source/src/ui/menus/death_screen/cards/artwork_saw.png.import b/source/src/ui/menus/death_screen/cards/artwork_saw.png.import new file mode 100644 index 0000000..2287262 --- /dev/null +++ b/source/src/ui/menus/death_screen/cards/artwork_saw.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtgkyxooxq4ux" +path="res://.godot/imported/artwork_saw.png-78b27d12c058eb73be2305b1f855ff63.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://src/ui/menus/death_screen/cards/artwork_saw.png" +dest_files=["res://.godot/imported/artwork_saw.png-78b27d12c058eb73be2305b1f855ff63.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/source/src/ui/menus/death_screen/cards/card_doom_fall.tres b/source/src/ui/menus/death_screen/cards/card_doom_fall.tres new file mode 100644 index 0000000..dc44cf5 --- /dev/null +++ b/source/src/ui/menus/death_screen/cards/card_doom_fall.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="DeathTypeCard" load_steps=2 format=3 uid="uid://b0gc4g731ohmw"] + +[ext_resource type="Script" uid="uid://b3jfu44q81irc" path="res://src/ui/menus/death_screen/cards/death_type_card.gd" id="1_4asol"] + +[resource] +script = ExtResource("1_4asol") +death_type = 1 +label = "DEATH_LABEL_DOOM_FALL" +message = "DEATH_MSG_DOOM_FALL" +metadata/_custom_type_script = "uid://b3jfu44q81irc" diff --git a/source/src/ui/menus/death_screen/cards/card_saw.tres b/source/src/ui/menus/death_screen/cards/card_saw.tres new file mode 100644 index 0000000..413fc19 --- /dev/null +++ b/source/src/ui/menus/death_screen/cards/card_saw.tres @@ -0,0 +1,10 @@ +[gd_resource type="Resource" script_class="DeathTypeCard" load_steps=2 format=3 uid="uid://bn77ml43wo4s"] + +[ext_resource type="Script" uid="uid://b3jfu44q81irc" path="res://src/ui/menus/death_screen/cards/death_type_card.gd" id="1_kw1j6"] + +[resource] +script = ExtResource("1_kw1j6") +background_image_path = "uid://dtgkyxooxq4ux" +label = "DEATH_LABEL_SAW" +message = "DEATH_MSG_SAW" +metadata/_custom_type_script = "uid://b3jfu44q81irc" diff --git a/source/src/ui/menus/death_screen/cards/death_type_card.gd b/source/src/ui/menus/death_screen/cards/death_type_card.gd new file mode 100644 index 0000000..749e090 --- /dev/null +++ b/source/src/ui/menus/death_screen/cards/death_type_card.gd @@ -0,0 +1,9 @@ +class_name DeathTypeCard +extends Resource + + +@export var death_type := GameGlobals.DeathTypes.SAW +@export_file("*.png", "*.jpg") var background_image_path: String = "" +@export var label: String = "" +@export_multiline var message: String = "" +@export_file("*.tscn", "*.scn") var custom_scene: String diff --git a/source/src/ui/menus/death_screen/cards/death_type_card.gd.uid b/source/src/ui/menus/death_screen/cards/death_type_card.gd.uid new file mode 100644 index 0000000..2c4bfef --- /dev/null +++ b/source/src/ui/menus/death_screen/cards/death_type_card.gd.uid @@ -0,0 +1 @@ +uid://b3jfu44q81irc diff --git a/source/src/ui/menus/death_screen/death_screen.gd b/source/src/ui/menus/death_screen/death_screen.gd index f838f71..0c5a6bd 100644 --- a/source/src/ui/menus/death_screen/death_screen.gd +++ b/source/src/ui/menus/death_screen/death_screen.gd @@ -1,9 +1,14 @@ extends MenuBase +@export var death_cards: Array[DeathTypeCard] = [] + var can_close_menu: bool = false @onready var idle_timer: Timer = $IdleTimer -@onready var saw_artwork: Control = $Saw +@onready var death_card: Control = %DeathCard +@onready var death_label: Label = %DeathLabel +@onready var death_description: Label = %DeathDescription +@onready var death_background: TextureRect = %DeathBackground func _ready() -> void: @@ -20,26 +25,36 @@ func _input(event: InputEvent) -> void: close_menu() - GameGlobals.reset_game() - GameGlobals.load_from_save() + #GameGlobals.reset_game() + #GameGlobals.load_from_save() + await GameGlobals.game.reload_world() SceneFader.fade_out.call_deferred() get_tree().paused = false - get_tree().reload_current_scene() func display_death_background(death_type: GameGlobals.DeathTypes) -> void: - match death_type: - GameGlobals.DeathTypes.SAW: - saw_artwork.show() + for card: DeathTypeCard in death_cards: + if not card.death_type == death_type: + continue + + if not card.custom_scene.is_empty(): + add_child(load(card.custom_scene).instantiate()) + return + + if ResourceLoader.exists(card.background_image_path): + death_background.texture = load(card.background_image_path) + else: + death_background.texture = null + + death_label.text = tr(card.label) + death_description.text = tr(card.message) + death_card.show() + break func _on_player_died(death_type: GameGlobals.DeathTypes) -> void: can_close_menu = false - for child: Node in get_children(): - if child.has_method(&"hide"): - child.hide() - display_death_background(death_type) open_menu() diff --git a/source/src/ui/menus/death_screen/death_screen.tscn b/source/src/ui/menus/death_screen/death_screen.tscn index ae1a23b..41c2602 100644 --- a/source/src/ui/menus/death_screen/death_screen.tscn +++ b/source/src/ui/menus/death_screen/death_screen.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://kne8gkorpuop"] +[gd_scene load_steps=5 format=3 uid="uid://kne8gkorpuop"] [ext_resource type="Script" uid="uid://cjdd4twf4ju7y" path="res://src/ui/menus/death_screen/death_screen.gd" id="1_d21i8"] +[ext_resource type="Script" uid="uid://b3jfu44q81irc" path="res://src/ui/menus/death_screen/cards/death_type_card.gd" id="2_pestg"] +[ext_resource type="Resource" uid="uid://bn77ml43wo4s" path="res://src/ui/menus/death_screen/cards/card_saw.tres" id="3_d0hq5"] +[ext_resource type="Resource" uid="uid://b0gc4g731ohmw" path="res://src/ui/menus/death_screen/cards/card_doom_fall.tres" id="4_fobx8"] [node name="DeathScreen" type="Control"] process_mode = 2 @@ -12,8 +15,10 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 script = ExtResource("1_d21i8") +death_cards = Array[ExtResource("2_pestg")]([ExtResource("3_d0hq5"), ExtResource("4_fobx8")]) -[node name="Saw" type="Control" parent="."] +[node name="DeathCard" type="Control" parent="."] +unique_name_in_owner = true layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -22,7 +27,28 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="DeathLabel" type="Label" parent="Saw"] +[node name="DeathBackground" type="TextureRect" parent="DeathCard"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DeathDescription" type="Label" parent="DeathCard"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = -1 +anchor_top = 0.75 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 0 +horizontal_alignment = 1 + +[node name="DeathLabel" type="Label" parent="DeathCard"] +unique_name_in_owner = true layout_mode = 1 anchors_preset = 8 anchor_left = 0.5 @@ -35,7 +61,6 @@ offset_right = 57.0 offset_bottom = 11.5 grow_horizontal = 2 grow_vertical = 2 -text = "Killed by a saw" [node name="IdleTimer" type="Timer" parent="."] wait_time = 2.5 diff --git a/source/src/ui/menus/main_menu/main_menu.gd b/source/src/ui/menus/main_menu/main_menu.gd index 08e6a81..0dc0b1a 100644 --- a/source/src/ui/menus/main_menu/main_menu.gd +++ b/source/src/ui/menus/main_menu/main_menu.gd @@ -1,7 +1,7 @@ class_name MainMenu extends Node -const AMBIENCE_STREAM: AudioStream = preload("uid://cyxvsy5wjxhl7") +const AMBIENCE_STREAM: AudioStream = preload("uid://vft8mjglpa2u") @onready var continue_button: Button = %ContinueButton @onready var new_game_button: Button = %NewGameButton @@ -25,15 +25,24 @@ func _unhandled_input(event: InputEvent) -> void: func load_game() -> void: AudioManager.fade_audio(AMBIENCE_STREAM, -80.0, SceneFader.fade_in_duration, AudioManager.AMBIENCE, true) - SceneFader.load_to_path(GameGlobals.GAME_PATH, GameGlobals.LEVELS.get(GameGlobals.level, &"")) + + var save_data: SaveData = SaveManager.save_data + var world_info: WorldInfo = save_data.get_world_info() + var paths: PackedStringArray = world_info.get_level_paths_from_id(save_data.get_level_id()) + GameGlobals.game_state.world_info = world_info + SceneFader.load_to_path(GameGlobals.GAME_PATH, paths, false) func _on_new_game_button_pressed() -> void: if SceneFader.is_fading: return - GameGlobals.reset_game() + # TODO: Ask for confirmiation when a save already exists. + #if not await _ask_for_new_game_confirmation(): + #return + SaveManager.delete_save() + GameGlobals.reset_game() SaveManager.save_game() load_game() @@ -42,7 +51,6 @@ func _on_continue_button_pressed() -> void: if SceneFader.is_fading: return - GameGlobals.reset_game() GameGlobals.load_from_save() load_game() @@ -58,11 +66,9 @@ func _on_quit_button_pressed() -> void: func _on_settings_button_pressed() -> void: - if SceneFader.is_fading: - return - - main_menu_ui.hide() - options_menu.show() + if not SceneFader.is_fading: + main_menu_ui.hide() + options_menu.show() func _on_chase_button_pressed() -> void: @@ -70,4 +76,9 @@ func _on_chase_button_pressed() -> void: return AudioManager.fade_audio(AMBIENCE_STREAM, -80.0, SceneFader.fade_out_duration, AudioManager.AMBIENCE, true) - SceneFader.load_to_path("uid://d013wo01v8lr5") + GameGlobals.reset_game() + + var world_info: WorldInfo = load("uid://d0y8d244covqn") + var paths: PackedStringArray = world_info.get_initial_level_paths() + GameGlobals.game_state.world_info = world_info + SceneFader.load_to_path(GameGlobals.GAME_PATH, paths, false) diff --git a/source/src/ui/menus/options_menu/options_menu.tscn b/source/src/ui/menus/options_menu/options_menu.tscn index 31551fc..048fb49 100644 --- a/source/src/ui/menus/options_menu/options_menu.tscn +++ b/source/src/ui/menus/options_menu/options_menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://4s2nskkco0a2"] +[gd_scene load_steps=8 format=3 uid="uid://4s2nskkco0a2"] [ext_resource type="Script" uid="uid://crdgxvb8i0cif" path="res://src/ui/menus/menu_base.gd" id="1_df6s5"] [ext_resource type="Script" uid="uid://dg2s0gww8q6jh" path="res://src/ui/menus/options_menu/elements/slider_label.gd" id="2_gjkvu"] @@ -6,6 +6,7 @@ [ext_resource type="Script" uid="uid://dlkewd0xr6ytq" path="res://src/ui/menus/options_menu/elements/fullscreen_button.gd" id="3_hj0r6"] [ext_resource type="Script" uid="uid://cbxoamco3w7vs" path="res://src/ui/menus/options_menu/elements/language_selector.gd" id="4_npml7"] [ext_resource type="Script" uid="uid://c0s18kus3bt2n" path="res://src/ui/menus/options_menu/elements/settings_checkbox.gd" id="5_basnw"] +[ext_resource type="Script" uid="uid://bsysknjwg6abb" path="res://src/ui/menus/options_menu/elements/settings_slider.gd" id="7_5bkxw"] [node name="OptionsMenu" type="Control" node_paths=PackedStringArray("focus_node")] layout_mode = 3 @@ -57,7 +58,7 @@ layout_mode = 2 [node name="MasterLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Master" +text = "MASTER" [node name="MasterContainer" type="HBoxContainer" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 @@ -72,6 +73,7 @@ script = ExtResource("2_hj0r6") metadata/_custom_type_script = "uid://d2j5jmj08o7f5" [node name="SliderLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer/MasterContainer" node_paths=PackedStringArray("slider")] +auto_translate_mode = 2 custom_minimum_size = Vector2(30, 0) layout_mode = 2 text = "1.0" @@ -98,6 +100,7 @@ bus = &"SFX" metadata/_custom_type_script = "uid://d2j5jmj08o7f5" [node name="SliderLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer/SFXContainer" node_paths=PackedStringArray("slider")] +auto_translate_mode = 2 custom_minimum_size = Vector2(30, 0) layout_mode = 2 text = "1.0" @@ -108,7 +111,7 @@ metadata/_custom_type_script = "uid://dg2s0gww8q6jh" [node name="MusicLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Music" +text = "MUSIC" [node name="MusicContainer" type="HBoxContainer" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 @@ -124,6 +127,7 @@ bus = &"Music" metadata/_custom_type_script = "uid://d2j5jmj08o7f5" [node name="SliderLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer/MusicContainer" node_paths=PackedStringArray("slider")] +auto_translate_mode = 2 custom_minimum_size = Vector2(30, 0) layout_mode = 2 text = "1.0" @@ -134,7 +138,7 @@ metadata/_custom_type_script = "uid://dg2s0gww8q6jh" [node name="AmbientLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Ambient" +text = "AMBIENT" [node name="AmbientContainer" type="HBoxContainer" parent="TabContainer/Audio/MarginContainer/VBoxContainer"] layout_mode = 2 @@ -150,6 +154,7 @@ bus = &"Ambient" metadata/_custom_type_script = "uid://d2j5jmj08o7f5" [node name="SliderLabel" type="Label" parent="TabContainer/Audio/MarginContainer/VBoxContainer/AmbientContainer" node_paths=PackedStringArray("slider")] +auto_translate_mode = 2 custom_minimum_size = Vector2(30, 0) layout_mode = 2 text = "1.0" @@ -180,7 +185,7 @@ layout_mode = 2 [node name="FullscreenButton" type="CheckBox" parent="TabContainer/Graphics/MarginContainer/VBoxContainer"] layout_mode = 2 -text = "Fullscreen" +text = "FULLSCREEN" script = ExtResource("3_hj0r6") [node name="Misc" type="Control" parent="TabContainer"] @@ -209,8 +214,38 @@ script = ExtResource("4_npml7") [node name="Headbobbing" type="CheckBox" parent="TabContainer/Misc/MarginContainer/VBoxContainer"] layout_mode = 2 button_pressed = true -text = "Headbobbing" +text = "HEADBOBBING" script = ExtResource("5_basnw") section = &"misc" key = &"headbobbing" metadata/_custom_type_script = "uid://c0s18kus3bt2n" + +[node name="HeadbobbingScaleLabel" type="Label" parent="TabContainer/Misc/MarginContainer/VBoxContainer"] +layout_mode = 2 +text = "HEADBOBBING_MULTIPLIER" + +[node name="HeadbobbingScaleContainer" type="HBoxContainer" parent="TabContainer/Misc/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="HeadbobbingScale" type="HSlider" parent="TabContainer/Misc/MarginContainer/VBoxContainer/HeadbobbingScaleContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 1.0 +step = 0.1 +value = 1.0 +tick_count = 11 +ticks_on_borders = true +script = ExtResource("7_5bkxw") +section = &"misc" +key = &"headbobbing_multiplier" +metadata/_custom_type_script = "uid://bsysknjwg6abb" + +[node name="SliderLabel" type="Label" parent="TabContainer/Misc/MarginContainer/VBoxContainer/HeadbobbingScaleContainer" node_paths=PackedStringArray("slider")] +auto_translate_mode = 2 +custom_minimum_size = Vector2(30, 0) +layout_mode = 2 +text = "1.0" +script = ExtResource("2_gjkvu") +slider = NodePath("../HeadbobbingScale") +pad_decimals = 1 +metadata/_custom_type_script = "uid://dg2s0gww8q6jh" diff --git a/source/src/ui/menus/pause_menu/pause_menu.gd b/source/src/ui/menus/pause_menu/pause_menu.gd index 72115da..f2e6fe3 100644 --- a/source/src/ui/menus/pause_menu/pause_menu.gd +++ b/source/src/ui/menus/pause_menu/pause_menu.gd @@ -13,7 +13,7 @@ func _input(event: InputEvent) -> void: if LevelThresholdArea.is_level_loading: return - if event.is_action_pressed(ACTION_PAUSE): + if event.is_action_pressed(ACTION_PAUSE) and GameGlobals.game.world.player_alive: if options_menu.is_visible_in_tree(): options_menu.close_menu() else: diff --git a/source/src/ui/rich_effects/loading_text_effect_v2.gd b/source/src/ui/rich_effects/loading_text_effect_v2.gd new file mode 100644 index 0000000..cdd2abe --- /dev/null +++ b/source/src/ui/rich_effects/loading_text_effect_v2.gd @@ -0,0 +1,29 @@ +@tool +class_name RichTextLoadingV2 +extends RichTextEffect + +var bbcode: String = "loadingv2" +var effect_idx: int = 0 + + +func _init() -> void: + resource_name = "RichTextLoadingV2" + + +func _process_custom_fx(char_fx: CharFXTransform) -> bool: + var ratio: float = get_glyph_ratio(char_fx) + var time: float = wrapf(char_fx.elapsed_time, 0.0, 1.0) + + match effect_idx: + 0: + _process_wave_in(char_fx, ratio) + + return true + + +func get_glyph_ratio(char_fx: CharFXTransform) -> float: + return char_fx.glyph_index / maxf(float(char_fx.glyph_count), 1.0) + + +func _process_wave_in(char_fx: CharFXTransform, ratio: float) -> void: + char_fx.offset.y = ratio diff --git a/source/src/ui/rich_effects/loading_text_effect_v2.gd.uid b/source/src/ui/rich_effects/loading_text_effect_v2.gd.uid new file mode 100644 index 0000000..5d13672 --- /dev/null +++ b/source/src/ui/rich_effects/loading_text_effect_v2.gd.uid @@ -0,0 +1 @@ +uid://ysronki6hr11 diff --git a/source/src/worlds/expo_combined.tscn b/source/src/worlds/expo_combined.tscn new file mode 100644 index 0000000..debc019 --- /dev/null +++ b/source/src/worlds/expo_combined.tscn @@ -0,0 +1,161 @@ +[gd_scene load_steps=16 format=3 uid="uid://dspysc2bld6eu"] + +[ext_resource type="Script" uid="uid://dfnb036hysorj" path="res://src/core/world/level/level_loader.gd" id="1_kntr3"] +[ext_resource type="PackedScene" uid="uid://8y3swwnmxwg2" path="res://src/core/world/world.tscn" id="1_ls3dg"] +[ext_resource type="PackedScene" uid="uid://drr80goa61wrx" path="res://src/core/world/level/level_area.tscn" id="2_5mqkb"] +[ext_resource type="Script" uid="uid://3hlvt5k34xva" path="res://src/core/spawnpoint/player_spawn_point.gd" id="3_aoi14"] +[ext_resource type="Script" uid="uid://dhrqjudaignuc" path="res://src/core/world/level/load_threshold_area.gd" id="3_mcc85"] +[ext_resource type="Script" uid="uid://dgsfc4i6bovwa" path="res://src/core/chapter/chapter_area.gd" id="4_sujqt"] +[ext_resource type="Script" uid="uid://u2s0spt1rud4" path="res://src/core/game_state_overrider.gd" id="7_b5v2q"] +[ext_resource type="Script" uid="uid://bfv3de7iqflhv" path="res://src/core/damage/death_area.gd" id="8_wjjd2"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_b5v2q"] +size = Vector3(17, 9, 84) + +[sub_resource type="BoxShape3D" id="BoxShape3D_wjjd2"] +size = Vector3(31, 19, 37) + +[sub_resource type="BoxShape3D" id="BoxShape3D_p35h1"] +size = Vector3(4, 3, 0.5) + +[sub_resource type="BoxShape3D" id="BoxShape3D_tpfae"] +size = Vector3(4, 3, 1) + +[sub_resource type="BoxShape3D" id="BoxShape3D_a2dpg"] +size = Vector3(18, 9, 36) + +[sub_resource type="BoxShape3D" id="BoxShape3D_0a1wn"] +size = Vector3(33, 14, 31) + +[sub_resource type="WorldBoundaryShape3D" id="WorldBoundaryShape3D_p35h1"] + +[node name="ExpoCombined" instance=ExtResource("1_ls3dg")] +initial_spawn_id = &"OutsideSpawn" +debug_spawn_point = &"NoKnows" + +[node name="LevelLoaders" type="Node" parent="." index="0"] + +[node name="LoaderOutsideArea" type="Marker3D" parent="LevelLoaders" index="0"] +script = ExtResource("1_kntr3") +scene_path = "uid://lraild3yetsh" +level_id = &"OutsideArea" +metadata/_custom_type_script = "uid://dfnb036hysorj" + +[node name="LoaderEntranceHall" type="Marker3D" parent="LevelLoaders" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 3.5, 33) +script = ExtResource("1_kntr3") +scene_path = "uid://cmdy6f6kesmbj" +level_id = &"EntranceHall" +metadata/_custom_type_script = "uid://dfnb036hysorj" + +[node name="LevelAreas" type="Node" parent="." index="1"] + +[node name="OutsideArea" parent="LevelAreas" index="0" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("2_5mqkb")] +level_loader = NodePath("../../LevelLoaders/LoaderOutsideArea") +loaded_if_spawnpoint = [NodePath("../../Spawnpoints/OutsideSpawnPoint")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/OutsideArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 4, -6.5) +shape = SubResource("BoxShape3D_b5v2q") +debug_color = Color(1, 1, 0, 0.41960785) + +[node name="EntranceHall" parent="LevelAreas" index="1" node_paths=PackedStringArray("level_loader", "loaded_if_spawnpoint") instance=ExtResource("2_5mqkb")] +level_loader = NodePath("../../LevelLoaders/LoaderEntranceHall") +loaded_if_spawnpoint = [NodePath("../../Spawnpoints/EntranceHallSpawnPoint")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="LevelAreas/EntranceHall" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 53) +shape = SubResource("BoxShape3D_wjjd2") +debug_color = Color(1, 1, 0, 0.41960785) + +[node name="LevelLoadThresholds" type="Node" parent="." index="2"] + +[node name="LevelThresholdArea" type="Area3D" parent="LevelLoadThresholds" index="0" node_paths=PackedStringArray("level_loaders")] +collision_layer = 0 +collision_mask = 2 +script = ExtResource("3_mcc85") +level_loaders = [NodePath("../../LevelLoaders/LoaderOutsideArea"), NodePath("../../LevelLoaders/LoaderEntranceHall")] +metadata/_custom_type_script = "uid://dhrqjudaignuc" + +[node name="CollisionShape" type="CollisionShape3D" parent="LevelLoadThresholds/LevelThresholdArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 36.2) +shape = SubResource("BoxShape3D_p35h1") +debug_color = Color(1, 0.5176471, 0, 0.41960785) + +[node name="CollisionShape2" type="CollisionShape3D" parent="LevelLoadThresholds/LevelThresholdArea" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 33) +shape = SubResource("BoxShape3D_p35h1") +debug_color = Color(1, 0.5176471, 0, 0.41960785) + +[node name="Spawnpoints" type="Node" parent="." index="3"] + +[node name="OutsideSpawnPoint" type="Marker3D" parent="Spawnpoints" index="0"] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1, 1, 1) +script = ExtResource("3_aoi14") +spawn_id = &"OutsideSpawn" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="EntranceHallSpawnPoint" type="Marker3D" parent="Spawnpoints" index="1"] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 3.4999995, 44) +script = ExtResource("3_aoi14") +spawn_id = &"NoKnows" +metadata/_custom_type_script = "uid://3hlvt5k34xva" + +[node name="Checkpoints" type="Node" parent="." index="4"] + +[node name="CheckpointEntranceHall" type="Area3D" parent="Checkpoints" index="0"] +collision_layer = 0 +collision_mask = 2 +monitoring = false +monitorable = false +script = ExtResource("4_sujqt") +chapter_index = 1 +spawn_id = &"NoKnows" +metadata/_custom_type_script = "uid://dgsfc4i6bovwa" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Checkpoints/CheckpointEntranceHall" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.8, 5, 37) +shape = SubResource("BoxShape3D_tpfae") +debug_color = Color(0.970704, 0, 0.45613372, 0.41960785) + +[node name="GameStateOverriders" type="Node" parent="." index="5"] + +[node name="OutsideArea" type="Area3D" parent="GameStateOverriders" index="0" node_paths=PackedStringArray("level_loader", "spawnpoint")] +collision_layer = 0 +collision_mask = 2 +script = ExtResource("7_b5v2q") +cooldown = 10.0 +level_loader = NodePath("../../LevelLoaders/LoaderOutsideArea") +spawnpoint = NodePath("../../Spawnpoints/OutsideSpawnPoint") +metadata/_custom_type_script = "uid://u2s0spt1rud4" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="GameStateOverriders/OutsideArea" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3000002, 4, 17.5) +shape = SubResource("BoxShape3D_a2dpg") +debug_color = Color(0.970704, 0, 0.45613372, 0.41960785) + +[node name="EntranceHall" type="Area3D" parent="GameStateOverriders" index="1" node_paths=PackedStringArray("level_loader", "spawnpoint")] +collision_layer = 0 +collision_mask = 2 +script = ExtResource("7_b5v2q") +cooldown = 10.0 +chapter_index = 1 +level_loader = NodePath("../../LevelLoaders/LoaderEntranceHall") +spawnpoint = NodePath("../../Spawnpoints/EntranceHallSpawnPoint") +metadata/_custom_type_script = "uid://u2s0spt1rud4" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="GameStateOverriders/EntranceHall" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3000002, 10.5, 52) +shape = SubResource("BoxShape3D_0a1wn") +debug_color = Color(0.970704, 0, 0.45613372, 0.41960785) + +[node name="DeathArea" type="Area3D" parent="." index="6"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -7, 0) +collision_layer = 0 +collision_mask = 2 +script = ExtResource("8_wjjd2") +death_type = 1 +metadata/_custom_type_script = "uid://bfv3de7iqflhv" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="DeathArea" index="0"] +shape = SubResource("WorldBoundaryShape3D_p35h1") diff --git a/source/src/worlds/expo_combined_info.tres b/source/src/worlds/expo_combined_info.tres new file mode 100644 index 0000000..f66fa1d --- /dev/null +++ b/source/src/worlds/expo_combined_info.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="WorldInfo" load_steps=5 format=3 uid="uid://d2qpu70epn5rs"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_m48y2"] +[ext_resource type="Script" uid="uid://dlf1vq0qej6bs" path="res://src/core/world/world_info.gd" id="1_unixw"] +[ext_resource type="Resource" uid="uid://dt7n35tdq6ein" path="res://src/worlds/levels/level_outside_area.tres" id="2_bnk8x"] +[ext_resource type="Resource" uid="uid://dmp1pwgkn82as" path="res://src/worlds/levels/level_entrance_hall.tres" id="3_l0ytv"] + +[resource] +script = ExtResource("1_unixw") +world_path = "uid://dspysc2bld6eu" +initial_level = &"OutsideArea" +levels = Array[ExtResource("1_m48y2")]([ExtResource("2_bnk8x"), ExtResource("3_l0ytv")]) +metadata/_custom_type_script = "uid://dlf1vq0qej6bs" diff --git a/source/src/levels/levels/entrance_hall.tscn b/source/src/worlds/levels/entrance_hall.tscn similarity index 61% rename from source/src/levels/levels/entrance_hall.tscn rename to source/src/worlds/levels/entrance_hall.tscn index ac4caf7..6bddd6a 100644 --- a/source/src/levels/levels/entrance_hall.tscn +++ b/source/src/worlds/levels/entrance_hall.tscn @@ -1,13 +1,16 @@ -[gd_scene load_steps=12 format=3 uid="uid://cmdy6f6kesmbj"] +[gd_scene load_steps=15 format=3 uid="uid://cmdy6f6kesmbj"] -[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/level/level.gd" id="1_s41bt"] -[ext_resource type="Script" uid="uid://dk4pqgs08xphi" path="res://src/core/camera/camera_trauma_causer.gd" id="2_ht7mm"] +[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_s41bt"] +[ext_resource type="Script" uid="uid://dk4pqgs08xphi" path="res://src/core/camera/camera_shaker/camera_trauma_causer.gd" id="2_ht7mm"] [ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="3_8clfj"] [ext_resource type="PackedScene" uid="uid://c0jearfhlqcvr" path="res://src/gameplay/hazards/saw/saw.tscn" id="4_jdv38"] [ext_resource type="Material" uid="uid://bahys2ntbh2ap" path="res://assets/materials/dev/orange/orange_01.tres" id="4_ppsfm"] -[ext_resource type="PackedScene" uid="uid://u56f1ks46ob6" path="res://src/gameplay/hazards/saw/saw.blend" id="5_y0n8k"] [ext_resource type="PackedScene" uid="uid://cer1fv8lofop5" path="res://assets/models/electrics/cable.tscn" id="6_bsmr2"] +[ext_resource type="PackedScene" uid="uid://b5b3710ucoh5u" path="res://src/gameplay/hazards/saw/saw.glb" id="7_hd5mq"] [ext_resource type="PackedScene" uid="uid://k3edwxkml8dd" path="res://src/gameplay/props/electrics/hologram_projector/hologram_projector_floor.tscn" id="8_ppsfm"] +[ext_resource type="PackedScene" uid="uid://pvll6bliout1" path="res://assets/models/electrics/spot_light/studio_spot_light.glb" id="9_1itxg"] +[ext_resource type="PackedScene" uid="uid://bwejp67rw5erj" path="res://assets/models/electrics/spot_light/studio_spot_light_framing_01.glb" id="10_3r78c"] +[ext_resource type="PackedScene" uid="uid://boxc0e6to4083" path="res://assets/models/electrics/spot_light/studio_light_framing_02.glb" id="11_84j0j"] [sub_resource type="Environment" id="Environment_ht7mm"] ambient_light_source = 2 @@ -193,91 +196,91 @@ transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -5, 0. transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -1, 0.5, 23) [node name="SawSkin" parent="Gameplay/Hazards/Saw7" index="0"] -transform = Transform3D(0.31371143, 0.87682027, 0, -0.87682027, 0.31371143, 0, 0, 0, 1, 0, 0, 0) +transform = Transform3D(0.9064751, 0.18482661, 0, -0.18482661, 0.9064751, 0, 0, 0, 1, 0, 0, 0) -[node name="SawSkin2" parent="Gameplay/Hazards/Saw7/SawSkin" index="1" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.907697, -0.41963, -2.22045e-16, 0.41963, 0.907697, 0, -3.55271e-15, -3.55271e-15, 1, 0, 0, 0.0999999) +[node name="SawSkin" parent="Gameplay/Hazards/Saw7/SawSkin" index="1" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.90769696, -0.41963005, 0, 0.41963005, 0.90769696, 1.7763568e-15, 5.3290705e-15, -1.0658141e-14, 0.99999994, 0, 0, 0.099999845) -[node name="SawSkin3" parent="Gameplay/Hazards/Saw7/SawSkin" index="2" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.438149, 0.898906, -3.55271e-15, -0.898906, 0.438149, 0, 3.55271e-15, 1.77636e-15, 1, 0, 0, 0.2) +[node name="SawSkin2" parent="Gameplay/Hazards/Saw7/SawSkin" index="2" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.43814903, 0.898906, 0, -0.898906, 0.43814903, 5.3290705e-15, 1.0658141e-14, -3.5527137e-15, 0.99999994, 0, 0, 0.19999993) -[node name="SawSkin4" parent="Gameplay/Hazards/Saw7/SawSkin" index="3" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.575553, 0.817769, 3.55271e-15, -0.817769, -0.575553, 5.32907e-15, 7.10543e-15, 0, 1, 0, 0, 0.3) +[node name="SawSkin3" parent="Gameplay/Hazards/Saw7/SawSkin" index="3" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.57555294, 0.81776893, 0, -0.81776893, -0.57555294, 8.881784e-15, 7.1054274e-15, 7.1054274e-15, 0.99999994, 0, 0, 0.29999995) -[node name="SawSkin5" parent="Gameplay/Hazards/Saw7/SawSkin" index="4" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.0698509, 0.997561, 3.55271e-15, -0.997561, 0.0698509, 6.38378e-15, 7.32747e-15, -7.10543e-15, 1, 0, 0, 0.4) +[node name="SawSkin4" parent="Gameplay/Hazards/Saw7/SawSkin" index="4" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.06985089, 0.9975609, 0, -0.9975609, 0.06985089, 5.3290705e-15, 5.3290705e-15, 0, 0.99999994, 0, 0, 0.39999992) -[node name="SawSkin6" parent="Gameplay/Hazards/Saw7/SawSkin" index="5" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.834063, 0.551677, 0, -0.551677, 0.834063, 7.10543e-15, 1.42109e-14, -6.21725e-15, 1, 0, 0, 0.5) +[node name="SawSkin5" parent="Gameplay/Hazards/Saw7/SawSkin" index="5" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.83406305, 0.551677, 7.1054274e-15, -0.551677, 0.83406305, -3.5527137e-15, 1.0658141e-14, 8.881784e-16, 0.99999994, 0, 0, 0.49999994) -[node name="SawSkin7" parent="Gameplay/Hazards/Saw7/SawSkin" index="6" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.187532, -0.982263, -6.21725e-15, 0.982263, 0.187532, -3.55271e-15, 1.06581e-14, -7.77156e-15, 1, 0, 0, 0.599999) +[node name="SawSkin6" parent="Gameplay/Hazards/Saw7/SawSkin" index="6" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.18753201, -0.982263, 7.1054274e-15, 0.982263, 0.18753201, 1.4210855e-14, -7.5495166e-15, -7.1054274e-15, 0.99999994, 0, 0, 0.59999895) -[node name="SawSkin8" parent="Gameplay/Hazards/Saw7/SawSkin" index="7" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.997299, 0.0735269, 3.55271e-15, -0.0735269, -0.997299, -5.32907e-15, -3.55271e-15, -5.32907e-15, 1, 0, 0, 0.599999) +[node name="SawSkin7" parent="Gameplay/Hazards/Saw7/SawSkin" index="7" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.99729896, 0.07352689, 0, -0.07352689, -0.99729896, 5.3290705e-15, -1.0658141e-14, 7.1054274e-15, 0.99999994, 0, 0, 0.59999895) -[node name="SawSkin9" parent="Gameplay/Hazards/Saw7/SawSkin" index="8" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.861875, -0.507134, -7.10543e-15, 0.507134, 0.861875, 3.55271e-15, -1.06581e-14, 0, 1, 0, 0, 0.699999) +[node name="SawSkin8" parent="Gameplay/Hazards/Saw7/SawSkin" index="8" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.86187494, -0.507134, -1.0658141e-14, 0.507134, 0.86187494, 7.1054274e-15, -3.5527137e-15, -1.0658141e-14, 0.99999994, 0, 0, 0.69999886) -[node name="SawSkin10" parent="Gameplay/Hazards/Saw7/SawSkin" index="9" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.642194, 0.766551, 7.10543e-15, -0.766551, -0.642194, -8.88178e-16, -7.10543e-15, 0, 1, 0, 0, 0.799999) +[node name="SawSkin9" parent="Gameplay/Hazards/Saw7/SawSkin" index="9" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.6421939, 0.766551, 1.4210855e-14, -0.766551, -0.6421939, 8.881784e-15, 0, 1.4210855e-14, 0.99999994, 0, 0, 0.7999989) -[node name="SawSkin11" parent="Gameplay/Hazards/Saw7/SawSkin" index="10" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.986419, -0.16429, -7.10543e-15, 0.16429, 0.986419, 0, -7.10543e-15, -3.55271e-15, 1, 0, 0, 0.899999) +[node name="SawSkin10" parent="Gameplay/Hazards/Saw7/SawSkin" index="10" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.986419, -0.16429001, -7.1054274e-15, 0.16429001, 0.986419, 1.7763568e-15, 3.5527137e-15, -1.0658141e-14, 0.99999994, 0, 0, 0.8999989) -[node name="SawSkin12" parent="Gameplay/Hazards/Saw7/SawSkin" index="11" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.962893, 0.269909, 7.10543e-15, -0.269909, -0.962893, 7.77156e-16, -1.06581e-14, -2.66454e-15, 1, 0, 0, 0.999999) +[node name="SawSkin11" parent="Gameplay/Hazards/Saw7/SawSkin" index="11" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.962893, 0.26990905, 2.4868996e-14, -0.26990905, -0.962893, 1.4210855e-14, 0, 1.0658141e-14, 0.99999994, 0, 0, 0.99999887) -[node name="SawSkin13" parent="Gameplay/Hazards/Saw7/SawSkin" index="12" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.569512, -0.821991, -3.55271e-15, 0.821991, 0.569512, -7.10543e-15, -1.42109e-14, -4.44089e-15, 1, 0, 0, 1.1) +[node name="SawSkin12" parent="Gameplay/Hazards/Saw7/SawSkin" index="12" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.569512, -0.82199097, 0, 0.82199097, 0.569512, -8.881784e-15, -9.769963e-15, -1.4210855e-14, 0.99999994, 0, 0, 1.0999999) -[node name="SawSkin14" parent="Gameplay/Hazards/Saw7/SawSkin" index="13" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.620221, 0.784436, -1.06581e-14, -0.784436, 0.620221, 5.32907e-15, -1.42109e-14, -5.32907e-15, 1, 0, 0, 1.2) +[node name="SawSkin13" parent="Gameplay/Hazards/Saw7/SawSkin" index="13" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.62022114, 0.784436, -1.7763568e-14, -0.784436, 0.62022114, 2.6645353e-14, 1.7763568e-14, -1.2434498e-14, 0.99999994, 0, 0, 1.2) -[node name="SawSkin15" parent="Gameplay/Hazards/Saw7/SawSkin" index="14" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.978, -0.208642, 1.06581e-14, 0.208642, -0.978, 3.10862e-15, -1.42109e-14, -3.55271e-15, 1, 0, 0, 1.3) +[node name="SawSkin14" parent="Gameplay/Hazards/Saw7/SawSkin" index="14" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.978, -0.20864199, 3.1974423e-14, 0.20864199, -0.978, 1.9539925e-14, -7.1054274e-15, 1.687539e-14, 0.99999994, 0, 0, 1.2999998) -[node name="SawSkin16" parent="Gameplay/Hazards/Saw7/SawSkin" index="15" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.801411, 0.598117, 0, -0.598117, -0.801411, 0, -3.55271e-15, -3.55271e-15, 1, 0, 0, 1.4) +[node name="SawSkin15" parent="Gameplay/Hazards/Saw7/SawSkin" index="15" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.8014109, 0.59811705, 3.5527137e-15, -0.59811705, -0.8014109, 1.7763568e-14, 7.1054274e-15, 1.7763568e-14, 0.99999994, 0, 0, 1.3999997) -[node name="SawSkin17" parent="Gameplay/Hazards/Saw7/SawSkin" index="16" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.61442, -0.788984, 3.55271e-15, 0.788984, -0.61442, 4.44089e-16, 5.32907e-15, 0, 1, 0, 0, 1.5) +[node name="SawSkin16" parent="Gameplay/Hazards/Saw7/SawSkin" index="16" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.61442, -0.7889841, 3.5527137e-15, 0.7889841, -0.61442, 1.0658141e-14, -1.0658141e-14, 0, 0.99999994, 0, 0, 1.4999999) -[node name="SawSkin18" parent="Gameplay/Hazards/Saw7/SawSkin" index="17" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.394174, -0.919041, -3.55271e-15, 0.919041, 0.394174, -5.9952e-15, 3.55271e-15, 0, 1, 0, 0, 1.6) +[node name="SawSkin17" parent="Gameplay/Hazards/Saw7/SawSkin" index="17" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.39417395, -0.9190409, 3.5527137e-15, 0.9190409, 0.39417395, 1.7763568e-15, -4.440892e-15, -3.5527137e-15, 0.99999994, 0, 0, 1.5999998) -[node name="SawSkin19" parent="Gameplay/Hazards/Saw7/SawSkin" index="18" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.274452, -0.961605, -3.55271e-15, 0.961605, -0.274452, -7.10543e-15, 7.99361e-15, -7.10543e-15, 1, 0, 0, 1.7) +[node name="SawSkin18" parent="Gameplay/Hazards/Saw7/SawSkin" index="18" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.27445197, -0.9616051, 0, 0.9616051, -0.27445197, 5.3290705e-15, -8.881784e-15, -3.5527137e-15, 0.99999994, 0, 0, 1.6999999) -[node name="SawSkin20" parent="Gameplay/Hazards/Saw7/SawSkin" index="19" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.93005, -0.367446, 0, 0.367446, -0.93005, -7.10543e-15, 1.77636e-14, -3.55271e-15, 1, 0, 0, 1.8) +[node name="SawSkin19" parent="Gameplay/Hazards/Saw7/SawSkin" index="19" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.93005, -0.367446, -1.7763568e-14, 0.367446, -0.93005, 3.5527137e-15, -7.1054274e-15, -6.661338e-16, 0.99999994, 0, 0, 1.7999998) -[node name="SawSkin21" parent="Gameplay/Hazards/Saw7/SawSkin" index="20" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.0194621, 0.999816, 7.10543e-15, -0.999816, 0.0194621, 4.66294e-15, 1.07692e-14, -7.10543e-15, 1, 0, 0, 1.9) +[node name="SawSkin20" parent="Gameplay/Hazards/Saw7/SawSkin" index="20" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.019462079, 0.999816, 3.5527137e-15, -0.999816, 0.019462079, -5.3290705e-15, 2.6645353e-15, 0, 0.99999994, 0, 0, 1.8999997) -[node name="SawSkin22" parent="Gameplay/Hazards/Saw7/SawSkin" index="21" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.96059, -0.277995, -3.55271e-15, 0.277995, 0.96059, 4.44089e-15, -7.10543e-15, -5.32907e-15, 1, 0, 0, 1.9) +[node name="SawSkin21" parent="Gameplay/Hazards/Saw7/SawSkin" index="21" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.96059006, -0.277995, -3.5527137e-15, 0.277995, 0.96059006, 0, 0, -8.881784e-15, 0.99999994, 0, 0, 1.8999997) -[node name="SawSkin23" parent="Gameplay/Hazards/Saw7/SawSkin" index="22" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.738498, 0.674265, 7.10543e-15, -0.674265, -0.738498, -2.22045e-15, -1.06581e-14, 0, 1, 0, 0, 2) +[node name="SawSkin22" parent="Gameplay/Hazards/Saw7/SawSkin" index="22" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.738498, 0.6742651, 1.7763568e-14, -0.6742651, -0.738498, 1.2434498e-14, -3.5527137e-15, 7.1054274e-15, 0.99999994, 0, 0, 1.9999999) -[node name="SawSkin24" parent="Gameplay/Hazards/Saw7/SawSkin" index="23" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.469959, -0.882696, -7.10543e-15, 0.882696, 0.469959, -6.66134e-16, -5.32907e-15, 3.55271e-15, 1, 0, 0, 2.1) +[node name="SawSkin23" parent="Gameplay/Hazards/Saw7/SawSkin" index="23" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.46995893, -0.882696, -1.4210855e-14, 0.882696, 0.46995893, -1.7763568e-15, 1.7763568e-15, -7.1054274e-15, 0.99999994, 0, 0, 2.1) -[node name="SawSkin25" parent="Gameplay/Hazards/Saw7/SawSkin" index="24" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.931191, 0.364552, 7.10543e-15, -0.364552, -0.931191, 1.33227e-15, -7.10543e-15, -3.55271e-15, 1, 0, 0, 2.2) +[node name="SawSkin24" parent="Gameplay/Hazards/Saw7/SawSkin" index="24" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.93119097, 0.36455202, 1.7763568e-14, -0.36455202, -0.93119097, 8.881784e-15, 0, 7.1054274e-15, 0.99999994, 0, 0, 2.1999998) -[node name="SawSkin26" parent="Gameplay/Hazards/Saw7/SawSkin" index="25" instance=ExtResource("5_y0n8k")] -transform = Transform3D(0.886351, -0.463031, -7.10543e-15, 0.463031, 0.886351, -2.44249e-15, -1.06581e-14, 0, 1, 0, 0, 2.3) +[node name="SawSkin25" parent="Gameplay/Hazards/Saw7/SawSkin" index="25" instance=ExtResource("7_hd5mq")] +transform = Transform3D(0.886351, -0.46303096, -1.0658141e-14, 0.46303096, 0.886351, -5.3290705e-15, -3.5527137e-15, -7.1054274e-15, 0.99999994, 3.8146973e-06, 0, 2.2999997) -[node name="SawSkin27" parent="Gameplay/Hazards/Saw7/SawSkin" index="26" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.38739, 0.921924, 3.55271e-15, -0.921924, -0.38739, 7.54952e-15, -1.24345e-14, -7.10543e-15, 1, 0, 0, 2.4) +[node name="SawSkin26" parent="Gameplay/Hazards/Saw7/SawSkin" index="26" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.38738996, 0.921924, 7.1054274e-15, -0.921924, -0.38738996, 2.3092639e-14, 2.8865799e-15, 3.5527137e-15, 0.99999994, 3.8146973e-06, 0, 2.4) -[node name="SawSkin28" parent="Gameplay/Hazards/Saw7/SawSkin" index="27" instance=ExtResource("5_y0n8k")] -transform = Transform3D(-0.768913, -0.639366, 1.06581e-14, 0.639366, -0.768913, -3.33067e-15, -1.06581e-14, 0, 1, 0, 0, 2.5) +[node name="SawSkin27" parent="Gameplay/Hazards/Saw7/SawSkin" index="27" instance=ExtResource("7_hd5mq")] +transform = Transform3D(-0.7689129, -0.639366, 2.1316282e-14, 0.639366, -0.7689129, -8.881784e-15, -3.5527137e-15, 3.5527137e-15, 0.99999994, 1.9073486e-06, 1.9073486e-06, 2.5) -[node name="SawSkin29" parent="Gameplay/Hazards/Saw7/SawSkin" index="28" instance=ExtResource("5_y0n8k")] -transform = Transform3D(1.00001, 0.00207399, -1.06581e-14, -0.00207399, 1.00001, -5.55112e-15, -1.77636e-14, -3.55271e-15, 0.999999, 0, 0, 2.6) +[node name="SawSkin28" parent="Gameplay/Hazards/Saw7/SawSkin" index="28" instance=ExtResource("7_hd5mq")] +transform = Transform3D(1.00001, 0.0020739138, -1.0658141e-14, -0.0020739138, 1.00001, -3.5527137e-15, -1.0658141e-14, -7.993606e-15, 0.9999989, 1.9073486e-06, 1.9073486e-06, 2.6) [node name="CollisionShape3D" parent="Gameplay/Hazards/Saw7/DeathArea" index="0"] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 5.96046e-08, 1.275) @@ -296,4 +299,21 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 27) [node name="HologramProjectorFloor3" parent="." instance=ExtResource("8_ppsfm")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 30) +[node name="StudioSpotLight" parent="." instance=ExtResource("9_1itxg")] +transform = Transform3D(-0.43301272, -0.25000003, 0.8660253, -0.5, 0.8660254, 0, -0.75, -0.43301272, -0.49999997, 3, 7, 28) + +[node name="StudioSpotLightFraming01" parent="StudioSpotLight" instance=ExtResource("10_3r78c")] + +[node name="StudioSpotLightFraming02" parent="StudioSpotLight" instance=ExtResource("11_84j0j")] +visible = false + +[node name="StudioSpotLight2" parent="." instance=ExtResource("9_1itxg")] +transform = Transform3D(0.22414383, 0.12940954, 0.96592575, -0.5, 0.8660254, 1.2904783e-08, -0.83651626, -0.4829629, 0.25881904, -1.4000001, 7, 28) + +[node name="StudioSpotLightFraming01" parent="StudioSpotLight2" instance=ExtResource("10_3r78c")] + +[node name="StudioSpotLightFraming02" parent="StudioSpotLight2" instance=ExtResource("11_84j0j")] +visible = false + [editable path="Gameplay/Hazards/Saw7"] +[editable path="Gameplay/Hazards/Saw7/SawSkin"] diff --git a/source/src/worlds/levels/level_entrance_hall.tres b/source/src/worlds/levels/level_entrance_hall.tres new file mode 100644 index 0000000..e1b3277 --- /dev/null +++ b/source/src/worlds/levels/level_entrance_hall.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LevelInfo" load_steps=2 format=3 uid="uid://dmp1pwgkn82as"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_nboq1"] + +[resource] +script = ExtResource("1_nboq1") +level_path = "uid://cmdy6f6kesmbj" +level_id = &"EntranceHall" +metadata/_custom_type_script = "uid://dhaus6vq5oigj" diff --git a/source/src/worlds/levels/level_outside_area.tres b/source/src/worlds/levels/level_outside_area.tres new file mode 100644 index 0000000..414853e --- /dev/null +++ b/source/src/worlds/levels/level_outside_area.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="LevelInfo" load_steps=2 format=3 uid="uid://dt7n35tdq6ein"] + +[ext_resource type="Script" uid="uid://dhaus6vq5oigj" path="res://src/core/world/level/level_info.gd" id="1_fkh58"] + +[resource] +script = ExtResource("1_fkh58") +level_path = "uid://lraild3yetsh" +level_id = &"OutsideArea" +metadata/_custom_type_script = "uid://dhaus6vq5oigj" diff --git a/source/src/levels/levels/outside_area.tscn b/source/src/worlds/levels/outside_area.tscn similarity index 76% rename from source/src/levels/levels/outside_area.tscn rename to source/src/worlds/levels/outside_area.tscn index 87858ba..25fe745 100644 --- a/source/src/levels/levels/outside_area.tscn +++ b/source/src/worlds/levels/outside_area.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=7 format=3 uid="uid://lraild3yetsh"] +[gd_scene load_steps=8 format=3 uid="uid://lraild3yetsh"] -[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/level/level.gd" id="1_f7x8u"] +[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_f7x8u"] [ext_resource type="Material" uid="uid://bahys2ntbh2ap" path="res://assets/materials/dev/orange/orange_01.tres" id="2_gpfgd"] [ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="3_ccf7j"] +[ext_resource type="PackedScene" uid="uid://btcrglmmn74yk" path="res://_development/ayuroo/models/circus_tent/circus_tent_outside.glb" id="4_yhjo1"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_k31xi"] @@ -22,14 +23,18 @@ metadata/_custom_type_script = "uid://cigop0ivp5vvu" [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_ccf7j") +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.8660254, -0.25000003, -0.4330127, 0, -0.8660254, 0.50000006, -0.5, -0.43301275, -0.75, 0, 8, 0) +shadow_enabled = true + [node name="Blockout" type="Node3D" parent="."] [node name="Outline" type="CSGCombiner3D" parent="Blockout"] use_collision = true [node name="CSGBox3D" type="CSGBox3D" parent="Blockout/Outline"] -transform = Transform3D(-1, 0, -8.940697e-08, 0, 1, 0, 8.940697e-08, 0, -1, 0.7999968, 0.5, 5.000003) -size = Vector3(4, 1, 10) +transform = Transform3D(-1, 0, -8.940697e-08, 0, 1, 0, 8.940697e-08, 0, -1, 0.79999465, 0.5, -18.999996) +size = Vector3(4, 1, 58) material = ExtResource("2_gpfgd") [node name="CSGBox3D4" type="CSGBox3D" parent="Blockout/Outline"] @@ -55,3 +60,6 @@ transform = Transform3D(-1, 0, -8.940697e-08, 0, 1, 0, 8.940697e-08, 0, -1, 0.8, operation = 2 size = Vector3(4, 3, 16) material = ExtResource("3_ccf7j") + +[node name="CircusTent" parent="." instance=ExtResource("4_yhjo1")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 87) diff --git a/source/tools/anim_player_editor_calls.gd b/source/tools/anim_player_editor_calls.gd new file mode 100644 index 0000000..235a213 --- /dev/null +++ b/source/tools/anim_player_editor_calls.gd @@ -0,0 +1,72 @@ +@tool +extends AnimationPlayer + +var EDITOR_PATH: String: + get: return str(get_parent().get_path()) + "/" + +var function_calls: Array[Dictionary] = [] + + +func _ready() -> void: + animation_started.connect(animation_started_func) + + +func _process(_delta: float) -> void: + if not is_playing(): + function_calls.clear() + return + + var remove_these_function_calls: Array = [] + + for i: int in function_calls.size(): + var function_call: Dictionary = function_calls[i] + if function_call.time > current_animation_position: + continue + + #print("AnimationPlayer is calling the function of another node.") + #print(" path: %s" % function_call.path) + #print(" name: %s" % function_call.name) + var node: Node = get_node(function_call.path) + node.call(function_call.name) + remove_these_function_calls.append(i) + + for index: int in remove_these_function_calls: + #print("AnimationPlayer is removing function call from its queue.") + function_calls.remove_at(index) + + +func animation_started_func(_dismiss: Variant) -> void: + if not Engine.is_editor_hint(): + return + +# print("animation_started_func(_dismiss: %s)" % _dismiss) + var song_animation: Animation = get_animation(current_animation) + #print(" %s" % song_animation) + for track_index: int in song_animation.get_track_count(): + if not song_animation.track_is_enabled(track_index): + continue + + if song_animation.track_get_type(track_index) != Animation.TYPE_METHOD: + #print(" ...") + continue + + var path: String = EDITOR_PATH + str(song_animation.track_get_path(track_index)) +# print(" track_index: %s" % track_index) +# print(" path: %s" % path) + var track_key_count: int = song_animation.track_get_key_count(track_index) + for key_index: int in track_key_count: + var time: float = song_animation.track_get_key_time(track_index, key_index) + if time < current_animation_position: + #print(' ...') + continue + + #print(" key_index: %s" % key_index) + var _name: StringName = song_animation.method_track_get_name(track_index, key_index) + #var params: StringName = song_animation.method_track_get_name(track_index, key_index) + #print(" name: %s" % _name) + #print(" time: %s" % time) + function_calls.append({ + "path": path, + "name": _name, + "time": time + }) diff --git a/source/tools/anim_player_editor_calls.gd.uid b/source/tools/anim_player_editor_calls.gd.uid new file mode 100644 index 0000000..8af42e7 --- /dev/null +++ b/source/tools/anim_player_editor_calls.gd.uid @@ -0,0 +1 @@ +uid://bueqrebp8o36n diff --git a/source/tools/beat_measurer.gd b/source/tools/beat_measurer.gd index e01e60d..d1462a0 100644 --- a/source/tools/beat_measurer.gd +++ b/source/tools/beat_measurer.gd @@ -3,6 +3,7 @@ class_name BeatMeasurer extends Node +@export var enabled: bool = true @export var path: Path3D @export var track_duration: float = 1.0 @export var track_bpm: int = 120 @@ -16,6 +17,9 @@ func _ready() -> void: func _update_measurement() -> void: + if not enabled or not is_inside_tree(): + return + for child: Node in get_children(): if child.owner == null: child.queue_free()