Compare commits

...

5 Commits

780 changed files with 34265 additions and 700 deletions

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
uid://dybhpfhrqsk6y

View File

@ -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"

View File

@ -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

View File

@ -0,0 +1,84 @@
extends Level
signal beat_tick(beat: int)
const SPEED_TRANSITION_DISTANCE: float = 0.1
@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
@onready var progress_track: Path3D = $ProgressTrack
@onready var player_desired_progress: PathFollow3D = $ProgressTrack/PlayerDesiredProgress
@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)
#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:
if not music_animation.is_playing():
return
# Beat tick
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)
if _previous_beat != beat:
_previous_beat = beat
beat_tick.emit(beat)
func _physics_process(delta: float) -> void:
if not music_animation.is_playing():
return
var player_character: PlayerCharacter = GameGlobals.player
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,
0.1, 1.05
)
player_character.speed_scale = move_toward(
player_character.speed_scale,
clampf(desired_speed_scale, 0.1, 1.1),
delta
)
func _on_start_chase_area_body_entered(_body: Node3D) -> void:
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)

View File

@ -0,0 +1 @@
uid://cdgei0ihcem0n

View File

@ -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")

View File

@ -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"

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,126 @@
[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="."]
audio_max_polyphony = 1
callback_mode_process = 0
callback_mode_method = 1
libraries = {
&"": ExtResource("2_r4hpf")
}
script = ExtResource("5_c4bhh")
audio_player = NodePath("../Music")
metadata/_custom_type_script = "uid://jahmwrxb2siw"
[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"]

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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"]

View File

@ -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"

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -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

View File

@ -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)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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)

View File

@ -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)

View File

@ -0,0 +1,65 @@
[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={
"materials": {
"Material": {
"use_external/enabled": false,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/Material.tres",
"use_external/path": "uid://bke0ojvbhqtnt"
},
"prototype_grid_dark": {
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
"use_external/path": "uid://bye8jd50tg7wl"
},
"prototype_grid_orange": {
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
"use_external/path": "uid://uejce7ra2gcy"
},
"prototype_grid_red": {
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_red.tres",
"use_external/path": "uid://lvm62memxs5k"
}
}
}
gltf/naming_version=2
gltf/embedded_image_handling=0

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
[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={
"materials": {
"prototype_grid_dark": {
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
"use_external/path": "uid://bye8jd50tg7wl"
},
"prototype_grid_orange": {
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
"use_external/path": "uid://uejce7ra2gcy"
}
},
"nodes": {
"PATH:Cube": {
"generate/occluder": 1
}
}
}
gltf/naming_version=2
gltf/embedded_image_handling=0

View File

@ -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"

View File

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bye8jd50tg7wl"]
[ext_resource type="Texture2D" uid="uid://dw3af4ir446rk" path="res://assets/materials/dev/dark/texture_13.png" id="1_pfrvh"]
[resource]
resource_name = "prototype_grid_dark"
albedo_texture = ExtResource("1_pfrvh")
roughness = 0.5
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://uejce7ra2gcy"]
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_67eg5"]
[resource]
resource_name = "prototype_grid_orange"
albedo_texture = ExtResource("1_67eg5")
roughness = 0.5
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://lvm62memxs5k"]
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_vv0ty"]
[resource]
resource_name = "prototype_grid_red"
albedo_texture = ExtResource("1_vv0ty")
roughness = 0.5
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -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"]

View File

@ -0,0 +1,60 @@
[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": true,
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/prototype_grid_orange.tres",
"use_external/path": "uid://dknefw4cwovq"
},
"prototype_grid_red": {
"use_external/enabled": true,
"use_external/fallback_path": "res://assets/materials/cloth/red_cloth.tres",
"use_external/path": "uid://d2wd6sxagg32u"
},
"skylight": {
"use_external/enabled": false,
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/skylight.tres",
"use_external/path": ""
}
}
}
gltf/naming_version=0
gltf/embedded_image_handling=0

View File

@ -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=0

View File

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dknefw4cwovq"]
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_8tkn2"]
[resource]
resource_name = "prototype_grid_orange"
albedo_texture = ExtResource("1_8tkn2")
roughness = 0.97
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dictg13b71nlf"]
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_gjyc6"]
[resource]
resource_name = "prototype_grid_red"
albedo_texture = ExtResource("1_gjyc6")
roughness = 0.97
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -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

Binary file not shown.

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="300mm"
height="300mm"
viewBox="0 0 300 300"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
sodipodi:docname="CloudsDriverIcon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.62178608"
inkscape:cx="391.61378"
inkscape:cy="1083.17"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<defs
id="defs1">
<inkscape:path-effect
effect="fillet_chamfer"
id="path-effect2"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,0,0,1"
radius="0"
unit="px"
method="auto"
mode="F"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" />
</defs>
<path
id="path1"
style="fill:#000000;fill-opacity:0;stroke:#e6e6e6;stroke-width:40.7049;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 107.63242,116.83678 c -35.648665,0.0768 -54.17281,40.5211 -45.353591,74.58516 -47.89015,14.64454 -37.757808,84.71214 -37.757808,84.71214 82.309479,-0.92951 164.765009,1.06968 247.040219,0.4444 3.26145,-58.36035 -23.37281,-76.52904 -97.24363,-81.69025 1.5e-4,-33.86727 -28.63176,-78.05142 -66.68519,-78.05145 z"
inkscape:label="Clouds"
sodipodi:nodetypes="cccccc"
inkscape:path-effect="#path-effect2"
inkscape:original-d="m 107.63242,116.83678 c -35.648665,0.0768 -54.17281,40.5211 -45.353591,74.58516 -47.89015,14.64454 -37.757808,84.71214 -37.757808,84.71214 82.309479,-0.92951 164.765009,1.06968 247.040219,0.4444 3.26145,-58.36035 -23.37281,-76.52904 -97.24363,-81.69025 1.5e-4,-33.86727 -28.63176,-78.05142 -66.68519,-78.05145 z" />
<path
id="path4"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8588;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 226.95252,156.95821 c 15.15331,-10.49881 20.38772,-26.41152 21.06398,-44.70033 1.086,-32.172214 -24.36333,-59.073896 -56.84261,-60.086559 -20.34742,-0.609593 -37.46401,6.164106 -48.74725,22.969734"
sodipodi:nodetypes="cccc" />
<path
id="path2"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8584;stroke-linecap:round;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-opacity:1"
d="m 142.62304,67.212668 c -5.22903,-6.422132 -1.84287,-1.673099 -9.51664,-9.385412 m 29.79425,1.217576"
sodipodi:nodetypes="cc" />
<path
id="path2-8"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8584;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 187.80165,43.516692 c 0.41414,-8.248856 -0.25037,-2.465605 -0.79247,-13.290068 M 208.4025,50.76432"
sodipodi:nodetypes="cc" />
<path
id="path2-8-5"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8584;stroke-linecap:round;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="m 233.97325,61.313695 c 6.31526,-5.404057 1.63011,-1.883634 9.17011,-9.753551 m -0.28878,29.537347"
sodipodi:nodetypes="cc" />
<path
id="path2-8-5-1"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8584;stroke-linecap:round;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-opacity:1"
d="m 255.77387,109.1385 c 8.32022,0.51722 2.49326,-0.21598 13.4297,-0.61232 m -21.09415,20.92081"
sodipodi:nodetypes="cc" />
<path
id="path2-8-5-1-7"
style="fill:#ff6600;fill-opacity:0;stroke:#fc7f7f;stroke-width:40.8584;stroke-linecap:round;stroke-miterlimit:3.2;stroke-dasharray:none;stroke-opacity:1"
d="m 237.5067,154.62009 c 5.44552,6.24299 1.89903,1.61035 9.8321,9.06083 m -29.82074,-0.21935"
sodipodi:nodetypes="cc" />
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -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

View File

@ -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;
};

View File

@ -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

View File

@ -0,0 +1 @@
uid://cb3ho8b5lgx55

View File

@ -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

View File

@ -0,0 +1 @@
uid://cb12y8ylifwet

View File

@ -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")

View File

@ -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)

View File

@ -0,0 +1 @@
uid://dnan3ytl8evv1

View File

@ -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"]

View File

@ -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)

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 320 512"
version="1.1"
id="svg1"
sodipodi:docname="caret-down-solid.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="159.88221"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"
id="path1"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 320 512"
version="1.1"
id="svg1"
sodipodi:docname="caret-up-solid.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="159.88221"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z"
id="path1"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 640 512"
version="1.1"
id="svg1"
sodipodi:docname="cloud-solid-hovered.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="320.70674"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"
id="path1"
style="fill:#adadad;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 640 512"
version="1.1"
id="svg1"
sodipodi:docname="cloud-solid-toggled.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<linearGradient
id="linearGradient3"
inkscape:collect="always">
<stop
style="stop-color:#e59000;stop-opacity:1;"
offset="0"
id="stop3" />
<stop
style="stop-color:#ff7c6f;stop-opacity:0;"
offset="1"
id="stop4" />
</linearGradient>
<linearGradient
id="linearGradient1"
inkscape:collect="always">
<stop
style="stop-color:#a8e7ff;stop-opacity:1;"
offset="0"
id="stop1" />
<stop
style="stop-color:#eadfdb;stop-opacity:1;"
offset="0.88643533"
id="stop2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1"
id="linearGradient2"
x1="226.4411"
y1="562.0174"
x2="413.55896"
y2="-50.017536"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3"
id="radialGradient4"
cx="320"
cy="256"
fx="320"
fy="256"
r="320.5"
gradientTransform="matrix(1,0,0,0.70046802,0,76.680187)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="320.70674"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"
id="path1"
style="fill:url(#linearGradient2);fill-opacity:1;stroke:url(#radialGradient4);stroke-opacity:1;stroke-width:8.9;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 640 512"
version="1.1"
id="svg1"
sodipodi:docname="cloud-solid.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="320.07853"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"
id="path1"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 512"
version="1.1"
id="svg1"
sodipodi:docname="paintbrush-solid-hovered.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="288.66748"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"
id="path1"
style="fill:#adadad;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -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

View File

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 512"
version="1.1"
id="svg1"
sodipodi:docname="paintbrush-solid-toggled.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1">
<linearGradient
id="linearGradient7"
inkscape:collect="always">
<stop
style="stop-color:#00b8dd;stop-opacity:1;"
offset="0"
id="stop8" />
<stop
style="stop-color:#ff7c6f;stop-opacity:0;"
offset="1"
id="stop9" />
</linearGradient>
<linearGradient
id="linearGradient1"
inkscape:collect="always">
<stop
style="stop-color:#ff3a79;stop-opacity:1;"
offset="0"
id="stop1" />
<stop
style="stop-color:#e7b500;stop-opacity:1;"
offset="0.14037855"
id="stop4" />
<stop
style="stop-color:#91ff9d;stop-opacity:1;"
offset="0.2988959"
id="stop5" />
<stop
style="stop-color:#98fffe;stop-opacity:1;"
offset="0.45544165"
id="stop6" />
<stop
style="stop-color:#fad9ff;stop-opacity:1;"
offset="0.6472792"
id="stop7" />
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0.79179811"
id="stop2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1"
id="linearGradient2"
x1="193.32843"
y1="504.4082"
x2="414.53943"
y2="7.5601439"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient7"
id="radialGradient9"
cx="303.93396"
cy="255.98415"
fx="303.93396"
fy="255.98415"
r="271.93396"
gradientTransform="matrix(1,0,0,0.94146334,0,14.984458)"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="288.66748"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"
id="path1"
style="fill:url(#linearGradient2);fill-opacity:1;stroke:url(#radialGradient9);stroke-width:5.39999971;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -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

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
viewBox="0 0 576 512"
version="1.1"
id="svg1"
sodipodi:docname="paintbrush-solid.svg"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="1.5917969"
inkscape:cx="288.03926"
inkscape:cy="256"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.-->
<path
d="M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"
id="path1"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Some files were not shown because too many files have changed in this diff Show More